Branch data 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 "gimple-match-auto.h"
8 : :
9 : : bool
10 : 2219843 : gimple_maybe_truncate (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
11 : : {
12 : 2219843 : const tree type = TREE_TYPE (t);
13 : 2219843 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 : 2219843 : switch (TREE_CODE (t))
15 : : {
16 : 2063222 : case SSA_NAME:
17 : 2063222 : if (gimple *_d1 = get_def (valueize, t))
18 : : {
19 : 1870174 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20 : 1544411 : switch (gimple_assign_rhs_code (_a1))
21 : : {
22 : 33969 : CASE_CONVERT:
23 : 33969 : {
24 : 33969 : tree _p0 = gimple_assign_rhs1 (_a1);
25 : 33969 : _p0 = do_valueize (valueize, _p0);
26 : 33969 : {
27 : 33969 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
28 : 33969 : if (INTEGRAL_TYPE_P (type)
29 : 33969 : && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (captures[0]))
30 : : )
31 : : {
32 : 27290 : {
33 : 27290 : res_ops[0] = captures[0];
34 : 27290 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 12, __FILE__, __LINE__, false);
35 : 27290 : return true;
36 : : }
37 : : }
38 : : }
39 : : break;
40 : : }
41 : : default:;
42 : : }
43 : : }
44 : : break;
45 : : default:;
46 : : }
47 : : return false;
48 : : }
49 : :
50 : : bool
51 : 53432780 : gimple_zero_one_valued_p (tree t, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
52 : : {
53 : 53432780 : const tree type = TREE_TYPE (t);
54 : 53432780 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
55 : 53432780 : {
56 : 53432780 : tree captures[1] ATTRIBUTE_UNUSED = { t };
57 : 106865560 : if (INTEGRAL_TYPE_P (type)
58 : 48595548 : && (TYPE_UNSIGNED (type)
59 : 18840201 : || TYPE_PRECISION (type) > 1)
60 : 150623595 : && wi::leu_p (tree_nonzero_bits (captures[0]), 1)
61 : : )
62 : : {
63 : 521896 : {
64 : 521896 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 29, __FILE__, __LINE__, false);
65 : 521896 : return true;
66 : : }
67 : : }
68 : : }
69 : 52910884 : switch (TREE_CODE (t))
70 : : {
71 : 51797966 : case SSA_NAME:
72 : 51797966 : if (gimple *_d1 = get_def (valueize, t))
73 : : {
74 : 27596423 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
75 : 27072440 : switch (gimple_assign_rhs_code (_a1))
76 : : {
77 : 415125 : case BIT_AND_EXPR:
78 : 415125 : {
79 : 415125 : tree _p0 = gimple_assign_rhs1 (_a1);
80 : 415125 : _p0 = do_valueize (valueize, _p0);
81 : 415125 : tree _p1 = gimple_assign_rhs2 (_a1);
82 : 415125 : _p1 = do_valueize (valueize, _p1);
83 : 415125 : if (tree_swap_operands_p (_p0, _p1))
84 : 2728 : std::swap (_p0, _p1);
85 : 415125 : if (integer_onep (_p1))
86 : : {
87 : 790 : {
88 : 790 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
89 : 790 : if (INTEGRAL_TYPE_P (type)
90 : : )
91 : : {
92 : 321 : {
93 : 321 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 30, __FILE__, __LINE__, false);
94 : 321 : return true;
95 : : }
96 : : }
97 : : }
98 : : }
99 : 414804 : if (integer_onep (_p0))
100 : : {
101 : 0 : {
102 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p1 };
103 : 0 : if (INTEGRAL_TYPE_P (type)
104 : : )
105 : : {
106 : 0 : {
107 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 30, __FILE__, __LINE__, false);
108 : 0 : return true;
109 : : }
110 : : }
111 : : }
112 : : }
113 : 52896685 : break;
114 : : }
115 : 7855334 : CASE_CONVERT:
116 : 7855334 : {
117 : 7855334 : tree _p0 = gimple_assign_rhs1 (_a1);
118 : 7855334 : _p0 = do_valueize (valueize, _p0);
119 : 7855334 : {
120 : 7855334 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
121 : 15709849 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
122 : 7729158 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
123 : 6581359 : || TYPE_PRECISION (TREE_TYPE (captures[1])) > 1)
124 : 7729063 : && INTEGRAL_TYPE_P (type)
125 : 7726338 : && (TYPE_UNSIGNED (type)
126 : 918761 : || TYPE_PRECISION (type) > 1)
127 : 23436945 : && wi::leu_p (tree_nonzero_bits (captures[1]), 1)
128 : : )
129 : : {
130 : 13878 : {
131 : 13878 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 31, __FILE__, __LINE__, false);
132 : 13878 : return true;
133 : : }
134 : : }
135 : : }
136 : : break;
137 : : }
138 : : default:;
139 : : }
140 : : }
141 : : break;
142 : 52896685 : default:;
143 : : }
144 : 52896685 : if (gimple_truth_valued_p (t, valueize))
145 : : {
146 : 281 : {
147 : 281 : tree captures[1] ATTRIBUTE_UNUSED = { t };
148 : 281 : if (INTEGRAL_TYPE_P (type)
149 : 281 : && (TYPE_UNSIGNED (type)
150 : 281 : || TYPE_PRECISION (type) > 1)
151 : : )
152 : : {
153 : 0 : {
154 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 32, __FILE__, __LINE__, false);
155 : 0 : return true;
156 : : }
157 : : }
158 : : }
159 : : }
160 : : return false;
161 : : }
162 : :
163 : : bool
164 : 23838398 : gimple_signed_integer_sat_trunc (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
165 : : {
166 : 23838398 : const tree type = TREE_TYPE (t);
167 : 23838398 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
168 : 23838398 : switch (TREE_CODE (t))
169 : : {
170 : 19615953 : case SSA_NAME:
171 : 19615953 : if (gimple *_d1 = get_def (valueize, t))
172 : : {
173 : 19615953 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
174 : 18887966 : switch (gimple_assign_rhs_code (_a1))
175 : : {
176 : 173174 : case COND_EXPR:
177 : 173174 : {
178 : 173174 : tree _p0 = gimple_assign_rhs1 (_a1);
179 : 173174 : _p0 = do_valueize (valueize, _p0);
180 : 173174 : tree _p1 = gimple_assign_rhs2 (_a1);
181 : 173174 : _p1 = do_valueize (valueize, _p1);
182 : 173174 : tree _p2 = gimple_assign_rhs3 (_a1);
183 : 173174 : _p2 = do_valueize (valueize, _p2);
184 : 173174 : switch (TREE_CODE (_p0))
185 : : {
186 : 173174 : case SSA_NAME:
187 : 173174 : if (gimple *_d2 = get_def (valueize, _p0))
188 : : {
189 : 173174 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
190 : 174237 : switch (gimple_assign_rhs_code (_a2))
191 : : {
192 : 26776 : case GT_EXPR:
193 : 26776 : {
194 : 26776 : tree _q20 = gimple_assign_rhs1 (_a2);
195 : 26776 : _q20 = do_valueize (valueize, _q20);
196 : 26776 : tree _q21 = gimple_assign_rhs2 (_a2);
197 : 26776 : _q21 = do_valueize (valueize, _q21);
198 : 26776 : switch (TREE_CODE (_q20))
199 : : {
200 : 26776 : case SSA_NAME:
201 : 26776 : if (gimple *_d3 = get_def (valueize, _q20))
202 : : {
203 : 26776 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
204 : 32341 : switch (gimple_assign_rhs_code (_a3))
205 : : {
206 : 3364 : case PLUS_EXPR:
207 : 3364 : {
208 : 3364 : tree _q30 = gimple_assign_rhs1 (_a3);
209 : 3364 : _q30 = do_valueize (valueize, _q30);
210 : 3364 : tree _q31 = gimple_assign_rhs2 (_a3);
211 : 3364 : _q31 = do_valueize (valueize, _q31);
212 : 3364 : if (tree_swap_operands_p (_q30, _q31))
213 : 0 : std::swap (_q30, _q31);
214 : 3364 : switch (TREE_CODE (_q30))
215 : : {
216 : 3364 : case SSA_NAME:
217 : 3364 : if (gimple *_d4 = get_def (valueize, _q30))
218 : : {
219 : 3364 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
220 : 339 : switch (gimple_assign_rhs_code (_a4))
221 : : {
222 : 42 : CASE_CONVERT:
223 : 42 : {
224 : 42 : tree _q40 = gimple_assign_rhs1 (_a4);
225 : 42 : _q40 = do_valueize (valueize, _q40);
226 : 42 : switch (TREE_CODE (_q31))
227 : : {
228 : 18 : case INTEGER_CST:
229 : 18 : {
230 : 18 : switch (TREE_CODE (_q21))
231 : : {
232 : 12 : case INTEGER_CST:
233 : 12 : {
234 : 12 : switch (TREE_CODE (_p1))
235 : : {
236 : 0 : case SSA_NAME:
237 : 0 : if (gimple *_d5 = get_def (valueize, _p1))
238 : : {
239 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
240 : 0 : switch (gimple_assign_rhs_code (_a5))
241 : : {
242 : 0 : case BIT_XOR_EXPR:
243 : 0 : {
244 : 0 : tree _q80 = gimple_assign_rhs1 (_a5);
245 : 0 : _q80 = do_valueize (valueize, _q80);
246 : 0 : tree _q81 = gimple_assign_rhs2 (_a5);
247 : 0 : _q81 = do_valueize (valueize, _q81);
248 : 0 : if (tree_swap_operands_p (_q80, _q81))
249 : 0 : std::swap (_q80, _q81);
250 : 0 : switch (TREE_CODE (_q80))
251 : : {
252 : 0 : case SSA_NAME:
253 : 0 : if (gimple *_d6 = get_def (valueize, _q80))
254 : : {
255 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
256 : 0 : switch (gimple_assign_rhs_code (_a6))
257 : : {
258 : 0 : case NEGATE_EXPR:
259 : 0 : {
260 : 0 : tree _q90 = gimple_assign_rhs1 (_a6);
261 : 0 : _q90 = do_valueize (valueize, _q90);
262 : 0 : switch (TREE_CODE (_q90))
263 : : {
264 : 0 : case SSA_NAME:
265 : 0 : if (gimple *_d7 = get_def (valueize, _q90))
266 : : {
267 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
268 : 0 : switch (gimple_assign_rhs_code (_a7))
269 : : {
270 : 0 : CASE_CONVERT:
271 : 0 : {
272 : 0 : tree _q100 = gimple_assign_rhs1 (_a7);
273 : 0 : _q100 = do_valueize (valueize, _q100);
274 : 0 : switch (TREE_CODE (_q100))
275 : : {
276 : 0 : case SSA_NAME:
277 : 0 : if (gimple *_d8 = get_def (valueize, _q100))
278 : : {
279 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
280 : 0 : switch (gimple_assign_rhs_code (_a8))
281 : : {
282 : 0 : case LT_EXPR:
283 : 0 : {
284 : 0 : tree _q110 = gimple_assign_rhs1 (_a8);
285 : 0 : _q110 = do_valueize (valueize, _q110);
286 : 0 : tree _q111 = gimple_assign_rhs2 (_a8);
287 : 0 : _q111 = do_valueize (valueize, _q111);
288 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
289 : : {
290 : 0 : if (integer_zerop (_q111))
291 : : {
292 : 0 : switch (TREE_CODE (_q81))
293 : : {
294 : 0 : case INTEGER_CST:
295 : 0 : {
296 : 0 : switch (TREE_CODE (_p2))
297 : : {
298 : 0 : case SSA_NAME:
299 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
300 : : {
301 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
302 : 0 : switch (gimple_assign_rhs_code (_a9))
303 : : {
304 : 0 : CASE_CONVERT:
305 : 0 : {
306 : 0 : tree _q150 = gimple_assign_rhs1 (_a9);
307 : 0 : _q150 = do_valueize (valueize, _q150);
308 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
309 : : {
310 : 0 : {
311 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q81 };
312 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
313 : : )
314 : : {
315 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
316 : : )
317 : : {
318 : 0 : {
319 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
320 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
321 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
322 : 0 : itype_prec);
323 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
324 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
325 : 0 : itype_prec);
326 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
327 : 0 : itype_prec);
328 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
329 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
330 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
331 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
332 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
333 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
334 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
335 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
336 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
337 : 0 : && wi::eq_p (int_cst_3, otype_max)
338 : : )
339 : : {
340 : 0 : {
341 : 0 : res_ops[0] = captures[0];
342 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
343 : 0 : return true;
344 : : }
345 : : }
346 : 0 : }
347 : : }
348 : : }
349 : : }
350 : : }
351 : : break;
352 : : }
353 : : default:;
354 : : }
355 : : }
356 : : break;
357 : : default:;
358 : : }
359 : : break;
360 : : }
361 : : default:;
362 : : }
363 : : }
364 : : }
365 : : break;
366 : : }
367 : : default:;
368 : : }
369 : : }
370 : : break;
371 : : default:;
372 : : }
373 : : break;
374 : : }
375 : : default:;
376 : : }
377 : : }
378 : : break;
379 : : default:;
380 : : }
381 : : break;
382 : : }
383 : : default:;
384 : : }
385 : : }
386 : : break;
387 : 0 : case INTEGER_CST:
388 : 0 : {
389 : 0 : switch (TREE_CODE (_q81))
390 : : {
391 : 0 : case SSA_NAME:
392 : 0 : if (gimple *_d6 = get_def (valueize, _q81))
393 : : {
394 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
395 : 0 : switch (gimple_assign_rhs_code (_a6))
396 : : {
397 : 0 : case NEGATE_EXPR:
398 : 0 : {
399 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
400 : 0 : _q100 = do_valueize (valueize, _q100);
401 : 0 : switch (TREE_CODE (_q100))
402 : : {
403 : 0 : case SSA_NAME:
404 : 0 : if (gimple *_d7 = get_def (valueize, _q100))
405 : : {
406 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
407 : 0 : switch (gimple_assign_rhs_code (_a7))
408 : : {
409 : 0 : CASE_CONVERT:
410 : 0 : {
411 : 0 : tree _q110 = gimple_assign_rhs1 (_a7);
412 : 0 : _q110 = do_valueize (valueize, _q110);
413 : 0 : switch (TREE_CODE (_q110))
414 : : {
415 : 0 : case SSA_NAME:
416 : 0 : if (gimple *_d8 = get_def (valueize, _q110))
417 : : {
418 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
419 : 0 : switch (gimple_assign_rhs_code (_a8))
420 : : {
421 : 0 : case LT_EXPR:
422 : 0 : {
423 : 0 : tree _q120 = gimple_assign_rhs1 (_a8);
424 : 0 : _q120 = do_valueize (valueize, _q120);
425 : 0 : tree _q121 = gimple_assign_rhs2 (_a8);
426 : 0 : _q121 = do_valueize (valueize, _q121);
427 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
428 : : {
429 : 0 : if (integer_zerop (_q121))
430 : : {
431 : 0 : switch (TREE_CODE (_p2))
432 : : {
433 : 0 : case SSA_NAME:
434 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
435 : : {
436 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
437 : 0 : switch (gimple_assign_rhs_code (_a9))
438 : : {
439 : 0 : CASE_CONVERT:
440 : 0 : {
441 : 0 : tree _q150 = gimple_assign_rhs1 (_a9);
442 : 0 : _q150 = do_valueize (valueize, _q150);
443 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
444 : : {
445 : 0 : {
446 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q80 };
447 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
448 : : )
449 : : {
450 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
451 : : )
452 : : {
453 : 0 : {
454 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
455 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
456 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
457 : 0 : itype_prec);
458 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
459 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
460 : 0 : itype_prec);
461 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
462 : 0 : itype_prec);
463 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
464 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
465 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
466 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
467 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
468 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
469 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
470 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
471 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
472 : 0 : && wi::eq_p (int_cst_3, otype_max)
473 : : )
474 : : {
475 : 0 : {
476 : 0 : res_ops[0] = captures[0];
477 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
478 : 0 : return true;
479 : : }
480 : : }
481 : 0 : }
482 : : }
483 : : }
484 : : }
485 : : }
486 : : break;
487 : : }
488 : : default:;
489 : : }
490 : : }
491 : : break;
492 : : default:;
493 : : }
494 : : }
495 : : }
496 : : break;
497 : : }
498 : : default:;
499 : : }
500 : : }
501 : : break;
502 : : default:;
503 : : }
504 : : break;
505 : : }
506 : : default:;
507 : : }
508 : : }
509 : : break;
510 : : default:;
511 : : }
512 : : break;
513 : : }
514 : : default:;
515 : : }
516 : : }
517 : : break;
518 : 0 : default:;
519 : : }
520 : 0 : {
521 : 0 : tree _q81_pops[1];
522 : 0 : if (gimple_nop_convert (_q81, _q81_pops, valueize))
523 : : {
524 : 0 : tree _q100 = _q81_pops[0];
525 : 0 : switch (TREE_CODE (_q100))
526 : : {
527 : 0 : case SSA_NAME:
528 : 0 : if (gimple *_d6 = get_def (valueize, _q100))
529 : : {
530 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
531 : 0 : switch (gimple_assign_rhs_code (_a6))
532 : : {
533 : 0 : case NEGATE_EXPR:
534 : 0 : {
535 : 0 : tree _q110 = gimple_assign_rhs1 (_a6);
536 : 0 : _q110 = do_valueize (valueize, _q110);
537 : 0 : {
538 : 0 : tree _q110_pops[1];
539 : 0 : if (gimple_nop_convert (_q110, _q110_pops, valueize))
540 : : {
541 : 0 : tree _q120 = _q110_pops[0];
542 : 0 : switch (TREE_CODE (_q120))
543 : : {
544 : 0 : case SSA_NAME:
545 : 0 : if (gimple *_d7 = get_def (valueize, _q120))
546 : : {
547 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
548 : 0 : switch (gimple_assign_rhs_code (_a7))
549 : : {
550 : 0 : CASE_CONVERT:
551 : 0 : {
552 : 0 : tree _q130 = gimple_assign_rhs1 (_a7);
553 : 0 : _q130 = do_valueize (valueize, _q130);
554 : 0 : switch (TREE_CODE (_q130))
555 : : {
556 : 0 : case SSA_NAME:
557 : 0 : if (gimple *_d8 = get_def (valueize, _q130))
558 : : {
559 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
560 : 0 : switch (gimple_assign_rhs_code (_a8))
561 : : {
562 : 0 : case LT_EXPR:
563 : 0 : {
564 : 0 : tree _q140 = gimple_assign_rhs1 (_a8);
565 : 0 : _q140 = do_valueize (valueize, _q140);
566 : 0 : tree _q141 = gimple_assign_rhs2 (_a8);
567 : 0 : _q141 = do_valueize (valueize, _q141);
568 : 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
569 : : {
570 : 0 : if (integer_zerop (_q141))
571 : : {
572 : 0 : switch (TREE_CODE (_p2))
573 : : {
574 : 0 : case SSA_NAME:
575 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
576 : : {
577 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
578 : 0 : switch (gimple_assign_rhs_code (_a9))
579 : : {
580 : 0 : CASE_CONVERT:
581 : 0 : {
582 : 0 : tree _q170 = gimple_assign_rhs1 (_a9);
583 : 0 : _q170 = do_valueize (valueize, _q170);
584 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
585 : : {
586 : 0 : {
587 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q80 };
588 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
589 : : )
590 : : {
591 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
592 : : )
593 : : {
594 : 0 : {
595 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
596 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
597 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
598 : 0 : itype_prec);
599 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
600 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
601 : 0 : itype_prec);
602 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
603 : 0 : itype_prec);
604 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
605 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
606 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
607 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
608 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
609 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
610 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
611 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
612 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
613 : 0 : && wi::eq_p (int_cst_3, otype_max)
614 : : )
615 : : {
616 : 0 : {
617 : 0 : res_ops[0] = captures[0];
618 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
619 : 0 : return true;
620 : : }
621 : : }
622 : 0 : }
623 : : }
624 : : }
625 : : }
626 : : }
627 : : break;
628 : : }
629 : : default:;
630 : : }
631 : : }
632 : : break;
633 : : default:;
634 : : }
635 : : }
636 : : }
637 : : break;
638 : : }
639 : : default:;
640 : : }
641 : : }
642 : : break;
643 : : default:;
644 : : }
645 : : break;
646 : : }
647 : : default:;
648 : : }
649 : : }
650 : : break;
651 : : default:;
652 : : }
653 : : }
654 : : }
655 : 0 : break;
656 : : }
657 : : default:;
658 : : }
659 : : }
660 : : break;
661 : : default:;
662 : : }
663 : : }
664 : : }
665 : 0 : break;
666 : : }
667 : 0 : default:;
668 : : }
669 : 0 : {
670 : 0 : tree _q80_pops[1];
671 : 0 : if (gimple_nop_convert (_q80, _q80_pops, valueize))
672 : : {
673 : 0 : tree _q90 = _q80_pops[0];
674 : 0 : switch (TREE_CODE (_q90))
675 : : {
676 : 0 : case SSA_NAME:
677 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
678 : : {
679 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
680 : 0 : switch (gimple_assign_rhs_code (_a6))
681 : : {
682 : 0 : case NEGATE_EXPR:
683 : 0 : {
684 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
685 : 0 : _q100 = do_valueize (valueize, _q100);
686 : 0 : {
687 : 0 : tree _q100_pops[1];
688 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
689 : : {
690 : 0 : tree _q110 = _q100_pops[0];
691 : 0 : switch (TREE_CODE (_q110))
692 : : {
693 : 0 : case SSA_NAME:
694 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
695 : : {
696 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
697 : 0 : switch (gimple_assign_rhs_code (_a7))
698 : : {
699 : 0 : CASE_CONVERT:
700 : 0 : {
701 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
702 : 0 : _q120 = do_valueize (valueize, _q120);
703 : 0 : switch (TREE_CODE (_q120))
704 : : {
705 : 0 : case SSA_NAME:
706 : 0 : if (gimple *_d8 = get_def (valueize, _q120))
707 : : {
708 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
709 : 0 : switch (gimple_assign_rhs_code (_a8))
710 : : {
711 : 0 : case LT_EXPR:
712 : 0 : {
713 : 0 : tree _q130 = gimple_assign_rhs1 (_a8);
714 : 0 : _q130 = do_valueize (valueize, _q130);
715 : 0 : tree _q131 = gimple_assign_rhs2 (_a8);
716 : 0 : _q131 = do_valueize (valueize, _q131);
717 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
718 : : {
719 : 0 : if (integer_zerop (_q131))
720 : : {
721 : 0 : switch (TREE_CODE (_q81))
722 : : {
723 : 0 : case INTEGER_CST:
724 : 0 : {
725 : 0 : switch (TREE_CODE (_p2))
726 : : {
727 : 0 : case SSA_NAME:
728 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
729 : : {
730 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
731 : 0 : switch (gimple_assign_rhs_code (_a9))
732 : : {
733 : 0 : CASE_CONVERT:
734 : 0 : {
735 : 0 : tree _q170 = gimple_assign_rhs1 (_a9);
736 : 0 : _q170 = do_valueize (valueize, _q170);
737 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
738 : : {
739 : 0 : {
740 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q81 };
741 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
742 : : )
743 : : {
744 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
745 : : )
746 : : {
747 : 0 : {
748 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
749 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
750 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
751 : 0 : itype_prec);
752 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
753 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
754 : 0 : itype_prec);
755 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
756 : 0 : itype_prec);
757 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
758 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
759 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
760 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
761 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
762 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
763 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
764 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
765 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
766 : 0 : && wi::eq_p (int_cst_3, otype_max)
767 : : )
768 : : {
769 : 0 : {
770 : 0 : res_ops[0] = captures[0];
771 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
772 : 0 : return true;
773 : : }
774 : : }
775 : : }
776 : : }
777 : : }
778 : : }
779 : : }
780 : : break;
781 : : }
782 : : default:;
783 : : }
784 : : }
785 : : break;
786 : : default:;
787 : : }
788 : : break;
789 : : }
790 : : default:;
791 : : }
792 : : }
793 : : }
794 : : break;
795 : : }
796 : : default:;
797 : : }
798 : : }
799 : : break;
800 : : default:;
801 : : }
802 : : break;
803 : : }
804 : : default:;
805 : : }
806 : : }
807 : : break;
808 : : default:;
809 : : }
810 : : }
811 : : }
812 : 0 : break;
813 : : }
814 : : default:;
815 : : }
816 : : }
817 : : break;
818 : : default:;
819 : : }
820 : : }
821 : : }
822 : 0 : break;
823 : : }
824 : : default:;
825 : : }
826 : : }
827 : : break;
828 : : default:;
829 : : }
830 : : break;
831 : : }
832 : : default:;
833 : : }
834 : : break;
835 : : }
836 : : default:;
837 : : }
838 : : break;
839 : : }
840 : : default:;
841 : : }
842 : : }
843 : : break;
844 : 0 : case INTEGER_CST:
845 : 0 : {
846 : 0 : switch (TREE_CODE (_q31))
847 : : {
848 : 0 : case SSA_NAME:
849 : 0 : if (gimple *_d4 = get_def (valueize, _q31))
850 : : {
851 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
852 : 0 : switch (gimple_assign_rhs_code (_a4))
853 : : {
854 : 0 : CASE_CONVERT:
855 : 0 : {
856 : 0 : tree _q50 = gimple_assign_rhs1 (_a4);
857 : 0 : _q50 = do_valueize (valueize, _q50);
858 : 0 : switch (TREE_CODE (_q21))
859 : : {
860 : 0 : case INTEGER_CST:
861 : 0 : {
862 : 0 : switch (TREE_CODE (_p1))
863 : : {
864 : 0 : case SSA_NAME:
865 : 0 : if (gimple *_d5 = get_def (valueize, _p1))
866 : : {
867 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
868 : 0 : switch (gimple_assign_rhs_code (_a5))
869 : : {
870 : 0 : case BIT_XOR_EXPR:
871 : 0 : {
872 : 0 : tree _q80 = gimple_assign_rhs1 (_a5);
873 : 0 : _q80 = do_valueize (valueize, _q80);
874 : 0 : tree _q81 = gimple_assign_rhs2 (_a5);
875 : 0 : _q81 = do_valueize (valueize, _q81);
876 : 0 : if (tree_swap_operands_p (_q80, _q81))
877 : 0 : std::swap (_q80, _q81);
878 : 0 : switch (TREE_CODE (_q80))
879 : : {
880 : 0 : case SSA_NAME:
881 : 0 : if (gimple *_d6 = get_def (valueize, _q80))
882 : : {
883 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
884 : 0 : switch (gimple_assign_rhs_code (_a6))
885 : : {
886 : 0 : case NEGATE_EXPR:
887 : 0 : {
888 : 0 : tree _q90 = gimple_assign_rhs1 (_a6);
889 : 0 : _q90 = do_valueize (valueize, _q90);
890 : 0 : switch (TREE_CODE (_q90))
891 : : {
892 : 0 : case SSA_NAME:
893 : 0 : if (gimple *_d7 = get_def (valueize, _q90))
894 : : {
895 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
896 : 0 : switch (gimple_assign_rhs_code (_a7))
897 : : {
898 : 0 : CASE_CONVERT:
899 : 0 : {
900 : 0 : tree _q100 = gimple_assign_rhs1 (_a7);
901 : 0 : _q100 = do_valueize (valueize, _q100);
902 : 0 : switch (TREE_CODE (_q100))
903 : : {
904 : 0 : case SSA_NAME:
905 : 0 : if (gimple *_d8 = get_def (valueize, _q100))
906 : : {
907 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
908 : 0 : switch (gimple_assign_rhs_code (_a8))
909 : : {
910 : 0 : case LT_EXPR:
911 : 0 : {
912 : 0 : tree _q110 = gimple_assign_rhs1 (_a8);
913 : 0 : _q110 = do_valueize (valueize, _q110);
914 : 0 : tree _q111 = gimple_assign_rhs2 (_a8);
915 : 0 : _q111 = do_valueize (valueize, _q111);
916 : 0 : if ((_q110 == _q50 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q50, 0) && types_match (_q110, _q50)))
917 : : {
918 : 0 : if (integer_zerop (_q111))
919 : : {
920 : 0 : switch (TREE_CODE (_q81))
921 : : {
922 : 0 : case INTEGER_CST:
923 : 0 : {
924 : 0 : switch (TREE_CODE (_p2))
925 : : {
926 : 0 : case SSA_NAME:
927 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
928 : : {
929 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
930 : 0 : switch (gimple_assign_rhs_code (_a9))
931 : : {
932 : 0 : CASE_CONVERT:
933 : 0 : {
934 : 0 : tree _q150 = gimple_assign_rhs1 (_a9);
935 : 0 : _q150 = do_valueize (valueize, _q150);
936 : 0 : if ((_q150 == _q50 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q50, 0) && types_match (_q150, _q50)))
937 : : {
938 : 0 : {
939 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q81 };
940 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
941 : : )
942 : : {
943 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
944 : : )
945 : : {
946 : 0 : {
947 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
948 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
949 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
950 : 0 : itype_prec);
951 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
952 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
953 : 0 : itype_prec);
954 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
955 : 0 : itype_prec);
956 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
957 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
958 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
959 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
960 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
961 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
962 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
963 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
964 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
965 : 0 : && wi::eq_p (int_cst_3, otype_max)
966 : : )
967 : : {
968 : 0 : {
969 : 0 : res_ops[0] = captures[0];
970 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
971 : 0 : return true;
972 : : }
973 : : }
974 : 0 : }
975 : : }
976 : : }
977 : : }
978 : : }
979 : : break;
980 : : }
981 : : default:;
982 : : }
983 : : }
984 : : break;
985 : : default:;
986 : : }
987 : : break;
988 : : }
989 : : default:;
990 : : }
991 : : }
992 : : }
993 : : break;
994 : : }
995 : : default:;
996 : : }
997 : : }
998 : : break;
999 : : default:;
1000 : : }
1001 : : break;
1002 : : }
1003 : : default:;
1004 : : }
1005 : : }
1006 : : break;
1007 : : default:;
1008 : : }
1009 : : break;
1010 : : }
1011 : : default:;
1012 : : }
1013 : : }
1014 : : break;
1015 : 0 : case INTEGER_CST:
1016 : 0 : {
1017 : 0 : switch (TREE_CODE (_q81))
1018 : : {
1019 : 0 : case SSA_NAME:
1020 : 0 : if (gimple *_d6 = get_def (valueize, _q81))
1021 : : {
1022 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
1023 : 0 : switch (gimple_assign_rhs_code (_a6))
1024 : : {
1025 : 0 : case NEGATE_EXPR:
1026 : 0 : {
1027 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
1028 : 0 : _q100 = do_valueize (valueize, _q100);
1029 : 0 : switch (TREE_CODE (_q100))
1030 : : {
1031 : 0 : case SSA_NAME:
1032 : 0 : if (gimple *_d7 = get_def (valueize, _q100))
1033 : : {
1034 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
1035 : 0 : switch (gimple_assign_rhs_code (_a7))
1036 : : {
1037 : 0 : CASE_CONVERT:
1038 : 0 : {
1039 : 0 : tree _q110 = gimple_assign_rhs1 (_a7);
1040 : 0 : _q110 = do_valueize (valueize, _q110);
1041 : 0 : switch (TREE_CODE (_q110))
1042 : : {
1043 : 0 : case SSA_NAME:
1044 : 0 : if (gimple *_d8 = get_def (valueize, _q110))
1045 : : {
1046 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
1047 : 0 : switch (gimple_assign_rhs_code (_a8))
1048 : : {
1049 : 0 : case LT_EXPR:
1050 : 0 : {
1051 : 0 : tree _q120 = gimple_assign_rhs1 (_a8);
1052 : 0 : _q120 = do_valueize (valueize, _q120);
1053 : 0 : tree _q121 = gimple_assign_rhs2 (_a8);
1054 : 0 : _q121 = do_valueize (valueize, _q121);
1055 : 0 : if ((_q120 == _q50 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q50, 0) && types_match (_q120, _q50)))
1056 : : {
1057 : 0 : if (integer_zerop (_q121))
1058 : : {
1059 : 0 : switch (TREE_CODE (_p2))
1060 : : {
1061 : 0 : case SSA_NAME:
1062 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
1063 : : {
1064 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
1065 : 0 : switch (gimple_assign_rhs_code (_a9))
1066 : : {
1067 : 0 : CASE_CONVERT:
1068 : 0 : {
1069 : 0 : tree _q150 = gimple_assign_rhs1 (_a9);
1070 : 0 : _q150 = do_valueize (valueize, _q150);
1071 : 0 : if ((_q150 == _q50 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q50, 0) && types_match (_q150, _q50)))
1072 : : {
1073 : 0 : {
1074 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q80 };
1075 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1076 : : )
1077 : : {
1078 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1079 : : )
1080 : : {
1081 : 0 : {
1082 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
1083 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
1084 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
1085 : 0 : itype_prec);
1086 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
1087 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
1088 : 0 : itype_prec);
1089 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
1090 : 0 : itype_prec);
1091 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
1092 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
1093 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
1094 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
1095 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
1096 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
1097 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
1098 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
1099 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
1100 : 0 : && wi::eq_p (int_cst_3, otype_max)
1101 : : )
1102 : : {
1103 : 0 : {
1104 : 0 : res_ops[0] = captures[0];
1105 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
1106 : 0 : return true;
1107 : : }
1108 : : }
1109 : 0 : }
1110 : : }
1111 : : }
1112 : : }
1113 : : }
1114 : : break;
1115 : : }
1116 : : default:;
1117 : : }
1118 : : }
1119 : : break;
1120 : : default:;
1121 : : }
1122 : : }
1123 : : }
1124 : : break;
1125 : : }
1126 : : default:;
1127 : : }
1128 : : }
1129 : : break;
1130 : : default:;
1131 : : }
1132 : : break;
1133 : : }
1134 : : default:;
1135 : : }
1136 : : }
1137 : : break;
1138 : : default:;
1139 : : }
1140 : : break;
1141 : : }
1142 : : default:;
1143 : : }
1144 : : }
1145 : : break;
1146 : 0 : default:;
1147 : : }
1148 : 0 : {
1149 : 0 : tree _q81_pops[1];
1150 : 0 : if (gimple_nop_convert (_q81, _q81_pops, valueize))
1151 : : {
1152 : 0 : tree _q100 = _q81_pops[0];
1153 : 0 : switch (TREE_CODE (_q100))
1154 : : {
1155 : 0 : case SSA_NAME:
1156 : 0 : if (gimple *_d6 = get_def (valueize, _q100))
1157 : : {
1158 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
1159 : 0 : switch (gimple_assign_rhs_code (_a6))
1160 : : {
1161 : 0 : case NEGATE_EXPR:
1162 : 0 : {
1163 : 0 : tree _q110 = gimple_assign_rhs1 (_a6);
1164 : 0 : _q110 = do_valueize (valueize, _q110);
1165 : 0 : {
1166 : 0 : tree _q110_pops[1];
1167 : 0 : if (gimple_nop_convert (_q110, _q110_pops, valueize))
1168 : : {
1169 : 0 : tree _q120 = _q110_pops[0];
1170 : 0 : switch (TREE_CODE (_q120))
1171 : : {
1172 : 0 : case SSA_NAME:
1173 : 0 : if (gimple *_d7 = get_def (valueize, _q120))
1174 : : {
1175 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
1176 : 0 : switch (gimple_assign_rhs_code (_a7))
1177 : : {
1178 : 0 : CASE_CONVERT:
1179 : 0 : {
1180 : 0 : tree _q130 = gimple_assign_rhs1 (_a7);
1181 : 0 : _q130 = do_valueize (valueize, _q130);
1182 : 0 : switch (TREE_CODE (_q130))
1183 : : {
1184 : 0 : case SSA_NAME:
1185 : 0 : if (gimple *_d8 = get_def (valueize, _q130))
1186 : : {
1187 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
1188 : 0 : switch (gimple_assign_rhs_code (_a8))
1189 : : {
1190 : 0 : case LT_EXPR:
1191 : 0 : {
1192 : 0 : tree _q140 = gimple_assign_rhs1 (_a8);
1193 : 0 : _q140 = do_valueize (valueize, _q140);
1194 : 0 : tree _q141 = gimple_assign_rhs2 (_a8);
1195 : 0 : _q141 = do_valueize (valueize, _q141);
1196 : 0 : if ((_q140 == _q50 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q50, 0) && types_match (_q140, _q50)))
1197 : : {
1198 : 0 : if (integer_zerop (_q141))
1199 : : {
1200 : 0 : switch (TREE_CODE (_p2))
1201 : : {
1202 : 0 : case SSA_NAME:
1203 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
1204 : : {
1205 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
1206 : 0 : switch (gimple_assign_rhs_code (_a9))
1207 : : {
1208 : 0 : CASE_CONVERT:
1209 : 0 : {
1210 : 0 : tree _q170 = gimple_assign_rhs1 (_a9);
1211 : 0 : _q170 = do_valueize (valueize, _q170);
1212 : 0 : if ((_q170 == _q50 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q50, 0) && types_match (_q170, _q50)))
1213 : : {
1214 : 0 : {
1215 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q80 };
1216 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1217 : : )
1218 : : {
1219 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1220 : : )
1221 : : {
1222 : 0 : {
1223 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
1224 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
1225 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
1226 : 0 : itype_prec);
1227 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
1228 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
1229 : 0 : itype_prec);
1230 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
1231 : 0 : itype_prec);
1232 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
1233 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
1234 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
1235 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
1236 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
1237 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
1238 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
1239 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
1240 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
1241 : 0 : && wi::eq_p (int_cst_3, otype_max)
1242 : : )
1243 : : {
1244 : 0 : {
1245 : 0 : res_ops[0] = captures[0];
1246 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
1247 : 0 : return true;
1248 : : }
1249 : : }
1250 : 0 : }
1251 : : }
1252 : : }
1253 : : }
1254 : : }
1255 : : break;
1256 : : }
1257 : : default:;
1258 : : }
1259 : : }
1260 : : break;
1261 : : default:;
1262 : : }
1263 : : }
1264 : : }
1265 : : break;
1266 : : }
1267 : : default:;
1268 : : }
1269 : : }
1270 : : break;
1271 : : default:;
1272 : : }
1273 : : break;
1274 : : }
1275 : : default:;
1276 : : }
1277 : : }
1278 : : break;
1279 : : default:;
1280 : : }
1281 : : }
1282 : : }
1283 : 0 : break;
1284 : : }
1285 : : default:;
1286 : : }
1287 : : }
1288 : : break;
1289 : : default:;
1290 : : }
1291 : : }
1292 : : }
1293 : 0 : break;
1294 : : }
1295 : 0 : default:;
1296 : : }
1297 : 0 : {
1298 : 0 : tree _q80_pops[1];
1299 : 0 : if (gimple_nop_convert (_q80, _q80_pops, valueize))
1300 : : {
1301 : 0 : tree _q90 = _q80_pops[0];
1302 : 0 : switch (TREE_CODE (_q90))
1303 : : {
1304 : 0 : case SSA_NAME:
1305 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
1306 : : {
1307 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
1308 : 0 : switch (gimple_assign_rhs_code (_a6))
1309 : : {
1310 : 0 : case NEGATE_EXPR:
1311 : 0 : {
1312 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
1313 : 0 : _q100 = do_valueize (valueize, _q100);
1314 : 0 : {
1315 : 0 : tree _q100_pops[1];
1316 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
1317 : : {
1318 : 0 : tree _q110 = _q100_pops[0];
1319 : 0 : switch (TREE_CODE (_q110))
1320 : : {
1321 : 0 : case SSA_NAME:
1322 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
1323 : : {
1324 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
1325 : 0 : switch (gimple_assign_rhs_code (_a7))
1326 : : {
1327 : 0 : CASE_CONVERT:
1328 : 0 : {
1329 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
1330 : 0 : _q120 = do_valueize (valueize, _q120);
1331 : 0 : switch (TREE_CODE (_q120))
1332 : : {
1333 : 0 : case SSA_NAME:
1334 : 0 : if (gimple *_d8 = get_def (valueize, _q120))
1335 : : {
1336 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
1337 : 0 : switch (gimple_assign_rhs_code (_a8))
1338 : : {
1339 : 0 : case LT_EXPR:
1340 : 0 : {
1341 : 0 : tree _q130 = gimple_assign_rhs1 (_a8);
1342 : 0 : _q130 = do_valueize (valueize, _q130);
1343 : 0 : tree _q131 = gimple_assign_rhs2 (_a8);
1344 : 0 : _q131 = do_valueize (valueize, _q131);
1345 : 0 : if ((_q130 == _q50 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q50, 0) && types_match (_q130, _q50)))
1346 : : {
1347 : 0 : if (integer_zerop (_q131))
1348 : : {
1349 : 0 : switch (TREE_CODE (_q81))
1350 : : {
1351 : 0 : case INTEGER_CST:
1352 : 0 : {
1353 : 0 : switch (TREE_CODE (_p2))
1354 : : {
1355 : 0 : case SSA_NAME:
1356 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
1357 : : {
1358 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
1359 : 0 : switch (gimple_assign_rhs_code (_a9))
1360 : : {
1361 : 0 : CASE_CONVERT:
1362 : 0 : {
1363 : 0 : tree _q170 = gimple_assign_rhs1 (_a9);
1364 : 0 : _q170 = do_valueize (valueize, _q170);
1365 : 0 : if ((_q170 == _q50 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q50, 0) && types_match (_q170, _q50)))
1366 : : {
1367 : 0 : {
1368 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q81 };
1369 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1370 : : )
1371 : : {
1372 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1373 : : )
1374 : : {
1375 : 0 : {
1376 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
1377 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
1378 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
1379 : 0 : itype_prec);
1380 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
1381 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
1382 : 0 : itype_prec);
1383 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
1384 : 0 : itype_prec);
1385 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
1386 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
1387 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
1388 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
1389 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
1390 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
1391 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
1392 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
1393 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
1394 : 0 : && wi::eq_p (int_cst_3, otype_max)
1395 : : )
1396 : : {
1397 : 0 : {
1398 : 0 : res_ops[0] = captures[0];
1399 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
1400 : 0 : return true;
1401 : : }
1402 : : }
1403 : 0 : }
1404 : : }
1405 : : }
1406 : : }
1407 : : }
1408 : : break;
1409 : : }
1410 : : default:;
1411 : : }
1412 : : }
1413 : : break;
1414 : : default:;
1415 : : }
1416 : : break;
1417 : : }
1418 : : default:;
1419 : : }
1420 : : }
1421 : : }
1422 : : break;
1423 : : }
1424 : : default:;
1425 : : }
1426 : : }
1427 : : break;
1428 : : default:;
1429 : : }
1430 : : break;
1431 : : }
1432 : : default:;
1433 : : }
1434 : : }
1435 : : break;
1436 : : default:;
1437 : : }
1438 : : }
1439 : : }
1440 : 0 : break;
1441 : : }
1442 : : default:;
1443 : : }
1444 : : }
1445 : : break;
1446 : : default:;
1447 : : }
1448 : : }
1449 : : }
1450 : 0 : break;
1451 : : }
1452 : : default:;
1453 : : }
1454 : : }
1455 : : break;
1456 : : default:;
1457 : : }
1458 : : break;
1459 : : }
1460 : : default:;
1461 : : }
1462 : : break;
1463 : : }
1464 : : default:;
1465 : : }
1466 : : }
1467 : : break;
1468 : : default:;
1469 : : }
1470 : : break;
1471 : : }
1472 : : default:;
1473 : : }
1474 : 23838398 : break;
1475 : : }
1476 : : default:;
1477 : : }
1478 : : }
1479 : : break;
1480 : : default:;
1481 : : }
1482 : : break;
1483 : : }
1484 : : default:;
1485 : : }
1486 : : }
1487 : : break;
1488 : 0 : case GT_EXPR:
1489 : 0 : {
1490 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
1491 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
1492 : 0 : || is_gimple_min_invariant (_q20)))
1493 : : {
1494 : 0 : _q20 = do_valueize (valueize, _q20);
1495 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
1496 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
1497 : 0 : || is_gimple_min_invariant (_q21)))
1498 : : {
1499 : 0 : _q21 = do_valueize (valueize, _q21);
1500 : 0 : switch (TREE_CODE (_q20))
1501 : : {
1502 : 0 : case SSA_NAME:
1503 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
1504 : : {
1505 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
1506 : 0 : switch (gimple_assign_rhs_code (_a2))
1507 : : {
1508 : 0 : case PLUS_EXPR:
1509 : 0 : {
1510 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
1511 : 0 : _q30 = do_valueize (valueize, _q30);
1512 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
1513 : 0 : _q31 = do_valueize (valueize, _q31);
1514 : 0 : if (tree_swap_operands_p (_q30, _q31))
1515 : 0 : std::swap (_q30, _q31);
1516 : 0 : switch (TREE_CODE (_q30))
1517 : : {
1518 : 0 : case SSA_NAME:
1519 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
1520 : : {
1521 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1522 : 0 : switch (gimple_assign_rhs_code (_a3))
1523 : : {
1524 : 0 : CASE_CONVERT:
1525 : 0 : {
1526 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
1527 : 0 : _q40 = do_valueize (valueize, _q40);
1528 : 0 : switch (TREE_CODE (_q31))
1529 : : {
1530 : 0 : case INTEGER_CST:
1531 : 0 : {
1532 : 0 : switch (TREE_CODE (_q21))
1533 : : {
1534 : 0 : case INTEGER_CST:
1535 : 0 : {
1536 : 0 : switch (TREE_CODE (_p1))
1537 : : {
1538 : 0 : case SSA_NAME:
1539 : 0 : if (gimple *_d4 = get_def (valueize, _p1))
1540 : : {
1541 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
1542 : 0 : switch (gimple_assign_rhs_code (_a4))
1543 : : {
1544 : 0 : case BIT_XOR_EXPR:
1545 : 0 : {
1546 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
1547 : 0 : _q80 = do_valueize (valueize, _q80);
1548 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
1549 : 0 : _q81 = do_valueize (valueize, _q81);
1550 : 0 : if (tree_swap_operands_p (_q80, _q81))
1551 : 0 : std::swap (_q80, _q81);
1552 : 0 : switch (TREE_CODE (_q80))
1553 : : {
1554 : 0 : case SSA_NAME:
1555 : 0 : if (gimple *_d5 = get_def (valueize, _q80))
1556 : : {
1557 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1558 : 0 : switch (gimple_assign_rhs_code (_a5))
1559 : : {
1560 : 0 : case NEGATE_EXPR:
1561 : 0 : {
1562 : 0 : tree _q90 = gimple_assign_rhs1 (_a5);
1563 : 0 : _q90 = do_valueize (valueize, _q90);
1564 : 0 : switch (TREE_CODE (_q90))
1565 : : {
1566 : 0 : case SSA_NAME:
1567 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
1568 : : {
1569 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
1570 : 0 : switch (gimple_assign_rhs_code (_a6))
1571 : : {
1572 : 0 : CASE_CONVERT:
1573 : 0 : {
1574 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
1575 : 0 : _q100 = do_valueize (valueize, _q100);
1576 : 0 : switch (TREE_CODE (_q100))
1577 : : {
1578 : 0 : case SSA_NAME:
1579 : 0 : if (gimple *_d7 = get_def (valueize, _q100))
1580 : : {
1581 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
1582 : 0 : switch (gimple_assign_rhs_code (_a7))
1583 : : {
1584 : 0 : case LT_EXPR:
1585 : 0 : {
1586 : 0 : tree _q110 = gimple_assign_rhs1 (_a7);
1587 : 0 : _q110 = do_valueize (valueize, _q110);
1588 : 0 : tree _q111 = gimple_assign_rhs2 (_a7);
1589 : 0 : _q111 = do_valueize (valueize, _q111);
1590 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
1591 : : {
1592 : 0 : if (integer_zerop (_q111))
1593 : : {
1594 : 0 : switch (TREE_CODE (_q81))
1595 : : {
1596 : 0 : case INTEGER_CST:
1597 : 0 : {
1598 : 0 : switch (TREE_CODE (_p2))
1599 : : {
1600 : 0 : case SSA_NAME:
1601 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
1602 : : {
1603 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
1604 : 0 : switch (gimple_assign_rhs_code (_a8))
1605 : : {
1606 : 0 : CASE_CONVERT:
1607 : 0 : {
1608 : 0 : tree _q150 = gimple_assign_rhs1 (_a8);
1609 : 0 : _q150 = do_valueize (valueize, _q150);
1610 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
1611 : : {
1612 : 0 : {
1613 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q81 };
1614 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1615 : : )
1616 : : {
1617 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1618 : : )
1619 : : {
1620 : 0 : {
1621 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
1622 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
1623 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
1624 : 0 : itype_prec);
1625 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
1626 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
1627 : 0 : itype_prec);
1628 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
1629 : 0 : itype_prec);
1630 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
1631 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
1632 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
1633 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
1634 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
1635 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
1636 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
1637 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
1638 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
1639 : 0 : && wi::eq_p (int_cst_3, otype_max)
1640 : : )
1641 : : {
1642 : 0 : {
1643 : 0 : res_ops[0] = captures[0];
1644 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
1645 : 0 : return true;
1646 : : }
1647 : : }
1648 : 0 : }
1649 : : }
1650 : : }
1651 : : }
1652 : : }
1653 : : break;
1654 : : }
1655 : : default:;
1656 : : }
1657 : : }
1658 : : break;
1659 : : default:;
1660 : : }
1661 : : break;
1662 : : }
1663 : : default:;
1664 : : }
1665 : : }
1666 : : }
1667 : : break;
1668 : : }
1669 : : default:;
1670 : : }
1671 : : }
1672 : : break;
1673 : : default:;
1674 : : }
1675 : : break;
1676 : : }
1677 : : default:;
1678 : : }
1679 : : }
1680 : : break;
1681 : : default:;
1682 : : }
1683 : : break;
1684 : : }
1685 : : default:;
1686 : : }
1687 : : }
1688 : : break;
1689 : 0 : case INTEGER_CST:
1690 : 0 : {
1691 : 0 : switch (TREE_CODE (_q81))
1692 : : {
1693 : 0 : case SSA_NAME:
1694 : 0 : if (gimple *_d5 = get_def (valueize, _q81))
1695 : : {
1696 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1697 : 0 : switch (gimple_assign_rhs_code (_a5))
1698 : : {
1699 : 0 : case NEGATE_EXPR:
1700 : 0 : {
1701 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
1702 : 0 : _q100 = do_valueize (valueize, _q100);
1703 : 0 : switch (TREE_CODE (_q100))
1704 : : {
1705 : 0 : case SSA_NAME:
1706 : 0 : if (gimple *_d6 = get_def (valueize, _q100))
1707 : : {
1708 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
1709 : 0 : switch (gimple_assign_rhs_code (_a6))
1710 : : {
1711 : 0 : CASE_CONVERT:
1712 : 0 : {
1713 : 0 : tree _q110 = gimple_assign_rhs1 (_a6);
1714 : 0 : _q110 = do_valueize (valueize, _q110);
1715 : 0 : switch (TREE_CODE (_q110))
1716 : : {
1717 : 0 : case SSA_NAME:
1718 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
1719 : : {
1720 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
1721 : 0 : switch (gimple_assign_rhs_code (_a7))
1722 : : {
1723 : 0 : case LT_EXPR:
1724 : 0 : {
1725 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
1726 : 0 : _q120 = do_valueize (valueize, _q120);
1727 : 0 : tree _q121 = gimple_assign_rhs2 (_a7);
1728 : 0 : _q121 = do_valueize (valueize, _q121);
1729 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
1730 : : {
1731 : 0 : if (integer_zerop (_q121))
1732 : : {
1733 : 0 : switch (TREE_CODE (_p2))
1734 : : {
1735 : 0 : case SSA_NAME:
1736 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
1737 : : {
1738 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
1739 : 0 : switch (gimple_assign_rhs_code (_a8))
1740 : : {
1741 : 0 : CASE_CONVERT:
1742 : 0 : {
1743 : 0 : tree _q150 = gimple_assign_rhs1 (_a8);
1744 : 0 : _q150 = do_valueize (valueize, _q150);
1745 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
1746 : : {
1747 : 0 : {
1748 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q80 };
1749 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1750 : : )
1751 : : {
1752 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1753 : : )
1754 : : {
1755 : 0 : {
1756 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
1757 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
1758 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
1759 : 0 : itype_prec);
1760 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
1761 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
1762 : 0 : itype_prec);
1763 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
1764 : 0 : itype_prec);
1765 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
1766 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
1767 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
1768 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
1769 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
1770 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
1771 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
1772 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
1773 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
1774 : 0 : && wi::eq_p (int_cst_3, otype_max)
1775 : : )
1776 : : {
1777 : 0 : {
1778 : 0 : res_ops[0] = captures[0];
1779 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
1780 : 0 : return true;
1781 : : }
1782 : : }
1783 : 0 : }
1784 : : }
1785 : : }
1786 : : }
1787 : : }
1788 : : break;
1789 : : }
1790 : : default:;
1791 : : }
1792 : : }
1793 : : break;
1794 : : default:;
1795 : : }
1796 : : }
1797 : : }
1798 : : break;
1799 : : }
1800 : : default:;
1801 : : }
1802 : : }
1803 : : break;
1804 : : default:;
1805 : : }
1806 : : break;
1807 : : }
1808 : : default:;
1809 : : }
1810 : : }
1811 : : break;
1812 : : default:;
1813 : : }
1814 : : break;
1815 : : }
1816 : : default:;
1817 : : }
1818 : : }
1819 : : break;
1820 : 0 : default:;
1821 : : }
1822 : 0 : {
1823 : 0 : tree _q81_pops[1];
1824 : 0 : if (gimple_nop_convert (_q81, _q81_pops, valueize))
1825 : : {
1826 : 0 : tree _q100 = _q81_pops[0];
1827 : 0 : switch (TREE_CODE (_q100))
1828 : : {
1829 : 0 : case SSA_NAME:
1830 : 0 : if (gimple *_d5 = get_def (valueize, _q100))
1831 : : {
1832 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1833 : 0 : switch (gimple_assign_rhs_code (_a5))
1834 : : {
1835 : 0 : case NEGATE_EXPR:
1836 : 0 : {
1837 : 0 : tree _q110 = gimple_assign_rhs1 (_a5);
1838 : 0 : _q110 = do_valueize (valueize, _q110);
1839 : 0 : {
1840 : 0 : tree _q110_pops[1];
1841 : 0 : if (gimple_nop_convert (_q110, _q110_pops, valueize))
1842 : : {
1843 : 0 : tree _q120 = _q110_pops[0];
1844 : 0 : switch (TREE_CODE (_q120))
1845 : : {
1846 : 0 : case SSA_NAME:
1847 : 0 : if (gimple *_d6 = get_def (valueize, _q120))
1848 : : {
1849 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
1850 : 0 : switch (gimple_assign_rhs_code (_a6))
1851 : : {
1852 : 0 : CASE_CONVERT:
1853 : 0 : {
1854 : 0 : tree _q130 = gimple_assign_rhs1 (_a6);
1855 : 0 : _q130 = do_valueize (valueize, _q130);
1856 : 0 : switch (TREE_CODE (_q130))
1857 : : {
1858 : 0 : case SSA_NAME:
1859 : 0 : if (gimple *_d7 = get_def (valueize, _q130))
1860 : : {
1861 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
1862 : 0 : switch (gimple_assign_rhs_code (_a7))
1863 : : {
1864 : 0 : case LT_EXPR:
1865 : 0 : {
1866 : 0 : tree _q140 = gimple_assign_rhs1 (_a7);
1867 : 0 : _q140 = do_valueize (valueize, _q140);
1868 : 0 : tree _q141 = gimple_assign_rhs2 (_a7);
1869 : 0 : _q141 = do_valueize (valueize, _q141);
1870 : 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
1871 : : {
1872 : 0 : if (integer_zerop (_q141))
1873 : : {
1874 : 0 : switch (TREE_CODE (_p2))
1875 : : {
1876 : 0 : case SSA_NAME:
1877 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
1878 : : {
1879 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
1880 : 0 : switch (gimple_assign_rhs_code (_a8))
1881 : : {
1882 : 0 : CASE_CONVERT:
1883 : 0 : {
1884 : 0 : tree _q170 = gimple_assign_rhs1 (_a8);
1885 : 0 : _q170 = do_valueize (valueize, _q170);
1886 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
1887 : : {
1888 : 0 : {
1889 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q80 };
1890 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1891 : : )
1892 : : {
1893 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1894 : : )
1895 : : {
1896 : 0 : {
1897 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
1898 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
1899 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
1900 : 0 : itype_prec);
1901 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
1902 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
1903 : 0 : itype_prec);
1904 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
1905 : 0 : itype_prec);
1906 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
1907 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
1908 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
1909 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
1910 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
1911 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
1912 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
1913 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
1914 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
1915 : 0 : && wi::eq_p (int_cst_3, otype_max)
1916 : : )
1917 : : {
1918 : 0 : {
1919 : 0 : res_ops[0] = captures[0];
1920 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
1921 : 0 : return true;
1922 : : }
1923 : : }
1924 : 0 : }
1925 : : }
1926 : : }
1927 : : }
1928 : : }
1929 : : break;
1930 : : }
1931 : : default:;
1932 : : }
1933 : : }
1934 : : break;
1935 : : default:;
1936 : : }
1937 : : }
1938 : : }
1939 : : break;
1940 : : }
1941 : : default:;
1942 : : }
1943 : : }
1944 : : break;
1945 : : default:;
1946 : : }
1947 : : break;
1948 : : }
1949 : : default:;
1950 : : }
1951 : : }
1952 : : break;
1953 : : default:;
1954 : : }
1955 : : }
1956 : : }
1957 : 0 : break;
1958 : : }
1959 : : default:;
1960 : : }
1961 : : }
1962 : : break;
1963 : : default:;
1964 : : }
1965 : : }
1966 : : }
1967 : 0 : break;
1968 : : }
1969 : 0 : default:;
1970 : : }
1971 : 0 : {
1972 : 0 : tree _q80_pops[1];
1973 : 0 : if (gimple_nop_convert (_q80, _q80_pops, valueize))
1974 : : {
1975 : 0 : tree _q90 = _q80_pops[0];
1976 : 0 : switch (TREE_CODE (_q90))
1977 : : {
1978 : 0 : case SSA_NAME:
1979 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
1980 : : {
1981 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1982 : 0 : switch (gimple_assign_rhs_code (_a5))
1983 : : {
1984 : 0 : case NEGATE_EXPR:
1985 : 0 : {
1986 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
1987 : 0 : _q100 = do_valueize (valueize, _q100);
1988 : 0 : {
1989 : 0 : tree _q100_pops[1];
1990 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
1991 : : {
1992 : 0 : tree _q110 = _q100_pops[0];
1993 : 0 : switch (TREE_CODE (_q110))
1994 : : {
1995 : 0 : case SSA_NAME:
1996 : 0 : if (gimple *_d6 = get_def (valueize, _q110))
1997 : : {
1998 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
1999 : 0 : switch (gimple_assign_rhs_code (_a6))
2000 : : {
2001 : 0 : CASE_CONVERT:
2002 : 0 : {
2003 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
2004 : 0 : _q120 = do_valueize (valueize, _q120);
2005 : 0 : switch (TREE_CODE (_q120))
2006 : : {
2007 : 0 : case SSA_NAME:
2008 : 0 : if (gimple *_d7 = get_def (valueize, _q120))
2009 : : {
2010 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
2011 : 0 : switch (gimple_assign_rhs_code (_a7))
2012 : : {
2013 : 0 : case LT_EXPR:
2014 : 0 : {
2015 : 0 : tree _q130 = gimple_assign_rhs1 (_a7);
2016 : 0 : _q130 = do_valueize (valueize, _q130);
2017 : 0 : tree _q131 = gimple_assign_rhs2 (_a7);
2018 : 0 : _q131 = do_valueize (valueize, _q131);
2019 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
2020 : : {
2021 : 0 : if (integer_zerop (_q131))
2022 : : {
2023 : 0 : switch (TREE_CODE (_q81))
2024 : : {
2025 : 0 : case INTEGER_CST:
2026 : 0 : {
2027 : 0 : switch (TREE_CODE (_p2))
2028 : : {
2029 : 0 : case SSA_NAME:
2030 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
2031 : : {
2032 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
2033 : 0 : switch (gimple_assign_rhs_code (_a8))
2034 : : {
2035 : 0 : CASE_CONVERT:
2036 : 0 : {
2037 : 0 : tree _q170 = gimple_assign_rhs1 (_a8);
2038 : 0 : _q170 = do_valueize (valueize, _q170);
2039 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
2040 : : {
2041 : 0 : {
2042 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q81 };
2043 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2044 : : )
2045 : : {
2046 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2047 : : )
2048 : : {
2049 : 0 : {
2050 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
2051 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
2052 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
2053 : 0 : itype_prec);
2054 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
2055 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
2056 : 0 : itype_prec);
2057 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
2058 : 0 : itype_prec);
2059 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
2060 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
2061 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
2062 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
2063 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
2064 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
2065 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
2066 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
2067 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
2068 : 0 : && wi::eq_p (int_cst_3, otype_max)
2069 : : )
2070 : : {
2071 : 0 : {
2072 : 0 : res_ops[0] = captures[0];
2073 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
2074 : 0 : return true;
2075 : : }
2076 : : }
2077 : 0 : }
2078 : : }
2079 : : }
2080 : : }
2081 : : }
2082 : : break;
2083 : : }
2084 : : default:;
2085 : : }
2086 : : }
2087 : : break;
2088 : : default:;
2089 : : }
2090 : : break;
2091 : : }
2092 : : default:;
2093 : : }
2094 : : }
2095 : : }
2096 : : break;
2097 : : }
2098 : : default:;
2099 : : }
2100 : : }
2101 : : break;
2102 : : default:;
2103 : : }
2104 : : break;
2105 : : }
2106 : : default:;
2107 : : }
2108 : : }
2109 : : break;
2110 : : default:;
2111 : : }
2112 : : }
2113 : : }
2114 : 0 : break;
2115 : : }
2116 : : default:;
2117 : : }
2118 : : }
2119 : : break;
2120 : : default:;
2121 : : }
2122 : : }
2123 : : }
2124 : 0 : break;
2125 : : }
2126 : : default:;
2127 : : }
2128 : : }
2129 : : break;
2130 : : default:;
2131 : : }
2132 : : break;
2133 : : }
2134 : : default:;
2135 : : }
2136 : : break;
2137 : : }
2138 : : default:;
2139 : : }
2140 : : break;
2141 : : }
2142 : : default:;
2143 : : }
2144 : : }
2145 : : break;
2146 : 0 : case INTEGER_CST:
2147 : 0 : {
2148 : 0 : switch (TREE_CODE (_q31))
2149 : : {
2150 : 0 : case SSA_NAME:
2151 : 0 : if (gimple *_d3 = get_def (valueize, _q31))
2152 : : {
2153 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2154 : 0 : switch (gimple_assign_rhs_code (_a3))
2155 : : {
2156 : 0 : CASE_CONVERT:
2157 : 0 : {
2158 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
2159 : 0 : _q50 = do_valueize (valueize, _q50);
2160 : 0 : switch (TREE_CODE (_q21))
2161 : : {
2162 : 0 : case INTEGER_CST:
2163 : 0 : {
2164 : 0 : switch (TREE_CODE (_p1))
2165 : : {
2166 : 0 : case SSA_NAME:
2167 : 0 : if (gimple *_d4 = get_def (valueize, _p1))
2168 : : {
2169 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2170 : 0 : switch (gimple_assign_rhs_code (_a4))
2171 : : {
2172 : 0 : case BIT_XOR_EXPR:
2173 : 0 : {
2174 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
2175 : 0 : _q80 = do_valueize (valueize, _q80);
2176 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
2177 : 0 : _q81 = do_valueize (valueize, _q81);
2178 : 0 : if (tree_swap_operands_p (_q80, _q81))
2179 : 0 : std::swap (_q80, _q81);
2180 : 0 : switch (TREE_CODE (_q80))
2181 : : {
2182 : 0 : case SSA_NAME:
2183 : 0 : if (gimple *_d5 = get_def (valueize, _q80))
2184 : : {
2185 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2186 : 0 : switch (gimple_assign_rhs_code (_a5))
2187 : : {
2188 : 0 : case NEGATE_EXPR:
2189 : 0 : {
2190 : 0 : tree _q90 = gimple_assign_rhs1 (_a5);
2191 : 0 : _q90 = do_valueize (valueize, _q90);
2192 : 0 : switch (TREE_CODE (_q90))
2193 : : {
2194 : 0 : case SSA_NAME:
2195 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
2196 : : {
2197 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2198 : 0 : switch (gimple_assign_rhs_code (_a6))
2199 : : {
2200 : 0 : CASE_CONVERT:
2201 : 0 : {
2202 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
2203 : 0 : _q100 = do_valueize (valueize, _q100);
2204 : 0 : switch (TREE_CODE (_q100))
2205 : : {
2206 : 0 : case SSA_NAME:
2207 : 0 : if (gimple *_d7 = get_def (valueize, _q100))
2208 : : {
2209 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
2210 : 0 : switch (gimple_assign_rhs_code (_a7))
2211 : : {
2212 : 0 : case LT_EXPR:
2213 : 0 : {
2214 : 0 : tree _q110 = gimple_assign_rhs1 (_a7);
2215 : 0 : _q110 = do_valueize (valueize, _q110);
2216 : 0 : tree _q111 = gimple_assign_rhs2 (_a7);
2217 : 0 : _q111 = do_valueize (valueize, _q111);
2218 : 0 : if ((_q110 == _q50 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q50, 0) && types_match (_q110, _q50)))
2219 : : {
2220 : 0 : if (integer_zerop (_q111))
2221 : : {
2222 : 0 : switch (TREE_CODE (_q81))
2223 : : {
2224 : 0 : case INTEGER_CST:
2225 : 0 : {
2226 : 0 : switch (TREE_CODE (_p2))
2227 : : {
2228 : 0 : case SSA_NAME:
2229 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
2230 : : {
2231 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
2232 : 0 : switch (gimple_assign_rhs_code (_a8))
2233 : : {
2234 : 0 : CASE_CONVERT:
2235 : 0 : {
2236 : 0 : tree _q150 = gimple_assign_rhs1 (_a8);
2237 : 0 : _q150 = do_valueize (valueize, _q150);
2238 : 0 : if ((_q150 == _q50 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q50, 0) && types_match (_q150, _q50)))
2239 : : {
2240 : 0 : {
2241 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q81 };
2242 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2243 : : )
2244 : : {
2245 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2246 : : )
2247 : : {
2248 : 0 : {
2249 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
2250 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
2251 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
2252 : 0 : itype_prec);
2253 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
2254 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
2255 : 0 : itype_prec);
2256 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
2257 : 0 : itype_prec);
2258 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
2259 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
2260 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
2261 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
2262 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
2263 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
2264 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
2265 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
2266 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
2267 : 0 : && wi::eq_p (int_cst_3, otype_max)
2268 : : )
2269 : : {
2270 : 0 : {
2271 : 0 : res_ops[0] = captures[0];
2272 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
2273 : 0 : return true;
2274 : : }
2275 : : }
2276 : 0 : }
2277 : : }
2278 : : }
2279 : : }
2280 : : }
2281 : : break;
2282 : : }
2283 : : default:;
2284 : : }
2285 : : }
2286 : : break;
2287 : : default:;
2288 : : }
2289 : : break;
2290 : : }
2291 : : default:;
2292 : : }
2293 : : }
2294 : : }
2295 : : break;
2296 : : }
2297 : : default:;
2298 : : }
2299 : : }
2300 : : break;
2301 : : default:;
2302 : : }
2303 : : break;
2304 : : }
2305 : : default:;
2306 : : }
2307 : : }
2308 : : break;
2309 : : default:;
2310 : : }
2311 : : break;
2312 : : }
2313 : : default:;
2314 : : }
2315 : : }
2316 : : break;
2317 : 0 : case INTEGER_CST:
2318 : 0 : {
2319 : 0 : switch (TREE_CODE (_q81))
2320 : : {
2321 : 0 : case SSA_NAME:
2322 : 0 : if (gimple *_d5 = get_def (valueize, _q81))
2323 : : {
2324 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2325 : 0 : switch (gimple_assign_rhs_code (_a5))
2326 : : {
2327 : 0 : case NEGATE_EXPR:
2328 : 0 : {
2329 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
2330 : 0 : _q100 = do_valueize (valueize, _q100);
2331 : 0 : switch (TREE_CODE (_q100))
2332 : : {
2333 : 0 : case SSA_NAME:
2334 : 0 : if (gimple *_d6 = get_def (valueize, _q100))
2335 : : {
2336 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2337 : 0 : switch (gimple_assign_rhs_code (_a6))
2338 : : {
2339 : 0 : CASE_CONVERT:
2340 : 0 : {
2341 : 0 : tree _q110 = gimple_assign_rhs1 (_a6);
2342 : 0 : _q110 = do_valueize (valueize, _q110);
2343 : 0 : switch (TREE_CODE (_q110))
2344 : : {
2345 : 0 : case SSA_NAME:
2346 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
2347 : : {
2348 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
2349 : 0 : switch (gimple_assign_rhs_code (_a7))
2350 : : {
2351 : 0 : case LT_EXPR:
2352 : 0 : {
2353 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
2354 : 0 : _q120 = do_valueize (valueize, _q120);
2355 : 0 : tree _q121 = gimple_assign_rhs2 (_a7);
2356 : 0 : _q121 = do_valueize (valueize, _q121);
2357 : 0 : if ((_q120 == _q50 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q50, 0) && types_match (_q120, _q50)))
2358 : : {
2359 : 0 : if (integer_zerop (_q121))
2360 : : {
2361 : 0 : switch (TREE_CODE (_p2))
2362 : : {
2363 : 0 : case SSA_NAME:
2364 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
2365 : : {
2366 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
2367 : 0 : switch (gimple_assign_rhs_code (_a8))
2368 : : {
2369 : 0 : CASE_CONVERT:
2370 : 0 : {
2371 : 0 : tree _q150 = gimple_assign_rhs1 (_a8);
2372 : 0 : _q150 = do_valueize (valueize, _q150);
2373 : 0 : if ((_q150 == _q50 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q50, 0) && types_match (_q150, _q50)))
2374 : : {
2375 : 0 : {
2376 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q80 };
2377 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2378 : : )
2379 : : {
2380 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2381 : : )
2382 : : {
2383 : 0 : {
2384 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
2385 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
2386 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
2387 : 0 : itype_prec);
2388 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
2389 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
2390 : 0 : itype_prec);
2391 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
2392 : 0 : itype_prec);
2393 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
2394 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
2395 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
2396 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
2397 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
2398 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
2399 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
2400 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
2401 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
2402 : 0 : && wi::eq_p (int_cst_3, otype_max)
2403 : : )
2404 : : {
2405 : 0 : {
2406 : 0 : res_ops[0] = captures[0];
2407 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
2408 : 0 : return true;
2409 : : }
2410 : : }
2411 : 0 : }
2412 : : }
2413 : : }
2414 : : }
2415 : : }
2416 : : break;
2417 : : }
2418 : : default:;
2419 : : }
2420 : : }
2421 : : break;
2422 : : default:;
2423 : : }
2424 : : }
2425 : : }
2426 : : break;
2427 : : }
2428 : : default:;
2429 : : }
2430 : : }
2431 : : break;
2432 : : default:;
2433 : : }
2434 : : break;
2435 : : }
2436 : : default:;
2437 : : }
2438 : : }
2439 : : break;
2440 : : default:;
2441 : : }
2442 : : break;
2443 : : }
2444 : : default:;
2445 : : }
2446 : : }
2447 : : break;
2448 : 0 : default:;
2449 : : }
2450 : 0 : {
2451 : 0 : tree _q81_pops[1];
2452 : 0 : if (gimple_nop_convert (_q81, _q81_pops, valueize))
2453 : : {
2454 : 0 : tree _q100 = _q81_pops[0];
2455 : 0 : switch (TREE_CODE (_q100))
2456 : : {
2457 : 0 : case SSA_NAME:
2458 : 0 : if (gimple *_d5 = get_def (valueize, _q100))
2459 : : {
2460 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2461 : 0 : switch (gimple_assign_rhs_code (_a5))
2462 : : {
2463 : 0 : case NEGATE_EXPR:
2464 : 0 : {
2465 : 0 : tree _q110 = gimple_assign_rhs1 (_a5);
2466 : 0 : _q110 = do_valueize (valueize, _q110);
2467 : 0 : {
2468 : 0 : tree _q110_pops[1];
2469 : 0 : if (gimple_nop_convert (_q110, _q110_pops, valueize))
2470 : : {
2471 : 0 : tree _q120 = _q110_pops[0];
2472 : 0 : switch (TREE_CODE (_q120))
2473 : : {
2474 : 0 : case SSA_NAME:
2475 : 0 : if (gimple *_d6 = get_def (valueize, _q120))
2476 : : {
2477 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2478 : 0 : switch (gimple_assign_rhs_code (_a6))
2479 : : {
2480 : 0 : CASE_CONVERT:
2481 : 0 : {
2482 : 0 : tree _q130 = gimple_assign_rhs1 (_a6);
2483 : 0 : _q130 = do_valueize (valueize, _q130);
2484 : 0 : switch (TREE_CODE (_q130))
2485 : : {
2486 : 0 : case SSA_NAME:
2487 : 0 : if (gimple *_d7 = get_def (valueize, _q130))
2488 : : {
2489 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
2490 : 0 : switch (gimple_assign_rhs_code (_a7))
2491 : : {
2492 : 0 : case LT_EXPR:
2493 : 0 : {
2494 : 0 : tree _q140 = gimple_assign_rhs1 (_a7);
2495 : 0 : _q140 = do_valueize (valueize, _q140);
2496 : 0 : tree _q141 = gimple_assign_rhs2 (_a7);
2497 : 0 : _q141 = do_valueize (valueize, _q141);
2498 : 0 : if ((_q140 == _q50 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q50, 0) && types_match (_q140, _q50)))
2499 : : {
2500 : 0 : if (integer_zerop (_q141))
2501 : : {
2502 : 0 : switch (TREE_CODE (_p2))
2503 : : {
2504 : 0 : case SSA_NAME:
2505 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
2506 : : {
2507 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
2508 : 0 : switch (gimple_assign_rhs_code (_a8))
2509 : : {
2510 : 0 : CASE_CONVERT:
2511 : 0 : {
2512 : 0 : tree _q170 = gimple_assign_rhs1 (_a8);
2513 : 0 : _q170 = do_valueize (valueize, _q170);
2514 : 0 : if ((_q170 == _q50 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q50, 0) && types_match (_q170, _q50)))
2515 : : {
2516 : 0 : {
2517 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q80 };
2518 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2519 : : )
2520 : : {
2521 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2522 : : )
2523 : : {
2524 : 0 : {
2525 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
2526 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
2527 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
2528 : 0 : itype_prec);
2529 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
2530 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
2531 : 0 : itype_prec);
2532 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
2533 : 0 : itype_prec);
2534 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
2535 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
2536 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
2537 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
2538 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
2539 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
2540 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
2541 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
2542 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
2543 : 0 : && wi::eq_p (int_cst_3, otype_max)
2544 : : )
2545 : : {
2546 : 0 : {
2547 : 0 : res_ops[0] = captures[0];
2548 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
2549 : 0 : return true;
2550 : : }
2551 : : }
2552 : 0 : }
2553 : : }
2554 : : }
2555 : : }
2556 : : }
2557 : : break;
2558 : : }
2559 : : default:;
2560 : : }
2561 : : }
2562 : : break;
2563 : : default:;
2564 : : }
2565 : : }
2566 : : }
2567 : : break;
2568 : : }
2569 : : default:;
2570 : : }
2571 : : }
2572 : : break;
2573 : : default:;
2574 : : }
2575 : : break;
2576 : : }
2577 : : default:;
2578 : : }
2579 : : }
2580 : : break;
2581 : : default:;
2582 : : }
2583 : : }
2584 : : }
2585 : 0 : break;
2586 : : }
2587 : : default:;
2588 : : }
2589 : : }
2590 : : break;
2591 : : default:;
2592 : : }
2593 : : }
2594 : : }
2595 : 0 : break;
2596 : : }
2597 : 0 : default:;
2598 : : }
2599 : 0 : {
2600 : 0 : tree _q80_pops[1];
2601 : 0 : if (gimple_nop_convert (_q80, _q80_pops, valueize))
2602 : : {
2603 : 0 : tree _q90 = _q80_pops[0];
2604 : 0 : switch (TREE_CODE (_q90))
2605 : : {
2606 : 0 : case SSA_NAME:
2607 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
2608 : : {
2609 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2610 : 0 : switch (gimple_assign_rhs_code (_a5))
2611 : : {
2612 : 0 : case NEGATE_EXPR:
2613 : 0 : {
2614 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
2615 : 0 : _q100 = do_valueize (valueize, _q100);
2616 : 0 : {
2617 : 0 : tree _q100_pops[1];
2618 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
2619 : : {
2620 : 0 : tree _q110 = _q100_pops[0];
2621 : 0 : switch (TREE_CODE (_q110))
2622 : : {
2623 : 0 : case SSA_NAME:
2624 : 0 : if (gimple *_d6 = get_def (valueize, _q110))
2625 : : {
2626 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2627 : 0 : switch (gimple_assign_rhs_code (_a6))
2628 : : {
2629 : 0 : CASE_CONVERT:
2630 : 0 : {
2631 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
2632 : 0 : _q120 = do_valueize (valueize, _q120);
2633 : 0 : switch (TREE_CODE (_q120))
2634 : : {
2635 : 0 : case SSA_NAME:
2636 : 0 : if (gimple *_d7 = get_def (valueize, _q120))
2637 : : {
2638 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
2639 : 0 : switch (gimple_assign_rhs_code (_a7))
2640 : : {
2641 : 0 : case LT_EXPR:
2642 : 0 : {
2643 : 0 : tree _q130 = gimple_assign_rhs1 (_a7);
2644 : 0 : _q130 = do_valueize (valueize, _q130);
2645 : 0 : tree _q131 = gimple_assign_rhs2 (_a7);
2646 : 0 : _q131 = do_valueize (valueize, _q131);
2647 : 0 : if ((_q130 == _q50 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q50, 0) && types_match (_q130, _q50)))
2648 : : {
2649 : 0 : if (integer_zerop (_q131))
2650 : : {
2651 : 0 : switch (TREE_CODE (_q81))
2652 : : {
2653 : 0 : case INTEGER_CST:
2654 : 0 : {
2655 : 0 : switch (TREE_CODE (_p2))
2656 : : {
2657 : 0 : case SSA_NAME:
2658 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
2659 : : {
2660 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
2661 : 0 : switch (gimple_assign_rhs_code (_a8))
2662 : : {
2663 : 0 : CASE_CONVERT:
2664 : 0 : {
2665 : 0 : tree _q170 = gimple_assign_rhs1 (_a8);
2666 : 0 : _q170 = do_valueize (valueize, _q170);
2667 : 0 : if ((_q170 == _q50 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q50, 0) && types_match (_q170, _q50)))
2668 : : {
2669 : 0 : {
2670 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q81 };
2671 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2672 : : )
2673 : : {
2674 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2675 : : )
2676 : : {
2677 : 0 : {
2678 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
2679 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
2680 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
2681 : 0 : itype_prec);
2682 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
2683 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
2684 : 0 : itype_prec);
2685 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
2686 : 0 : itype_prec);
2687 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
2688 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
2689 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
2690 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
2691 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
2692 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
2693 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
2694 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
2695 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
2696 : 0 : && wi::eq_p (int_cst_3, otype_max)
2697 : : )
2698 : : {
2699 : 0 : {
2700 : 0 : res_ops[0] = captures[0];
2701 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
2702 : 0 : return true;
2703 : : }
2704 : : }
2705 : 0 : }
2706 : : }
2707 : : }
2708 : : }
2709 : : }
2710 : : break;
2711 : : }
2712 : : default:;
2713 : : }
2714 : : }
2715 : : break;
2716 : : default:;
2717 : : }
2718 : : break;
2719 : : }
2720 : : default:;
2721 : : }
2722 : : }
2723 : : }
2724 : : break;
2725 : : }
2726 : : default:;
2727 : : }
2728 : : }
2729 : : break;
2730 : : default:;
2731 : : }
2732 : : break;
2733 : : }
2734 : : default:;
2735 : : }
2736 : : }
2737 : : break;
2738 : : default:;
2739 : : }
2740 : : }
2741 : : }
2742 : 0 : break;
2743 : : }
2744 : : default:;
2745 : : }
2746 : : }
2747 : : break;
2748 : : default:;
2749 : : }
2750 : : }
2751 : : }
2752 : 0 : break;
2753 : : }
2754 : : default:;
2755 : : }
2756 : : }
2757 : : break;
2758 : : default:;
2759 : : }
2760 : : break;
2761 : : }
2762 : : default:;
2763 : : }
2764 : : break;
2765 : : }
2766 : : default:;
2767 : : }
2768 : : }
2769 : : break;
2770 : : default:;
2771 : : }
2772 : : break;
2773 : : }
2774 : : default:;
2775 : : }
2776 : 23838398 : break;
2777 : : }
2778 : : default:;
2779 : : }
2780 : : }
2781 : : break;
2782 : : default:;
2783 : : }
2784 : : }
2785 : : }
2786 : : break;
2787 : : }
2788 : : default:;
2789 : : }
2790 : : break;
2791 : : }
2792 : : default:;
2793 : : }
2794 : 3323418 : else if (gphi *_a1 = dyn_cast <gphi *> (_d1))
2795 : : {
2796 : 3323418 : basic_block _b1 = gimple_bb (_a1);
2797 : 3323418 : tree _p1, _p2;
2798 : 3323418 : gcond *_cond_1 = match_cond_with_binary_phi (_a1, &_p1, &_p2);
2799 : 3323418 : if (_cond_1)
2800 : : {
2801 : 713951 : tree _cond_lhs_1 = gimple_cond_lhs (_cond_1);
2802 : 713951 : tree _cond_rhs_1 = gimple_cond_rhs (_cond_1);
2803 : 713951 : tree _p0 = build2 (gimple_cond_code (_cond_1), boolean_type_node, _cond_lhs_1, _cond_rhs_1);
2804 : 713951 : switch (TREE_CODE (_p0))
2805 : : {
2806 : 0 : case SSA_NAME:
2807 : 0 : if (gimple *_d2 = get_def (valueize, _p0))
2808 : : {
2809 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
2810 : 0 : switch (gimple_assign_rhs_code (_a2))
2811 : : {
2812 : 0 : case GT_EXPR:
2813 : 0 : {
2814 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
2815 : 0 : _q20 = do_valueize (valueize, _q20);
2816 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
2817 : 0 : _q21 = do_valueize (valueize, _q21);
2818 : 0 : switch (TREE_CODE (_q20))
2819 : : {
2820 : 0 : case SSA_NAME:
2821 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
2822 : : {
2823 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2824 : 0 : switch (gimple_assign_rhs_code (_a3))
2825 : : {
2826 : 0 : case PLUS_EXPR:
2827 : 0 : {
2828 : 0 : tree _q30 = gimple_assign_rhs1 (_a3);
2829 : 0 : _q30 = do_valueize (valueize, _q30);
2830 : 0 : tree _q31 = gimple_assign_rhs2 (_a3);
2831 : 0 : _q31 = do_valueize (valueize, _q31);
2832 : 0 : if (tree_swap_operands_p (_q30, _q31))
2833 : 0 : std::swap (_q30, _q31);
2834 : 0 : switch (TREE_CODE (_q30))
2835 : : {
2836 : 0 : case SSA_NAME:
2837 : 0 : if (gimple *_d4 = get_def (valueize, _q30))
2838 : : {
2839 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2840 : 0 : switch (gimple_assign_rhs_code (_a4))
2841 : : {
2842 : 0 : CASE_CONVERT:
2843 : 0 : {
2844 : 0 : tree _q40 = gimple_assign_rhs1 (_a4);
2845 : 0 : _q40 = do_valueize (valueize, _q40);
2846 : 0 : switch (TREE_CODE (_q31))
2847 : : {
2848 : 0 : case INTEGER_CST:
2849 : 0 : {
2850 : 0 : switch (TREE_CODE (_q21))
2851 : : {
2852 : 0 : case INTEGER_CST:
2853 : 0 : {
2854 : 0 : switch (TREE_CODE (_p1))
2855 : : {
2856 : 0 : case SSA_NAME:
2857 : 0 : if (gimple *_d5 = get_def (valueize, _p1))
2858 : : {
2859 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2860 : 0 : switch (gimple_assign_rhs_code (_a5))
2861 : : {
2862 : 0 : case BIT_XOR_EXPR:
2863 : 0 : {
2864 : 0 : tree _q80 = gimple_assign_rhs1 (_a5);
2865 : 0 : _q80 = do_valueize (valueize, _q80);
2866 : 0 : tree _q81 = gimple_assign_rhs2 (_a5);
2867 : 0 : _q81 = do_valueize (valueize, _q81);
2868 : 0 : if (tree_swap_operands_p (_q80, _q81))
2869 : 0 : std::swap (_q80, _q81);
2870 : 0 : switch (TREE_CODE (_q80))
2871 : : {
2872 : 0 : case SSA_NAME:
2873 : 0 : if (gimple *_d6 = get_def (valueize, _q80))
2874 : : {
2875 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2876 : 0 : switch (gimple_assign_rhs_code (_a6))
2877 : : {
2878 : 0 : case NEGATE_EXPR:
2879 : 0 : {
2880 : 0 : tree _q90 = gimple_assign_rhs1 (_a6);
2881 : 0 : _q90 = do_valueize (valueize, _q90);
2882 : 0 : switch (TREE_CODE (_q90))
2883 : : {
2884 : 0 : case SSA_NAME:
2885 : 0 : if (gimple *_d7 = get_def (valueize, _q90))
2886 : : {
2887 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
2888 : 0 : switch (gimple_assign_rhs_code (_a7))
2889 : : {
2890 : 0 : CASE_CONVERT:
2891 : 0 : {
2892 : 0 : tree _q100 = gimple_assign_rhs1 (_a7);
2893 : 0 : _q100 = do_valueize (valueize, _q100);
2894 : 0 : switch (TREE_CODE (_q100))
2895 : : {
2896 : 0 : case SSA_NAME:
2897 : 0 : if (gimple *_d8 = get_def (valueize, _q100))
2898 : : {
2899 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
2900 : 0 : switch (gimple_assign_rhs_code (_a8))
2901 : : {
2902 : 0 : case LT_EXPR:
2903 : 0 : {
2904 : 0 : tree _q110 = gimple_assign_rhs1 (_a8);
2905 : 0 : _q110 = do_valueize (valueize, _q110);
2906 : 0 : tree _q111 = gimple_assign_rhs2 (_a8);
2907 : 0 : _q111 = do_valueize (valueize, _q111);
2908 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
2909 : : {
2910 : 0 : if (integer_zerop (_q111))
2911 : : {
2912 : 0 : switch (TREE_CODE (_q81))
2913 : : {
2914 : 0 : case INTEGER_CST:
2915 : 0 : {
2916 : 0 : switch (TREE_CODE (_p2))
2917 : : {
2918 : 0 : case SSA_NAME:
2919 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
2920 : : {
2921 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
2922 : 0 : switch (gimple_assign_rhs_code (_a9))
2923 : : {
2924 : 0 : CASE_CONVERT:
2925 : 0 : {
2926 : 0 : tree _q150 = gimple_assign_rhs1 (_a9);
2927 : 0 : _q150 = do_valueize (valueize, _q150);
2928 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
2929 : : {
2930 : 0 : {
2931 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q81 };
2932 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2933 : : )
2934 : : {
2935 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2936 : : )
2937 : : {
2938 : 0 : {
2939 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
2940 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
2941 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
2942 : 0 : itype_prec);
2943 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
2944 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
2945 : 0 : itype_prec);
2946 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
2947 : 0 : itype_prec);
2948 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
2949 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
2950 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
2951 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
2952 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
2953 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
2954 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
2955 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
2956 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
2957 : 0 : && wi::eq_p (int_cst_3, otype_max)
2958 : : )
2959 : : {
2960 : 0 : {
2961 : 0 : res_ops[0] = captures[0];
2962 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
2963 : 0 : return true;
2964 : : }
2965 : : }
2966 : 0 : }
2967 : : }
2968 : : }
2969 : : }
2970 : : }
2971 : : break;
2972 : : }
2973 : : default:;
2974 : : }
2975 : : }
2976 : : break;
2977 : : default:;
2978 : : }
2979 : : break;
2980 : : }
2981 : : default:;
2982 : : }
2983 : : }
2984 : : }
2985 : : break;
2986 : : }
2987 : : default:;
2988 : : }
2989 : : }
2990 : : break;
2991 : : default:;
2992 : : }
2993 : : break;
2994 : : }
2995 : : default:;
2996 : : }
2997 : : }
2998 : : break;
2999 : : default:;
3000 : : }
3001 : : break;
3002 : : }
3003 : : default:;
3004 : : }
3005 : : }
3006 : : break;
3007 : 0 : case INTEGER_CST:
3008 : 0 : {
3009 : 0 : switch (TREE_CODE (_q81))
3010 : : {
3011 : 0 : case SSA_NAME:
3012 : 0 : if (gimple *_d6 = get_def (valueize, _q81))
3013 : : {
3014 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3015 : 0 : switch (gimple_assign_rhs_code (_a6))
3016 : : {
3017 : 0 : case NEGATE_EXPR:
3018 : 0 : {
3019 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
3020 : 0 : _q100 = do_valueize (valueize, _q100);
3021 : 0 : switch (TREE_CODE (_q100))
3022 : : {
3023 : 0 : case SSA_NAME:
3024 : 0 : if (gimple *_d7 = get_def (valueize, _q100))
3025 : : {
3026 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3027 : 0 : switch (gimple_assign_rhs_code (_a7))
3028 : : {
3029 : 0 : CASE_CONVERT:
3030 : 0 : {
3031 : 0 : tree _q110 = gimple_assign_rhs1 (_a7);
3032 : 0 : _q110 = do_valueize (valueize, _q110);
3033 : 0 : switch (TREE_CODE (_q110))
3034 : : {
3035 : 0 : case SSA_NAME:
3036 : 0 : if (gimple *_d8 = get_def (valueize, _q110))
3037 : : {
3038 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
3039 : 0 : switch (gimple_assign_rhs_code (_a8))
3040 : : {
3041 : 0 : case LT_EXPR:
3042 : 0 : {
3043 : 0 : tree _q120 = gimple_assign_rhs1 (_a8);
3044 : 0 : _q120 = do_valueize (valueize, _q120);
3045 : 0 : tree _q121 = gimple_assign_rhs2 (_a8);
3046 : 0 : _q121 = do_valueize (valueize, _q121);
3047 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
3048 : : {
3049 : 0 : if (integer_zerop (_q121))
3050 : : {
3051 : 0 : switch (TREE_CODE (_p2))
3052 : : {
3053 : 0 : case SSA_NAME:
3054 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
3055 : : {
3056 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
3057 : 0 : switch (gimple_assign_rhs_code (_a9))
3058 : : {
3059 : 0 : CASE_CONVERT:
3060 : 0 : {
3061 : 0 : tree _q150 = gimple_assign_rhs1 (_a9);
3062 : 0 : _q150 = do_valueize (valueize, _q150);
3063 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
3064 : : {
3065 : 0 : {
3066 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q80 };
3067 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3068 : : )
3069 : : {
3070 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3071 : : )
3072 : : {
3073 : 0 : {
3074 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
3075 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
3076 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
3077 : 0 : itype_prec);
3078 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
3079 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
3080 : 0 : itype_prec);
3081 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
3082 : 0 : itype_prec);
3083 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
3084 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
3085 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
3086 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
3087 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
3088 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
3089 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
3090 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
3091 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
3092 : 0 : && wi::eq_p (int_cst_3, otype_max)
3093 : : )
3094 : : {
3095 : 0 : {
3096 : 0 : res_ops[0] = captures[0];
3097 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
3098 : 0 : return true;
3099 : : }
3100 : : }
3101 : 0 : }
3102 : : }
3103 : : }
3104 : : }
3105 : : }
3106 : : break;
3107 : : }
3108 : : default:;
3109 : : }
3110 : : }
3111 : : break;
3112 : : default:;
3113 : : }
3114 : : }
3115 : : }
3116 : : break;
3117 : : }
3118 : : default:;
3119 : : }
3120 : : }
3121 : : break;
3122 : : default:;
3123 : : }
3124 : : break;
3125 : : }
3126 : : default:;
3127 : : }
3128 : : }
3129 : : break;
3130 : : default:;
3131 : : }
3132 : : break;
3133 : : }
3134 : : default:;
3135 : : }
3136 : : }
3137 : : break;
3138 : 0 : default:;
3139 : : }
3140 : 0 : {
3141 : 0 : tree _q81_pops[1];
3142 : 0 : if (gimple_nop_convert (_q81, _q81_pops, valueize))
3143 : : {
3144 : 0 : tree _q100 = _q81_pops[0];
3145 : 0 : switch (TREE_CODE (_q100))
3146 : : {
3147 : 0 : case SSA_NAME:
3148 : 0 : if (gimple *_d6 = get_def (valueize, _q100))
3149 : : {
3150 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3151 : 0 : switch (gimple_assign_rhs_code (_a6))
3152 : : {
3153 : 0 : case NEGATE_EXPR:
3154 : 0 : {
3155 : 0 : tree _q110 = gimple_assign_rhs1 (_a6);
3156 : 0 : _q110 = do_valueize (valueize, _q110);
3157 : 0 : {
3158 : 0 : tree _q110_pops[1];
3159 : 0 : if (gimple_nop_convert (_q110, _q110_pops, valueize))
3160 : : {
3161 : 0 : tree _q120 = _q110_pops[0];
3162 : 0 : switch (TREE_CODE (_q120))
3163 : : {
3164 : 0 : case SSA_NAME:
3165 : 0 : if (gimple *_d7 = get_def (valueize, _q120))
3166 : : {
3167 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3168 : 0 : switch (gimple_assign_rhs_code (_a7))
3169 : : {
3170 : 0 : CASE_CONVERT:
3171 : 0 : {
3172 : 0 : tree _q130 = gimple_assign_rhs1 (_a7);
3173 : 0 : _q130 = do_valueize (valueize, _q130);
3174 : 0 : switch (TREE_CODE (_q130))
3175 : : {
3176 : 0 : case SSA_NAME:
3177 : 0 : if (gimple *_d8 = get_def (valueize, _q130))
3178 : : {
3179 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
3180 : 0 : switch (gimple_assign_rhs_code (_a8))
3181 : : {
3182 : 0 : case LT_EXPR:
3183 : 0 : {
3184 : 0 : tree _q140 = gimple_assign_rhs1 (_a8);
3185 : 0 : _q140 = do_valueize (valueize, _q140);
3186 : 0 : tree _q141 = gimple_assign_rhs2 (_a8);
3187 : 0 : _q141 = do_valueize (valueize, _q141);
3188 : 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
3189 : : {
3190 : 0 : if (integer_zerop (_q141))
3191 : : {
3192 : 0 : switch (TREE_CODE (_p2))
3193 : : {
3194 : 0 : case SSA_NAME:
3195 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
3196 : : {
3197 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
3198 : 0 : switch (gimple_assign_rhs_code (_a9))
3199 : : {
3200 : 0 : CASE_CONVERT:
3201 : 0 : {
3202 : 0 : tree _q170 = gimple_assign_rhs1 (_a9);
3203 : 0 : _q170 = do_valueize (valueize, _q170);
3204 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
3205 : : {
3206 : 0 : {
3207 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q80 };
3208 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3209 : : )
3210 : : {
3211 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3212 : : )
3213 : : {
3214 : 0 : {
3215 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
3216 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
3217 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
3218 : 0 : itype_prec);
3219 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
3220 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
3221 : 0 : itype_prec);
3222 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
3223 : 0 : itype_prec);
3224 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
3225 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
3226 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
3227 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
3228 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
3229 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
3230 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
3231 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
3232 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
3233 : 0 : && wi::eq_p (int_cst_3, otype_max)
3234 : : )
3235 : : {
3236 : 0 : {
3237 : 0 : res_ops[0] = captures[0];
3238 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
3239 : 0 : return true;
3240 : : }
3241 : : }
3242 : 0 : }
3243 : : }
3244 : : }
3245 : : }
3246 : : }
3247 : : break;
3248 : : }
3249 : : default:;
3250 : : }
3251 : : }
3252 : : break;
3253 : : default:;
3254 : : }
3255 : : }
3256 : : }
3257 : : break;
3258 : : }
3259 : : default:;
3260 : : }
3261 : : }
3262 : : break;
3263 : : default:;
3264 : : }
3265 : : break;
3266 : : }
3267 : : default:;
3268 : : }
3269 : : }
3270 : : break;
3271 : : default:;
3272 : : }
3273 : : }
3274 : : }
3275 : 0 : break;
3276 : : }
3277 : : default:;
3278 : : }
3279 : : }
3280 : : break;
3281 : : default:;
3282 : : }
3283 : : }
3284 : : }
3285 : 0 : break;
3286 : : }
3287 : 0 : default:;
3288 : : }
3289 : 0 : {
3290 : 0 : tree _q80_pops[1];
3291 : 0 : if (gimple_nop_convert (_q80, _q80_pops, valueize))
3292 : : {
3293 : 0 : tree _q90 = _q80_pops[0];
3294 : 0 : switch (TREE_CODE (_q90))
3295 : : {
3296 : 0 : case SSA_NAME:
3297 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
3298 : : {
3299 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3300 : 0 : switch (gimple_assign_rhs_code (_a6))
3301 : : {
3302 : 0 : case NEGATE_EXPR:
3303 : 0 : {
3304 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
3305 : 0 : _q100 = do_valueize (valueize, _q100);
3306 : 0 : {
3307 : 0 : tree _q100_pops[1];
3308 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
3309 : : {
3310 : 0 : tree _q110 = _q100_pops[0];
3311 : 0 : switch (TREE_CODE (_q110))
3312 : : {
3313 : 0 : case SSA_NAME:
3314 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
3315 : : {
3316 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3317 : 0 : switch (gimple_assign_rhs_code (_a7))
3318 : : {
3319 : 0 : CASE_CONVERT:
3320 : 0 : {
3321 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
3322 : 0 : _q120 = do_valueize (valueize, _q120);
3323 : 0 : switch (TREE_CODE (_q120))
3324 : : {
3325 : 0 : case SSA_NAME:
3326 : 0 : if (gimple *_d8 = get_def (valueize, _q120))
3327 : : {
3328 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
3329 : 0 : switch (gimple_assign_rhs_code (_a8))
3330 : : {
3331 : 0 : case LT_EXPR:
3332 : 0 : {
3333 : 0 : tree _q130 = gimple_assign_rhs1 (_a8);
3334 : 0 : _q130 = do_valueize (valueize, _q130);
3335 : 0 : tree _q131 = gimple_assign_rhs2 (_a8);
3336 : 0 : _q131 = do_valueize (valueize, _q131);
3337 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
3338 : : {
3339 : 0 : if (integer_zerop (_q131))
3340 : : {
3341 : 0 : switch (TREE_CODE (_q81))
3342 : : {
3343 : 0 : case INTEGER_CST:
3344 : 0 : {
3345 : 0 : switch (TREE_CODE (_p2))
3346 : : {
3347 : 0 : case SSA_NAME:
3348 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
3349 : : {
3350 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
3351 : 0 : switch (gimple_assign_rhs_code (_a9))
3352 : : {
3353 : 0 : CASE_CONVERT:
3354 : 0 : {
3355 : 0 : tree _q170 = gimple_assign_rhs1 (_a9);
3356 : 0 : _q170 = do_valueize (valueize, _q170);
3357 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
3358 : : {
3359 : 0 : {
3360 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q81 };
3361 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3362 : : )
3363 : : {
3364 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3365 : : )
3366 : : {
3367 : 0 : {
3368 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
3369 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
3370 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
3371 : 0 : itype_prec);
3372 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
3373 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
3374 : 0 : itype_prec);
3375 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
3376 : 0 : itype_prec);
3377 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
3378 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
3379 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
3380 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
3381 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
3382 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
3383 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
3384 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
3385 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
3386 : 0 : && wi::eq_p (int_cst_3, otype_max)
3387 : : )
3388 : : {
3389 : 0 : {
3390 : 0 : res_ops[0] = captures[0];
3391 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
3392 : 0 : return true;
3393 : : }
3394 : : }
3395 : 0 : }
3396 : : }
3397 : : }
3398 : : }
3399 : : }
3400 : : break;
3401 : : }
3402 : : default:;
3403 : : }
3404 : : }
3405 : : break;
3406 : : default:;
3407 : : }
3408 : : break;
3409 : : }
3410 : : default:;
3411 : : }
3412 : : }
3413 : : }
3414 : : break;
3415 : : }
3416 : : default:;
3417 : : }
3418 : : }
3419 : : break;
3420 : : default:;
3421 : : }
3422 : : break;
3423 : : }
3424 : : default:;
3425 : : }
3426 : : }
3427 : : break;
3428 : : default:;
3429 : : }
3430 : : }
3431 : : }
3432 : 0 : break;
3433 : : }
3434 : : default:;
3435 : : }
3436 : : }
3437 : : break;
3438 : : default:;
3439 : : }
3440 : : }
3441 : : }
3442 : 0 : break;
3443 : : }
3444 : : default:;
3445 : : }
3446 : : }
3447 : : break;
3448 : : default:;
3449 : : }
3450 : : break;
3451 : : }
3452 : : default:;
3453 : : }
3454 : : break;
3455 : : }
3456 : : default:;
3457 : : }
3458 : : break;
3459 : : }
3460 : : default:;
3461 : : }
3462 : : }
3463 : : break;
3464 : 0 : case INTEGER_CST:
3465 : 0 : {
3466 : 0 : switch (TREE_CODE (_q31))
3467 : : {
3468 : 0 : case SSA_NAME:
3469 : 0 : if (gimple *_d4 = get_def (valueize, _q31))
3470 : : {
3471 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
3472 : 0 : switch (gimple_assign_rhs_code (_a4))
3473 : : {
3474 : 0 : CASE_CONVERT:
3475 : 0 : {
3476 : 0 : tree _q50 = gimple_assign_rhs1 (_a4);
3477 : 0 : _q50 = do_valueize (valueize, _q50);
3478 : 0 : switch (TREE_CODE (_q21))
3479 : : {
3480 : 0 : case INTEGER_CST:
3481 : 0 : {
3482 : 0 : switch (TREE_CODE (_p1))
3483 : : {
3484 : 0 : case SSA_NAME:
3485 : 0 : if (gimple *_d5 = get_def (valueize, _p1))
3486 : : {
3487 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
3488 : 0 : switch (gimple_assign_rhs_code (_a5))
3489 : : {
3490 : 0 : case BIT_XOR_EXPR:
3491 : 0 : {
3492 : 0 : tree _q80 = gimple_assign_rhs1 (_a5);
3493 : 0 : _q80 = do_valueize (valueize, _q80);
3494 : 0 : tree _q81 = gimple_assign_rhs2 (_a5);
3495 : 0 : _q81 = do_valueize (valueize, _q81);
3496 : 0 : if (tree_swap_operands_p (_q80, _q81))
3497 : 0 : std::swap (_q80, _q81);
3498 : 0 : switch (TREE_CODE (_q80))
3499 : : {
3500 : 0 : case SSA_NAME:
3501 : 0 : if (gimple *_d6 = get_def (valueize, _q80))
3502 : : {
3503 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3504 : 0 : switch (gimple_assign_rhs_code (_a6))
3505 : : {
3506 : 0 : case NEGATE_EXPR:
3507 : 0 : {
3508 : 0 : tree _q90 = gimple_assign_rhs1 (_a6);
3509 : 0 : _q90 = do_valueize (valueize, _q90);
3510 : 0 : switch (TREE_CODE (_q90))
3511 : : {
3512 : 0 : case SSA_NAME:
3513 : 0 : if (gimple *_d7 = get_def (valueize, _q90))
3514 : : {
3515 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3516 : 0 : switch (gimple_assign_rhs_code (_a7))
3517 : : {
3518 : 0 : CASE_CONVERT:
3519 : 0 : {
3520 : 0 : tree _q100 = gimple_assign_rhs1 (_a7);
3521 : 0 : _q100 = do_valueize (valueize, _q100);
3522 : 0 : switch (TREE_CODE (_q100))
3523 : : {
3524 : 0 : case SSA_NAME:
3525 : 0 : if (gimple *_d8 = get_def (valueize, _q100))
3526 : : {
3527 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
3528 : 0 : switch (gimple_assign_rhs_code (_a8))
3529 : : {
3530 : 0 : case LT_EXPR:
3531 : 0 : {
3532 : 0 : tree _q110 = gimple_assign_rhs1 (_a8);
3533 : 0 : _q110 = do_valueize (valueize, _q110);
3534 : 0 : tree _q111 = gimple_assign_rhs2 (_a8);
3535 : 0 : _q111 = do_valueize (valueize, _q111);
3536 : 0 : if ((_q110 == _q50 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q50, 0) && types_match (_q110, _q50)))
3537 : : {
3538 : 0 : if (integer_zerop (_q111))
3539 : : {
3540 : 0 : switch (TREE_CODE (_q81))
3541 : : {
3542 : 0 : case INTEGER_CST:
3543 : 0 : {
3544 : 0 : switch (TREE_CODE (_p2))
3545 : : {
3546 : 0 : case SSA_NAME:
3547 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
3548 : : {
3549 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
3550 : 0 : switch (gimple_assign_rhs_code (_a9))
3551 : : {
3552 : 0 : CASE_CONVERT:
3553 : 0 : {
3554 : 0 : tree _q150 = gimple_assign_rhs1 (_a9);
3555 : 0 : _q150 = do_valueize (valueize, _q150);
3556 : 0 : if ((_q150 == _q50 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q50, 0) && types_match (_q150, _q50)))
3557 : : {
3558 : 0 : {
3559 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q81 };
3560 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3561 : : )
3562 : : {
3563 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3564 : : )
3565 : : {
3566 : 0 : {
3567 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
3568 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
3569 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
3570 : 0 : itype_prec);
3571 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
3572 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
3573 : 0 : itype_prec);
3574 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
3575 : 0 : itype_prec);
3576 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
3577 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
3578 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
3579 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
3580 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
3581 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
3582 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
3583 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
3584 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
3585 : 0 : && wi::eq_p (int_cst_3, otype_max)
3586 : : )
3587 : : {
3588 : 0 : {
3589 : 0 : res_ops[0] = captures[0];
3590 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
3591 : 0 : return true;
3592 : : }
3593 : : }
3594 : 0 : }
3595 : : }
3596 : : }
3597 : : }
3598 : : }
3599 : : break;
3600 : : }
3601 : : default:;
3602 : : }
3603 : : }
3604 : : break;
3605 : : default:;
3606 : : }
3607 : : break;
3608 : : }
3609 : : default:;
3610 : : }
3611 : : }
3612 : : }
3613 : : break;
3614 : : }
3615 : : default:;
3616 : : }
3617 : : }
3618 : : break;
3619 : : default:;
3620 : : }
3621 : : break;
3622 : : }
3623 : : default:;
3624 : : }
3625 : : }
3626 : : break;
3627 : : default:;
3628 : : }
3629 : : break;
3630 : : }
3631 : : default:;
3632 : : }
3633 : : }
3634 : : break;
3635 : 0 : case INTEGER_CST:
3636 : 0 : {
3637 : 0 : switch (TREE_CODE (_q81))
3638 : : {
3639 : 0 : case SSA_NAME:
3640 : 0 : if (gimple *_d6 = get_def (valueize, _q81))
3641 : : {
3642 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3643 : 0 : switch (gimple_assign_rhs_code (_a6))
3644 : : {
3645 : 0 : case NEGATE_EXPR:
3646 : 0 : {
3647 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
3648 : 0 : _q100 = do_valueize (valueize, _q100);
3649 : 0 : switch (TREE_CODE (_q100))
3650 : : {
3651 : 0 : case SSA_NAME:
3652 : 0 : if (gimple *_d7 = get_def (valueize, _q100))
3653 : : {
3654 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3655 : 0 : switch (gimple_assign_rhs_code (_a7))
3656 : : {
3657 : 0 : CASE_CONVERT:
3658 : 0 : {
3659 : 0 : tree _q110 = gimple_assign_rhs1 (_a7);
3660 : 0 : _q110 = do_valueize (valueize, _q110);
3661 : 0 : switch (TREE_CODE (_q110))
3662 : : {
3663 : 0 : case SSA_NAME:
3664 : 0 : if (gimple *_d8 = get_def (valueize, _q110))
3665 : : {
3666 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
3667 : 0 : switch (gimple_assign_rhs_code (_a8))
3668 : : {
3669 : 0 : case LT_EXPR:
3670 : 0 : {
3671 : 0 : tree _q120 = gimple_assign_rhs1 (_a8);
3672 : 0 : _q120 = do_valueize (valueize, _q120);
3673 : 0 : tree _q121 = gimple_assign_rhs2 (_a8);
3674 : 0 : _q121 = do_valueize (valueize, _q121);
3675 : 0 : if ((_q120 == _q50 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q50, 0) && types_match (_q120, _q50)))
3676 : : {
3677 : 0 : if (integer_zerop (_q121))
3678 : : {
3679 : 0 : switch (TREE_CODE (_p2))
3680 : : {
3681 : 0 : case SSA_NAME:
3682 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
3683 : : {
3684 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
3685 : 0 : switch (gimple_assign_rhs_code (_a9))
3686 : : {
3687 : 0 : CASE_CONVERT:
3688 : 0 : {
3689 : 0 : tree _q150 = gimple_assign_rhs1 (_a9);
3690 : 0 : _q150 = do_valueize (valueize, _q150);
3691 : 0 : if ((_q150 == _q50 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q50, 0) && types_match (_q150, _q50)))
3692 : : {
3693 : 0 : {
3694 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q80 };
3695 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3696 : : )
3697 : : {
3698 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3699 : : )
3700 : : {
3701 : 0 : {
3702 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
3703 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
3704 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
3705 : 0 : itype_prec);
3706 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
3707 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
3708 : 0 : itype_prec);
3709 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
3710 : 0 : itype_prec);
3711 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
3712 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
3713 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
3714 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
3715 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
3716 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
3717 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
3718 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
3719 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
3720 : 0 : && wi::eq_p (int_cst_3, otype_max)
3721 : : )
3722 : : {
3723 : 0 : {
3724 : 0 : res_ops[0] = captures[0];
3725 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
3726 : 0 : return true;
3727 : : }
3728 : : }
3729 : 0 : }
3730 : : }
3731 : : }
3732 : : }
3733 : : }
3734 : : break;
3735 : : }
3736 : : default:;
3737 : : }
3738 : : }
3739 : : break;
3740 : : default:;
3741 : : }
3742 : : }
3743 : : }
3744 : : break;
3745 : : }
3746 : : default:;
3747 : : }
3748 : : }
3749 : : break;
3750 : : default:;
3751 : : }
3752 : : break;
3753 : : }
3754 : : default:;
3755 : : }
3756 : : }
3757 : : break;
3758 : : default:;
3759 : : }
3760 : : break;
3761 : : }
3762 : : default:;
3763 : : }
3764 : : }
3765 : : break;
3766 : 0 : default:;
3767 : : }
3768 : 0 : {
3769 : 0 : tree _q81_pops[1];
3770 : 0 : if (gimple_nop_convert (_q81, _q81_pops, valueize))
3771 : : {
3772 : 0 : tree _q100 = _q81_pops[0];
3773 : 0 : switch (TREE_CODE (_q100))
3774 : : {
3775 : 0 : case SSA_NAME:
3776 : 0 : if (gimple *_d6 = get_def (valueize, _q100))
3777 : : {
3778 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3779 : 0 : switch (gimple_assign_rhs_code (_a6))
3780 : : {
3781 : 0 : case NEGATE_EXPR:
3782 : 0 : {
3783 : 0 : tree _q110 = gimple_assign_rhs1 (_a6);
3784 : 0 : _q110 = do_valueize (valueize, _q110);
3785 : 0 : {
3786 : 0 : tree _q110_pops[1];
3787 : 0 : if (gimple_nop_convert (_q110, _q110_pops, valueize))
3788 : : {
3789 : 0 : tree _q120 = _q110_pops[0];
3790 : 0 : switch (TREE_CODE (_q120))
3791 : : {
3792 : 0 : case SSA_NAME:
3793 : 0 : if (gimple *_d7 = get_def (valueize, _q120))
3794 : : {
3795 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3796 : 0 : switch (gimple_assign_rhs_code (_a7))
3797 : : {
3798 : 0 : CASE_CONVERT:
3799 : 0 : {
3800 : 0 : tree _q130 = gimple_assign_rhs1 (_a7);
3801 : 0 : _q130 = do_valueize (valueize, _q130);
3802 : 0 : switch (TREE_CODE (_q130))
3803 : : {
3804 : 0 : case SSA_NAME:
3805 : 0 : if (gimple *_d8 = get_def (valueize, _q130))
3806 : : {
3807 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
3808 : 0 : switch (gimple_assign_rhs_code (_a8))
3809 : : {
3810 : 0 : case LT_EXPR:
3811 : 0 : {
3812 : 0 : tree _q140 = gimple_assign_rhs1 (_a8);
3813 : 0 : _q140 = do_valueize (valueize, _q140);
3814 : 0 : tree _q141 = gimple_assign_rhs2 (_a8);
3815 : 0 : _q141 = do_valueize (valueize, _q141);
3816 : 0 : if ((_q140 == _q50 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q50, 0) && types_match (_q140, _q50)))
3817 : : {
3818 : 0 : if (integer_zerop (_q141))
3819 : : {
3820 : 0 : switch (TREE_CODE (_p2))
3821 : : {
3822 : 0 : case SSA_NAME:
3823 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
3824 : : {
3825 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
3826 : 0 : switch (gimple_assign_rhs_code (_a9))
3827 : : {
3828 : 0 : CASE_CONVERT:
3829 : 0 : {
3830 : 0 : tree _q170 = gimple_assign_rhs1 (_a9);
3831 : 0 : _q170 = do_valueize (valueize, _q170);
3832 : 0 : if ((_q170 == _q50 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q50, 0) && types_match (_q170, _q50)))
3833 : : {
3834 : 0 : {
3835 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q80 };
3836 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3837 : : )
3838 : : {
3839 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3840 : : )
3841 : : {
3842 : 0 : {
3843 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
3844 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
3845 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
3846 : 0 : itype_prec);
3847 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
3848 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
3849 : 0 : itype_prec);
3850 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
3851 : 0 : itype_prec);
3852 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
3853 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
3854 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
3855 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
3856 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
3857 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
3858 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
3859 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
3860 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
3861 : 0 : && wi::eq_p (int_cst_3, otype_max)
3862 : : )
3863 : : {
3864 : 0 : {
3865 : 0 : res_ops[0] = captures[0];
3866 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
3867 : 0 : return true;
3868 : : }
3869 : : }
3870 : 0 : }
3871 : : }
3872 : : }
3873 : : }
3874 : : }
3875 : : break;
3876 : : }
3877 : : default:;
3878 : : }
3879 : : }
3880 : : break;
3881 : : default:;
3882 : : }
3883 : : }
3884 : : }
3885 : : break;
3886 : : }
3887 : : default:;
3888 : : }
3889 : : }
3890 : : break;
3891 : : default:;
3892 : : }
3893 : : break;
3894 : : }
3895 : : default:;
3896 : : }
3897 : : }
3898 : : break;
3899 : : default:;
3900 : : }
3901 : : }
3902 : : }
3903 : 0 : break;
3904 : : }
3905 : : default:;
3906 : : }
3907 : : }
3908 : : break;
3909 : : default:;
3910 : : }
3911 : : }
3912 : : }
3913 : 0 : break;
3914 : : }
3915 : 0 : default:;
3916 : : }
3917 : 0 : {
3918 : 0 : tree _q80_pops[1];
3919 : 0 : if (gimple_nop_convert (_q80, _q80_pops, valueize))
3920 : : {
3921 : 0 : tree _q90 = _q80_pops[0];
3922 : 0 : switch (TREE_CODE (_q90))
3923 : : {
3924 : 0 : case SSA_NAME:
3925 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
3926 : : {
3927 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3928 : 0 : switch (gimple_assign_rhs_code (_a6))
3929 : : {
3930 : 0 : case NEGATE_EXPR:
3931 : 0 : {
3932 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
3933 : 0 : _q100 = do_valueize (valueize, _q100);
3934 : 0 : {
3935 : 0 : tree _q100_pops[1];
3936 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
3937 : : {
3938 : 0 : tree _q110 = _q100_pops[0];
3939 : 0 : switch (TREE_CODE (_q110))
3940 : : {
3941 : 0 : case SSA_NAME:
3942 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
3943 : : {
3944 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3945 : 0 : switch (gimple_assign_rhs_code (_a7))
3946 : : {
3947 : 0 : CASE_CONVERT:
3948 : 0 : {
3949 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
3950 : 0 : _q120 = do_valueize (valueize, _q120);
3951 : 0 : switch (TREE_CODE (_q120))
3952 : : {
3953 : 0 : case SSA_NAME:
3954 : 0 : if (gimple *_d8 = get_def (valueize, _q120))
3955 : : {
3956 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
3957 : 0 : switch (gimple_assign_rhs_code (_a8))
3958 : : {
3959 : 0 : case LT_EXPR:
3960 : 0 : {
3961 : 0 : tree _q130 = gimple_assign_rhs1 (_a8);
3962 : 0 : _q130 = do_valueize (valueize, _q130);
3963 : 0 : tree _q131 = gimple_assign_rhs2 (_a8);
3964 : 0 : _q131 = do_valueize (valueize, _q131);
3965 : 0 : if ((_q130 == _q50 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q50, 0) && types_match (_q130, _q50)))
3966 : : {
3967 : 0 : if (integer_zerop (_q131))
3968 : : {
3969 : 0 : switch (TREE_CODE (_q81))
3970 : : {
3971 : 0 : case INTEGER_CST:
3972 : 0 : {
3973 : 0 : switch (TREE_CODE (_p2))
3974 : : {
3975 : 0 : case SSA_NAME:
3976 : 0 : if (gimple *_d9 = get_def (valueize, _p2))
3977 : : {
3978 : 0 : if (gassign *_a9 = dyn_cast <gassign *> (_d9))
3979 : 0 : switch (gimple_assign_rhs_code (_a9))
3980 : : {
3981 : 0 : CASE_CONVERT:
3982 : 0 : {
3983 : 0 : tree _q170 = gimple_assign_rhs1 (_a9);
3984 : 0 : _q170 = do_valueize (valueize, _q170);
3985 : 0 : if ((_q170 == _q50 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q50, 0) && types_match (_q170, _q50)))
3986 : : {
3987 : 0 : {
3988 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q81 };
3989 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3990 : : )
3991 : : {
3992 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3993 : : )
3994 : : {
3995 : 0 : {
3996 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
3997 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
3998 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
3999 : 0 : itype_prec);
4000 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
4001 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
4002 : 0 : itype_prec);
4003 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
4004 : 0 : itype_prec);
4005 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
4006 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
4007 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
4008 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
4009 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
4010 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
4011 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
4012 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
4013 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
4014 : 0 : && wi::eq_p (int_cst_3, otype_max)
4015 : : )
4016 : : {
4017 : 0 : {
4018 : 0 : res_ops[0] = captures[0];
4019 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
4020 : 0 : return true;
4021 : : }
4022 : : }
4023 : 0 : }
4024 : : }
4025 : : }
4026 : : }
4027 : : }
4028 : : break;
4029 : : }
4030 : : default:;
4031 : : }
4032 : : }
4033 : : break;
4034 : : default:;
4035 : : }
4036 : : break;
4037 : : }
4038 : : default:;
4039 : : }
4040 : : }
4041 : : }
4042 : : break;
4043 : : }
4044 : : default:;
4045 : : }
4046 : : }
4047 : : break;
4048 : : default:;
4049 : : }
4050 : : break;
4051 : : }
4052 : : default:;
4053 : : }
4054 : : }
4055 : : break;
4056 : : default:;
4057 : : }
4058 : : }
4059 : : }
4060 : 0 : break;
4061 : : }
4062 : : default:;
4063 : : }
4064 : : }
4065 : : break;
4066 : : default:;
4067 : : }
4068 : : }
4069 : : }
4070 : 0 : break;
4071 : : }
4072 : : default:;
4073 : : }
4074 : : }
4075 : : break;
4076 : : default:;
4077 : : }
4078 : : break;
4079 : : }
4080 : : default:;
4081 : : }
4082 : : break;
4083 : : }
4084 : : default:;
4085 : : }
4086 : : }
4087 : : break;
4088 : : default:;
4089 : : }
4090 : : break;
4091 : : }
4092 : : default:;
4093 : : }
4094 : 3323418 : break;
4095 : : }
4096 : : default:;
4097 : : }
4098 : : }
4099 : : break;
4100 : : default:;
4101 : : }
4102 : : break;
4103 : : }
4104 : : default:;
4105 : : }
4106 : : }
4107 : : break;
4108 : 83883 : case GT_EXPR:
4109 : 83883 : {
4110 : 83883 : tree _q20 = TREE_OPERAND (_p0, 0);
4111 : 83883 : if ((TREE_CODE (_q20) == SSA_NAME
4112 : 83883 : || is_gimple_min_invariant (_q20)))
4113 : : {
4114 : 83883 : _q20 = do_valueize (valueize, _q20);
4115 : 83883 : tree _q21 = TREE_OPERAND (_p0, 1);
4116 : 83883 : if ((TREE_CODE (_q21) == SSA_NAME
4117 : 83883 : || is_gimple_min_invariant (_q21)))
4118 : : {
4119 : 83883 : _q21 = do_valueize (valueize, _q21);
4120 : 83883 : switch (TREE_CODE (_q20))
4121 : : {
4122 : 83883 : case SSA_NAME:
4123 : 83883 : if (gimple *_d2 = get_def (valueize, _q20))
4124 : : {
4125 : 83883 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
4126 : 79895 : switch (gimple_assign_rhs_code (_a2))
4127 : : {
4128 : 8946 : case PLUS_EXPR:
4129 : 8946 : {
4130 : 8946 : tree _q30 = gimple_assign_rhs1 (_a2);
4131 : 8946 : _q30 = do_valueize (valueize, _q30);
4132 : 8946 : tree _q31 = gimple_assign_rhs2 (_a2);
4133 : 8946 : _q31 = do_valueize (valueize, _q31);
4134 : 8946 : if (tree_swap_operands_p (_q30, _q31))
4135 : 0 : std::swap (_q30, _q31);
4136 : 8946 : switch (TREE_CODE (_q30))
4137 : : {
4138 : 8946 : case SSA_NAME:
4139 : 8946 : if (gimple *_d3 = get_def (valueize, _q30))
4140 : : {
4141 : 8946 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
4142 : 11865 : switch (gimple_assign_rhs_code (_a3))
4143 : : {
4144 : 2548 : CASE_CONVERT:
4145 : 2548 : {
4146 : 2548 : tree _q40 = gimple_assign_rhs1 (_a3);
4147 : 2548 : _q40 = do_valueize (valueize, _q40);
4148 : 2548 : switch (TREE_CODE (_q31))
4149 : : {
4150 : 2502 : case INTEGER_CST:
4151 : 2502 : {
4152 : 2502 : switch (TREE_CODE (_q21))
4153 : : {
4154 : 2496 : case INTEGER_CST:
4155 : 2496 : {
4156 : 2496 : switch (TREE_CODE (_p1))
4157 : : {
4158 : 1116 : case SSA_NAME:
4159 : 1116 : if (gimple *_d4 = get_def (valueize, _p1))
4160 : : {
4161 : 1116 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
4162 : 136 : switch (gimple_assign_rhs_code (_a4))
4163 : : {
4164 : 0 : case BIT_XOR_EXPR:
4165 : 0 : {
4166 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
4167 : 0 : _q80 = do_valueize (valueize, _q80);
4168 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
4169 : 0 : _q81 = do_valueize (valueize, _q81);
4170 : 0 : if (tree_swap_operands_p (_q80, _q81))
4171 : 0 : std::swap (_q80, _q81);
4172 : 0 : switch (TREE_CODE (_q80))
4173 : : {
4174 : 0 : case SSA_NAME:
4175 : 0 : if (gimple *_d5 = get_def (valueize, _q80))
4176 : : {
4177 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4178 : 0 : switch (gimple_assign_rhs_code (_a5))
4179 : : {
4180 : 0 : case NEGATE_EXPR:
4181 : 0 : {
4182 : 0 : tree _q90 = gimple_assign_rhs1 (_a5);
4183 : 0 : _q90 = do_valueize (valueize, _q90);
4184 : 0 : switch (TREE_CODE (_q90))
4185 : : {
4186 : 0 : case SSA_NAME:
4187 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
4188 : : {
4189 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
4190 : 0 : switch (gimple_assign_rhs_code (_a6))
4191 : : {
4192 : 0 : CASE_CONVERT:
4193 : 0 : {
4194 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
4195 : 0 : _q100 = do_valueize (valueize, _q100);
4196 : 0 : switch (TREE_CODE (_q100))
4197 : : {
4198 : 0 : case SSA_NAME:
4199 : 0 : if (gimple *_d7 = get_def (valueize, _q100))
4200 : : {
4201 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
4202 : 0 : switch (gimple_assign_rhs_code (_a7))
4203 : : {
4204 : 0 : case LT_EXPR:
4205 : 0 : {
4206 : 0 : tree _q110 = gimple_assign_rhs1 (_a7);
4207 : 0 : _q110 = do_valueize (valueize, _q110);
4208 : 0 : tree _q111 = gimple_assign_rhs2 (_a7);
4209 : 0 : _q111 = do_valueize (valueize, _q111);
4210 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
4211 : : {
4212 : 0 : if (integer_zerop (_q111))
4213 : : {
4214 : 0 : switch (TREE_CODE (_q81))
4215 : : {
4216 : 0 : case INTEGER_CST:
4217 : 0 : {
4218 : 0 : switch (TREE_CODE (_p2))
4219 : : {
4220 : 0 : case SSA_NAME:
4221 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
4222 : : {
4223 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
4224 : 0 : switch (gimple_assign_rhs_code (_a8))
4225 : : {
4226 : 0 : CASE_CONVERT:
4227 : 0 : {
4228 : 0 : tree _q150 = gimple_assign_rhs1 (_a8);
4229 : 0 : _q150 = do_valueize (valueize, _q150);
4230 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
4231 : : {
4232 : 0 : {
4233 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q81 };
4234 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4235 : : )
4236 : : {
4237 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
4238 : : )
4239 : : {
4240 : 0 : {
4241 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
4242 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
4243 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
4244 : 0 : itype_prec);
4245 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
4246 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
4247 : 0 : itype_prec);
4248 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
4249 : 0 : itype_prec);
4250 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
4251 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
4252 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
4253 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
4254 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
4255 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
4256 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
4257 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
4258 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
4259 : 0 : && wi::eq_p (int_cst_3, otype_max)
4260 : : )
4261 : : {
4262 : 0 : {
4263 : 0 : res_ops[0] = captures[0];
4264 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
4265 : 0 : return true;
4266 : : }
4267 : : }
4268 : 0 : }
4269 : : }
4270 : : }
4271 : : }
4272 : : }
4273 : : break;
4274 : : }
4275 : : default:;
4276 : : }
4277 : : }
4278 : : break;
4279 : : default:;
4280 : : }
4281 : : break;
4282 : : }
4283 : : default:;
4284 : : }
4285 : : }
4286 : : }
4287 : : break;
4288 : : }
4289 : : default:;
4290 : : }
4291 : : }
4292 : : break;
4293 : : default:;
4294 : : }
4295 : : break;
4296 : : }
4297 : : default:;
4298 : : }
4299 : : }
4300 : : break;
4301 : : default:;
4302 : : }
4303 : : break;
4304 : : }
4305 : : default:;
4306 : : }
4307 : : }
4308 : : break;
4309 : 0 : case INTEGER_CST:
4310 : 0 : {
4311 : 0 : switch (TREE_CODE (_q81))
4312 : : {
4313 : 0 : case SSA_NAME:
4314 : 0 : if (gimple *_d5 = get_def (valueize, _q81))
4315 : : {
4316 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4317 : 0 : switch (gimple_assign_rhs_code (_a5))
4318 : : {
4319 : 0 : case NEGATE_EXPR:
4320 : 0 : {
4321 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
4322 : 0 : _q100 = do_valueize (valueize, _q100);
4323 : 0 : switch (TREE_CODE (_q100))
4324 : : {
4325 : 0 : case SSA_NAME:
4326 : 0 : if (gimple *_d6 = get_def (valueize, _q100))
4327 : : {
4328 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
4329 : 0 : switch (gimple_assign_rhs_code (_a6))
4330 : : {
4331 : 0 : CASE_CONVERT:
4332 : 0 : {
4333 : 0 : tree _q110 = gimple_assign_rhs1 (_a6);
4334 : 0 : _q110 = do_valueize (valueize, _q110);
4335 : 0 : switch (TREE_CODE (_q110))
4336 : : {
4337 : 0 : case SSA_NAME:
4338 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
4339 : : {
4340 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
4341 : 0 : switch (gimple_assign_rhs_code (_a7))
4342 : : {
4343 : 0 : case LT_EXPR:
4344 : 0 : {
4345 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
4346 : 0 : _q120 = do_valueize (valueize, _q120);
4347 : 0 : tree _q121 = gimple_assign_rhs2 (_a7);
4348 : 0 : _q121 = do_valueize (valueize, _q121);
4349 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
4350 : : {
4351 : 0 : if (integer_zerop (_q121))
4352 : : {
4353 : 0 : switch (TREE_CODE (_p2))
4354 : : {
4355 : 0 : case SSA_NAME:
4356 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
4357 : : {
4358 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
4359 : 0 : switch (gimple_assign_rhs_code (_a8))
4360 : : {
4361 : 0 : CASE_CONVERT:
4362 : 0 : {
4363 : 0 : tree _q150 = gimple_assign_rhs1 (_a8);
4364 : 0 : _q150 = do_valueize (valueize, _q150);
4365 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
4366 : : {
4367 : 0 : {
4368 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q80 };
4369 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4370 : : )
4371 : : {
4372 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
4373 : : )
4374 : : {
4375 : 0 : {
4376 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
4377 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
4378 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
4379 : 0 : itype_prec);
4380 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
4381 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
4382 : 0 : itype_prec);
4383 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
4384 : 0 : itype_prec);
4385 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
4386 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
4387 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
4388 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
4389 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
4390 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
4391 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
4392 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
4393 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
4394 : 0 : && wi::eq_p (int_cst_3, otype_max)
4395 : : )
4396 : : {
4397 : 0 : {
4398 : 0 : res_ops[0] = captures[0];
4399 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
4400 : 0 : return true;
4401 : : }
4402 : : }
4403 : 0 : }
4404 : : }
4405 : : }
4406 : : }
4407 : : }
4408 : : break;
4409 : : }
4410 : : default:;
4411 : : }
4412 : : }
4413 : : break;
4414 : : default:;
4415 : : }
4416 : : }
4417 : : }
4418 : : break;
4419 : : }
4420 : : default:;
4421 : : }
4422 : : }
4423 : : break;
4424 : : default:;
4425 : : }
4426 : : break;
4427 : : }
4428 : : default:;
4429 : : }
4430 : : }
4431 : : break;
4432 : : default:;
4433 : : }
4434 : : break;
4435 : : }
4436 : : default:;
4437 : : }
4438 : : }
4439 : : break;
4440 : 0 : default:;
4441 : : }
4442 : 0 : {
4443 : 0 : tree _q81_pops[1];
4444 : 0 : if (gimple_nop_convert (_q81, _q81_pops, valueize))
4445 : : {
4446 : 0 : tree _q100 = _q81_pops[0];
4447 : 0 : switch (TREE_CODE (_q100))
4448 : : {
4449 : 0 : case SSA_NAME:
4450 : 0 : if (gimple *_d5 = get_def (valueize, _q100))
4451 : : {
4452 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4453 : 0 : switch (gimple_assign_rhs_code (_a5))
4454 : : {
4455 : 0 : case NEGATE_EXPR:
4456 : 0 : {
4457 : 0 : tree _q110 = gimple_assign_rhs1 (_a5);
4458 : 0 : _q110 = do_valueize (valueize, _q110);
4459 : 0 : {
4460 : 0 : tree _q110_pops[1];
4461 : 0 : if (gimple_nop_convert (_q110, _q110_pops, valueize))
4462 : : {
4463 : 0 : tree _q120 = _q110_pops[0];
4464 : 0 : switch (TREE_CODE (_q120))
4465 : : {
4466 : 0 : case SSA_NAME:
4467 : 0 : if (gimple *_d6 = get_def (valueize, _q120))
4468 : : {
4469 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
4470 : 0 : switch (gimple_assign_rhs_code (_a6))
4471 : : {
4472 : 0 : CASE_CONVERT:
4473 : 0 : {
4474 : 0 : tree _q130 = gimple_assign_rhs1 (_a6);
4475 : 0 : _q130 = do_valueize (valueize, _q130);
4476 : 0 : switch (TREE_CODE (_q130))
4477 : : {
4478 : 0 : case SSA_NAME:
4479 : 0 : if (gimple *_d7 = get_def (valueize, _q130))
4480 : : {
4481 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
4482 : 0 : switch (gimple_assign_rhs_code (_a7))
4483 : : {
4484 : 0 : case LT_EXPR:
4485 : 0 : {
4486 : 0 : tree _q140 = gimple_assign_rhs1 (_a7);
4487 : 0 : _q140 = do_valueize (valueize, _q140);
4488 : 0 : tree _q141 = gimple_assign_rhs2 (_a7);
4489 : 0 : _q141 = do_valueize (valueize, _q141);
4490 : 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
4491 : : {
4492 : 0 : if (integer_zerop (_q141))
4493 : : {
4494 : 0 : switch (TREE_CODE (_p2))
4495 : : {
4496 : 0 : case SSA_NAME:
4497 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
4498 : : {
4499 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
4500 : 0 : switch (gimple_assign_rhs_code (_a8))
4501 : : {
4502 : 0 : CASE_CONVERT:
4503 : 0 : {
4504 : 0 : tree _q170 = gimple_assign_rhs1 (_a8);
4505 : 0 : _q170 = do_valueize (valueize, _q170);
4506 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
4507 : : {
4508 : 0 : {
4509 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q80 };
4510 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4511 : : )
4512 : : {
4513 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
4514 : : )
4515 : : {
4516 : 0 : {
4517 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
4518 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
4519 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
4520 : 0 : itype_prec);
4521 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
4522 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
4523 : 0 : itype_prec);
4524 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
4525 : 0 : itype_prec);
4526 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
4527 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
4528 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
4529 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
4530 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
4531 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
4532 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
4533 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
4534 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
4535 : 0 : && wi::eq_p (int_cst_3, otype_max)
4536 : : )
4537 : : {
4538 : 0 : {
4539 : 0 : res_ops[0] = captures[0];
4540 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
4541 : 0 : return true;
4542 : : }
4543 : : }
4544 : 0 : }
4545 : : }
4546 : : }
4547 : : }
4548 : : }
4549 : : break;
4550 : : }
4551 : : default:;
4552 : : }
4553 : : }
4554 : : break;
4555 : : default:;
4556 : : }
4557 : : }
4558 : : }
4559 : : break;
4560 : : }
4561 : : default:;
4562 : : }
4563 : : }
4564 : : break;
4565 : : default:;
4566 : : }
4567 : : break;
4568 : : }
4569 : : default:;
4570 : : }
4571 : : }
4572 : : break;
4573 : : default:;
4574 : : }
4575 : : }
4576 : : }
4577 : 0 : break;
4578 : : }
4579 : : default:;
4580 : : }
4581 : : }
4582 : : break;
4583 : : default:;
4584 : : }
4585 : : }
4586 : : }
4587 : 0 : break;
4588 : : }
4589 : 0 : default:;
4590 : : }
4591 : 0 : {
4592 : 0 : tree _q80_pops[1];
4593 : 0 : if (gimple_nop_convert (_q80, _q80_pops, valueize))
4594 : : {
4595 : 0 : tree _q90 = _q80_pops[0];
4596 : 0 : switch (TREE_CODE (_q90))
4597 : : {
4598 : 0 : case SSA_NAME:
4599 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
4600 : : {
4601 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4602 : 0 : switch (gimple_assign_rhs_code (_a5))
4603 : : {
4604 : 0 : case NEGATE_EXPR:
4605 : 0 : {
4606 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
4607 : 0 : _q100 = do_valueize (valueize, _q100);
4608 : 0 : {
4609 : 0 : tree _q100_pops[1];
4610 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
4611 : : {
4612 : 0 : tree _q110 = _q100_pops[0];
4613 : 0 : switch (TREE_CODE (_q110))
4614 : : {
4615 : 0 : case SSA_NAME:
4616 : 0 : if (gimple *_d6 = get_def (valueize, _q110))
4617 : : {
4618 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
4619 : 0 : switch (gimple_assign_rhs_code (_a6))
4620 : : {
4621 : 0 : CASE_CONVERT:
4622 : 0 : {
4623 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
4624 : 0 : _q120 = do_valueize (valueize, _q120);
4625 : 0 : switch (TREE_CODE (_q120))
4626 : : {
4627 : 0 : case SSA_NAME:
4628 : 0 : if (gimple *_d7 = get_def (valueize, _q120))
4629 : : {
4630 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
4631 : 0 : switch (gimple_assign_rhs_code (_a7))
4632 : : {
4633 : 0 : case LT_EXPR:
4634 : 0 : {
4635 : 0 : tree _q130 = gimple_assign_rhs1 (_a7);
4636 : 0 : _q130 = do_valueize (valueize, _q130);
4637 : 0 : tree _q131 = gimple_assign_rhs2 (_a7);
4638 : 0 : _q131 = do_valueize (valueize, _q131);
4639 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
4640 : : {
4641 : 0 : if (integer_zerop (_q131))
4642 : : {
4643 : 0 : switch (TREE_CODE (_q81))
4644 : : {
4645 : 0 : case INTEGER_CST:
4646 : 0 : {
4647 : 0 : switch (TREE_CODE (_p2))
4648 : : {
4649 : 0 : case SSA_NAME:
4650 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
4651 : : {
4652 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
4653 : 0 : switch (gimple_assign_rhs_code (_a8))
4654 : : {
4655 : 0 : CASE_CONVERT:
4656 : 0 : {
4657 : 0 : tree _q170 = gimple_assign_rhs1 (_a8);
4658 : 0 : _q170 = do_valueize (valueize, _q170);
4659 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
4660 : : {
4661 : 0 : {
4662 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q30, _q31, _q21, _q81 };
4663 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4664 : : )
4665 : : {
4666 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
4667 : : )
4668 : : {
4669 : 0 : {
4670 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
4671 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
4672 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
4673 : 0 : itype_prec);
4674 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
4675 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
4676 : 0 : itype_prec);
4677 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
4678 : 0 : itype_prec);
4679 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
4680 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
4681 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
4682 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
4683 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
4684 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
4685 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
4686 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
4687 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
4688 : 0 : && wi::eq_p (int_cst_3, otype_max)
4689 : : )
4690 : : {
4691 : 0 : {
4692 : 0 : res_ops[0] = captures[0];
4693 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
4694 : 0 : return true;
4695 : : }
4696 : : }
4697 : 0 : }
4698 : : }
4699 : : }
4700 : : }
4701 : : }
4702 : : break;
4703 : : }
4704 : : default:;
4705 : : }
4706 : : }
4707 : : break;
4708 : : default:;
4709 : : }
4710 : : break;
4711 : : }
4712 : : default:;
4713 : : }
4714 : : }
4715 : : }
4716 : : break;
4717 : : }
4718 : : default:;
4719 : : }
4720 : : }
4721 : : break;
4722 : : default:;
4723 : : }
4724 : : break;
4725 : : }
4726 : : default:;
4727 : : }
4728 : : }
4729 : : break;
4730 : : default:;
4731 : : }
4732 : : }
4733 : : }
4734 : 0 : break;
4735 : : }
4736 : : default:;
4737 : : }
4738 : : }
4739 : : break;
4740 : : default:;
4741 : : }
4742 : : }
4743 : : }
4744 : 0 : break;
4745 : : }
4746 : : default:;
4747 : : }
4748 : : }
4749 : : break;
4750 : : default:;
4751 : : }
4752 : : break;
4753 : : }
4754 : : default:;
4755 : : }
4756 : : break;
4757 : : }
4758 : : default:;
4759 : : }
4760 : : break;
4761 : : }
4762 : : default:;
4763 : : }
4764 : : }
4765 : : break;
4766 : 0 : case INTEGER_CST:
4767 : 0 : {
4768 : 0 : switch (TREE_CODE (_q31))
4769 : : {
4770 : 0 : case SSA_NAME:
4771 : 0 : if (gimple *_d3 = get_def (valueize, _q31))
4772 : : {
4773 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
4774 : 0 : switch (gimple_assign_rhs_code (_a3))
4775 : : {
4776 : 0 : CASE_CONVERT:
4777 : 0 : {
4778 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
4779 : 0 : _q50 = do_valueize (valueize, _q50);
4780 : 0 : switch (TREE_CODE (_q21))
4781 : : {
4782 : 0 : case INTEGER_CST:
4783 : 0 : {
4784 : 0 : switch (TREE_CODE (_p1))
4785 : : {
4786 : 0 : case SSA_NAME:
4787 : 0 : if (gimple *_d4 = get_def (valueize, _p1))
4788 : : {
4789 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
4790 : 0 : switch (gimple_assign_rhs_code (_a4))
4791 : : {
4792 : 0 : case BIT_XOR_EXPR:
4793 : 0 : {
4794 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
4795 : 0 : _q80 = do_valueize (valueize, _q80);
4796 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
4797 : 0 : _q81 = do_valueize (valueize, _q81);
4798 : 0 : if (tree_swap_operands_p (_q80, _q81))
4799 : 0 : std::swap (_q80, _q81);
4800 : 0 : switch (TREE_CODE (_q80))
4801 : : {
4802 : 0 : case SSA_NAME:
4803 : 0 : if (gimple *_d5 = get_def (valueize, _q80))
4804 : : {
4805 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4806 : 0 : switch (gimple_assign_rhs_code (_a5))
4807 : : {
4808 : 0 : case NEGATE_EXPR:
4809 : 0 : {
4810 : 0 : tree _q90 = gimple_assign_rhs1 (_a5);
4811 : 0 : _q90 = do_valueize (valueize, _q90);
4812 : 0 : switch (TREE_CODE (_q90))
4813 : : {
4814 : 0 : case SSA_NAME:
4815 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
4816 : : {
4817 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
4818 : 0 : switch (gimple_assign_rhs_code (_a6))
4819 : : {
4820 : 0 : CASE_CONVERT:
4821 : 0 : {
4822 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
4823 : 0 : _q100 = do_valueize (valueize, _q100);
4824 : 0 : switch (TREE_CODE (_q100))
4825 : : {
4826 : 0 : case SSA_NAME:
4827 : 0 : if (gimple *_d7 = get_def (valueize, _q100))
4828 : : {
4829 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
4830 : 0 : switch (gimple_assign_rhs_code (_a7))
4831 : : {
4832 : 0 : case LT_EXPR:
4833 : 0 : {
4834 : 0 : tree _q110 = gimple_assign_rhs1 (_a7);
4835 : 0 : _q110 = do_valueize (valueize, _q110);
4836 : 0 : tree _q111 = gimple_assign_rhs2 (_a7);
4837 : 0 : _q111 = do_valueize (valueize, _q111);
4838 : 0 : if ((_q110 == _q50 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q50, 0) && types_match (_q110, _q50)))
4839 : : {
4840 : 0 : if (integer_zerop (_q111))
4841 : : {
4842 : 0 : switch (TREE_CODE (_q81))
4843 : : {
4844 : 0 : case INTEGER_CST:
4845 : 0 : {
4846 : 0 : switch (TREE_CODE (_p2))
4847 : : {
4848 : 0 : case SSA_NAME:
4849 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
4850 : : {
4851 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
4852 : 0 : switch (gimple_assign_rhs_code (_a8))
4853 : : {
4854 : 0 : CASE_CONVERT:
4855 : 0 : {
4856 : 0 : tree _q150 = gimple_assign_rhs1 (_a8);
4857 : 0 : _q150 = do_valueize (valueize, _q150);
4858 : 0 : if ((_q150 == _q50 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q50, 0) && types_match (_q150, _q50)))
4859 : : {
4860 : 0 : {
4861 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q81 };
4862 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4863 : : )
4864 : : {
4865 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
4866 : : )
4867 : : {
4868 : 0 : {
4869 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
4870 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
4871 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
4872 : 0 : itype_prec);
4873 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
4874 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
4875 : 0 : itype_prec);
4876 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
4877 : 0 : itype_prec);
4878 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
4879 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
4880 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
4881 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
4882 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
4883 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
4884 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
4885 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
4886 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
4887 : 0 : && wi::eq_p (int_cst_3, otype_max)
4888 : : )
4889 : : {
4890 : 0 : {
4891 : 0 : res_ops[0] = captures[0];
4892 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
4893 : 0 : return true;
4894 : : }
4895 : : }
4896 : 0 : }
4897 : : }
4898 : : }
4899 : : }
4900 : : }
4901 : : break;
4902 : : }
4903 : : default:;
4904 : : }
4905 : : }
4906 : : break;
4907 : : default:;
4908 : : }
4909 : : break;
4910 : : }
4911 : : default:;
4912 : : }
4913 : : }
4914 : : }
4915 : : break;
4916 : : }
4917 : : default:;
4918 : : }
4919 : : }
4920 : : break;
4921 : : default:;
4922 : : }
4923 : : break;
4924 : : }
4925 : : default:;
4926 : : }
4927 : : }
4928 : : break;
4929 : : default:;
4930 : : }
4931 : : break;
4932 : : }
4933 : : default:;
4934 : : }
4935 : : }
4936 : : break;
4937 : 0 : case INTEGER_CST:
4938 : 0 : {
4939 : 0 : switch (TREE_CODE (_q81))
4940 : : {
4941 : 0 : case SSA_NAME:
4942 : 0 : if (gimple *_d5 = get_def (valueize, _q81))
4943 : : {
4944 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4945 : 0 : switch (gimple_assign_rhs_code (_a5))
4946 : : {
4947 : 0 : case NEGATE_EXPR:
4948 : 0 : {
4949 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
4950 : 0 : _q100 = do_valueize (valueize, _q100);
4951 : 0 : switch (TREE_CODE (_q100))
4952 : : {
4953 : 0 : case SSA_NAME:
4954 : 0 : if (gimple *_d6 = get_def (valueize, _q100))
4955 : : {
4956 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
4957 : 0 : switch (gimple_assign_rhs_code (_a6))
4958 : : {
4959 : 0 : CASE_CONVERT:
4960 : 0 : {
4961 : 0 : tree _q110 = gimple_assign_rhs1 (_a6);
4962 : 0 : _q110 = do_valueize (valueize, _q110);
4963 : 0 : switch (TREE_CODE (_q110))
4964 : : {
4965 : 0 : case SSA_NAME:
4966 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
4967 : : {
4968 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
4969 : 0 : switch (gimple_assign_rhs_code (_a7))
4970 : : {
4971 : 0 : case LT_EXPR:
4972 : 0 : {
4973 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
4974 : 0 : _q120 = do_valueize (valueize, _q120);
4975 : 0 : tree _q121 = gimple_assign_rhs2 (_a7);
4976 : 0 : _q121 = do_valueize (valueize, _q121);
4977 : 0 : if ((_q120 == _q50 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q50, 0) && types_match (_q120, _q50)))
4978 : : {
4979 : 0 : if (integer_zerop (_q121))
4980 : : {
4981 : 0 : switch (TREE_CODE (_p2))
4982 : : {
4983 : 0 : case SSA_NAME:
4984 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
4985 : : {
4986 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
4987 : 0 : switch (gimple_assign_rhs_code (_a8))
4988 : : {
4989 : 0 : CASE_CONVERT:
4990 : 0 : {
4991 : 0 : tree _q150 = gimple_assign_rhs1 (_a8);
4992 : 0 : _q150 = do_valueize (valueize, _q150);
4993 : 0 : if ((_q150 == _q50 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q50, 0) && types_match (_q150, _q50)))
4994 : : {
4995 : 0 : {
4996 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q80 };
4997 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4998 : : )
4999 : : {
5000 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
5001 : : )
5002 : : {
5003 : 0 : {
5004 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
5005 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
5006 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
5007 : 0 : itype_prec);
5008 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
5009 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
5010 : 0 : itype_prec);
5011 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
5012 : 0 : itype_prec);
5013 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
5014 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
5015 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
5016 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
5017 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
5018 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
5019 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
5020 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
5021 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
5022 : 0 : && wi::eq_p (int_cst_3, otype_max)
5023 : : )
5024 : : {
5025 : 0 : {
5026 : 0 : res_ops[0] = captures[0];
5027 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
5028 : 0 : return true;
5029 : : }
5030 : : }
5031 : 0 : }
5032 : : }
5033 : : }
5034 : : }
5035 : : }
5036 : : break;
5037 : : }
5038 : : default:;
5039 : : }
5040 : : }
5041 : : break;
5042 : : default:;
5043 : : }
5044 : : }
5045 : : }
5046 : : break;
5047 : : }
5048 : : default:;
5049 : : }
5050 : : }
5051 : : break;
5052 : : default:;
5053 : : }
5054 : : break;
5055 : : }
5056 : : default:;
5057 : : }
5058 : : }
5059 : : break;
5060 : : default:;
5061 : : }
5062 : : break;
5063 : : }
5064 : : default:;
5065 : : }
5066 : : }
5067 : : break;
5068 : 0 : default:;
5069 : : }
5070 : 0 : {
5071 : 0 : tree _q81_pops[1];
5072 : 0 : if (gimple_nop_convert (_q81, _q81_pops, valueize))
5073 : : {
5074 : 0 : tree _q100 = _q81_pops[0];
5075 : 0 : switch (TREE_CODE (_q100))
5076 : : {
5077 : 0 : case SSA_NAME:
5078 : 0 : if (gimple *_d5 = get_def (valueize, _q100))
5079 : : {
5080 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
5081 : 0 : switch (gimple_assign_rhs_code (_a5))
5082 : : {
5083 : 0 : case NEGATE_EXPR:
5084 : 0 : {
5085 : 0 : tree _q110 = gimple_assign_rhs1 (_a5);
5086 : 0 : _q110 = do_valueize (valueize, _q110);
5087 : 0 : {
5088 : 0 : tree _q110_pops[1];
5089 : 0 : if (gimple_nop_convert (_q110, _q110_pops, valueize))
5090 : : {
5091 : 0 : tree _q120 = _q110_pops[0];
5092 : 0 : switch (TREE_CODE (_q120))
5093 : : {
5094 : 0 : case SSA_NAME:
5095 : 0 : if (gimple *_d6 = get_def (valueize, _q120))
5096 : : {
5097 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
5098 : 0 : switch (gimple_assign_rhs_code (_a6))
5099 : : {
5100 : 0 : CASE_CONVERT:
5101 : 0 : {
5102 : 0 : tree _q130 = gimple_assign_rhs1 (_a6);
5103 : 0 : _q130 = do_valueize (valueize, _q130);
5104 : 0 : switch (TREE_CODE (_q130))
5105 : : {
5106 : 0 : case SSA_NAME:
5107 : 0 : if (gimple *_d7 = get_def (valueize, _q130))
5108 : : {
5109 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
5110 : 0 : switch (gimple_assign_rhs_code (_a7))
5111 : : {
5112 : 0 : case LT_EXPR:
5113 : 0 : {
5114 : 0 : tree _q140 = gimple_assign_rhs1 (_a7);
5115 : 0 : _q140 = do_valueize (valueize, _q140);
5116 : 0 : tree _q141 = gimple_assign_rhs2 (_a7);
5117 : 0 : _q141 = do_valueize (valueize, _q141);
5118 : 0 : if ((_q140 == _q50 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q50, 0) && types_match (_q140, _q50)))
5119 : : {
5120 : 0 : if (integer_zerop (_q141))
5121 : : {
5122 : 0 : switch (TREE_CODE (_p2))
5123 : : {
5124 : 0 : case SSA_NAME:
5125 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
5126 : : {
5127 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
5128 : 0 : switch (gimple_assign_rhs_code (_a8))
5129 : : {
5130 : 0 : CASE_CONVERT:
5131 : 0 : {
5132 : 0 : tree _q170 = gimple_assign_rhs1 (_a8);
5133 : 0 : _q170 = do_valueize (valueize, _q170);
5134 : 0 : if ((_q170 == _q50 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q50, 0) && types_match (_q170, _q50)))
5135 : : {
5136 : 0 : {
5137 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q80 };
5138 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
5139 : : )
5140 : : {
5141 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
5142 : : )
5143 : : {
5144 : 0 : {
5145 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
5146 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
5147 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
5148 : 0 : itype_prec);
5149 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
5150 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
5151 : 0 : itype_prec);
5152 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
5153 : 0 : itype_prec);
5154 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
5155 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
5156 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
5157 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
5158 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
5159 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
5160 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
5161 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
5162 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
5163 : 0 : && wi::eq_p (int_cst_3, otype_max)
5164 : : )
5165 : : {
5166 : 0 : {
5167 : 0 : res_ops[0] = captures[0];
5168 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
5169 : 0 : return true;
5170 : : }
5171 : : }
5172 : 0 : }
5173 : : }
5174 : : }
5175 : : }
5176 : : }
5177 : : break;
5178 : : }
5179 : : default:;
5180 : : }
5181 : : }
5182 : : break;
5183 : : default:;
5184 : : }
5185 : : }
5186 : : }
5187 : : break;
5188 : : }
5189 : : default:;
5190 : : }
5191 : : }
5192 : : break;
5193 : : default:;
5194 : : }
5195 : : break;
5196 : : }
5197 : : default:;
5198 : : }
5199 : : }
5200 : : break;
5201 : : default:;
5202 : : }
5203 : : }
5204 : : }
5205 : 0 : break;
5206 : : }
5207 : : default:;
5208 : : }
5209 : : }
5210 : : break;
5211 : : default:;
5212 : : }
5213 : : }
5214 : : }
5215 : 0 : break;
5216 : : }
5217 : 0 : default:;
5218 : : }
5219 : 0 : {
5220 : 0 : tree _q80_pops[1];
5221 : 0 : if (gimple_nop_convert (_q80, _q80_pops, valueize))
5222 : : {
5223 : 0 : tree _q90 = _q80_pops[0];
5224 : 0 : switch (TREE_CODE (_q90))
5225 : : {
5226 : 0 : case SSA_NAME:
5227 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
5228 : : {
5229 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
5230 : 0 : switch (gimple_assign_rhs_code (_a5))
5231 : : {
5232 : 0 : case NEGATE_EXPR:
5233 : 0 : {
5234 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
5235 : 0 : _q100 = do_valueize (valueize, _q100);
5236 : 0 : {
5237 : 0 : tree _q100_pops[1];
5238 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
5239 : : {
5240 : 0 : tree _q110 = _q100_pops[0];
5241 : 0 : switch (TREE_CODE (_q110))
5242 : : {
5243 : 0 : case SSA_NAME:
5244 : 0 : if (gimple *_d6 = get_def (valueize, _q110))
5245 : : {
5246 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
5247 : 0 : switch (gimple_assign_rhs_code (_a6))
5248 : : {
5249 : 0 : CASE_CONVERT:
5250 : 0 : {
5251 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
5252 : 0 : _q120 = do_valueize (valueize, _q120);
5253 : 0 : switch (TREE_CODE (_q120))
5254 : : {
5255 : 0 : case SSA_NAME:
5256 : 0 : if (gimple *_d7 = get_def (valueize, _q120))
5257 : : {
5258 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
5259 : 0 : switch (gimple_assign_rhs_code (_a7))
5260 : : {
5261 : 0 : case LT_EXPR:
5262 : 0 : {
5263 : 0 : tree _q130 = gimple_assign_rhs1 (_a7);
5264 : 0 : _q130 = do_valueize (valueize, _q130);
5265 : 0 : tree _q131 = gimple_assign_rhs2 (_a7);
5266 : 0 : _q131 = do_valueize (valueize, _q131);
5267 : 0 : if ((_q130 == _q50 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q50, 0) && types_match (_q130, _q50)))
5268 : : {
5269 : 0 : if (integer_zerop (_q131))
5270 : : {
5271 : 0 : switch (TREE_CODE (_q81))
5272 : : {
5273 : 0 : case INTEGER_CST:
5274 : 0 : {
5275 : 0 : switch (TREE_CODE (_p2))
5276 : : {
5277 : 0 : case SSA_NAME:
5278 : 0 : if (gimple *_d8 = get_def (valueize, _p2))
5279 : : {
5280 : 0 : if (gassign *_a8 = dyn_cast <gassign *> (_d8))
5281 : 0 : switch (gimple_assign_rhs_code (_a8))
5282 : : {
5283 : 0 : CASE_CONVERT:
5284 : 0 : {
5285 : 0 : tree _q170 = gimple_assign_rhs1 (_a8);
5286 : 0 : _q170 = do_valueize (valueize, _q170);
5287 : 0 : if ((_q170 == _q50 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q50, 0) && types_match (_q170, _q50)))
5288 : : {
5289 : 0 : {
5290 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _q31, _q30, _q21, _q81 };
5291 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
5292 : : )
5293 : : {
5294 : 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
5295 : : )
5296 : : {
5297 : 0 : {
5298 : 0 : unsigned itype_prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
5299 : 0 : unsigned otype_prec = TYPE_PRECISION (type);
5300 : 0 : wide_int offset = wi::uhwi (HOST_WIDE_INT_1U << (otype_prec - 1),
5301 : 0 : itype_prec);
5302 : 0 : wide_int limit_0 = wi::mask (otype_prec, false, itype_prec);
5303 : 0 : wide_int limit_1 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 3,
5304 : 0 : itype_prec);
5305 : 0 : wide_int limit_2 = wi::uhwi ((HOST_WIDE_INT_1U << otype_prec) - 2,
5306 : 0 : itype_prec);
5307 : 0 : wide_int otype_max = wi::mask (otype_prec - 1, false, otype_prec);
5308 : 0 : wide_int itype_max = wi::mask (otype_prec - 1, false, itype_prec);
5309 : 0 : wide_int int_cst_1 = wi::to_wide (captures[2]);
5310 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3]);
5311 : 0 : wide_int int_cst_3 = wi::to_wide (captures[4]);
5312 : 0 : if (((wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_0))
5313 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_2))
5314 : 0 : || (wi::eq_p (int_cst_1, offset) && wi::eq_p (int_cst_2, limit_2))
5315 : 0 : || (wi::eq_p (int_cst_1, itype_max) && wi::eq_p (int_cst_2, limit_1)))
5316 : 0 : && wi::eq_p (int_cst_3, otype_max)
5317 : : )
5318 : : {
5319 : 0 : {
5320 : 0 : res_ops[0] = captures[0];
5321 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 86, __FILE__, __LINE__, false);
5322 : 0 : return true;
5323 : : }
5324 : : }
5325 : 0 : }
5326 : : }
5327 : : }
5328 : : }
5329 : : }
5330 : : break;
5331 : : }
5332 : : default:;
5333 : : }
5334 : : }
5335 : : break;
5336 : : default:;
5337 : : }
5338 : : break;
5339 : : }
5340 : : default:;
5341 : : }
5342 : : }
5343 : : }
5344 : : break;
5345 : : }
5346 : : default:;
5347 : : }
5348 : : }
5349 : : break;
5350 : : default:;
5351 : : }
5352 : : break;
5353 : : }
5354 : : default:;
5355 : : }
5356 : : }
5357 : : break;
5358 : : default:;
5359 : : }
5360 : : }
5361 : : }
5362 : 0 : break;
5363 : : }
5364 : : default:;
5365 : : }
5366 : : }
5367 : : break;
5368 : : default:;
5369 : : }
5370 : : }
5371 : : }
5372 : 0 : break;
5373 : : }
5374 : : default:;
5375 : : }
5376 : : }
5377 : : break;
5378 : : default:;
5379 : : }
5380 : : break;
5381 : : }
5382 : : default:;
5383 : : }
5384 : : break;
5385 : : }
5386 : : default:;
5387 : : }
5388 : : }
5389 : : break;
5390 : : default:;
5391 : : }
5392 : : break;
5393 : : }
5394 : : default:;
5395 : : }
5396 : 3323418 : break;
5397 : : }
5398 : : default:;
5399 : : }
5400 : : }
5401 : : break;
5402 : : default:;
5403 : : }
5404 : : }
5405 : : }
5406 : : break;
5407 : : }
5408 : : default:;
5409 : : }
5410 : : }
5411 : : }
5412 : : }
5413 : : break;
5414 : : default:;
5415 : : }
5416 : : return false;
5417 : : }
5418 : :
5419 : : bool
5420 : 70890 : gimple_simplify_513 (gimple_match_op *res_op, gimple_seq *seq,
5421 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5422 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5423 : : const enum tree_code ARG_UNUSED (minmax))
5424 : : {
5425 : 70890 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5426 : 70890 : if (INTEGRAL_TYPE_P (type)
5427 : 70694 : && types_match (captures[1], type) && int_fits_type_p (captures[2], type)
5428 : 9772 : && TYPE_SIGN (TREE_TYPE (captures[0])) == TYPE_SIGN (type)
5429 : 73846 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
5430 : : )
5431 : : {
5432 : 1792 : gimple_seq *lseq = seq;
5433 : 1792 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1464;
5434 : 1792 : {
5435 : 1792 : res_op->set_op (minmax, type, 2);
5436 : 1792 : res_op->ops[0] = captures[1];
5437 : 1792 : {
5438 : 1792 : tree _o1[1], _r1;
5439 : 1792 : _o1[0] = captures[2];
5440 : 1792 : if (type != TREE_TYPE (_o1[0]) /* XXX */
5441 : 1792 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
5442 : : {
5443 : 1792 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
5444 : 1792 : tem_op.resimplify (lseq, valueize);
5445 : 1792 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5446 : 1792 : if (!_r1) goto next_after_fail1464;
5447 : : }
5448 : : else
5449 : : _r1 = _o1[0];
5450 : 1792 : res_op->ops[1] = _r1;
5451 : : }
5452 : 1792 : res_op->resimplify (lseq, valueize);
5453 : 1792 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 764, __FILE__, __LINE__, true);
5454 : 1792 : return true;
5455 : : }
5456 : : next_after_fail1464:;
5457 : : }
5458 : : return false;
5459 : : }
5460 : :
5461 : : bool
5462 : 6877800 : gimple_simplify_521 (gimple_match_op *res_op, gimple_seq *seq,
5463 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5464 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5465 : : const enum tree_code ARG_UNUSED (op))
5466 : : {
5467 : 6877800 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5468 : 6877800 : if (INTEGRAL_TYPE_P (type)
5469 : 5986775 : && op != MULT_EXPR
5470 : 5986775 : && op != RDIV_EXPR
5471 : 4175055 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
5472 : 4175055 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5473 : 4175055 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
5474 : 4170268 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
5475 : 4170268 : && type_has_mode_precision_p (type)
5476 : 4143905 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
5477 : 0 : && types_match (captures[2], type)
5478 : 6877800 : && (types_match (captures[2], captures[4])
5479 : 0 : || poly_int_tree_p (captures[3]))
5480 : : )
5481 : : {
5482 : 0 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
5483 : : )
5484 : : {
5485 : 0 : gimple_seq *lseq = seq;
5486 : 0 : if (lseq
5487 : 0 : && (!single_use (captures[0])))
5488 : 0 : lseq = NULL;
5489 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1481;
5490 : 0 : {
5491 : 0 : res_op->set_op (op, type, 2);
5492 : 0 : res_op->ops[0] = captures[2];
5493 : 0 : {
5494 : 0 : tree _o1[1], _r1;
5495 : 0 : _o1[0] = captures[4];
5496 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
5497 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
5498 : : {
5499 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
5500 : 0 : tem_op.resimplify (lseq, valueize);
5501 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5502 : 0 : if (!_r1) goto next_after_fail1481;
5503 : : }
5504 : : else
5505 : : _r1 = _o1[0];
5506 : 0 : res_op->ops[1] = _r1;
5507 : : }
5508 : 0 : res_op->resimplify (lseq, valueize);
5509 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 769, __FILE__, __LINE__, true);
5510 : 0 : return true;
5511 : : }
5512 : : next_after_fail1481:;
5513 : : }
5514 : : else
5515 : : {
5516 : 0 : {
5517 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
5518 : 0 : gimple_seq *lseq = seq;
5519 : 0 : if (lseq
5520 : 0 : && (!single_use (captures[0])))
5521 : 0 : lseq = NULL;
5522 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1482;
5523 : 0 : {
5524 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5525 : 0 : {
5526 : 0 : tree _o1[2], _r1;
5527 : 0 : {
5528 : 0 : tree _o2[1], _r2;
5529 : 0 : _o2[0] = captures[2];
5530 : 0 : if (utype != TREE_TYPE (_o2[0]) /* XXX */
5531 : 0 : && !useless_type_conversion_p (utype, TREE_TYPE (_o2[0])))
5532 : : {
5533 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o2[0]);
5534 : 0 : tem_op.resimplify (lseq, valueize);
5535 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5536 : 0 : if (!_r2) goto next_after_fail1482;
5537 : : }
5538 : : else
5539 : : _r2 = _o2[0];
5540 : 0 : _o1[0] = _r2;
5541 : : }
5542 : 0 : {
5543 : 0 : tree _o2[1], _r2;
5544 : 0 : _o2[0] = captures[4];
5545 : 0 : if (utype != TREE_TYPE (_o2[0]) /* XXX */
5546 : 0 : && !useless_type_conversion_p (utype, TREE_TYPE (_o2[0])))
5547 : : {
5548 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o2[0]);
5549 : 0 : tem_op.resimplify (lseq, valueize);
5550 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5551 : 0 : if (!_r2) goto next_after_fail1482;
5552 : : }
5553 : : else
5554 : : _r2 = _o2[0];
5555 : 0 : _o1[1] = _r2;
5556 : : }
5557 : 0 : (*res_op).set_op (op, TREE_TYPE (_o1[0]), 2);
5558 : 0 : (*res_op).ops[0] = _o1[0];
5559 : 0 : (*res_op).ops[1] = _o1[1];
5560 : 0 : (*res_op).resimplify (lseq, valueize);
5561 : : }
5562 : 0 : if (type != res_op->type
5563 : 0 : && !useless_type_conversion_p (type, res_op->type))
5564 : : {
5565 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1482;
5566 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5567 : 0 : res_op->resimplify (lseq, valueize);
5568 : : }
5569 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 770, __FILE__, __LINE__, true);
5570 : 0 : return true;
5571 : : }
5572 : : next_after_fail1482:;
5573 : : }
5574 : : }
5575 : : }
5576 : : else
5577 : : {
5578 : 6677535 : if (FLOAT_TYPE_P (type)
5579 : 7082445 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
5580 : 202455 : == DECIMAL_FLOAT_TYPE_P (type)
5581 : : )
5582 : : {
5583 : 202284 : {
5584 : 202284 : tree arg0 = strip_float_extensions (captures[2]);
5585 : 202284 : tree arg1 = strip_float_extensions (captures[4]);
5586 : 202284 : tree itype = TREE_TYPE (captures[0]);
5587 : 202284 : tree ty1 = TREE_TYPE (arg0);
5588 : 202284 : tree ty2 = TREE_TYPE (arg1);
5589 : 202284 : enum tree_code code = TREE_CODE (itype);
5590 : 2190 : if (FLOAT_TYPE_P (ty1)
5591 : 204474 : && FLOAT_TYPE_P (ty2)
5592 : : )
5593 : : {
5594 : 202284 : {
5595 : 202284 : tree newtype = type;
5596 : 202284 : if (TYPE_MODE (ty1) == SDmode
5597 : 201756 : || TYPE_MODE (ty2) == SDmode
5598 : 404040 : || TYPE_MODE (type) == SDmode)
5599 : 1019 : newtype = dfloat32_type_node;
5600 : 202284 : if (TYPE_MODE (ty1) == DDmode
5601 : 202031 : || TYPE_MODE (ty2) == DDmode
5602 : 404315 : || TYPE_MODE (type) == DDmode)
5603 : 756 : newtype = dfloat64_type_node;
5604 : 202284 : if (TYPE_MODE (ty1) == TDmode
5605 : 201808 : || TYPE_MODE (ty2) == TDmode
5606 : 404092 : || TYPE_MODE (type) == TDmode)
5607 : 739 : newtype = dfloat128_type_node;
5608 : 202284 : if ((newtype == dfloat32_type_node
5609 : 202284 : || newtype == dfloat64_type_node
5610 : 201766 : || newtype == dfloat128_type_node)
5611 : 1257 : && newtype == type
5612 : 202812 : && types_match (newtype, type)
5613 : : )
5614 : : {
5615 : 528 : gimple_seq *lseq = seq;
5616 : 528 : if (lseq
5617 : 219 : && (!single_use (captures[0])))
5618 : 463 : lseq = NULL;
5619 : 528 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1483;
5620 : 528 : {
5621 : 528 : res_op->set_op (op, type, 2);
5622 : 528 : {
5623 : 528 : tree _o1[1], _r1;
5624 : 528 : _o1[0] = captures[2];
5625 : 528 : if (newtype != TREE_TYPE (_o1[0]) /* XXX */
5626 : 528 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o1[0])))
5627 : : {
5628 : 528 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o1[0]);
5629 : 528 : tem_op.resimplify (lseq, valueize);
5630 : 528 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5631 : 528 : if (!_r1) goto next_after_fail1483;
5632 : : }
5633 : : else
5634 : : _r1 = _o1[0];
5635 : 65 : res_op->ops[0] = _r1;
5636 : : }
5637 : 65 : {
5638 : 65 : tree _o1[1], _r1;
5639 : 65 : _o1[0] = captures[4];
5640 : 65 : if (newtype != TREE_TYPE (_o1[0]) /* XXX */
5641 : 65 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o1[0])))
5642 : : {
5643 : 65 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o1[0]);
5644 : 65 : tem_op.resimplify (lseq, valueize);
5645 : 65 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5646 : 65 : if (!_r1) goto next_after_fail1483;
5647 : : }
5648 : : else
5649 : : _r1 = _o1[0];
5650 : 65 : res_op->ops[1] = _r1;
5651 : : }
5652 : 65 : res_op->resimplify (lseq, valueize);
5653 : 65 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 771, __FILE__, __LINE__, true);
5654 : 65 : return true;
5655 : : }
5656 : : next_after_fail1483:;
5657 : : }
5658 : : else
5659 : : {
5660 : 201756 : {
5661 : 201756 : if (element_precision (ty1) > element_precision (newtype))
5662 : 160663 : newtype = ty1;
5663 : 201756 : if (element_precision (ty2) > element_precision (newtype))
5664 : 5550 : newtype = ty2;
5665 : 201756 : if (element_precision (newtype) < element_precision (itype)
5666 : 101 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
5667 : 0 : || target_supports_op_p (newtype, op, optab_default))
5668 : 101 : && (flag_unsafe_math_optimizations
5669 : 101 : || (element_precision (newtype) == element_precision (type)
5670 : 48 : && real_can_shorten_arithmetic (element_mode (itype),
5671 : : element_mode (type))
5672 : 0 : && !excess_precision_type (newtype)))
5673 : 201756 : && !types_match (itype, newtype)
5674 : : )
5675 : : {
5676 : 0 : gimple_seq *lseq = seq;
5677 : 0 : if (lseq
5678 : 0 : && (!single_use (captures[0])))
5679 : 0 : lseq = NULL;
5680 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1484;
5681 : 0 : {
5682 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5683 : 0 : {
5684 : 0 : tree _o1[2], _r1;
5685 : 0 : {
5686 : 0 : tree _o2[1], _r2;
5687 : 0 : _o2[0] = captures[2];
5688 : 0 : if (newtype != TREE_TYPE (_o2[0]) /* XXX */
5689 : 0 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o2[0])))
5690 : : {
5691 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o2[0]);
5692 : 0 : tem_op.resimplify (lseq, valueize);
5693 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5694 : 0 : if (!_r2) goto next_after_fail1484;
5695 : : }
5696 : : else
5697 : : _r2 = _o2[0];
5698 : 0 : _o1[0] = _r2;
5699 : : }
5700 : 0 : {
5701 : 0 : tree _o2[1], _r2;
5702 : 0 : _o2[0] = captures[4];
5703 : 0 : if (newtype != TREE_TYPE (_o2[0]) /* XXX */
5704 : 0 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o2[0])))
5705 : : {
5706 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o2[0]);
5707 : 0 : tem_op.resimplify (lseq, valueize);
5708 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5709 : 0 : if (!_r2) goto next_after_fail1484;
5710 : : }
5711 : : else
5712 : : _r2 = _o2[0];
5713 : 0 : _o1[1] = _r2;
5714 : : }
5715 : 0 : (*res_op).set_op (op, TREE_TYPE (_o1[0]), 2);
5716 : 0 : (*res_op).ops[0] = _o1[0];
5717 : 0 : (*res_op).ops[1] = _o1[1];
5718 : 0 : (*res_op).resimplify (lseq, valueize);
5719 : : }
5720 : 0 : if (type != res_op->type
5721 : 0 : && !useless_type_conversion_p (type, res_op->type))
5722 : : {
5723 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1484;
5724 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5725 : 0 : res_op->resimplify (lseq, valueize);
5726 : : }
5727 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 772, __FILE__, __LINE__, true);
5728 : 0 : return true;
5729 : : }
5730 : : next_after_fail1484:;
5731 : : }
5732 : : }
5733 : : }
5734 : : }
5735 : : }
5736 : : }
5737 : : }
5738 : : }
5739 : : return false;
5740 : : }
5741 : :
5742 : : bool
5743 : 1591 : gimple_simplify_558 (gimple_match_op *res_op, gimple_seq *seq,
5744 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5745 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5746 : : {
5747 : 1591 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5748 : 1591 : {
5749 : 1591 : bool wascmp;
5750 : 1591 : if (bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
5751 : 1591 : && (!wascmp || element_precision (type) == 1)
5752 : : )
5753 : : {
5754 : 8 : gimple_seq *lseq = seq;
5755 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1523;
5756 : 8 : {
5757 : 8 : res_op->set_op (BIT_AND_EXPR, type, 2);
5758 : 8 : res_op->ops[0] = captures[0];
5759 : 8 : res_op->ops[1] = captures[1];
5760 : 8 : res_op->resimplify (lseq, valueize);
5761 : 8 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 810, __FILE__, __LINE__, true);
5762 : 8 : return true;
5763 : : }
5764 : 0 : next_after_fail1523:;
5765 : : }
5766 : : }
5767 : 1583 : return false;
5768 : : }
5769 : :
5770 : : bool
5771 : 0 : gimple_simplify_562 (gimple_match_op *res_op, gimple_seq *seq,
5772 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5773 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5774 : : const enum tree_code ARG_UNUSED (cmp))
5775 : : {
5776 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5777 : 0 : if (!canonicalize_math_p ()
5778 : : )
5779 : : {
5780 : 0 : if (INTEGRAL_TYPE_P (type)
5781 : 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5782 : : )
5783 : : {
5784 : 0 : gimple_seq *lseq = seq;
5785 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1527;
5786 : 0 : {
5787 : 0 : res_op->set_op (COND_EXPR, type, 3);
5788 : 0 : res_op->ops[0] = captures[0];
5789 : 0 : res_op->ops[1] = captures[3];
5790 : 0 : res_op->ops[2] = build_zero_cst (type);
5791 : 0 : res_op->resimplify (lseq, valueize);
5792 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 814, __FILE__, __LINE__, true);
5793 : 0 : return true;
5794 : : }
5795 : 0 : next_after_fail1527:;
5796 : : }
5797 : : }
5798 : : return false;
5799 : : }
5800 : :
5801 : : bool
5802 : 60 : gimple_simplify_567 (gimple_match_op *res_op, gimple_seq *seq,
5803 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5804 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5805 : : const combined_fn ARG_UNUSED (bswap))
5806 : : {
5807 : 60 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5808 : 60 : if (BITS_PER_UNIT == 8
5809 : 60 : && tree_fits_uhwi_p (captures[3])
5810 : 60 : && tree_fits_uhwi_p (captures[4])
5811 : : )
5812 : : {
5813 : 60 : {
5814 : 60 : unsigned HOST_WIDE_INT prec = TYPE_PRECISION (TREE_TYPE (captures[1]));
5815 : 60 : unsigned HOST_WIDE_INT bits = tree_to_uhwi (captures[3]);
5816 : 60 : unsigned HOST_WIDE_INT mask = tree_to_uhwi (captures[4]);
5817 : 60 : unsigned HOST_WIDE_INT lo = bits & 7;
5818 : 60 : unsigned HOST_WIDE_INT hi = bits - lo;
5819 : 60 : if (bits < prec
5820 : 60 : && mask < (256u>>lo)
5821 : 66 : && bits < TYPE_PRECISION (TREE_TYPE(captures[0]))
5822 : : )
5823 : : {
5824 : 6 : {
5825 : 6 : unsigned HOST_WIDE_INT ns = (prec - (hi + 8)) + lo;
5826 : 6 : if (ns == 0
5827 : : )
5828 : : {
5829 : 0 : gimple_seq *lseq = seq;
5830 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1536;
5831 : 0 : {
5832 : 0 : res_op->set_op (BIT_AND_EXPR, type, 2);
5833 : 0 : {
5834 : 0 : tree _o1[1], _r1;
5835 : 0 : _o1[0] = captures[2];
5836 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
5837 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
5838 : : {
5839 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
5840 : 0 : tem_op.resimplify (lseq, valueize);
5841 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5842 : 0 : if (!_r1) goto next_after_fail1536;
5843 : : }
5844 : : else
5845 : : _r1 = _o1[0];
5846 : 0 : res_op->ops[0] = _r1;
5847 : : }
5848 : 0 : res_op->ops[1] = captures[4];
5849 : 0 : res_op->resimplify (lseq, valueize);
5850 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
5851 : 0 : return true;
5852 : : }
5853 : : next_after_fail1536:;
5854 : : }
5855 : : else
5856 : : {
5857 : 6 : {
5858 : 6 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
5859 : 6 : tree nst = build_int_cst (integer_type_node, ns);
5860 : 6 : gimple_seq *lseq = seq;
5861 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1537;
5862 : 6 : {
5863 : 6 : res_op->set_op (BIT_AND_EXPR, type, 2);
5864 : 6 : {
5865 : 6 : tree _r1;
5866 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
5867 : 6 : {
5868 : 6 : tree _o2[2], _r2;
5869 : 6 : {
5870 : 6 : tree _o3[1], _r3;
5871 : 6 : _o3[0] = captures[2];
5872 : 6 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
5873 : 6 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
5874 : : {
5875 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
5876 : 0 : tem_op.resimplify (lseq, valueize);
5877 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
5878 : 0 : if (!_r3) goto next_after_fail1537;
5879 : : }
5880 : : else
5881 : : _r3 = _o3[0];
5882 : 6 : _o2[0] = _r3;
5883 : : }
5884 : 6 : _o2[1] = nst;
5885 : 6 : tem_op.set_op (RSHIFT_EXPR, utype, 2);
5886 : 6 : tem_op.ops[0] = _o2[0];
5887 : 6 : tem_op.ops[1] = _o2[1];
5888 : 6 : tem_op.resimplify (lseq, valueize);
5889 : : }
5890 : 6 : if (type != tem_op.type
5891 : 6 : && !useless_type_conversion_p (type, tem_op.type))
5892 : : {
5893 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5894 : 0 : if (!_r1) goto next_after_fail1537;
5895 : 0 : tem_op.set_op (NOP_EXPR, type, 1);
5896 : 0 : tem_op.ops[0] = _r1;
5897 : 0 : tem_op.resimplify (lseq, valueize);
5898 : : }
5899 : 6 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5900 : 6 : if (!_r1) goto next_after_fail1537;
5901 : 1 : res_op->ops[0] = _r1;
5902 : : }
5903 : 1 : res_op->ops[1] = captures[4];
5904 : 1 : res_op->resimplify (lseq, valueize);
5905 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 820, __FILE__, __LINE__, true);
5906 : 1 : return true;
5907 : : }
5908 : : next_after_fail1537:;
5909 : : }
5910 : : }
5911 : : }
5912 : : }
5913 : : }
5914 : : }
5915 : : return false;
5916 : : }
5917 : :
5918 : : bool
5919 : 16 : gimple_simplify_581 (gimple_match_op *res_op, gimple_seq *seq,
5920 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5921 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5922 : : {
5923 : 16 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5924 : 16 : gimple_seq *lseq = seq;
5925 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1585;
5926 : 16 : {
5927 : 16 : tree tem;
5928 : 16 : tem = captures[2];
5929 : 16 : res_op->set_value (tem);
5930 : 16 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 840, __FILE__, __LINE__, true);
5931 : : return true;
5932 : : }
5933 : 0 : next_after_fail1585:;
5934 : 0 : return false;
5935 : : }
5936 : :
5937 : : bool
5938 : 6 : gimple_simplify_582 (gimple_match_op *res_op, gimple_seq *seq,
5939 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5940 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5941 : : {
5942 : 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5943 : 6 : gimple_seq *lseq = seq;
5944 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1586;
5945 : 6 : {
5946 : 6 : tree tem;
5947 : 6 : tem = captures[2];
5948 : 6 : res_op->set_value (tem);
5949 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 841, __FILE__, __LINE__, true);
5950 : : return true;
5951 : : }
5952 : 0 : next_after_fail1586:;
5953 : 0 : return false;
5954 : : }
5955 : :
5956 : : bool
5957 : 2807 : gimple_simplify_584 (gimple_match_op *res_op, gimple_seq *seq,
5958 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5959 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5960 : : {
5961 : 2807 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5962 : 2807 : if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))
5963 : 2807 : && bitwise_equal_p (captures[0], captures[2])
5964 : : )
5965 : : {
5966 : 8 : gimple_seq *lseq = seq;
5967 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1588;
5968 : 8 : {
5969 : 8 : res_op->set_op (NOP_EXPR, type, 1);
5970 : 8 : {
5971 : 8 : tree _o1[2], _r1;
5972 : 8 : _o1[0] = captures[0];
5973 : 8 : _o1[1] = captures[1];
5974 : 8 : (*res_op).set_op (EQ_EXPR, boolean_type_node, 2);
5975 : 8 : (*res_op).ops[0] = _o1[0];
5976 : 8 : (*res_op).ops[1] = _o1[1];
5977 : 8 : (*res_op).resimplify (lseq, valueize);
5978 : : }
5979 : 8 : if (type != res_op->type
5980 : 8 : && !useless_type_conversion_p (type, res_op->type))
5981 : : {
5982 : 7 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1588;
5983 : 3 : res_op->set_op (NOP_EXPR, type, 1);
5984 : 3 : res_op->resimplify (lseq, valueize);
5985 : : }
5986 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 843, __FILE__, __LINE__, true);
5987 : 4 : return true;
5988 : : }
5989 : : next_after_fail1588:;
5990 : : }
5991 : : return false;
5992 : : }
5993 : :
5994 : : bool
5995 : 2 : gimple_simplify_589 (gimple_match_op *res_op, gimple_seq *seq,
5996 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5997 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5998 : : {
5999 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6000 : 2 : gimple_seq *lseq = seq;
6001 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1599;
6002 : 2 : {
6003 : 2 : res_op->set_op (NE_EXPR, type, 2);
6004 : 2 : res_op->ops[0] = captures[0];
6005 : 2 : res_op->ops[1] = captures[1];
6006 : 2 : res_op->resimplify (lseq, valueize);
6007 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
6008 : : return true;
6009 : : }
6010 : 0 : next_after_fail1599:;
6011 : 0 : return false;
6012 : : }
6013 : :
6014 : : bool
6015 : 134 : gimple_simplify_592 (gimple_match_op *res_op, gimple_seq *seq,
6016 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6017 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6018 : : {
6019 : 134 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6020 : 134 : gimple_seq *lseq = seq;
6021 : 134 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1602;
6022 : 134 : {
6023 : 134 : res_op->set_op (LTGT_EXPR, type, 2);
6024 : 134 : res_op->ops[0] = captures[0];
6025 : 134 : res_op->ops[1] = captures[1];
6026 : 134 : res_op->resimplify (lseq, valueize);
6027 : 134 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
6028 : : return true;
6029 : : }
6030 : 0 : next_after_fail1602:;
6031 : 0 : return false;
6032 : : }
6033 : :
6034 : : bool
6035 : 0 : gimple_simplify_595 (gimple_match_op *res_op, gimple_seq *seq,
6036 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6037 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6038 : : {
6039 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6040 : 0 : gimple_seq *lseq = seq;
6041 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1605;
6042 : 0 : {
6043 : 0 : tree tem;
6044 : 0 : tem = constant_boolean_node (false, type);
6045 : 0 : res_op->set_value (tem);
6046 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
6047 : : return true;
6048 : : }
6049 : 0 : next_after_fail1605:;
6050 : 0 : return false;
6051 : : }
6052 : :
6053 : : bool
6054 : 31729 : gimple_simplify_598 (gimple_match_op *res_op, gimple_seq *seq,
6055 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6056 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6057 : : const enum tree_code ARG_UNUSED (op))
6058 : : {
6059 : 31729 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6060 : 63458 : if (INTEGRAL_TYPE_P (type)
6061 : 31729 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
6062 : 31593 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
6063 : 31593 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
6064 : 4101 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
6065 : 4085 : && type_has_mode_precision_p (type)
6066 : 4085 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
6067 : 2850 : && types_match (captures[2], captures[4])
6068 : 1457 : && (tree_int_cst_min_precision (captures[5], TYPE_SIGN (TREE_TYPE (captures[2])))
6069 : 1457 : <= TYPE_PRECISION (TREE_TYPE (captures[2])))
6070 : 32419 : && (wi::to_wide (captures[5])
6071 : 33109 : & wi::mask (TYPE_PRECISION (TREE_TYPE (captures[2])),
6072 : 33109 : true, TYPE_PRECISION (type))) == 0
6073 : : )
6074 : : {
6075 : 546 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
6076 : : )
6077 : : {
6078 : 428 : {
6079 : 428 : tree ntype = TREE_TYPE (captures[2]);
6080 : 428 : gimple_seq *lseq = seq;
6081 : 428 : if (lseq
6082 : 15 : && (!single_use (captures[0])))
6083 : 416 : lseq = NULL;
6084 : 428 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1608;
6085 : 428 : {
6086 : 428 : res_op->set_op (NOP_EXPR, type, 1);
6087 : 428 : {
6088 : 428 : tree _o1[2], _r1;
6089 : 428 : {
6090 : 428 : tree _o2[2], _r2;
6091 : 428 : _o2[0] = captures[2];
6092 : 428 : _o2[1] = captures[4];
6093 : 428 : gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6094 : 428 : tem_op.resimplify (lseq, valueize);
6095 : 428 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6096 : 428 : if (!_r2) goto next_after_fail1608;
6097 : 364 : _o1[0] = _r2;
6098 : : }
6099 : 364 : {
6100 : 364 : tree _o2[1], _r2;
6101 : 364 : _o2[0] = captures[5];
6102 : 364 : if (ntype != TREE_TYPE (_o2[0]) /* XXX */
6103 : 364 : && !useless_type_conversion_p (ntype, TREE_TYPE (_o2[0])))
6104 : : {
6105 : 364 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, ntype, _o2[0]);
6106 : 364 : tem_op.resimplify (lseq, valueize);
6107 : 364 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6108 : 364 : if (!_r2) goto next_after_fail1608;
6109 : : }
6110 : : else
6111 : : _r2 = _o2[0];
6112 : 364 : _o1[1] = _r2;
6113 : : }
6114 : 364 : (*res_op).set_op (BIT_AND_EXPR, TREE_TYPE (_o1[0]), 2);
6115 : 364 : (*res_op).ops[0] = _o1[0];
6116 : 364 : (*res_op).ops[1] = _o1[1];
6117 : 364 : (*res_op).resimplify (lseq, valueize);
6118 : : }
6119 : 364 : if (type != res_op->type
6120 : 364 : && !useless_type_conversion_p (type, res_op->type))
6121 : : {
6122 : 364 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1608;
6123 : 364 : res_op->set_op (NOP_EXPR, type, 1);
6124 : 364 : res_op->resimplify (lseq, valueize);
6125 : : }
6126 : 364 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 851, __FILE__, __LINE__, true);
6127 : 364 : return true;
6128 : : }
6129 : : next_after_fail1608:;
6130 : : }
6131 : : }
6132 : : else
6133 : : {
6134 : 118 : {
6135 : 118 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
6136 : 118 : gimple_seq *lseq = seq;
6137 : 118 : if (lseq
6138 : 25 : && (!single_use (captures[0])))
6139 : 115 : lseq = NULL;
6140 : 118 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1609;
6141 : 118 : {
6142 : 118 : res_op->set_op (NOP_EXPR, type, 1);
6143 : 118 : {
6144 : 118 : tree _o1[2], _r1;
6145 : 118 : {
6146 : 118 : tree _o2[2], _r2;
6147 : 118 : {
6148 : 118 : tree _o3[1], _r3;
6149 : 118 : _o3[0] = captures[2];
6150 : 118 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
6151 : 118 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
6152 : : {
6153 : 118 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
6154 : 118 : tem_op.resimplify (lseq, valueize);
6155 : 118 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
6156 : 118 : if (!_r3) goto next_after_fail1609;
6157 : : }
6158 : : else
6159 : : _r3 = _o3[0];
6160 : 33 : _o2[0] = _r3;
6161 : : }
6162 : 33 : {
6163 : 33 : tree _o3[1], _r3;
6164 : 33 : _o3[0] = captures[4];
6165 : 33 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
6166 : 33 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
6167 : : {
6168 : 33 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
6169 : 33 : tem_op.resimplify (lseq, valueize);
6170 : 33 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
6171 : 33 : if (!_r3) goto next_after_fail1609;
6172 : : }
6173 : : else
6174 : : _r3 = _o3[0];
6175 : 5 : _o2[1] = _r3;
6176 : : }
6177 : 5 : gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6178 : 5 : tem_op.resimplify (lseq, valueize);
6179 : 5 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6180 : 5 : if (!_r2) goto next_after_fail1609;
6181 : 3 : _o1[0] = _r2;
6182 : : }
6183 : 3 : {
6184 : 3 : tree _o2[1], _r2;
6185 : 3 : _o2[0] = captures[5];
6186 : 3 : if (utype != TREE_TYPE (_o2[0]) /* XXX */
6187 : 3 : && !useless_type_conversion_p (utype, TREE_TYPE (_o2[0])))
6188 : : {
6189 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o2[0]);
6190 : 3 : tem_op.resimplify (lseq, valueize);
6191 : 3 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6192 : 3 : if (!_r2) goto next_after_fail1609;
6193 : : }
6194 : : else
6195 : : _r2 = _o2[0];
6196 : 3 : _o1[1] = _r2;
6197 : : }
6198 : 3 : (*res_op).set_op (BIT_AND_EXPR, TREE_TYPE (_o1[0]), 2);
6199 : 3 : (*res_op).ops[0] = _o1[0];
6200 : 3 : (*res_op).ops[1] = _o1[1];
6201 : 3 : (*res_op).resimplify (lseq, valueize);
6202 : : }
6203 : 3 : if (type != res_op->type
6204 : 3 : && !useless_type_conversion_p (type, res_op->type))
6205 : : {
6206 : 3 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1609;
6207 : 3 : res_op->set_op (NOP_EXPR, type, 1);
6208 : 3 : res_op->resimplify (lseq, valueize);
6209 : : }
6210 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 852, __FILE__, __LINE__, true);
6211 : 3 : return true;
6212 : : }
6213 : : next_after_fail1609:;
6214 : : }
6215 : : }
6216 : : }
6217 : : return false;
6218 : : }
6219 : :
6220 : : bool
6221 : 4733 : gimple_simplify_629 (gimple_match_op *res_op, gimple_seq *seq,
6222 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6223 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6224 : : const combined_fn ARG_UNUSED (FMIN_ALL))
6225 : : {
6226 : 4733 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6227 : 4733 : if (flag_finite_math_only
6228 : : )
6229 : : {
6230 : 74 : gimple_seq *lseq = seq;
6231 : 74 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1653;
6232 : 74 : {
6233 : 74 : res_op->set_op (MIN_EXPR, type, 2);
6234 : 74 : res_op->ops[0] = captures[0];
6235 : 74 : res_op->ops[1] = captures[1];
6236 : 74 : res_op->resimplify (lseq, valueize);
6237 : 74 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 881, __FILE__, __LINE__, true);
6238 : 74 : return true;
6239 : : }
6240 : 0 : next_after_fail1653:;
6241 : : }
6242 : : return false;
6243 : : }
6244 : :
6245 : : bool
6246 : 34 : gimple_simplify_635 (gimple_match_op *res_op, gimple_seq *seq,
6247 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6248 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6249 : : const combined_fn ARG_UNUSED (bswap))
6250 : : {
6251 : 34 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6252 : 34 : gimple_seq *lseq = seq;
6253 : 34 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1662;
6254 : 34 : {
6255 : 34 : tree tem;
6256 : 34 : tem = captures[0];
6257 : 34 : res_op->set_value (tem);
6258 : 34 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
6259 : : return true;
6260 : : }
6261 : 0 : next_after_fail1662:;
6262 : 0 : return false;
6263 : : }
6264 : :
6265 : : bool
6266 : 0 : gimple_simplify_641 (gimple_match_op *res_op, gimple_seq *seq,
6267 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6268 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6269 : : {
6270 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6271 : 0 : gimple_seq *lseq = seq;
6272 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1668;
6273 : 0 : {
6274 : 0 : tree tem;
6275 : 0 : tem = captures[2];
6276 : 0 : res_op->set_value (tem);
6277 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 629, __FILE__, __LINE__, true);
6278 : : return true;
6279 : : }
6280 : 0 : next_after_fail1668:;
6281 : 0 : return false;
6282 : : }
6283 : :
6284 : : bool
6285 : 10 : gimple_simplify_647 (gimple_match_op *res_op, gimple_seq *seq,
6286 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6287 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6288 : : const combined_fn ARG_UNUSED (uncond_op),
6289 : : const combined_fn ARG_UNUSED (cond_op))
6290 : : {
6291 : 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6292 : 10 : {
6293 : 10 : tree op_type = TREE_TYPE (captures[2]);
6294 : 10 : if (vectorized_internal_fn_supported_p (as_internal_fn (cond_op), op_type)
6295 : 10 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
6296 : 20 : && single_use (captures[2])
6297 : : )
6298 : : {
6299 : 0 : gimple_seq *lseq = seq;
6300 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1674;
6301 : 0 : {
6302 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6303 : 0 : {
6304 : 0 : tree _o1[5], _r1;
6305 : 0 : {
6306 : 0 : tree _o2[1], _r2;
6307 : 0 : _o2[0] = captures[0];
6308 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6309 : 0 : tem_op.resimplify (lseq, valueize);
6310 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6311 : 0 : if (!_r2) goto next_after_fail1674;
6312 : 0 : _o1[0] = _r2;
6313 : : }
6314 : 0 : _o1[1] = captures[3];
6315 : 0 : _o1[2] = captures[4];
6316 : 0 : _o1[3] = captures[5];
6317 : 0 : {
6318 : 0 : tree _o2[1], _r2;
6319 : 0 : _o2[0] = captures[1];
6320 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
6321 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
6322 : : {
6323 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
6324 : 0 : tem_op.resimplify (lseq, valueize);
6325 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6326 : 0 : if (!_r2) goto next_after_fail1674;
6327 : : }
6328 : : else
6329 : : _r2 = _o2[0];
6330 : 0 : _o1[4] = _r2;
6331 : : }
6332 : 0 : (*res_op).set_op (cond_op, TREE_TYPE (_o1[1]), 5);
6333 : 0 : (*res_op).ops[0] = _o1[0];
6334 : 0 : (*res_op).ops[1] = _o1[1];
6335 : 0 : (*res_op).ops[2] = _o1[2];
6336 : 0 : (*res_op).ops[3] = _o1[3];
6337 : 0 : (*res_op).ops[4] = _o1[4];
6338 : 0 : (*res_op).resimplify (lseq, valueize);
6339 : : }
6340 : 0 : if (type != res_op->type
6341 : 0 : && !useless_type_conversion_p (type, res_op->type))
6342 : : {
6343 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1674;
6344 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6345 : 0 : res_op->resimplify (lseq, valueize);
6346 : : }
6347 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
6348 : 0 : return true;
6349 : : }
6350 : : next_after_fail1674:;
6351 : : }
6352 : : }
6353 : : return false;
6354 : : }
6355 : :
6356 : : bool
6357 : 0 : gimple_simplify_657 (gimple_match_op *res_op, gimple_seq *seq,
6358 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6359 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6360 : : const combined_fn ARG_UNUSED (cond_op))
6361 : : {
6362 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6363 : 0 : gimple_seq *lseq = seq;
6364 : 0 : if (lseq
6365 : 0 : && (!single_use (captures[1])))
6366 : 0 : lseq = NULL;
6367 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1684;
6368 : 0 : {
6369 : 0 : res_op->set_op (cond_op, type, 5);
6370 : 0 : {
6371 : 0 : tree _o1[2], _r1;
6372 : 0 : _o1[0] = captures[2];
6373 : 0 : _o1[1] = captures[0];
6374 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6375 : 0 : tem_op.resimplify (lseq, valueize);
6376 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6377 : 0 : if (!_r1) goto next_after_fail1684;
6378 : 0 : res_op->ops[0] = _r1;
6379 : : }
6380 : 0 : res_op->ops[1] = captures[3];
6381 : 0 : res_op->ops[2] = captures[4];
6382 : 0 : res_op->ops[3] = captures[5];
6383 : 0 : res_op->ops[4] = captures[6];
6384 : 0 : res_op->resimplify (lseq, valueize);
6385 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
6386 : : return true;
6387 : : }
6388 : : next_after_fail1684:;
6389 : : return false;
6390 : : }
6391 : :
6392 : : bool
6393 : 7 : gimple_simplify_666 (gimple_match_op *res_op, gimple_seq *seq,
6394 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6395 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6396 : : const combined_fn ARG_UNUSED (tans),
6397 : : const combined_fn ARG_UNUSED (atans))
6398 : : {
6399 : 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6400 : 7 : if (flag_unsafe_math_optimizations
6401 : : )
6402 : : {
6403 : 7 : gimple_seq *lseq = seq;
6404 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1693;
6405 : 7 : {
6406 : 7 : tree tem;
6407 : 7 : tem = captures[0];
6408 : 7 : res_op->set_value (tem);
6409 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 916, __FILE__, __LINE__, true);
6410 : 7 : return true;
6411 : : }
6412 : 0 : next_after_fail1693:;
6413 : : }
6414 : : return false;
6415 : : }
6416 : :
6417 : : bool
6418 : 246 : gimple_simplify_672 (gimple_match_op *res_op, gimple_seq *seq,
6419 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6420 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6421 : : const combined_fn ARG_UNUSED (froms),
6422 : : const combined_fn ARG_UNUSED (tos))
6423 : : {
6424 : 246 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6425 : 246 : if (optimize && canonicalize_math_p ()
6426 : : )
6427 : : {
6428 : 246 : gimple_seq *lseq = seq;
6429 : 246 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1699;
6430 : 246 : {
6431 : 246 : res_op->set_op (NOP_EXPR, type, 1);
6432 : 246 : {
6433 : 246 : tree _o1[1], _r1;
6434 : 246 : _o1[0] = captures[0];
6435 : 246 : (*res_op).set_op (tos, TREE_TYPE (_o1[0]), 1);
6436 : 246 : (*res_op).ops[0] = _o1[0];
6437 : 246 : (*res_op).resimplify (lseq, valueize);
6438 : : }
6439 : 246 : if (type != res_op->type
6440 : 246 : && !useless_type_conversion_p (type, res_op->type))
6441 : : {
6442 : 246 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1699;
6443 : 123 : res_op->set_op (NOP_EXPR, type, 1);
6444 : 123 : res_op->resimplify (lseq, valueize);
6445 : : }
6446 : 123 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
6447 : 123 : return true;
6448 : : }
6449 : : next_after_fail1699:;
6450 : : }
6451 : : return false;
6452 : : }
6453 : :
6454 : : bool
6455 : 222 : gimple_simplify_682 (gimple_match_op *res_op, gimple_seq *seq,
6456 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6457 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6458 : : const combined_fn ARG_UNUSED (rints))
6459 : : {
6460 : 222 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6461 : 222 : if (canonicalize_math_p ()
6462 : : )
6463 : : {
6464 : 222 : if (!flag_errno_math
6465 : : )
6466 : : {
6467 : 120 : gimple_seq *lseq = seq;
6468 : 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1709;
6469 : 120 : {
6470 : 120 : res_op->set_op (FIX_TRUNC_EXPR, type, 1);
6471 : 120 : res_op->ops[0] = captures[0];
6472 : 120 : res_op->resimplify (lseq, valueize);
6473 : 120 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 932, __FILE__, __LINE__, true);
6474 : 120 : return true;
6475 : : }
6476 : 0 : next_after_fail1709:;
6477 : : }
6478 : : }
6479 : : return false;
6480 : : }
6481 : :
6482 : : bool
6483 : 0 : gimple_simplify_688 (gimple_match_op *res_op, gimple_seq *seq,
6484 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6485 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6486 : : {
6487 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6488 : 0 : if (canonicalize_math_after_vectorization_p ()
6489 : : )
6490 : : {
6491 : 0 : gimple_seq *lseq = seq;
6492 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1715;
6493 : 0 : {
6494 : 0 : res_op->set_op (CFN_FNMS, type, 3);
6495 : 0 : res_op->ops[0] = captures[0];
6496 : 0 : res_op->ops[1] = captures[1];
6497 : 0 : res_op->ops[2] = captures[2];
6498 : 0 : res_op->resimplify (lseq, valueize);
6499 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 938, __FILE__, __LINE__, true);
6500 : 0 : return true;
6501 : : }
6502 : 0 : next_after_fail1715:;
6503 : : }
6504 : : return false;
6505 : : }
6506 : :
6507 : : bool
6508 : 1 : gimple_simplify_696 (gimple_match_op *res_op, gimple_seq *seq,
6509 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6510 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6511 : : const combined_fn ARG_UNUSED (ctz))
6512 : : {
6513 : 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6514 : 1 : {
6515 : 1 : tree t = TREE_TYPE (captures[0]);
6516 : 1 : gimple_seq *lseq = seq;
6517 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1723;
6518 : 1 : {
6519 : 1 : res_op->set_op (ctz, type, 1);
6520 : 1 : {
6521 : 1 : tree _o1[1], _r1;
6522 : 1 : _o1[0] = captures[1];
6523 : 1 : if (t != TREE_TYPE (_o1[0]) /* XXX */
6524 : 1 : && !useless_type_conversion_p (t, TREE_TYPE (_o1[0])))
6525 : : {
6526 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, t, _o1[0]);
6527 : 0 : tem_op.resimplify (lseq, valueize);
6528 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6529 : 0 : if (!_r1) goto next_after_fail1723;
6530 : : }
6531 : : else
6532 : : _r1 = _o1[0];
6533 : 1 : res_op->ops[0] = _r1;
6534 : : }
6535 : 1 : res_op->resimplify (lseq, valueize);
6536 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 944, __FILE__, __LINE__, true);
6537 : : return true;
6538 : : }
6539 : : next_after_fail1723:;
6540 : : }
6541 : : return false;
6542 : : }
6543 : :
6544 : : bool
6545 : 6 : gimple_simplify_705 (gimple_match_op *res_op, gimple_seq *seq,
6546 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6547 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6548 : : const combined_fn ARG_UNUSED (PARITY))
6549 : : {
6550 : 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6551 : 6 : gimple_seq *lseq = seq;
6552 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1737;
6553 : 6 : {
6554 : 6 : res_op->set_op (PARITY, type, 1);
6555 : 6 : res_op->ops[0] = captures[0];
6556 : 6 : res_op->resimplify (lseq, valueize);
6557 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
6558 : : return true;
6559 : : }
6560 : 0 : next_after_fail1737:;
6561 : 0 : return false;
6562 : : }
6563 : :
6564 : : bool
6565 : 0 : gimple_simplify_707 (gimple_match_op *res_op, gimple_seq *seq,
6566 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6567 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6568 : : const enum tree_code ARG_UNUSED (rot),
6569 : : const combined_fn ARG_UNUSED (parity))
6570 : : {
6571 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6572 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6573 : 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
6574 : : && (
6575 : : 1
6576 : : || !TREE_SIDE_EFFECTS (captures[3]))
6577 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
6578 : 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
6579 : : )
6580 : : {
6581 : 0 : {
6582 : 0 : tree type0 = TREE_TYPE (captures[0]);
6583 : 0 : gimple_seq *lseq = seq;
6584 : 0 : if (lseq
6585 : 0 : && (!single_use (captures[1])))
6586 : 0 : lseq = NULL;
6587 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1739;
6588 : 0 : {
6589 : 0 : res_op->set_op (parity, type, 1);
6590 : 0 : {
6591 : 0 : tree _o1[1], _r1;
6592 : 0 : _o1[0] = captures[2];
6593 : 0 : if (type0 != TREE_TYPE (_o1[0]) /* XXX */
6594 : 0 : && !useless_type_conversion_p (type0, TREE_TYPE (_o1[0])))
6595 : : {
6596 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type0, _o1[0]);
6597 : 0 : tem_op.resimplify (lseq, valueize);
6598 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6599 : 0 : if (!_r1) goto next_after_fail1739;
6600 : : }
6601 : : else
6602 : : _r1 = _o1[0];
6603 : 0 : res_op->ops[0] = _r1;
6604 : : }
6605 : 0 : res_op->resimplify (lseq, valueize);
6606 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
6607 : 0 : return true;
6608 : : }
6609 : : next_after_fail1739:;
6610 : : }
6611 : : }
6612 : : return false;
6613 : : }
6614 : :
6615 : : bool
6616 : 0 : gimple_simplify_713 (gimple_match_op *res_op, gimple_seq *seq,
6617 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6618 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6619 : : const combined_fn ARG_UNUSED (uncond_op),
6620 : : const combined_fn ARG_UNUSED (cond_op))
6621 : : {
6622 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6623 : 0 : {
6624 : 0 : tree op_type = TREE_TYPE (captures[1]);
6625 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (cond_op), op_type)
6626 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
6627 : 0 : && single_use (captures[1])
6628 : : )
6629 : : {
6630 : 0 : gimple_seq *lseq = seq;
6631 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1749;
6632 : 0 : {
6633 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6634 : 0 : {
6635 : 0 : tree _o1[7], _r1;
6636 : 0 : _o1[0] = captures[0];
6637 : 0 : _o1[1] = captures[2];
6638 : 0 : _o1[2] = captures[3];
6639 : 0 : _o1[3] = captures[4];
6640 : 0 : {
6641 : 0 : tree _o2[1], _r2;
6642 : 0 : _o2[0] = captures[5];
6643 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
6644 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
6645 : : {
6646 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
6647 : 0 : tem_op.resimplify (lseq, valueize);
6648 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6649 : 0 : if (!_r2) goto next_after_fail1749;
6650 : : }
6651 : : else
6652 : : _r2 = _o2[0];
6653 : 0 : _o1[4] = _r2;
6654 : : }
6655 : 0 : _o1[5] = captures[6];
6656 : 0 : _o1[6] = captures[7];
6657 : 0 : (*res_op).set_op (cond_op, TREE_TYPE (_o1[1]), 7);
6658 : 0 : (*res_op).ops[0] = _o1[0];
6659 : 0 : (*res_op).ops[1] = _o1[1];
6660 : 0 : (*res_op).ops[2] = _o1[2];
6661 : 0 : (*res_op).ops[3] = _o1[3];
6662 : 0 : (*res_op).ops[4] = _o1[4];
6663 : 0 : (*res_op).ops[5] = _o1[5];
6664 : 0 : (*res_op).ops[6] = _o1[6];
6665 : 0 : (*res_op).resimplify (lseq, valueize);
6666 : : }
6667 : 0 : if (type != res_op->type
6668 : 0 : && !useless_type_conversion_p (type, res_op->type))
6669 : : {
6670 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1749;
6671 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6672 : 0 : res_op->resimplify (lseq, valueize);
6673 : : }
6674 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
6675 : 0 : return true;
6676 : : }
6677 : : next_after_fail1749:;
6678 : : }
6679 : : }
6680 : : return false;
6681 : : }
6682 : :
6683 : : bool
6684 : 3081 : gimple_simplify_CFN_BUILT_IN_COSF (gimple_match_op *res_op, gimple_seq *seq,
6685 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6686 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
6687 : : {
6688 : 3081 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6689 : 3081 : switch (TREE_CODE (_p0))
6690 : : {
6691 : 2954 : case SSA_NAME:
6692 : 2954 : if (gimple *_d1 = get_def (valueize, _p0))
6693 : : {
6694 : 1675 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
6695 : 1587 : switch (gimple_assign_rhs_code (_a1))
6696 : : {
6697 : 26 : case NEGATE_EXPR:
6698 : 26 : {
6699 : 26 : tree _q20 = gimple_assign_rhs1 (_a1);
6700 : 26 : _q20 = do_valueize (valueize, _q20);
6701 : 26 : {
6702 : 26 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6703 : 26 : const combined_fn coss = CFN_BUILT_IN_COSF;
6704 : 26 : gimple_seq *lseq = seq;
6705 : 26 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1784;
6706 : 26 : {
6707 : 26 : res_op->set_op (coss, type, 1);
6708 : 26 : res_op->ops[0] = captures[0];
6709 : 26 : res_op->resimplify (lseq, valueize);
6710 : 26 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
6711 : 26 : return true;
6712 : : }
6713 : 0 : next_after_fail1784:;
6714 : : }
6715 : 0 : break;
6716 : : }
6717 : 6 : case ABS_EXPR:
6718 : 6 : {
6719 : 6 : tree _q20 = gimple_assign_rhs1 (_a1);
6720 : 6 : _q20 = do_valueize (valueize, _q20);
6721 : 6 : {
6722 : 6 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6723 : 6 : const combined_fn coss = CFN_BUILT_IN_COSF;
6724 : 6 : gimple_seq *lseq = seq;
6725 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1785;
6726 : 6 : {
6727 : 6 : res_op->set_op (coss, type, 1);
6728 : 6 : res_op->ops[0] = captures[0];
6729 : 6 : res_op->resimplify (lseq, valueize);
6730 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
6731 : 6 : return true;
6732 : : }
6733 : 0 : next_after_fail1785:;
6734 : : }
6735 : 0 : break;
6736 : : }
6737 : : default:;
6738 : : }
6739 : 548 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
6740 : 177 : switch (gimple_call_combined_fn (_c1))
6741 : : {
6742 : 0 : case CFN_BUILT_IN_COPYSIGN:
6743 : 0 : if (gimple_call_num_args (_c1) == 2)
6744 : : {
6745 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
6746 : 0 : _q20 = do_valueize (valueize, _q20);
6747 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
6748 : 0 : _q21 = do_valueize (valueize, _q21);
6749 : 0 : {
6750 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6751 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_COSF))
6752 : 0 : return true;
6753 : : }
6754 : : }
6755 : : break;
6756 : 4 : case CFN_BUILT_IN_COPYSIGNF:
6757 : 4 : if (gimple_call_num_args (_c1) == 2)
6758 : : {
6759 : 4 : tree _q20 = gimple_call_arg (_c1, 0);
6760 : 4 : _q20 = do_valueize (valueize, _q20);
6761 : 4 : tree _q21 = gimple_call_arg (_c1, 1);
6762 : 4 : _q21 = do_valueize (valueize, _q21);
6763 : 4 : {
6764 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6765 : 4 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_COSF))
6766 : 4 : return true;
6767 : : }
6768 : : }
6769 : : break;
6770 : 0 : case CFN_BUILT_IN_COPYSIGNL:
6771 : 0 : if (gimple_call_num_args (_c1) == 2)
6772 : : {
6773 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
6774 : 0 : _q20 = do_valueize (valueize, _q20);
6775 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
6776 : 0 : _q21 = do_valueize (valueize, _q21);
6777 : 0 : {
6778 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6779 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_COSF))
6780 : 0 : return true;
6781 : : }
6782 : : }
6783 : : break;
6784 : 12 : case CFN_BUILT_IN_ATANF:
6785 : 12 : if (gimple_call_num_args (_c1) == 1)
6786 : : {
6787 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
6788 : 12 : _q20 = do_valueize (valueize, _q20);
6789 : 12 : {
6790 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
6791 : 12 : if (gimple_simplify_524 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSF, CFN_BUILT_IN_ATANF, CFN_BUILT_IN_SQRTF, CFN_BUILT_IN_COPYSIGNF))
6792 : 2 : return true;
6793 : : }
6794 : : }
6795 : : break;
6796 : 4 : case CFN_COPYSIGN:
6797 : 4 : if (gimple_call_num_args (_c1) == 2)
6798 : : {
6799 : 4 : tree _q20 = gimple_call_arg (_c1, 0);
6800 : 4 : _q20 = do_valueize (valueize, _q20);
6801 : 4 : tree _q21 = gimple_call_arg (_c1, 1);
6802 : 4 : _q21 = do_valueize (valueize, _q21);
6803 : 4 : {
6804 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6805 : 4 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_COSF))
6806 : 4 : return true;
6807 : : }
6808 : : }
6809 : : break;
6810 : : default:;
6811 : : }
6812 : : }
6813 : : break;
6814 : : default:;
6815 : : }
6816 : : return false;
6817 : : }
6818 : :
6819 : : bool
6820 : 7 : gimple_simplify_CFN_COSH (gimple_match_op *res_op, gimple_seq *seq,
6821 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6822 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
6823 : : {
6824 : 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6825 : 7 : switch (TREE_CODE (_p0))
6826 : : {
6827 : 7 : case SSA_NAME:
6828 : 7 : if (gimple *_d1 = get_def (valueize, _p0))
6829 : : {
6830 : 4 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
6831 : 0 : switch (gimple_assign_rhs_code (_a1))
6832 : : {
6833 : 0 : case NEGATE_EXPR:
6834 : 0 : {
6835 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
6836 : 0 : _q20 = do_valueize (valueize, _q20);
6837 : 0 : {
6838 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6839 : 0 : const combined_fn coss = CFN_COSH;
6840 : 0 : gimple_seq *lseq = seq;
6841 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1798;
6842 : 0 : {
6843 : 0 : res_op->set_op (coss, type, 1);
6844 : 0 : res_op->ops[0] = captures[0];
6845 : 0 : res_op->resimplify (lseq, valueize);
6846 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
6847 : 0 : return true;
6848 : : }
6849 : 0 : next_after_fail1798:;
6850 : : }
6851 : 0 : break;
6852 : : }
6853 : 0 : case ABS_EXPR:
6854 : 0 : {
6855 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
6856 : 0 : _q20 = do_valueize (valueize, _q20);
6857 : 0 : {
6858 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6859 : 0 : const combined_fn coss = CFN_COSH;
6860 : 0 : gimple_seq *lseq = seq;
6861 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1799;
6862 : 0 : {
6863 : 0 : res_op->set_op (coss, type, 1);
6864 : 0 : res_op->ops[0] = captures[0];
6865 : 0 : res_op->resimplify (lseq, valueize);
6866 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
6867 : 0 : return true;
6868 : : }
6869 : 0 : next_after_fail1799:;
6870 : : }
6871 : 0 : break;
6872 : : }
6873 : : default:;
6874 : : }
6875 : 4 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
6876 : 0 : switch (gimple_call_combined_fn (_c1))
6877 : : {
6878 : 0 : case CFN_BUILT_IN_COPYSIGN:
6879 : 0 : if (gimple_call_num_args (_c1) == 2)
6880 : : {
6881 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
6882 : 0 : _q20 = do_valueize (valueize, _q20);
6883 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
6884 : 0 : _q21 = do_valueize (valueize, _q21);
6885 : 0 : {
6886 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6887 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_COSH))
6888 : 0 : return true;
6889 : : }
6890 : : }
6891 : : break;
6892 : 0 : case CFN_BUILT_IN_COPYSIGNF:
6893 : 0 : if (gimple_call_num_args (_c1) == 2)
6894 : : {
6895 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
6896 : 0 : _q20 = do_valueize (valueize, _q20);
6897 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
6898 : 0 : _q21 = do_valueize (valueize, _q21);
6899 : 0 : {
6900 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6901 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_COSH))
6902 : 0 : return true;
6903 : : }
6904 : : }
6905 : : break;
6906 : 0 : case CFN_BUILT_IN_COPYSIGNL:
6907 : 0 : if (gimple_call_num_args (_c1) == 2)
6908 : : {
6909 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
6910 : 0 : _q20 = do_valueize (valueize, _q20);
6911 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
6912 : 0 : _q21 = do_valueize (valueize, _q21);
6913 : 0 : {
6914 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6915 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_COSH))
6916 : 0 : return true;
6917 : : }
6918 : : }
6919 : : break;
6920 : 0 : case CFN_ATANH:
6921 : 0 : if (gimple_call_num_args (_c1) == 1)
6922 : : {
6923 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
6924 : 0 : _q20 = do_valueize (valueize, _q20);
6925 : 0 : {
6926 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
6927 : 0 : if (gimple_simplify_525 (res_op, seq, valueize, type, captures, CFN_COSH, CFN_ATANH, CFN_SQRT))
6928 : 0 : return true;
6929 : : }
6930 : : }
6931 : : break;
6932 : 0 : case CFN_COPYSIGN:
6933 : 0 : if (gimple_call_num_args (_c1) == 2)
6934 : : {
6935 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
6936 : 0 : _q20 = do_valueize (valueize, _q20);
6937 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
6938 : 0 : _q21 = do_valueize (valueize, _q21);
6939 : 0 : {
6940 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6941 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_COSH))
6942 : 0 : return true;
6943 : : }
6944 : : }
6945 : : break;
6946 : : default:;
6947 : : }
6948 : : }
6949 : : break;
6950 : : default:;
6951 : : }
6952 : : return false;
6953 : : }
6954 : :
6955 : : bool
6956 : 22890 : gimple_simplify_ABSU_EXPR (gimple_match_op *res_op, gimple_seq *seq,
6957 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6958 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
6959 : : {
6960 : 22890 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6961 : 22890 : switch (TREE_CODE (_p0))
6962 : : {
6963 : 22451 : case SSA_NAME:
6964 : 22451 : if (gimple *_d1 = get_def (valueize, _p0))
6965 : : {
6966 : 16404 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
6967 : 25858 : switch (gimple_assign_rhs_code (_a1))
6968 : : {
6969 : 1913 : CASE_CONVERT:
6970 : 1913 : {
6971 : 1913 : tree _q20 = gimple_assign_rhs1 (_a1);
6972 : 1913 : _q20 = do_valueize (valueize, _q20);
6973 : 1913 : switch (TREE_CODE (_q20))
6974 : : {
6975 : 1913 : case SSA_NAME:
6976 : 1913 : if (gimple *_d2 = get_def (valueize, _q20))
6977 : : {
6978 : 1784 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
6979 : 1440 : switch (gimple_assign_rhs_code (_a2))
6980 : : {
6981 : 1 : case ABSU_EXPR:
6982 : 1 : {
6983 : 1 : tree _q30 = gimple_assign_rhs1 (_a2);
6984 : 1 : _q30 = do_valueize (valueize, _q30);
6985 : 1 : {
6986 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
6987 : 1 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
6988 : : )
6989 : : {
6990 : 1 : gimple_seq *lseq = seq;
6991 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1841;
6992 : 1 : {
6993 : 1 : tree tem;
6994 : 1 : tem = captures[1];
6995 : 1 : res_op->set_value (tem);
6996 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1015, __FILE__, __LINE__, true);
6997 : 1 : return true;
6998 : : }
6999 : 0 : next_after_fail1841:;
7000 : : }
7001 : : }
7002 : 0 : break;
7003 : : }
7004 : : default:;
7005 : : }
7006 : : }
7007 : : break;
7008 : : default:;
7009 : : }
7010 : : break;
7011 : : }
7012 : 38 : case NEGATE_EXPR:
7013 : 38 : {
7014 : 38 : tree _q20 = gimple_assign_rhs1 (_a1);
7015 : 38 : _q20 = do_valueize (valueize, _q20);
7016 : 38 : {
7017 : 38 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7018 : 38 : gimple_seq *lseq = seq;
7019 : 38 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1842;
7020 : 38 : {
7021 : 38 : res_op->set_op (ABSU_EXPR, type, 1);
7022 : 38 : res_op->ops[0] = captures[0];
7023 : 38 : res_op->resimplify (lseq, valueize);
7024 : 38 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1016, __FILE__, __LINE__, true);
7025 : 38 : return true;
7026 : : }
7027 : 0 : next_after_fail1842:;
7028 : : }
7029 : 0 : break;
7030 : : }
7031 : 0 : case VEC_COND_EXPR:
7032 : 0 : {
7033 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
7034 : 0 : _q20 = do_valueize (valueize, _q20);
7035 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
7036 : 0 : _q21 = do_valueize (valueize, _q21);
7037 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
7038 : 0 : _q22 = do_valueize (valueize, _q22);
7039 : 0 : {
7040 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
7041 : 0 : gimple_seq *lseq = seq;
7042 : 0 : if (lseq
7043 : 0 : && (!single_use (captures[0])))
7044 : 0 : lseq = NULL;
7045 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1843;
7046 : 0 : {
7047 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
7048 : 0 : res_op->ops[0] = captures[1];
7049 : 0 : {
7050 : 0 : tree _o1[1], _r1;
7051 : 0 : _o1[0] = captures[2];
7052 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
7053 : 0 : tem_op.resimplify (NULL, valueize);
7054 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
7055 : 0 : if (!_r1) goto next_after_fail1843;
7056 : 0 : res_op->ops[1] = _r1;
7057 : : }
7058 : 0 : {
7059 : 0 : tree _o1[1], _r1;
7060 : 0 : _o1[0] = captures[3];
7061 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
7062 : 0 : tem_op.resimplify (NULL, valueize);
7063 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
7064 : 0 : if (!_r1) goto next_after_fail1843;
7065 : 0 : res_op->ops[2] = _r1;
7066 : : }
7067 : 0 : res_op->resimplify (lseq, valueize);
7068 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
7069 : 0 : return true;
7070 : : }
7071 : 0 : next_after_fail1843:;
7072 : : }
7073 : 0 : break;
7074 : : }
7075 : : default:;
7076 : : }
7077 : : }
7078 : : break;
7079 : 22851 : default:;
7080 : : }
7081 : 22851 : if (tree_expr_nonnegative_p (_p0))
7082 : : {
7083 : 6 : {
7084 : 6 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7085 : 6 : gimple_seq *lseq = seq;
7086 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1844;
7087 : 6 : {
7088 : 6 : res_op->set_op (NOP_EXPR, type, 1);
7089 : 6 : res_op->ops[0] = captures[0];
7090 : 6 : res_op->resimplify (lseq, valueize);
7091 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1017, __FILE__, __LINE__, true);
7092 : 6 : return true;
7093 : : }
7094 : 0 : next_after_fail1844:;
7095 : : }
7096 : : }
7097 : : return false;
7098 : : }
7099 : :
7100 : : bool
7101 : 4700 : gimple_simplify_CONJ_EXPR (gimple_match_op *res_op, gimple_seq *seq,
7102 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7103 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7104 : : {
7105 : 4700 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7106 : 4700 : switch (TREE_CODE (_p0))
7107 : : {
7108 : 4604 : case SSA_NAME:
7109 : 4604 : if (gimple *_d1 = get_def (valueize, _p0))
7110 : : {
7111 : 3662 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7112 : 6417 : switch (gimple_assign_rhs_code (_a1))
7113 : : {
7114 : 0 : CASE_CONVERT:
7115 : 0 : {
7116 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
7117 : 0 : _q20 = do_valueize (valueize, _q20);
7118 : 0 : switch (TREE_CODE (_q20))
7119 : : {
7120 : 0 : case SSA_NAME:
7121 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
7122 : : {
7123 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7124 : 0 : switch (gimple_assign_rhs_code (_a2))
7125 : : {
7126 : 0 : case CONJ_EXPR:
7127 : 0 : {
7128 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
7129 : 0 : _q30 = do_valueize (valueize, _q30);
7130 : 0 : {
7131 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
7132 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures))
7133 : 0 : return true;
7134 : : }
7135 : 0 : break;
7136 : : }
7137 : 0 : case COMPLEX_EXPR:
7138 : 0 : {
7139 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
7140 : 0 : _q30 = do_valueize (valueize, _q30);
7141 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
7142 : 0 : _q31 = do_valueize (valueize, _q31);
7143 : 0 : {
7144 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
7145 : 0 : {
7146 : 0 : tree itype = TREE_TYPE (type);
7147 : 0 : gimple_seq *lseq = seq;
7148 : 0 : if (lseq
7149 : 0 : && (!single_use (captures[0])
7150 : 0 : || !single_use (captures[1])))
7151 : 0 : lseq = NULL;
7152 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1912;
7153 : 0 : {
7154 : 0 : res_op->set_op (COMPLEX_EXPR, type, 2);
7155 : 0 : {
7156 : 0 : tree _o1[1], _r1;
7157 : 0 : _o1[0] = captures[2];
7158 : 0 : if (itype != TREE_TYPE (_o1[0]) /* XXX */
7159 : 0 : && !useless_type_conversion_p (itype, TREE_TYPE (_o1[0])))
7160 : : {
7161 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, itype, _o1[0]);
7162 : 0 : tem_op.resimplify (lseq, valueize);
7163 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7164 : 0 : if (!_r1) goto next_after_fail1912;
7165 : : }
7166 : : else
7167 : : _r1 = _o1[0];
7168 : 0 : res_op->ops[0] = _r1;
7169 : : }
7170 : 0 : {
7171 : 0 : tree _o1[1], _r1;
7172 : 0 : {
7173 : 0 : tree _o2[1], _r2;
7174 : 0 : _o2[0] = captures[3];
7175 : 0 : if (itype != TREE_TYPE (_o2[0]) /* XXX */
7176 : 0 : && !useless_type_conversion_p (itype, TREE_TYPE (_o2[0])))
7177 : : {
7178 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, itype, _o2[0]);
7179 : 0 : tem_op.resimplify (lseq, valueize);
7180 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
7181 : 0 : if (!_r2) goto next_after_fail1912;
7182 : : }
7183 : : else
7184 : : _r2 = _o2[0];
7185 : 0 : _o1[0] = _r2;
7186 : : }
7187 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
7188 : 0 : tem_op.resimplify (lseq, valueize);
7189 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7190 : 0 : if (!_r1) goto next_after_fail1912;
7191 : 0 : res_op->ops[1] = _r1;
7192 : : }
7193 : 0 : res_op->resimplify (lseq, valueize);
7194 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
7195 : 0 : return true;
7196 : : }
7197 : 0 : next_after_fail1912:;
7198 : : }
7199 : : }
7200 : 0 : break;
7201 : : }
7202 : : default:;
7203 : : }
7204 : : }
7205 : : break;
7206 : : default:;
7207 : : }
7208 : : break;
7209 : : }
7210 : 0 : case CONJ_EXPR:
7211 : 0 : {
7212 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
7213 : 0 : _q20 = do_valueize (valueize, _q20);
7214 : 0 : {
7215 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7216 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures))
7217 : 0 : return true;
7218 : : }
7219 : 0 : break;
7220 : : }
7221 : 0 : case COMPLEX_EXPR:
7222 : 0 : {
7223 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
7224 : 0 : _q20 = do_valueize (valueize, _q20);
7225 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
7226 : 0 : _q21 = do_valueize (valueize, _q21);
7227 : 0 : {
7228 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
7229 : 0 : {
7230 : 0 : tree itype = TREE_TYPE (type);
7231 : 0 : gimple_seq *lseq = seq;
7232 : 0 : if (lseq
7233 : 0 : && (!single_use (captures[0])
7234 : : || !single_use (captures[1])))
7235 : 0 : lseq = NULL;
7236 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1913;
7237 : 0 : {
7238 : 0 : res_op->set_op (COMPLEX_EXPR, type, 2);
7239 : 0 : {
7240 : 0 : tree _o1[1], _r1;
7241 : 0 : _o1[0] = captures[2];
7242 : 0 : if (itype != TREE_TYPE (_o1[0]) /* XXX */
7243 : 0 : && !useless_type_conversion_p (itype, TREE_TYPE (_o1[0])))
7244 : : {
7245 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, itype, _o1[0]);
7246 : 0 : tem_op.resimplify (lseq, valueize);
7247 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7248 : 0 : if (!_r1) goto next_after_fail1913;
7249 : : }
7250 : : else
7251 : : _r1 = _o1[0];
7252 : 0 : res_op->ops[0] = _r1;
7253 : : }
7254 : 0 : {
7255 : 0 : tree _o1[1], _r1;
7256 : 0 : {
7257 : 0 : tree _o2[1], _r2;
7258 : 0 : _o2[0] = captures[3];
7259 : 0 : if (itype != TREE_TYPE (_o2[0]) /* XXX */
7260 : 0 : && !useless_type_conversion_p (itype, TREE_TYPE (_o2[0])))
7261 : : {
7262 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, itype, _o2[0]);
7263 : 0 : tem_op.resimplify (lseq, valueize);
7264 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
7265 : 0 : if (!_r2) goto next_after_fail1913;
7266 : : }
7267 : : else
7268 : : _r2 = _o2[0];
7269 : 0 : _o1[0] = _r2;
7270 : : }
7271 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
7272 : 0 : tem_op.resimplify (lseq, valueize);
7273 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7274 : 0 : if (!_r1) goto next_after_fail1913;
7275 : 0 : res_op->ops[1] = _r1;
7276 : : }
7277 : 0 : res_op->resimplify (lseq, valueize);
7278 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
7279 : 0 : return true;
7280 : : }
7281 : 0 : next_after_fail1913:;
7282 : : }
7283 : : }
7284 : 0 : break;
7285 : : }
7286 : : default:;
7287 : : }
7288 : : }
7289 : : break;
7290 : : default:;
7291 : : }
7292 : : return false;
7293 : : }
7294 : :
7295 : : bool
7296 : 7113 : gimple_simplify_CFN_BUILT_IN_BSWAP32 (gimple_match_op *res_op, gimple_seq *seq,
7297 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7298 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7299 : : {
7300 : 7113 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7301 : 7113 : switch (TREE_CODE (_p0))
7302 : : {
7303 : 7006 : case SSA_NAME:
7304 : 7006 : if (gimple *_d1 = get_def (valueize, _p0))
7305 : : {
7306 : 3252 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7307 : 4267 : switch (gimple_assign_rhs_code (_a1))
7308 : : {
7309 : 2 : case BIT_NOT_EXPR:
7310 : 2 : {
7311 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
7312 : 2 : _q20 = do_valueize (valueize, _q20);
7313 : 2 : switch (TREE_CODE (_q20))
7314 : : {
7315 : 2 : case SSA_NAME:
7316 : 2 : if (gimple *_d2 = get_def (valueize, _q20))
7317 : : {
7318 : 2 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
7319 : 2 : switch (gimple_call_combined_fn (_c2))
7320 : : {
7321 : 2 : case CFN_BUILT_IN_BSWAP32:
7322 : 2 : if (gimple_call_num_args (_c2) == 1)
7323 : : {
7324 : 2 : tree _q30 = gimple_call_arg (_c2, 0);
7325 : 2 : _q30 = do_valueize (valueize, _q30);
7326 : 2 : {
7327 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
7328 : 2 : if (gimple_simplify_636 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32))
7329 : 2 : return true;
7330 : : }
7331 : : }
7332 : : break;
7333 : : default:;
7334 : : }
7335 : : }
7336 : : break;
7337 : : default:;
7338 : : }
7339 : : break;
7340 : : }
7341 : 20 : case BIT_XOR_EXPR:
7342 : 20 : {
7343 : 20 : tree _q20 = gimple_assign_rhs1 (_a1);
7344 : 20 : _q20 = do_valueize (valueize, _q20);
7345 : 20 : tree _q21 = gimple_assign_rhs2 (_a1);
7346 : 20 : _q21 = do_valueize (valueize, _q21);
7347 : 20 : if (tree_swap_operands_p (_q20, _q21))
7348 : 0 : std::swap (_q20, _q21);
7349 : 20 : switch (TREE_CODE (_q20))
7350 : : {
7351 : 20 : case SSA_NAME:
7352 : 20 : if (gimple *_d2 = get_def (valueize, _q20))
7353 : : {
7354 : 20 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
7355 : 4 : switch (gimple_call_combined_fn (_c2))
7356 : : {
7357 : 4 : case CFN_BUILT_IN_BSWAP32:
7358 : 4 : if (gimple_call_num_args (_c2) == 1)
7359 : : {
7360 : 4 : tree _q30 = gimple_call_arg (_c2, 0);
7361 : 4 : _q30 = do_valueize (valueize, _q30);
7362 : 4 : {
7363 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
7364 : 4 : if (gimple_simplify_637 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_BUILT_IN_BSWAP32))
7365 : 4 : return true;
7366 : : }
7367 : : }
7368 : : break;
7369 : : default:;
7370 : : }
7371 : : }
7372 : : break;
7373 : 16 : default:;
7374 : : }
7375 : 16 : switch (TREE_CODE (_q21))
7376 : : {
7377 : 16 : case SSA_NAME:
7378 : 16 : if (gimple *_d2 = get_def (valueize, _q21))
7379 : : {
7380 : 16 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
7381 : 0 : switch (gimple_call_combined_fn (_c2))
7382 : : {
7383 : 0 : case CFN_BUILT_IN_BSWAP32:
7384 : 0 : if (gimple_call_num_args (_c2) == 1)
7385 : : {
7386 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
7387 : 0 : _q40 = do_valueize (valueize, _q40);
7388 : 0 : {
7389 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7390 : 0 : if (gimple_simplify_637 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_BUILT_IN_BSWAP32))
7391 : 0 : return true;
7392 : : }
7393 : : }
7394 : : break;
7395 : : default:;
7396 : : }
7397 : : }
7398 : : break;
7399 : : default:;
7400 : : }
7401 : 7113 : break;
7402 : : }
7403 : 146 : case BIT_IOR_EXPR:
7404 : 146 : {
7405 : 146 : tree _q20 = gimple_assign_rhs1 (_a1);
7406 : 146 : _q20 = do_valueize (valueize, _q20);
7407 : 146 : tree _q21 = gimple_assign_rhs2 (_a1);
7408 : 146 : _q21 = do_valueize (valueize, _q21);
7409 : 146 : if (tree_swap_operands_p (_q20, _q21))
7410 : 0 : std::swap (_q20, _q21);
7411 : 146 : switch (TREE_CODE (_q20))
7412 : : {
7413 : 146 : case SSA_NAME:
7414 : 146 : if (gimple *_d2 = get_def (valueize, _q20))
7415 : : {
7416 : 146 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
7417 : 4 : switch (gimple_call_combined_fn (_c2))
7418 : : {
7419 : 4 : case CFN_BUILT_IN_BSWAP32:
7420 : 4 : if (gimple_call_num_args (_c2) == 1)
7421 : : {
7422 : 4 : tree _q30 = gimple_call_arg (_c2, 0);
7423 : 4 : _q30 = do_valueize (valueize, _q30);
7424 : 4 : {
7425 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
7426 : 4 : if (gimple_simplify_637 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_BUILT_IN_BSWAP32))
7427 : 4 : return true;
7428 : : }
7429 : : }
7430 : : break;
7431 : : default:;
7432 : : }
7433 : : }
7434 : : break;
7435 : 142 : default:;
7436 : : }
7437 : 142 : switch (TREE_CODE (_q21))
7438 : : {
7439 : 131 : case SSA_NAME:
7440 : 131 : if (gimple *_d2 = get_def (valueize, _q21))
7441 : : {
7442 : 124 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
7443 : 0 : switch (gimple_call_combined_fn (_c2))
7444 : : {
7445 : 0 : case CFN_BUILT_IN_BSWAP32:
7446 : 0 : if (gimple_call_num_args (_c2) == 1)
7447 : : {
7448 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
7449 : 0 : _q40 = do_valueize (valueize, _q40);
7450 : 0 : {
7451 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7452 : 0 : if (gimple_simplify_637 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_BUILT_IN_BSWAP32))
7453 : 0 : return true;
7454 : : }
7455 : : }
7456 : : break;
7457 : : default:;
7458 : : }
7459 : : }
7460 : : break;
7461 : : default:;
7462 : : }
7463 : 7113 : break;
7464 : : }
7465 : 21 : case BIT_AND_EXPR:
7466 : 21 : {
7467 : 21 : tree _q20 = gimple_assign_rhs1 (_a1);
7468 : 21 : _q20 = do_valueize (valueize, _q20);
7469 : 21 : tree _q21 = gimple_assign_rhs2 (_a1);
7470 : 21 : _q21 = do_valueize (valueize, _q21);
7471 : 21 : if (tree_swap_operands_p (_q20, _q21))
7472 : 1 : std::swap (_q20, _q21);
7473 : 21 : switch (TREE_CODE (_q20))
7474 : : {
7475 : 21 : case SSA_NAME:
7476 : 21 : if (gimple *_d2 = get_def (valueize, _q20))
7477 : : {
7478 : 21 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
7479 : 7 : switch (gimple_call_combined_fn (_c2))
7480 : : {
7481 : 7 : case CFN_BUILT_IN_BSWAP32:
7482 : 7 : if (gimple_call_num_args (_c2) == 1)
7483 : : {
7484 : 7 : tree _q30 = gimple_call_arg (_c2, 0);
7485 : 7 : _q30 = do_valueize (valueize, _q30);
7486 : 7 : {
7487 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
7488 : 7 : if (gimple_simplify_637 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_BUILT_IN_BSWAP32))
7489 : 7 : return true;
7490 : : }
7491 : : }
7492 : : break;
7493 : : default:;
7494 : : }
7495 : : }
7496 : : break;
7497 : 14 : default:;
7498 : : }
7499 : 14 : switch (TREE_CODE (_q21))
7500 : : {
7501 : 3 : case SSA_NAME:
7502 : 3 : if (gimple *_d2 = get_def (valueize, _q21))
7503 : : {
7504 : 3 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
7505 : 0 : switch (gimple_call_combined_fn (_c2))
7506 : : {
7507 : 0 : case CFN_BUILT_IN_BSWAP32:
7508 : 0 : if (gimple_call_num_args (_c2) == 1)
7509 : : {
7510 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
7511 : 0 : _q40 = do_valueize (valueize, _q40);
7512 : 0 : {
7513 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7514 : 0 : if (gimple_simplify_637 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_BUILT_IN_BSWAP32))
7515 : 0 : return true;
7516 : : }
7517 : : }
7518 : : break;
7519 : : default:;
7520 : : }
7521 : : }
7522 : : break;
7523 : : default:;
7524 : : }
7525 : 7113 : break;
7526 : : }
7527 : : default:;
7528 : : }
7529 : 685 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
7530 : 16 : switch (gimple_call_combined_fn (_c1))
7531 : : {
7532 : 16 : case CFN_BUILT_IN_BSWAP32:
7533 : 16 : if (gimple_call_num_args (_c1) == 1)
7534 : : {
7535 : 16 : tree _q20 = gimple_call_arg (_c1, 0);
7536 : 16 : _q20 = do_valueize (valueize, _q20);
7537 : 16 : {
7538 : 16 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7539 : 16 : if (gimple_simplify_635 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32))
7540 : 16 : return true;
7541 : : }
7542 : : }
7543 : : break;
7544 : : default:;
7545 : : }
7546 : : }
7547 : : break;
7548 : : default:;
7549 : : }
7550 : : return false;
7551 : : }
7552 : :
7553 : : bool
7554 : 10842 : gimple_simplify_CFN_BUILT_IN_LOG (gimple_match_op *res_op, gimple_seq *seq,
7555 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7556 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7557 : : {
7558 : 10842 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7559 : 10842 : switch (TREE_CODE (_p0))
7560 : : {
7561 : 10207 : case SSA_NAME:
7562 : 10207 : if (gimple *_d1 = get_def (valueize, _p0))
7563 : : {
7564 : 5487 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7565 : 4475 : switch (gimple_assign_rhs_code (_a1))
7566 : : {
7567 : 723 : case RDIV_EXPR:
7568 : 723 : {
7569 : 723 : tree _q20 = gimple_assign_rhs1 (_a1);
7570 : 723 : _q20 = do_valueize (valueize, _q20);
7571 : 723 : tree _q21 = gimple_assign_rhs2 (_a1);
7572 : 723 : _q21 = do_valueize (valueize, _q21);
7573 : 723 : switch (TREE_CODE (_q20))
7574 : : {
7575 : 31 : case REAL_CST:
7576 : 31 : {
7577 : 31 : {
7578 : 31 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7579 : 31 : if (gimple_simplify_664 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG))
7580 : 2 : return true;
7581 : : }
7582 : 29 : break;
7583 : : }
7584 : 721 : default:;
7585 : : }
7586 : 721 : if (real_onep (_q20))
7587 : : {
7588 : 1 : {
7589 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7590 : 1 : if (gimple_simplify_663 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG))
7591 : 0 : return true;
7592 : : }
7593 : : }
7594 : : break;
7595 : : }
7596 : : default:;
7597 : : }
7598 : 1342 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
7599 : 403 : switch (gimple_call_combined_fn (_c1))
7600 : : {
7601 : 7 : case CFN_BUILT_IN_EXP:
7602 : 7 : if (gimple_call_num_args (_c1) == 1)
7603 : : {
7604 : 7 : tree _q20 = gimple_call_arg (_c1, 0);
7605 : 7 : _q20 = do_valueize (valueize, _q20);
7606 : 7 : {
7607 : 7 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7608 : 7 : if (flag_unsafe_math_optimizations
7609 : : )
7610 : : {
7611 : 7 : gimple_seq *lseq = seq;
7612 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1920;
7613 : 7 : {
7614 : 7 : tree tem;
7615 : 7 : tem = captures[0];
7616 : 7 : res_op->set_value (tem);
7617 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1038, __FILE__, __LINE__, true);
7618 : 7 : return true;
7619 : : }
7620 : 0 : next_after_fail1920:;
7621 : : }
7622 : : }
7623 : : }
7624 : : break;
7625 : 16 : case CFN_BUILT_IN_POW:
7626 : 16 : if (gimple_call_num_args (_c1) == 2)
7627 : : {
7628 : 16 : tree _q20 = gimple_call_arg (_c1, 0);
7629 : 16 : _q20 = do_valueize (valueize, _q20);
7630 : 16 : tree _q21 = gimple_call_arg (_c1, 1);
7631 : 16 : _q21 = do_valueize (valueize, _q21);
7632 : 16 : {
7633 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7634 : 16 : if (gimple_simplify_665 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_POW))
7635 : 8 : return true;
7636 : : }
7637 : : }
7638 : : break;
7639 : 12 : case CFN_BUILT_IN_CBRT:
7640 : 12 : if (gimple_call_num_args (_c1) == 1)
7641 : : {
7642 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
7643 : 12 : _q20 = do_valueize (valueize, _q20);
7644 : 12 : {
7645 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7646 : 12 : if (flag_unsafe_math_optimizations
7647 : : )
7648 : : {
7649 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
7650 : : )
7651 : : {
7652 : 12 : {
7653 : 12 : tree x;
7654 : 12 : switch (CFN_BUILT_IN_CBRT)
7655 : : {
7656 : : CASE_CFN_SQRT:
7657 : : x = build_real (type, dconsthalf);
7658 : : break;
7659 : 12 : CASE_CFN_CBRT:
7660 : 12 : x = build_real_truncate (type, dconst_third ());
7661 : 12 : break;
7662 : : default:
7663 : : gcc_unreachable ();
7664 : : }
7665 : 12 : gimple_seq *lseq = seq;
7666 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1921;
7667 : 12 : {
7668 : 12 : res_op->set_op (MULT_EXPR, type, 2);
7669 : 12 : res_op->ops[0] = x;
7670 : 12 : {
7671 : 12 : tree _o1[1], _r1;
7672 : 12 : _o1[0] = captures[0];
7673 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (_o1[0]), _o1[0]);
7674 : 12 : tem_op.resimplify (lseq, valueize);
7675 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7676 : 12 : if (!_r1) goto next_after_fail1921;
7677 : 6 : res_op->ops[1] = _r1;
7678 : : }
7679 : 6 : res_op->resimplify (lseq, valueize);
7680 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1036, __FILE__, __LINE__, true);
7681 : 6 : return true;
7682 : : }
7683 : : next_after_fail1921:;
7684 : : }
7685 : : }
7686 : : }
7687 : : }
7688 : : }
7689 : : break;
7690 : 12 : case CFN_BUILT_IN_EXP2:
7691 : 12 : if (gimple_call_num_args (_c1) == 1)
7692 : : {
7693 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
7694 : 12 : _q20 = do_valueize (valueize, _q20);
7695 : 12 : {
7696 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7697 : 12 : if (flag_unsafe_math_optimizations
7698 : : )
7699 : : {
7700 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
7701 : : )
7702 : : {
7703 : 12 : {
7704 : 12 : tree x;
7705 : 12 : switch (CFN_BUILT_IN_EXP2)
7706 : : {
7707 : : CASE_CFN_EXP:
7708 : : x = build_real_truncate (type, dconst_e ());
7709 : : break;
7710 : 12 : CASE_CFN_EXP2:
7711 : 12 : x = build_real (type, dconst2);
7712 : 12 : break;
7713 : : CASE_CFN_EXP10:
7714 : : CASE_CFN_POW10:
7715 : : {
7716 : : REAL_VALUE_TYPE dconst10;
7717 : : real_from_integer (&dconst10, VOIDmode, 10, SIGNED);
7718 : : x = build_real (type, dconst10);
7719 : : }
7720 : : break;
7721 : : default:
7722 : : gcc_unreachable ();
7723 : : }
7724 : 12 : gimple_seq *lseq = seq;
7725 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1922;
7726 : 12 : {
7727 : 12 : res_op->set_op (MULT_EXPR, type, 2);
7728 : 12 : {
7729 : 12 : tree _o1[1], _r1;
7730 : 12 : _o1[0] = x;
7731 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (_o1[0]), _o1[0]);
7732 : 12 : tem_op.resimplify (lseq, valueize);
7733 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7734 : 12 : if (!_r1) goto next_after_fail1922;
7735 : 12 : res_op->ops[0] = _r1;
7736 : : }
7737 : 12 : res_op->ops[1] = captures[0];
7738 : 12 : res_op->resimplify (lseq, valueize);
7739 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1037, __FILE__, __LINE__, true);
7740 : 12 : return true;
7741 : : }
7742 : : next_after_fail1922:;
7743 : : }
7744 : : }
7745 : : }
7746 : : }
7747 : : }
7748 : : break;
7749 : 14 : case CFN_BUILT_IN_SQRT:
7750 : 14 : if (gimple_call_num_args (_c1) == 1)
7751 : : {
7752 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
7753 : 14 : _q20 = do_valueize (valueize, _q20);
7754 : 14 : {
7755 : 14 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7756 : 14 : if (flag_unsafe_math_optimizations
7757 : : )
7758 : : {
7759 : 14 : if (SCALAR_FLOAT_TYPE_P (type)
7760 : : )
7761 : : {
7762 : 14 : {
7763 : 14 : tree x;
7764 : 14 : switch (CFN_BUILT_IN_SQRT)
7765 : : {
7766 : 14 : CASE_CFN_SQRT:
7767 : 14 : x = build_real (type, dconsthalf);
7768 : 14 : break;
7769 : : CASE_CFN_CBRT:
7770 : : x = build_real_truncate (type, dconst_third ());
7771 : : break;
7772 : : default:
7773 : : gcc_unreachable ();
7774 : : }
7775 : 14 : gimple_seq *lseq = seq;
7776 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1923;
7777 : 14 : {
7778 : 14 : res_op->set_op (MULT_EXPR, type, 2);
7779 : 14 : res_op->ops[0] = x;
7780 : 14 : {
7781 : 14 : tree _o1[1], _r1;
7782 : 14 : _o1[0] = captures[0];
7783 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (_o1[0]), _o1[0]);
7784 : 14 : tem_op.resimplify (lseq, valueize);
7785 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7786 : 14 : if (!_r1) goto next_after_fail1923;
7787 : 7 : res_op->ops[1] = _r1;
7788 : : }
7789 : 7 : res_op->resimplify (lseq, valueize);
7790 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1036, __FILE__, __LINE__, true);
7791 : 7 : return true;
7792 : : }
7793 : : next_after_fail1923:;
7794 : : }
7795 : : }
7796 : : }
7797 : : }
7798 : : }
7799 : : break;
7800 : 12 : case CFN_BUILT_IN_EXP10:
7801 : 12 : if (gimple_call_num_args (_c1) == 1)
7802 : : {
7803 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
7804 : 12 : _q20 = do_valueize (valueize, _q20);
7805 : 12 : {
7806 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7807 : 12 : if (flag_unsafe_math_optimizations
7808 : : )
7809 : : {
7810 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
7811 : : )
7812 : : {
7813 : 12 : {
7814 : 12 : tree x;
7815 : 12 : switch (CFN_BUILT_IN_EXP10)
7816 : : {
7817 : : CASE_CFN_EXP:
7818 : : x = build_real_truncate (type, dconst_e ());
7819 : : break;
7820 : : CASE_CFN_EXP2:
7821 : : x = build_real (type, dconst2);
7822 : : break;
7823 : 12 : CASE_CFN_EXP10:
7824 : 12 : CASE_CFN_POW10:
7825 : 12 : {
7826 : 12 : REAL_VALUE_TYPE dconst10;
7827 : 12 : real_from_integer (&dconst10, VOIDmode, 10, SIGNED);
7828 : 12 : x = build_real (type, dconst10);
7829 : : }
7830 : 12 : break;
7831 : : default:
7832 : : gcc_unreachable ();
7833 : : }
7834 : 12 : gimple_seq *lseq = seq;
7835 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1924;
7836 : 12 : {
7837 : 12 : res_op->set_op (MULT_EXPR, type, 2);
7838 : 12 : {
7839 : 12 : tree _o1[1], _r1;
7840 : 12 : _o1[0] = x;
7841 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (_o1[0]), _o1[0]);
7842 : 12 : tem_op.resimplify (lseq, valueize);
7843 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7844 : 12 : if (!_r1) goto next_after_fail1924;
7845 : 12 : res_op->ops[0] = _r1;
7846 : : }
7847 : 12 : res_op->ops[1] = captures[0];
7848 : 12 : res_op->resimplify (lseq, valueize);
7849 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1037, __FILE__, __LINE__, true);
7850 : 12 : return true;
7851 : : }
7852 : : next_after_fail1924:;
7853 : : }
7854 : : }
7855 : : }
7856 : : }
7857 : : }
7858 : : break;
7859 : 12 : case CFN_BUILT_IN_POW10:
7860 : 12 : if (gimple_call_num_args (_c1) == 1)
7861 : : {
7862 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
7863 : 12 : _q20 = do_valueize (valueize, _q20);
7864 : 12 : {
7865 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7866 : 12 : if (flag_unsafe_math_optimizations
7867 : : )
7868 : : {
7869 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
7870 : : )
7871 : : {
7872 : 12 : {
7873 : 12 : tree x;
7874 : 12 : switch (CFN_BUILT_IN_POW10)
7875 : : {
7876 : : CASE_CFN_EXP:
7877 : : x = build_real_truncate (type, dconst_e ());
7878 : : break;
7879 : : CASE_CFN_EXP2:
7880 : : x = build_real (type, dconst2);
7881 : : break;
7882 : 12 : CASE_CFN_EXP10:
7883 : 12 : CASE_CFN_POW10:
7884 : 12 : {
7885 : 12 : REAL_VALUE_TYPE dconst10;
7886 : 12 : real_from_integer (&dconst10, VOIDmode, 10, SIGNED);
7887 : 12 : x = build_real (type, dconst10);
7888 : : }
7889 : 12 : break;
7890 : : default:
7891 : : gcc_unreachable ();
7892 : : }
7893 : 12 : gimple_seq *lseq = seq;
7894 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1925;
7895 : 12 : {
7896 : 12 : res_op->set_op (MULT_EXPR, type, 2);
7897 : 12 : {
7898 : 12 : tree _o1[1], _r1;
7899 : 12 : _o1[0] = x;
7900 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (_o1[0]), _o1[0]);
7901 : 12 : tem_op.resimplify (lseq, valueize);
7902 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7903 : 12 : if (!_r1) goto next_after_fail1925;
7904 : 12 : res_op->ops[0] = _r1;
7905 : : }
7906 : 12 : res_op->ops[1] = captures[0];
7907 : 12 : res_op->resimplify (lseq, valueize);
7908 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1037, __FILE__, __LINE__, true);
7909 : 12 : return true;
7910 : : }
7911 : : next_after_fail1925:;
7912 : : }
7913 : : }
7914 : : }
7915 : : }
7916 : : }
7917 : : break;
7918 : : default:;
7919 : : }
7920 : : }
7921 : : break;
7922 : : default:;
7923 : : }
7924 : : return false;
7925 : : }
7926 : :
7927 : : bool
7928 : 1183 : gimple_simplify_CFN_BUILT_IN_LOG10F (gimple_match_op *res_op, gimple_seq *seq,
7929 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7930 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7931 : : {
7932 : 1183 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7933 : 1183 : switch (TREE_CODE (_p0))
7934 : : {
7935 : 779 : case SSA_NAME:
7936 : 779 : if (gimple *_d1 = get_def (valueize, _p0))
7937 : : {
7938 : 511 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7939 : 430 : switch (gimple_assign_rhs_code (_a1))
7940 : : {
7941 : 9 : case RDIV_EXPR:
7942 : 9 : {
7943 : 9 : tree _q20 = gimple_assign_rhs1 (_a1);
7944 : 9 : _q20 = do_valueize (valueize, _q20);
7945 : 9 : tree _q21 = gimple_assign_rhs2 (_a1);
7946 : 9 : _q21 = do_valueize (valueize, _q21);
7947 : 9 : switch (TREE_CODE (_q20))
7948 : : {
7949 : 4 : case REAL_CST:
7950 : 4 : {
7951 : 4 : {
7952 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7953 : 4 : if (gimple_simplify_664 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG10F))
7954 : 2 : return true;
7955 : : }
7956 : 2 : break;
7957 : : }
7958 : 7 : default:;
7959 : : }
7960 : 7 : if (real_onep (_q20))
7961 : : {
7962 : 1 : {
7963 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7964 : 1 : if (gimple_simplify_663 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG10F))
7965 : 0 : return true;
7966 : : }
7967 : : }
7968 : : break;
7969 : : }
7970 : : default:;
7971 : : }
7972 : 236 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
7973 : 84 : switch (gimple_call_combined_fn (_c1))
7974 : : {
7975 : 12 : case CFN_BUILT_IN_SQRTF:
7976 : 12 : if (gimple_call_num_args (_c1) == 1)
7977 : : {
7978 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
7979 : 12 : _q20 = do_valueize (valueize, _q20);
7980 : 12 : {
7981 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7982 : 12 : if (flag_unsafe_math_optimizations
7983 : : )
7984 : : {
7985 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
7986 : : )
7987 : : {
7988 : 12 : {
7989 : 12 : tree x;
7990 : 12 : switch (CFN_BUILT_IN_SQRTF)
7991 : : {
7992 : 12 : CASE_CFN_SQRT:
7993 : 12 : x = build_real (type, dconsthalf);
7994 : 12 : break;
7995 : : CASE_CFN_CBRT:
7996 : : x = build_real_truncate (type, dconst_third ());
7997 : : break;
7998 : : default:
7999 : : gcc_unreachable ();
8000 : : }
8001 : 12 : gimple_seq *lseq = seq;
8002 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1958;
8003 : 12 : {
8004 : 12 : res_op->set_op (MULT_EXPR, type, 2);
8005 : 12 : res_op->ops[0] = x;
8006 : 12 : {
8007 : 12 : tree _o1[1], _r1;
8008 : 12 : _o1[0] = captures[0];
8009 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (_o1[0]), _o1[0]);
8010 : 12 : tem_op.resimplify (lseq, valueize);
8011 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8012 : 12 : if (!_r1) goto next_after_fail1958;
8013 : 6 : res_op->ops[1] = _r1;
8014 : : }
8015 : 6 : res_op->resimplify (lseq, valueize);
8016 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1036, __FILE__, __LINE__, true);
8017 : 6 : return true;
8018 : : }
8019 : : next_after_fail1958:;
8020 : : }
8021 : : }
8022 : : }
8023 : : }
8024 : : }
8025 : : break;
8026 : 12 : case CFN_BUILT_IN_EXP10F:
8027 : 12 : if (gimple_call_num_args (_c1) == 1)
8028 : : {
8029 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8030 : 12 : _q20 = do_valueize (valueize, _q20);
8031 : 12 : {
8032 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8033 : 12 : if (flag_unsafe_math_optimizations
8034 : : )
8035 : : {
8036 : 12 : gimple_seq *lseq = seq;
8037 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1959;
8038 : 12 : {
8039 : 12 : tree tem;
8040 : 12 : tem = captures[0];
8041 : 12 : res_op->set_value (tem);
8042 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1038, __FILE__, __LINE__, true);
8043 : 12 : return true;
8044 : : }
8045 : 0 : next_after_fail1959:;
8046 : : }
8047 : : }
8048 : : }
8049 : : break;
8050 : 12 : case CFN_BUILT_IN_EXPF:
8051 : 12 : if (gimple_call_num_args (_c1) == 1)
8052 : : {
8053 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8054 : 12 : _q20 = do_valueize (valueize, _q20);
8055 : 12 : {
8056 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8057 : 12 : if (flag_unsafe_math_optimizations
8058 : : )
8059 : : {
8060 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
8061 : : )
8062 : : {
8063 : 12 : {
8064 : 12 : tree x;
8065 : 12 : switch (CFN_BUILT_IN_EXPF)
8066 : : {
8067 : 12 : CASE_CFN_EXP:
8068 : 12 : x = build_real_truncate (type, dconst_e ());
8069 : 12 : break;
8070 : : CASE_CFN_EXP2:
8071 : : x = build_real (type, dconst2);
8072 : : break;
8073 : : CASE_CFN_EXP10:
8074 : : CASE_CFN_POW10:
8075 : : {
8076 : : REAL_VALUE_TYPE dconst10;
8077 : : real_from_integer (&dconst10, VOIDmode, 10, SIGNED);
8078 : : x = build_real (type, dconst10);
8079 : : }
8080 : : break;
8081 : : default:
8082 : : gcc_unreachable ();
8083 : : }
8084 : 12 : gimple_seq *lseq = seq;
8085 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1960;
8086 : 12 : {
8087 : 12 : res_op->set_op (MULT_EXPR, type, 2);
8088 : 12 : {
8089 : 12 : tree _o1[1], _r1;
8090 : 12 : _o1[0] = x;
8091 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (_o1[0]), _o1[0]);
8092 : 12 : tem_op.resimplify (lseq, valueize);
8093 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8094 : 12 : if (!_r1) goto next_after_fail1960;
8095 : 12 : res_op->ops[0] = _r1;
8096 : : }
8097 : 12 : res_op->ops[1] = captures[0];
8098 : 12 : res_op->resimplify (lseq, valueize);
8099 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1037, __FILE__, __LINE__, true);
8100 : 12 : return true;
8101 : : }
8102 : : next_after_fail1960:;
8103 : : }
8104 : : }
8105 : : }
8106 : : }
8107 : : }
8108 : : break;
8109 : 12 : case CFN_BUILT_IN_POWF:
8110 : 12 : if (gimple_call_num_args (_c1) == 2)
8111 : : {
8112 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8113 : 12 : _q20 = do_valueize (valueize, _q20);
8114 : 12 : tree _q21 = gimple_call_arg (_c1, 1);
8115 : 12 : _q21 = do_valueize (valueize, _q21);
8116 : 12 : {
8117 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8118 : 12 : if (gimple_simplify_665 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_POWF))
8119 : 6 : return true;
8120 : : }
8121 : : }
8122 : : break;
8123 : 12 : case CFN_BUILT_IN_POW10F:
8124 : 12 : if (gimple_call_num_args (_c1) == 1)
8125 : : {
8126 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8127 : 12 : _q20 = do_valueize (valueize, _q20);
8128 : 12 : {
8129 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8130 : 12 : if (flag_unsafe_math_optimizations
8131 : : )
8132 : : {
8133 : 12 : gimple_seq *lseq = seq;
8134 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1961;
8135 : 12 : {
8136 : 12 : tree tem;
8137 : 12 : tem = captures[0];
8138 : 12 : res_op->set_value (tem);
8139 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1038, __FILE__, __LINE__, true);
8140 : 12 : return true;
8141 : : }
8142 : 0 : next_after_fail1961:;
8143 : : }
8144 : : }
8145 : : }
8146 : : break;
8147 : 12 : case CFN_BUILT_IN_CBRTF:
8148 : 12 : if (gimple_call_num_args (_c1) == 1)
8149 : : {
8150 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8151 : 12 : _q20 = do_valueize (valueize, _q20);
8152 : 12 : {
8153 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8154 : 12 : if (flag_unsafe_math_optimizations
8155 : : )
8156 : : {
8157 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
8158 : : )
8159 : : {
8160 : 12 : {
8161 : 12 : tree x;
8162 : 12 : switch (CFN_BUILT_IN_CBRTF)
8163 : : {
8164 : : CASE_CFN_SQRT:
8165 : : x = build_real (type, dconsthalf);
8166 : : break;
8167 : 12 : CASE_CFN_CBRT:
8168 : 12 : x = build_real_truncate (type, dconst_third ());
8169 : 12 : break;
8170 : : default:
8171 : : gcc_unreachable ();
8172 : : }
8173 : 12 : gimple_seq *lseq = seq;
8174 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1962;
8175 : 12 : {
8176 : 12 : res_op->set_op (MULT_EXPR, type, 2);
8177 : 12 : res_op->ops[0] = x;
8178 : 12 : {
8179 : 12 : tree _o1[1], _r1;
8180 : 12 : _o1[0] = captures[0];
8181 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (_o1[0]), _o1[0]);
8182 : 12 : tem_op.resimplify (lseq, valueize);
8183 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8184 : 12 : if (!_r1) goto next_after_fail1962;
8185 : 6 : res_op->ops[1] = _r1;
8186 : : }
8187 : 6 : res_op->resimplify (lseq, valueize);
8188 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1036, __FILE__, __LINE__, true);
8189 : 6 : return true;
8190 : : }
8191 : : next_after_fail1962:;
8192 : : }
8193 : : }
8194 : : }
8195 : : }
8196 : : }
8197 : : break;
8198 : 12 : case CFN_BUILT_IN_EXP2F:
8199 : 12 : if (gimple_call_num_args (_c1) == 1)
8200 : : {
8201 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8202 : 12 : _q20 = do_valueize (valueize, _q20);
8203 : 12 : {
8204 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8205 : 12 : if (flag_unsafe_math_optimizations
8206 : : )
8207 : : {
8208 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
8209 : : )
8210 : : {
8211 : 12 : {
8212 : 12 : tree x;
8213 : 12 : switch (CFN_BUILT_IN_EXP2F)
8214 : : {
8215 : : CASE_CFN_EXP:
8216 : : x = build_real_truncate (type, dconst_e ());
8217 : : break;
8218 : 12 : CASE_CFN_EXP2:
8219 : 12 : x = build_real (type, dconst2);
8220 : 12 : break;
8221 : : CASE_CFN_EXP10:
8222 : : CASE_CFN_POW10:
8223 : : {
8224 : : REAL_VALUE_TYPE dconst10;
8225 : : real_from_integer (&dconst10, VOIDmode, 10, SIGNED);
8226 : : x = build_real (type, dconst10);
8227 : : }
8228 : : break;
8229 : : default:
8230 : : gcc_unreachable ();
8231 : : }
8232 : 12 : gimple_seq *lseq = seq;
8233 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1963;
8234 : 12 : {
8235 : 12 : res_op->set_op (MULT_EXPR, type, 2);
8236 : 12 : {
8237 : 12 : tree _o1[1], _r1;
8238 : 12 : _o1[0] = x;
8239 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (_o1[0]), _o1[0]);
8240 : 12 : tem_op.resimplify (lseq, valueize);
8241 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8242 : 12 : if (!_r1) goto next_after_fail1963;
8243 : 12 : res_op->ops[0] = _r1;
8244 : : }
8245 : 12 : res_op->ops[1] = captures[0];
8246 : 12 : res_op->resimplify (lseq, valueize);
8247 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1037, __FILE__, __LINE__, true);
8248 : 12 : return true;
8249 : : }
8250 : : next_after_fail1963:;
8251 : : }
8252 : : }
8253 : : }
8254 : : }
8255 : : }
8256 : : break;
8257 : : default:;
8258 : : }
8259 : : }
8260 : : break;
8261 : : default:;
8262 : : }
8263 : : return false;
8264 : : }
8265 : :
8266 : : bool
8267 : 341 : gimple_simplify_CFN_BUILT_IN_EXP10F (gimple_match_op *res_op, gimple_seq *seq,
8268 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8269 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8270 : : {
8271 : 341 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8272 : 341 : switch (TREE_CODE (_p0))
8273 : : {
8274 : 287 : case SSA_NAME:
8275 : 287 : if (gimple *_d1 = get_def (valueize, _p0))
8276 : : {
8277 : 202 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8278 : 6 : switch (gimple_call_combined_fn (_c1))
8279 : : {
8280 : 6 : case CFN_BUILT_IN_LOG10F:
8281 : 6 : if (gimple_call_num_args (_c1) == 1)
8282 : : {
8283 : 6 : tree _q20 = gimple_call_arg (_c1, 0);
8284 : 6 : _q20 = do_valueize (valueize, _q20);
8285 : 6 : {
8286 : 6 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8287 : 6 : if (flag_unsafe_math_optimizations
8288 : : )
8289 : : {
8290 : 6 : gimple_seq *lseq = seq;
8291 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1988;
8292 : 6 : {
8293 : 6 : tree tem;
8294 : 6 : tem = captures[0];
8295 : 6 : res_op->set_value (tem);
8296 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1039, __FILE__, __LINE__, true);
8297 : 6 : return true;
8298 : : }
8299 : 0 : next_after_fail1988:;
8300 : : }
8301 : : }
8302 : : }
8303 : : break;
8304 : : default:;
8305 : : }
8306 : : }
8307 : : break;
8308 : : default:;
8309 : : }
8310 : : return false;
8311 : : }
8312 : :
8313 : : bool
8314 : 574 : gimple_simplify_CFN_BUILT_IN_POW10 (gimple_match_op *res_op, gimple_seq *seq,
8315 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8316 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8317 : : {
8318 : 574 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8319 : 574 : switch (TREE_CODE (_p0))
8320 : : {
8321 : 494 : case SSA_NAME:
8322 : 494 : if (gimple *_d1 = get_def (valueize, _p0))
8323 : : {
8324 : 350 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8325 : 6 : switch (gimple_call_combined_fn (_c1))
8326 : : {
8327 : 6 : case CFN_BUILT_IN_LOG10:
8328 : 6 : if (gimple_call_num_args (_c1) == 1)
8329 : : {
8330 : 6 : tree _q20 = gimple_call_arg (_c1, 0);
8331 : 6 : _q20 = do_valueize (valueize, _q20);
8332 : 6 : {
8333 : 6 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8334 : 6 : if (flag_unsafe_math_optimizations
8335 : : )
8336 : : {
8337 : 6 : gimple_seq *lseq = seq;
8338 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1993;
8339 : 6 : {
8340 : 6 : tree tem;
8341 : 6 : tem = captures[0];
8342 : 6 : res_op->set_value (tem);
8343 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1039, __FILE__, __LINE__, true);
8344 : 6 : return true;
8345 : : }
8346 : 0 : next_after_fail1993:;
8347 : : }
8348 : : }
8349 : : }
8350 : : break;
8351 : : default:;
8352 : : }
8353 : : }
8354 : : break;
8355 : : default:;
8356 : : }
8357 : : return false;
8358 : : }
8359 : :
8360 : : bool
8361 : 427 : gimple_simplify_CFN_BUILT_IN_CBRTF (gimple_match_op *res_op, gimple_seq *seq,
8362 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8363 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8364 : : {
8365 : 427 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8366 : 427 : switch (TREE_CODE (_p0))
8367 : : {
8368 : 396 : case SSA_NAME:
8369 : 396 : if (gimple *_d1 = get_def (valueize, _p0))
8370 : : {
8371 : 275 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8372 : 84 : switch (gimple_call_combined_fn (_c1))
8373 : : {
8374 : 12 : case CFN_BUILT_IN_SQRTF:
8375 : 12 : if (gimple_call_num_args (_c1) == 1)
8376 : : {
8377 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8378 : 12 : _q20 = do_valueize (valueize, _q20);
8379 : 12 : {
8380 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8381 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
8382 : : )
8383 : : {
8384 : 12 : gimple_seq *lseq = seq;
8385 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2021;
8386 : 12 : {
8387 : 12 : res_op->set_op (CFN_BUILT_IN_POWF, type, 2);
8388 : 12 : res_op->ops[0] = captures[0];
8389 : 12 : res_op->ops[1] = build_real_truncate (type, dconst_sixth ());
8390 : 12 : res_op->resimplify (lseq, valueize);
8391 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1044, __FILE__, __LINE__, true);
8392 : 12 : return true;
8393 : : }
8394 : 0 : next_after_fail2021:;
8395 : : }
8396 : : }
8397 : : }
8398 : : break;
8399 : 12 : case CFN_BUILT_IN_EXP10F:
8400 : 12 : if (gimple_call_num_args (_c1) == 1)
8401 : : {
8402 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8403 : 12 : _q20 = do_valueize (valueize, _q20);
8404 : 12 : {
8405 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8406 : 12 : if (flag_unsafe_math_optimizations
8407 : : )
8408 : : {
8409 : 12 : gimple_seq *lseq = seq;
8410 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2022;
8411 : 12 : {
8412 : 12 : res_op->set_op (CFN_BUILT_IN_EXP10F, type, 1);
8413 : 12 : {
8414 : 12 : tree _o1[2], _r1;
8415 : 12 : _o1[0] = captures[0];
8416 : 12 : _o1[1] = build_real_truncate (type, dconst_third ());
8417 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8418 : 12 : tem_op.resimplify (lseq, valueize);
8419 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8420 : 12 : if (!_r1) goto next_after_fail2022;
8421 : 6 : res_op->ops[0] = _r1;
8422 : : }
8423 : 6 : res_op->resimplify (lseq, valueize);
8424 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1045, __FILE__, __LINE__, true);
8425 : 6 : return true;
8426 : : }
8427 : : next_after_fail2022:;
8428 : : }
8429 : : }
8430 : : }
8431 : : break;
8432 : 12 : case CFN_BUILT_IN_EXPF:
8433 : 12 : if (gimple_call_num_args (_c1) == 1)
8434 : : {
8435 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8436 : 12 : _q20 = do_valueize (valueize, _q20);
8437 : 12 : {
8438 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8439 : 12 : if (flag_unsafe_math_optimizations
8440 : : )
8441 : : {
8442 : 12 : gimple_seq *lseq = seq;
8443 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2023;
8444 : 12 : {
8445 : 12 : res_op->set_op (CFN_BUILT_IN_EXPF, type, 1);
8446 : 12 : {
8447 : 12 : tree _o1[2], _r1;
8448 : 12 : _o1[0] = captures[0];
8449 : 12 : _o1[1] = build_real_truncate (type, dconst_third ());
8450 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8451 : 12 : tem_op.resimplify (lseq, valueize);
8452 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8453 : 12 : if (!_r1) goto next_after_fail2023;
8454 : 6 : res_op->ops[0] = _r1;
8455 : : }
8456 : 6 : res_op->resimplify (lseq, valueize);
8457 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1045, __FILE__, __LINE__, true);
8458 : 6 : return true;
8459 : : }
8460 : : next_after_fail2023:;
8461 : : }
8462 : : }
8463 : : }
8464 : : break;
8465 : 12 : case CFN_BUILT_IN_POWF:
8466 : 12 : if (gimple_call_num_args (_c1) == 2)
8467 : : {
8468 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8469 : 12 : _q20 = do_valueize (valueize, _q20);
8470 : 12 : tree _q21 = gimple_call_arg (_c1, 1);
8471 : 12 : _q21 = do_valueize (valueize, _q21);
8472 : 12 : if (tree_expr_nonnegative_p (_q20))
8473 : : {
8474 : 12 : {
8475 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8476 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
8477 : : )
8478 : : {
8479 : 12 : gimple_seq *lseq = seq;
8480 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2024;
8481 : 12 : {
8482 : 12 : res_op->set_op (CFN_BUILT_IN_POWF, type, 2);
8483 : 12 : res_op->ops[0] = captures[0];
8484 : 12 : {
8485 : 12 : tree _o1[2], _r1;
8486 : 12 : _o1[0] = captures[1];
8487 : 12 : _o1[1] = build_real_truncate (type, dconst_third ());
8488 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8489 : 12 : tem_op.resimplify (lseq, valueize);
8490 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8491 : 12 : if (!_r1) goto next_after_fail2024;
8492 : 6 : res_op->ops[1] = _r1;
8493 : : }
8494 : 6 : res_op->resimplify (lseq, valueize);
8495 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1046, __FILE__, __LINE__, true);
8496 : 6 : return true;
8497 : : }
8498 : 6 : next_after_fail2024:;
8499 : : }
8500 : : }
8501 : : }
8502 : : }
8503 : : break;
8504 : 12 : case CFN_BUILT_IN_POW10F:
8505 : 12 : if (gimple_call_num_args (_c1) == 1)
8506 : : {
8507 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8508 : 12 : _q20 = do_valueize (valueize, _q20);
8509 : 12 : {
8510 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8511 : 12 : if (flag_unsafe_math_optimizations
8512 : : )
8513 : : {
8514 : 12 : gimple_seq *lseq = seq;
8515 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2025;
8516 : 12 : {
8517 : 12 : res_op->set_op (CFN_BUILT_IN_POW10F, type, 1);
8518 : 12 : {
8519 : 12 : tree _o1[2], _r1;
8520 : 12 : _o1[0] = captures[0];
8521 : 12 : _o1[1] = build_real_truncate (type, dconst_third ());
8522 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8523 : 12 : tem_op.resimplify (lseq, valueize);
8524 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8525 : 12 : if (!_r1) goto next_after_fail2025;
8526 : 6 : res_op->ops[0] = _r1;
8527 : : }
8528 : 6 : res_op->resimplify (lseq, valueize);
8529 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1045, __FILE__, __LINE__, true);
8530 : 6 : return true;
8531 : : }
8532 : : next_after_fail2025:;
8533 : : }
8534 : : }
8535 : : }
8536 : : break;
8537 : 12 : case CFN_BUILT_IN_CBRTF:
8538 : 12 : if (gimple_call_num_args (_c1) == 1)
8539 : : {
8540 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8541 : 12 : _q20 = do_valueize (valueize, _q20);
8542 : 12 : if (tree_expr_nonnegative_p (_q20))
8543 : : {
8544 : 12 : {
8545 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8546 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
8547 : : )
8548 : : {
8549 : 12 : gimple_seq *lseq = seq;
8550 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2026;
8551 : 12 : {
8552 : 12 : res_op->set_op (CFN_BUILT_IN_POWF, type, 2);
8553 : 12 : res_op->ops[0] = captures[0];
8554 : 12 : res_op->ops[1] = build_real_truncate (type, dconst_ninth ());
8555 : 12 : res_op->resimplify (lseq, valueize);
8556 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1047, __FILE__, __LINE__, true);
8557 : 12 : return true;
8558 : : }
8559 : 0 : next_after_fail2026:;
8560 : : }
8561 : : }
8562 : : }
8563 : : }
8564 : : break;
8565 : 12 : case CFN_BUILT_IN_EXP2F:
8566 : 12 : if (gimple_call_num_args (_c1) == 1)
8567 : : {
8568 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8569 : 12 : _q20 = do_valueize (valueize, _q20);
8570 : 12 : {
8571 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8572 : 12 : if (flag_unsafe_math_optimizations
8573 : : )
8574 : : {
8575 : 12 : gimple_seq *lseq = seq;
8576 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2027;
8577 : 12 : {
8578 : 12 : res_op->set_op (CFN_BUILT_IN_EXP2F, type, 1);
8579 : 12 : {
8580 : 12 : tree _o1[2], _r1;
8581 : 12 : _o1[0] = captures[0];
8582 : 12 : _o1[1] = build_real_truncate (type, dconst_third ());
8583 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8584 : 12 : tem_op.resimplify (lseq, valueize);
8585 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8586 : 12 : if (!_r1) goto next_after_fail2027;
8587 : 6 : res_op->ops[0] = _r1;
8588 : : }
8589 : 6 : res_op->resimplify (lseq, valueize);
8590 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1045, __FILE__, __LINE__, true);
8591 : 6 : return true;
8592 : : }
8593 : : next_after_fail2027:;
8594 : : }
8595 : : }
8596 : : }
8597 : : break;
8598 : : default:;
8599 : : }
8600 : : }
8601 : : break;
8602 : : default:;
8603 : : }
8604 : : return false;
8605 : : }
8606 : :
8607 : : bool
8608 : 957 : gimple_simplify_CFN_BUILT_IN_TRUNCL (gimple_match_op *res_op, gimple_seq *seq,
8609 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8610 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8611 : : {
8612 : 957 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8613 : 957 : switch (TREE_CODE (_p0))
8614 : : {
8615 : 923 : case SSA_NAME:
8616 : 923 : if (gimple *_d1 = get_def (valueize, _p0))
8617 : : {
8618 : 592 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
8619 : 672 : switch (gimple_assign_rhs_code (_a1))
8620 : : {
8621 : 110 : CASE_CONVERT:
8622 : 110 : {
8623 : 110 : tree _q20 = gimple_assign_rhs1 (_a1);
8624 : 110 : _q20 = do_valueize (valueize, _q20);
8625 : 110 : if (gimple_double_value_p (_q20, valueize))
8626 : : {
8627 : 36 : {
8628 : 36 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8629 : 36 : if (gimple_simplify_672 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCL, CFN_BUILT_IN_TRUNC))
8630 : 18 : return true;
8631 : : }
8632 : : }
8633 : 92 : if (gimple_float_value_p (_q20, valueize))
8634 : : {
8635 : 72 : {
8636 : 72 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8637 : 72 : if (gimple_simplify_671 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCL, CFN_BUILT_IN_TRUNCF))
8638 : 36 : return true;
8639 : : }
8640 : : }
8641 : : break;
8642 : : }
8643 : : default:;
8644 : : }
8645 : 161 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8646 : 0 : switch (gimple_call_combined_fn (_c1))
8647 : : {
8648 : 0 : case CFN_BUILT_IN_TRUNCL:
8649 : 0 : if (gimple_call_num_args (_c1) == 1)
8650 : : {
8651 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8652 : 0 : _q20 = do_valueize (valueize, _q20);
8653 : 0 : {
8654 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8655 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCL))
8656 : 0 : return true;
8657 : : }
8658 : : }
8659 : : break;
8660 : : default:;
8661 : : }
8662 : : }
8663 : : break;
8664 : 903 : default:;
8665 : : }
8666 : 903 : if (integer_valued_real_p (_p0))
8667 : : {
8668 : 10 : {
8669 : 10 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8670 : 10 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCL))
8671 : 10 : return true;
8672 : : }
8673 : : }
8674 : : return false;
8675 : : }
8676 : :
8677 : : bool
8678 : 149 : gimple_simplify_CFN_BUILT_IN_FLOORF16 (gimple_match_op *res_op, gimple_seq *seq,
8679 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8680 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8681 : : {
8682 : 149 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8683 : 149 : switch (TREE_CODE (_p0))
8684 : : {
8685 : 147 : case SSA_NAME:
8686 : 147 : if (gimple *_d1 = get_def (valueize, _p0))
8687 : : {
8688 : 100 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8689 : 0 : switch (gimple_call_combined_fn (_c1))
8690 : : {
8691 : 0 : case CFN_BUILT_IN_FLOORF16:
8692 : 0 : if (gimple_call_num_args (_c1) == 1)
8693 : : {
8694 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8695 : 0 : _q20 = do_valueize (valueize, _q20);
8696 : 0 : {
8697 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8698 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF16))
8699 : 0 : return true;
8700 : : }
8701 : : }
8702 : : break;
8703 : : default:;
8704 : : }
8705 : : }
8706 : : break;
8707 : 149 : default:;
8708 : : }
8709 : 149 : if (integer_valued_real_p (_p0))
8710 : : {
8711 : 0 : {
8712 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8713 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF16))
8714 : 0 : return true;
8715 : : }
8716 : : }
8717 : 149 : if (tree_expr_nonnegative_p (_p0))
8718 : : {
8719 : 0 : {
8720 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8721 : 0 : if (gimple_simplify_673 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF16, CFN_BUILT_IN_TRUNCF16))
8722 : 0 : return true;
8723 : : }
8724 : : }
8725 : : return false;
8726 : : }
8727 : :
8728 : : bool
8729 : 0 : gimple_simplify_CFN_BUILT_IN_FLOORF128X (gimple_match_op *res_op, gimple_seq *seq,
8730 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8731 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8732 : : {
8733 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8734 : 0 : switch (TREE_CODE (_p0))
8735 : : {
8736 : 0 : case SSA_NAME:
8737 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
8738 : : {
8739 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8740 : 0 : switch (gimple_call_combined_fn (_c1))
8741 : : {
8742 : 0 : case CFN_BUILT_IN_FLOORF128X:
8743 : 0 : if (gimple_call_num_args (_c1) == 1)
8744 : : {
8745 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8746 : 0 : _q20 = do_valueize (valueize, _q20);
8747 : 0 : {
8748 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8749 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF128X))
8750 : 0 : return true;
8751 : : }
8752 : : }
8753 : : break;
8754 : : default:;
8755 : : }
8756 : : }
8757 : : break;
8758 : 0 : default:;
8759 : : }
8760 : 0 : if (integer_valued_real_p (_p0))
8761 : : {
8762 : 0 : {
8763 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8764 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF128X))
8765 : 0 : return true;
8766 : : }
8767 : : }
8768 : 0 : if (tree_expr_nonnegative_p (_p0))
8769 : : {
8770 : 0 : {
8771 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8772 : 0 : if (gimple_simplify_673 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF128X, CFN_BUILT_IN_TRUNCF128X))
8773 : 0 : return true;
8774 : : }
8775 : : }
8776 : : return false;
8777 : : }
8778 : :
8779 : : bool
8780 : 0 : gimple_simplify_CFN_BUILT_IN_CEILF64X (gimple_match_op *res_op, gimple_seq *seq,
8781 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8782 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8783 : : {
8784 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8785 : 0 : switch (TREE_CODE (_p0))
8786 : : {
8787 : 0 : case SSA_NAME:
8788 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
8789 : : {
8790 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8791 : 0 : switch (gimple_call_combined_fn (_c1))
8792 : : {
8793 : 0 : case CFN_BUILT_IN_CEILF64X:
8794 : 0 : if (gimple_call_num_args (_c1) == 1)
8795 : : {
8796 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8797 : 0 : _q20 = do_valueize (valueize, _q20);
8798 : 0 : {
8799 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8800 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64X))
8801 : 0 : return true;
8802 : : }
8803 : : }
8804 : : break;
8805 : : default:;
8806 : : }
8807 : : }
8808 : : break;
8809 : 0 : default:;
8810 : : }
8811 : 0 : if (integer_valued_real_p (_p0))
8812 : : {
8813 : 0 : {
8814 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8815 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64X))
8816 : 0 : return true;
8817 : : }
8818 : : }
8819 : : return false;
8820 : : }
8821 : :
8822 : : bool
8823 : 0 : gimple_simplify_CFN_BUILT_IN_ROUNDF64 (gimple_match_op *res_op, gimple_seq *seq,
8824 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8825 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8826 : : {
8827 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8828 : 0 : switch (TREE_CODE (_p0))
8829 : : {
8830 : 0 : case SSA_NAME:
8831 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
8832 : : {
8833 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8834 : 0 : switch (gimple_call_combined_fn (_c1))
8835 : : {
8836 : 0 : case CFN_BUILT_IN_ROUNDF64:
8837 : 0 : if (gimple_call_num_args (_c1) == 1)
8838 : : {
8839 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8840 : 0 : _q20 = do_valueize (valueize, _q20);
8841 : 0 : {
8842 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8843 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF64))
8844 : 0 : return true;
8845 : : }
8846 : : }
8847 : : break;
8848 : : default:;
8849 : : }
8850 : : }
8851 : : break;
8852 : 0 : default:;
8853 : : }
8854 : 0 : if (integer_valued_real_p (_p0))
8855 : : {
8856 : 0 : {
8857 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8858 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF64))
8859 : 0 : return true;
8860 : : }
8861 : : }
8862 : : return false;
8863 : : }
8864 : :
8865 : : bool
8866 : 1634 : gimple_simplify_CFN_BUILT_IN_NEARBYINTF (gimple_match_op *res_op, gimple_seq *seq,
8867 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8868 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8869 : : {
8870 : 1634 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8871 : 1634 : switch (TREE_CODE (_p0))
8872 : : {
8873 : 1511 : case SSA_NAME:
8874 : 1511 : if (gimple *_d1 = get_def (valueize, _p0))
8875 : : {
8876 : 930 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8877 : 72 : switch (gimple_call_combined_fn (_c1))
8878 : : {
8879 : 0 : case CFN_BUILT_IN_NEARBYINTF:
8880 : 0 : if (gimple_call_num_args (_c1) == 1)
8881 : : {
8882 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8883 : 0 : _q20 = do_valueize (valueize, _q20);
8884 : 0 : {
8885 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8886 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF))
8887 : 0 : return true;
8888 : : }
8889 : : }
8890 : : break;
8891 : : default:;
8892 : : }
8893 : : }
8894 : : break;
8895 : 1634 : default:;
8896 : : }
8897 : 1634 : if (integer_valued_real_p (_p0))
8898 : : {
8899 : 51 : {
8900 : 51 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8901 : 51 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF))
8902 : 51 : return true;
8903 : : }
8904 : : }
8905 : : return false;
8906 : : }
8907 : :
8908 : : bool
8909 : 0 : gimple_simplify_CFN_BUILT_IN_NEARBYINTF64X (gimple_match_op *res_op, gimple_seq *seq,
8910 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8911 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8912 : : {
8913 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8914 : 0 : switch (TREE_CODE (_p0))
8915 : : {
8916 : 0 : case SSA_NAME:
8917 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
8918 : : {
8919 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8920 : 0 : switch (gimple_call_combined_fn (_c1))
8921 : : {
8922 : 0 : case CFN_BUILT_IN_NEARBYINTF64X:
8923 : 0 : if (gimple_call_num_args (_c1) == 1)
8924 : : {
8925 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8926 : 0 : _q20 = do_valueize (valueize, _q20);
8927 : 0 : {
8928 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8929 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF64X))
8930 : 0 : return true;
8931 : : }
8932 : : }
8933 : : break;
8934 : : default:;
8935 : : }
8936 : : }
8937 : : break;
8938 : 0 : default:;
8939 : : }
8940 : 0 : if (integer_valued_real_p (_p0))
8941 : : {
8942 : 0 : {
8943 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8944 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF64X))
8945 : 0 : return true;
8946 : : }
8947 : : }
8948 : : return false;
8949 : : }
8950 : :
8951 : : bool
8952 : 0 : gimple_simplify_CFN_BUILT_IN_RINTF32 (gimple_match_op *res_op, gimple_seq *seq,
8953 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8954 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8955 : : {
8956 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8957 : 0 : switch (TREE_CODE (_p0))
8958 : : {
8959 : 0 : case SSA_NAME:
8960 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
8961 : : {
8962 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8963 : 0 : switch (gimple_call_combined_fn (_c1))
8964 : : {
8965 : 0 : case CFN_BUILT_IN_RINTF32:
8966 : 0 : if (gimple_call_num_args (_c1) == 1)
8967 : : {
8968 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8969 : 0 : _q20 = do_valueize (valueize, _q20);
8970 : 0 : {
8971 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8972 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF32))
8973 : 0 : return true;
8974 : : }
8975 : : }
8976 : : break;
8977 : : default:;
8978 : : }
8979 : : }
8980 : : break;
8981 : 0 : default:;
8982 : : }
8983 : 0 : if (integer_valued_real_p (_p0))
8984 : : {
8985 : 0 : {
8986 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8987 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF32))
8988 : 0 : return true;
8989 : : }
8990 : : }
8991 : : return false;
8992 : : }
8993 : :
8994 : : bool
8995 : 583 : gimple_simplify_CFN_BUILT_IN_CEXPF (gimple_match_op *res_op, gimple_seq *seq,
8996 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8997 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8998 : : {
8999 : 583 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9000 : 583 : if (gimple_compositional_complex (_p0, valueize))
9001 : : {
9002 : 79 : {
9003 : 79 : tree captures[3] ATTRIBUTE_UNUSED = { _p0 };
9004 : 79 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
9005 : : )
9006 : : {
9007 : 0 : if (targetm.libc_has_function (function_c99_math_complex, TREE_TYPE (captures[0]))
9008 : : )
9009 : : {
9010 : 0 : gimple_seq *lseq = seq;
9011 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2042;
9012 : 0 : {
9013 : 0 : res_op->set_op (COMPLEX_EXPR, type, 2);
9014 : 0 : {
9015 : 0 : tree _o1[2], _r1;
9016 : 0 : {
9017 : 0 : tree _o2[1], _r2;
9018 : 0 : {
9019 : 0 : tree _o3[1], _r3;
9020 : 0 : _o3[0] = captures[0];
9021 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o3[0])), _o3[0]);
9022 : 0 : tem_op.resimplify (lseq, valueize);
9023 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
9024 : 0 : if (!_r3) goto next_after_fail2042;
9025 : 0 : _o2[0] = _r3;
9026 : : }
9027 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXPF, TREE_TYPE (_o2[0]), _o2[0]);
9028 : 0 : tem_op.resimplify (lseq, valueize);
9029 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
9030 : 0 : if (!_r2) goto next_after_fail2042;
9031 : 0 : captures[1] = _r2;
9032 : : }
9033 : 0 : _o1[0] = captures[1];
9034 : 0 : {
9035 : 0 : tree _o2[1], _r2;
9036 : 0 : {
9037 : 0 : tree _o3[1], _r3;
9038 : 0 : {
9039 : 0 : tree _o4[1], _r4;
9040 : 0 : _o4[0] = captures[0];
9041 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o4[0])), _o4[0]);
9042 : 0 : tem_op.resimplify (lseq, valueize);
9043 : 0 : _r4 = maybe_push_res_to_seq (&tem_op, lseq);
9044 : 0 : if (!_r4) goto next_after_fail2042;
9045 : 0 : _o3[0] = _r4;
9046 : : }
9047 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CEXPIF, type, _o3[0]);
9048 : 0 : tem_op.resimplify (lseq, valueize);
9049 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
9050 : 0 : if (!_r3) goto next_after_fail2042;
9051 : 0 : captures[2] = _r3;
9052 : : }
9053 : 0 : _o2[0] = captures[2];
9054 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
9055 : 0 : tem_op.resimplify (lseq, valueize);
9056 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
9057 : 0 : if (!_r2) goto next_after_fail2042;
9058 : 0 : _o1[1] = _r2;
9059 : : }
9060 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9061 : 0 : tem_op.resimplify (lseq, valueize);
9062 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9063 : 0 : if (!_r1) goto next_after_fail2042;
9064 : 0 : res_op->ops[0] = _r1;
9065 : : }
9066 : 0 : {
9067 : 0 : tree _o1[2], _r1;
9068 : 0 : _o1[0] = captures[1];
9069 : 0 : {
9070 : 0 : tree _o2[1], _r2;
9071 : 0 : _o2[0] = captures[2];
9072 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
9073 : 0 : tem_op.resimplify (lseq, valueize);
9074 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
9075 : 0 : if (!_r2) goto next_after_fail2042;
9076 : 0 : _o1[1] = _r2;
9077 : : }
9078 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9079 : 0 : tem_op.resimplify (lseq, valueize);
9080 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9081 : 0 : if (!_r1) goto next_after_fail2042;
9082 : 0 : res_op->ops[1] = _r1;
9083 : : }
9084 : 0 : res_op->resimplify (lseq, valueize);
9085 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1048, __FILE__, __LINE__, true);
9086 : 0 : return true;
9087 : : }
9088 : : next_after_fail2042:;
9089 : : }
9090 : : }
9091 : : }
9092 : : }
9093 : : return false;
9094 : : }
9095 : :
9096 : : bool
9097 : 1218 : gimple_simplify_CFN_BUILT_IN_LRINTL (gimple_match_op *res_op, gimple_seq *seq,
9098 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9099 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9100 : : {
9101 : 1218 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9102 : 1218 : switch (TREE_CODE (_p0))
9103 : : {
9104 : 1122 : case SSA_NAME:
9105 : 1122 : if (gimple *_d1 = get_def (valueize, _p0))
9106 : : {
9107 : 743 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9108 : 414 : switch (gimple_assign_rhs_code (_a1))
9109 : : {
9110 : 384 : CASE_CONVERT:
9111 : 384 : {
9112 : 384 : tree _q20 = gimple_assign_rhs1 (_a1);
9113 : 384 : _q20 = do_valueize (valueize, _q20);
9114 : 384 : if (gimple_double_value_p (_q20, valueize))
9115 : : {
9116 : 144 : {
9117 : 144 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9118 : 144 : if (gimple_simplify_676 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LRINTL, CFN_BUILT_IN_LRINT))
9119 : 144 : return true;
9120 : : }
9121 : : }
9122 : 240 : if (gimple_float_value_p (_q20, valueize))
9123 : : {
9124 : 240 : {
9125 : 240 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9126 : 240 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LRINTL, CFN_BUILT_IN_LRINTF))
9127 : 240 : return true;
9128 : : }
9129 : : }
9130 : : break;
9131 : : }
9132 : : default:;
9133 : : }
9134 : : }
9135 : : break;
9136 : 834 : default:;
9137 : : }
9138 : 834 : if (integer_valued_real_p (_p0))
9139 : : {
9140 : 36 : {
9141 : 36 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9142 : 36 : if (gimple_simplify_682 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LRINTL))
9143 : 20 : return true;
9144 : : }
9145 : : }
9146 : : return false;
9147 : : }
9148 : :
9149 : : bool
9150 : 378 : gimple_simplify_CFN_BUILT_IN_IROUND (gimple_match_op *res_op, gimple_seq *seq,
9151 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9152 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9153 : : {
9154 : 378 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9155 : 378 : switch (TREE_CODE (_p0))
9156 : : {
9157 : 357 : case SSA_NAME:
9158 : 357 : if (gimple *_d1 = get_def (valueize, _p0))
9159 : : {
9160 : 200 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9161 : 346 : switch (gimple_assign_rhs_code (_a1))
9162 : : {
9163 : 0 : CASE_CONVERT:
9164 : 0 : {
9165 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9166 : 0 : _q20 = do_valueize (valueize, _q20);
9167 : 0 : if (gimple_float_value_p (_q20, valueize))
9168 : : {
9169 : 0 : {
9170 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9171 : 0 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUND, CFN_BUILT_IN_IROUNDF))
9172 : 0 : return true;
9173 : : }
9174 : : }
9175 : : break;
9176 : : }
9177 : : default:;
9178 : : }
9179 : : }
9180 : : break;
9181 : 378 : default:;
9182 : : }
9183 : 378 : if (integer_valued_real_p (_p0))
9184 : : {
9185 : 0 : {
9186 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9187 : 0 : if (gimple_simplify_679 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUND))
9188 : 0 : return true;
9189 : : }
9190 : : }
9191 : 378 : {
9192 : 378 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9193 : 378 : if (gimple_simplify_680 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUND, CFN_BUILT_IN_LROUND, CFN_BUILT_IN_LLROUND))
9194 : 4 : return true;
9195 : : }
9196 : 374 : return false;
9197 : : }
9198 : :
9199 : : bool
9200 : 2047 : gimple_simplify_CFN_BUILT_IN_LFLOORF (gimple_match_op *res_op, gimple_seq *seq,
9201 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9202 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9203 : : {
9204 : 2047 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9205 : 2047 : if (tree_expr_nonnegative_p (_p0))
9206 : : {
9207 : 6 : {
9208 : 6 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9209 : 6 : if (gimple_simplify_678 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LFLOORF))
9210 : 6 : return true;
9211 : : }
9212 : : }
9213 : 2041 : if (integer_valued_real_p (_p0))
9214 : : {
9215 : 20 : {
9216 : 20 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9217 : 20 : if (gimple_simplify_679 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LFLOORF))
9218 : 20 : return true;
9219 : : }
9220 : : }
9221 : : return false;
9222 : : }
9223 : :
9224 : : bool
9225 : 142 : gimple_simplify_CFN_BUILT_IN_LLCEILF (gimple_match_op *res_op, gimple_seq *seq,
9226 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9227 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9228 : : {
9229 : 142 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9230 : 142 : if (integer_valued_real_p (_p0))
9231 : : {
9232 : 20 : {
9233 : 20 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9234 : 20 : if (gimple_simplify_679 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLCEILF))
9235 : 20 : return true;
9236 : : }
9237 : : }
9238 : 122 : {
9239 : 122 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9240 : 122 : if (gimple_simplify_681 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ICEILF, CFN_BUILT_IN_LCEILF, CFN_BUILT_IN_LLCEILF))
9241 : 122 : return true;
9242 : : }
9243 : 0 : return false;
9244 : : }
9245 : :
9246 : : bool
9247 : 40 : gimple_simplify_CFN_IRINT (gimple_match_op *res_op, gimple_seq *seq,
9248 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9249 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9250 : : {
9251 : 40 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9252 : 40 : if (integer_valued_real_p (_p0))
9253 : : {
9254 : 0 : {
9255 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9256 : 0 : if (gimple_simplify_682 (res_op, seq, valueize, type, captures, CFN_IRINT))
9257 : 0 : return true;
9258 : : }
9259 : : }
9260 : 40 : {
9261 : 40 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9262 : 40 : if (gimple_simplify_680 (res_op, seq, valueize, type, captures, CFN_IRINT, CFN_LRINT, CFN_LLRINT))
9263 : 0 : return true;
9264 : : }
9265 : 40 : return false;
9266 : : }
9267 : :
9268 : : bool
9269 : 811 : gimple_simplify_CFN_BUILT_IN_CPROJL (gimple_match_op *res_op, gimple_seq *seq,
9270 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9271 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9272 : : {
9273 : 811 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9274 : 811 : {
9275 : 811 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9276 : 811 : if (!HONOR_INFINITIES (type)
9277 : : )
9278 : : {
9279 : 21 : gimple_seq *lseq = seq;
9280 : 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2051;
9281 : 21 : {
9282 : 21 : tree tem;
9283 : 21 : tem = captures[0];
9284 : 21 : res_op->set_value (tem);
9285 : 21 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1049, __FILE__, __LINE__, true);
9286 : 21 : return true;
9287 : : }
9288 : 0 : next_after_fail2051:;
9289 : : }
9290 : : }
9291 : 790 : switch (TREE_CODE (_p0))
9292 : : {
9293 : 733 : case SSA_NAME:
9294 : 733 : if (gimple *_d1 = get_def (valueize, _p0))
9295 : : {
9296 : 430 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9297 : 580 : switch (gimple_assign_rhs_code (_a1))
9298 : : {
9299 : 280 : case COMPLEX_EXPR:
9300 : 280 : {
9301 : 280 : tree _q20 = gimple_assign_rhs1 (_a1);
9302 : 280 : _q20 = do_valueize (valueize, _q20);
9303 : 280 : tree _q21 = gimple_assign_rhs2 (_a1);
9304 : 280 : _q21 = do_valueize (valueize, _q21);
9305 : 280 : switch (TREE_CODE (_q20))
9306 : : {
9307 : 56 : case REAL_CST:
9308 : 56 : {
9309 : 56 : if (tree_expr_nonnegative_p (_q21))
9310 : : {
9311 : 56 : {
9312 : 56 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9313 : 56 : if (real_isinf (TREE_REAL_CST_PTR (captures[0]))
9314 : : )
9315 : : {
9316 : 56 : gimple_seq *lseq = seq;
9317 : 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2052;
9318 : 56 : {
9319 : 56 : tree tem;
9320 : 56 : tem = build_complex_inf (type, false);
9321 : 56 : res_op->set_value (tem);
9322 : 56 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1050, __FILE__, __LINE__, true);
9323 : 56 : return true;
9324 : : }
9325 : 0 : next_after_fail2052:;
9326 : : }
9327 : : }
9328 : : }
9329 : : break;
9330 : : }
9331 : 224 : default:;
9332 : : }
9333 : 224 : switch (TREE_CODE (_q21))
9334 : : {
9335 : 224 : case REAL_CST:
9336 : 224 : {
9337 : 224 : {
9338 : 224 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9339 : 224 : if (real_isinf (TREE_REAL_CST_PTR (captures[1]))
9340 : : )
9341 : : {
9342 : 224 : gimple_seq *lseq = seq;
9343 : 224 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2053;
9344 : 224 : {
9345 : 224 : tree tem;
9346 : 224 : tem = build_complex_inf (type, TREE_REAL_CST_PTR (captures[1])->sign);
9347 : 224 : res_op->set_value (tem);
9348 : 224 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1051, __FILE__, __LINE__, true);
9349 : 224 : return true;
9350 : : }
9351 : 0 : next_after_fail2053:;
9352 : : }
9353 : : }
9354 : 0 : break;
9355 : : }
9356 : : default:;
9357 : : }
9358 : : break;
9359 : : }
9360 : : default:;
9361 : : }
9362 : : }
9363 : : break;
9364 : : default:;
9365 : : }
9366 : : return false;
9367 : : }
9368 : :
9369 : : bool
9370 : 1807 : gimple_simplify_CFN_BUILT_IN_POPCOUNTLL (gimple_match_op *res_op, gimple_seq *seq,
9371 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9372 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9373 : : {
9374 : 1807 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9375 : 1807 : switch (TREE_CODE (_p0))
9376 : : {
9377 : 1749 : case SSA_NAME:
9378 : 1749 : if (gimple *_d1 = get_def (valueize, _p0))
9379 : : {
9380 : 1009 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9381 : 918 : switch (gimple_assign_rhs_code (_a1))
9382 : : {
9383 : 296 : CASE_CONVERT:
9384 : 296 : {
9385 : 296 : tree _q20 = gimple_assign_rhs1 (_a1);
9386 : 296 : _q20 = do_valueize (valueize, _q20);
9387 : 296 : switch (TREE_CODE (_q20))
9388 : : {
9389 : 296 : case SSA_NAME:
9390 : 296 : if (gimple *_d2 = get_def (valueize, _q20))
9391 : : {
9392 : 287 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9393 : 406 : switch (gimple_assign_rhs_code (_a2))
9394 : : {
9395 : 0 : case LROTATE_EXPR:
9396 : 0 : {
9397 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
9398 : 0 : _q30 = do_valueize (valueize, _q30);
9399 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
9400 : 0 : _q31 = do_valueize (valueize, _q31);
9401 : 0 : {
9402 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
9403 : 0 : if (gimple_simplify_700 (res_op, seq, valueize, type, captures, LROTATE_EXPR, CFN_BUILT_IN_POPCOUNTLL))
9404 : 0 : return true;
9405 : : }
9406 : 0 : break;
9407 : : }
9408 : 0 : case RROTATE_EXPR:
9409 : 0 : {
9410 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
9411 : 0 : _q30 = do_valueize (valueize, _q30);
9412 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
9413 : 0 : _q31 = do_valueize (valueize, _q31);
9414 : 0 : {
9415 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
9416 : 0 : if (gimple_simplify_700 (res_op, seq, valueize, type, captures, RROTATE_EXPR, CFN_BUILT_IN_POPCOUNTLL))
9417 : 0 : return true;
9418 : : }
9419 : 0 : break;
9420 : : }
9421 : : default:;
9422 : : }
9423 : 37 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
9424 : 2 : switch (gimple_call_combined_fn (_c2))
9425 : : {
9426 : 0 : case CFN_BUILT_IN_BSWAP128:
9427 : 0 : if (gimple_call_num_args (_c2) == 1)
9428 : : {
9429 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
9430 : 0 : _q30 = do_valueize (valueize, _q30);
9431 : 0 : {
9432 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
9433 : 0 : if (gimple_simplify_699 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128, CFN_BUILT_IN_POPCOUNTLL))
9434 : 0 : return true;
9435 : : }
9436 : : }
9437 : : break;
9438 : 2 : case CFN_BUILT_IN_BSWAP16:
9439 : 2 : if (gimple_call_num_args (_c2) == 1)
9440 : : {
9441 : 2 : tree _q30 = gimple_call_arg (_c2, 0);
9442 : 2 : _q30 = do_valueize (valueize, _q30);
9443 : 2 : {
9444 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
9445 : 2 : if (gimple_simplify_699 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16, CFN_BUILT_IN_POPCOUNTLL))
9446 : 1 : return true;
9447 : : }
9448 : : }
9449 : : break;
9450 : 0 : case CFN_BUILT_IN_BSWAP32:
9451 : 0 : if (gimple_call_num_args (_c2) == 1)
9452 : : {
9453 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
9454 : 0 : _q30 = do_valueize (valueize, _q30);
9455 : 0 : {
9456 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
9457 : 0 : if (gimple_simplify_699 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32, CFN_BUILT_IN_POPCOUNTLL))
9458 : 0 : return true;
9459 : : }
9460 : : }
9461 : : break;
9462 : 0 : case CFN_BUILT_IN_BSWAP64:
9463 : 0 : if (gimple_call_num_args (_c2) == 1)
9464 : : {
9465 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
9466 : 0 : _q30 = do_valueize (valueize, _q30);
9467 : 0 : {
9468 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
9469 : 0 : if (gimple_simplify_699 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64, CFN_BUILT_IN_POPCOUNTLL))
9470 : 0 : return true;
9471 : : }
9472 : : }
9473 : : break;
9474 : : default:;
9475 : : }
9476 : : }
9477 : : break;
9478 : 295 : default:;
9479 : : }
9480 : 295 : {
9481 : 295 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9482 : 295 : if (gimple_simplify_701 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTLL))
9483 : 12 : return true;
9484 : : }
9485 : 283 : break;
9486 : : }
9487 : 0 : case LROTATE_EXPR:
9488 : 0 : {
9489 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9490 : 0 : _q20 = do_valueize (valueize, _q20);
9491 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
9492 : 0 : _q21 = do_valueize (valueize, _q21);
9493 : 0 : {
9494 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
9495 : 0 : if (gimple_simplify_703 (res_op, seq, valueize, type, captures, LROTATE_EXPR, CFN_BUILT_IN_POPCOUNTLL))
9496 : 0 : return true;
9497 : : }
9498 : 0 : break;
9499 : : }
9500 : 2 : case RROTATE_EXPR:
9501 : 2 : {
9502 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
9503 : 2 : _q20 = do_valueize (valueize, _q20);
9504 : 2 : tree _q21 = gimple_assign_rhs2 (_a1);
9505 : 2 : _q21 = do_valueize (valueize, _q21);
9506 : 2 : {
9507 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
9508 : 2 : if (gimple_simplify_703 (res_op, seq, valueize, type, captures, RROTATE_EXPR, CFN_BUILT_IN_POPCOUNTLL))
9509 : 2 : return true;
9510 : : }
9511 : 0 : break;
9512 : : }
9513 : : default:;
9514 : : }
9515 : 385 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9516 : 2 : switch (gimple_call_combined_fn (_c1))
9517 : : {
9518 : 0 : case CFN_BUILT_IN_BSWAP128:
9519 : 0 : if (gimple_call_num_args (_c1) == 1)
9520 : : {
9521 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9522 : 0 : _q20 = do_valueize (valueize, _q20);
9523 : 0 : {
9524 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
9525 : 0 : if (gimple_simplify_702 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128, CFN_BUILT_IN_POPCOUNTLL))
9526 : 0 : return true;
9527 : : }
9528 : : }
9529 : : break;
9530 : 0 : case CFN_BUILT_IN_BSWAP16:
9531 : 0 : if (gimple_call_num_args (_c1) == 1)
9532 : : {
9533 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9534 : 0 : _q20 = do_valueize (valueize, _q20);
9535 : 0 : {
9536 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
9537 : 0 : if (gimple_simplify_702 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16, CFN_BUILT_IN_POPCOUNTLL))
9538 : 0 : return true;
9539 : : }
9540 : : }
9541 : : break;
9542 : 0 : case CFN_BUILT_IN_BSWAP32:
9543 : 0 : if (gimple_call_num_args (_c1) == 1)
9544 : : {
9545 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9546 : 0 : _q20 = do_valueize (valueize, _q20);
9547 : 0 : {
9548 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
9549 : 0 : if (gimple_simplify_702 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32, CFN_BUILT_IN_POPCOUNTLL))
9550 : 0 : return true;
9551 : : }
9552 : : }
9553 : : break;
9554 : 2 : case CFN_BUILT_IN_BSWAP64:
9555 : 2 : if (gimple_call_num_args (_c1) == 1)
9556 : : {
9557 : 2 : tree _q20 = gimple_call_arg (_c1, 0);
9558 : 2 : _q20 = do_valueize (valueize, _q20);
9559 : 2 : {
9560 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
9561 : 2 : if (gimple_simplify_702 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64, CFN_BUILT_IN_POPCOUNTLL))
9562 : 2 : return true;
9563 : : }
9564 : : }
9565 : : break;
9566 : : default:;
9567 : : }
9568 : : }
9569 : : break;
9570 : 1790 : default:;
9571 : : }
9572 : 1790 : {
9573 : 1790 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9574 : 1790 : if (gimple_simplify_704 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTLL))
9575 : 7 : return true;
9576 : : }
9577 : 1783 : return false;
9578 : : }
9579 : :
9580 : : bool
9581 : 1298 : gimple_simplify_CFN_BUILT_IN_FFS (gimple_match_op *res_op, gimple_seq *seq,
9582 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9583 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9584 : : {
9585 : 1298 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9586 : 1298 : switch (TREE_CODE (_p0))
9587 : : {
9588 : 1278 : case SSA_NAME:
9589 : 1278 : if (gimple *_d1 = get_def (valueize, _p0))
9590 : : {
9591 : 681 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9592 : 789 : switch (gimple_assign_rhs_code (_a1))
9593 : : {
9594 : 370 : CASE_CONVERT:
9595 : 370 : {
9596 : 370 : tree _q20 = gimple_assign_rhs1 (_a1);
9597 : 370 : _q20 = do_valueize (valueize, _q20);
9598 : 370 : {
9599 : 370 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9600 : 370 : if (gimple_simplify_712 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FFS))
9601 : 0 : return true;
9602 : : }
9603 : 370 : break;
9604 : : }
9605 : : default:;
9606 : : }
9607 : : }
9608 : : break;
9609 : 1298 : default:;
9610 : : }
9611 : 1298 : if (tree_expr_nonzero_p (_p0))
9612 : : {
9613 : 14 : {
9614 : 14 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9615 : 14 : if (gimple_simplify_711 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FFS, CFN_BUILT_IN_CTZ))
9616 : 12 : return true;
9617 : : }
9618 : : }
9619 : : return false;
9620 : : }
9621 : :
9622 : : bool
9623 : 133450 : gimple_simplify_CFN_REDUC_PLUS (gimple_match_op *res_op, gimple_seq *seq,
9624 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9625 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9626 : : {
9627 : 133450 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9628 : 133450 : switch (TREE_CODE (_p0))
9629 : : {
9630 : 133450 : case SSA_NAME:
9631 : 133450 : if (gimple *_d1 = get_def (valueize, _p0))
9632 : : {
9633 : 54644 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9634 : 51872 : switch (gimple_assign_rhs_code (_a1))
9635 : : {
9636 : 4588 : case VIEW_CONVERT_EXPR:
9637 : 4588 : {
9638 : 4588 : tree _q20 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
9639 : 4588 : if ((TREE_CODE (_q20) == SSA_NAME
9640 : 4588 : || is_gimple_min_invariant (_q20)))
9641 : : {
9642 : 4588 : _q20 = do_valueize (valueize, _q20);
9643 : 4588 : switch (TREE_CODE (_q20))
9644 : : {
9645 : 4588 : case SSA_NAME:
9646 : 4588 : if (gimple *_d2 = get_def (valueize, _q20))
9647 : : {
9648 : 3670 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9649 : 4774 : switch (gimple_assign_rhs_code (_a2))
9650 : : {
9651 : 63 : case BIT_AND_EXPR:
9652 : 63 : {
9653 : 63 : tree _q30 = gimple_assign_rhs1 (_a2);
9654 : 63 : _q30 = do_valueize (valueize, _q30);
9655 : 63 : tree _q31 = gimple_assign_rhs2 (_a2);
9656 : 63 : _q31 = do_valueize (valueize, _q31);
9657 : 63 : if (tree_swap_operands_p (_q30, _q31))
9658 : 0 : std::swap (_q30, _q31);
9659 : 63 : switch (TREE_CODE (_q31))
9660 : : {
9661 : 63 : case VECTOR_CST:
9662 : 63 : {
9663 : 63 : {
9664 : 63 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
9665 : 63 : if (gimple_simplify_715 (res_op, seq, valueize, type, captures, CFN_REDUC_PLUS))
9666 : 15 : return true;
9667 : : }
9668 : 48 : break;
9669 : : }
9670 : : default:;
9671 : : }
9672 : 133450 : break;
9673 : : }
9674 : : default:;
9675 : : }
9676 : : }
9677 : : break;
9678 : : default:;
9679 : : }
9680 : : }
9681 : : break;
9682 : : }
9683 : 114 : case BIT_AND_EXPR:
9684 : 114 : {
9685 : 114 : tree _q20 = gimple_assign_rhs1 (_a1);
9686 : 114 : _q20 = do_valueize (valueize, _q20);
9687 : 114 : tree _q21 = gimple_assign_rhs2 (_a1);
9688 : 114 : _q21 = do_valueize (valueize, _q21);
9689 : 114 : if (tree_swap_operands_p (_q20, _q21))
9690 : 0 : std::swap (_q20, _q21);
9691 : 114 : switch (TREE_CODE (_q21))
9692 : : {
9693 : 114 : case VECTOR_CST:
9694 : 114 : {
9695 : 114 : {
9696 : 114 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9697 : 114 : if (gimple_simplify_715 (res_op, seq, valueize, type, captures, CFN_REDUC_PLUS))
9698 : 18 : return true;
9699 : : }
9700 : 96 : break;
9701 : : }
9702 : : default:;
9703 : : }
9704 : 133450 : break;
9705 : : }
9706 : 8 : case CONSTRUCTOR:
9707 : 8 : {
9708 : 8 : {
9709 : 8 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9710 : 8 : if (gimple_simplify_716 (res_op, seq, valueize, type, captures, CFN_REDUC_PLUS))
9711 : 0 : return true;
9712 : : }
9713 : 8 : break;
9714 : : }
9715 : 28673 : case PLUS_EXPR:
9716 : 28673 : {
9717 : 28673 : tree _q20 = gimple_assign_rhs1 (_a1);
9718 : 28673 : _q20 = do_valueize (valueize, _q20);
9719 : 28673 : tree _q21 = gimple_assign_rhs2 (_a1);
9720 : 28673 : _q21 = do_valueize (valueize, _q21);
9721 : 28673 : if (tree_swap_operands_p (_q20, _q21))
9722 : 753 : std::swap (_q20, _q21);
9723 : 28673 : switch (TREE_CODE (_q21))
9724 : : {
9725 : 3 : case VECTOR_CST:
9726 : 3 : {
9727 : 3 : {
9728 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9729 : 3 : gimple_seq *lseq = seq;
9730 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2054;
9731 : 3 : {
9732 : 3 : res_op->set_op (PLUS_EXPR, type, 2);
9733 : 3 : {
9734 : 3 : tree _o1[1], _r1;
9735 : 3 : _o1[0] = captures[0];
9736 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_REDUC_PLUS, type, _o1[0]);
9737 : 3 : tem_op.resimplify (lseq, valueize);
9738 : 3 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9739 : 3 : if (!_r1) goto next_after_fail2054;
9740 : 1 : res_op->ops[0] = _r1;
9741 : : }
9742 : 1 : {
9743 : 1 : tree _o1[1], _r1;
9744 : 1 : _o1[0] = captures[1];
9745 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_REDUC_PLUS, type, _o1[0]);
9746 : 1 : tem_op.resimplify (lseq, valueize);
9747 : 1 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9748 : 1 : if (!_r1) goto next_after_fail2054;
9749 : 1 : res_op->ops[1] = _r1;
9750 : : }
9751 : 1 : res_op->resimplify (lseq, valueize);
9752 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1052, __FILE__, __LINE__, true);
9753 : 1 : return true;
9754 : : }
9755 : 2 : next_after_fail2054:;
9756 : : }
9757 : 2 : break;
9758 : : }
9759 : : default:;
9760 : : }
9761 : 133450 : break;
9762 : : }
9763 : : default:;
9764 : : }
9765 : : }
9766 : : break;
9767 : : default:;
9768 : : }
9769 : : return false;
9770 : : }
9771 : :
9772 : : bool
9773 : 801899 : gimple_simplify_BIT_XOR_EXPR (gimple_match_op *res_op, gimple_seq *seq,
9774 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9775 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
9776 : : {
9777 : 801899 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9778 : 801899 : switch (TREE_CODE (_p0))
9779 : : {
9780 : 790156 : case SSA_NAME:
9781 : 790156 : if (gimple *_d1 = get_def (valueize, _p0))
9782 : : {
9783 : 632766 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9784 : 703967 : switch (gimple_assign_rhs_code (_a1))
9785 : : {
9786 : 19982 : case PLUS_EXPR:
9787 : 19982 : {
9788 : 19982 : tree _q20 = gimple_assign_rhs1 (_a1);
9789 : 19982 : _q20 = do_valueize (valueize, _q20);
9790 : 19982 : tree _q21 = gimple_assign_rhs2 (_a1);
9791 : 19982 : _q21 = do_valueize (valueize, _q21);
9792 : 19982 : if (tree_swap_operands_p (_q20, _q21))
9793 : 1316 : std::swap (_q20, _q21);
9794 : 19982 : switch (TREE_CODE (_q21))
9795 : : {
9796 : 15317 : case SSA_NAME:
9797 : 15317 : if (gimple *_d2 = get_def (valueize, _q21))
9798 : : {
9799 : 15145 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9800 : 15381 : switch (gimple_assign_rhs_code (_a2))
9801 : : {
9802 : 306 : case RSHIFT_EXPR:
9803 : 306 : {
9804 : 306 : tree _q40 = gimple_assign_rhs1 (_a2);
9805 : 306 : _q40 = do_valueize (valueize, _q40);
9806 : 306 : tree _q41 = gimple_assign_rhs2 (_a2);
9807 : 306 : _q41 = do_valueize (valueize, _q41);
9808 : 306 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
9809 : : {
9810 : 34 : switch (TREE_CODE (_q41))
9811 : : {
9812 : 34 : case INTEGER_CST:
9813 : 34 : {
9814 : 34 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9815 : : {
9816 : 34 : {
9817 : 34 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q41 };
9818 : 34 : if (gimple_simplify_3 (res_op, seq, valueize, type, captures))
9819 : 34 : return true;
9820 : : }
9821 : : }
9822 : : break;
9823 : : }
9824 : : default:;
9825 : : }
9826 : : }
9827 : : break;
9828 : : }
9829 : : default:;
9830 : : }
9831 : : }
9832 : : break;
9833 : 19948 : default:;
9834 : : }
9835 : 19948 : switch (TREE_CODE (_q20))
9836 : : {
9837 : 19948 : case SSA_NAME:
9838 : 19948 : if (gimple *_d2 = get_def (valueize, _q20))
9839 : : {
9840 : 19441 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9841 : 18520 : switch (gimple_assign_rhs_code (_a2))
9842 : : {
9843 : 1231 : case RSHIFT_EXPR:
9844 : 1231 : {
9845 : 1231 : tree _q30 = gimple_assign_rhs1 (_a2);
9846 : 1231 : _q30 = do_valueize (valueize, _q30);
9847 : 1231 : tree _q31 = gimple_assign_rhs2 (_a2);
9848 : 1231 : _q31 = do_valueize (valueize, _q31);
9849 : 1231 : switch (TREE_CODE (_q31))
9850 : : {
9851 : 1231 : case INTEGER_CST:
9852 : 1231 : {
9853 : 1231 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
9854 : : {
9855 : 14 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9856 : : {
9857 : 14 : {
9858 : 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q20, _q31 };
9859 : 14 : if (gimple_simplify_3 (res_op, seq, valueize, type, captures))
9860 : 14 : return true;
9861 : : }
9862 : : }
9863 : : }
9864 : : break;
9865 : : }
9866 : : default:;
9867 : : }
9868 : : break;
9869 : : }
9870 : : default:;
9871 : : }
9872 : : }
9873 : : break;
9874 : : default:;
9875 : : }
9876 : 801851 : break;
9877 : : }
9878 : : default:;
9879 : : }
9880 : : }
9881 : : break;
9882 : 801851 : default:;
9883 : : }
9884 : 801851 : switch (TREE_CODE (_p1))
9885 : : {
9886 : 541649 : case SSA_NAME:
9887 : 541649 : if (gimple *_d1 = get_def (valueize, _p1))
9888 : : {
9889 : 443707 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9890 : 496059 : switch (gimple_assign_rhs_code (_a1))
9891 : : {
9892 : 21444 : case PLUS_EXPR:
9893 : 21444 : {
9894 : 21444 : tree _q30 = gimple_assign_rhs1 (_a1);
9895 : 21444 : _q30 = do_valueize (valueize, _q30);
9896 : 21444 : tree _q31 = gimple_assign_rhs2 (_a1);
9897 : 21444 : _q31 = do_valueize (valueize, _q31);
9898 : 21444 : if (tree_swap_operands_p (_q30, _q31))
9899 : 1482 : std::swap (_q30, _q31);
9900 : 21444 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9901 : : {
9902 : 150 : switch (TREE_CODE (_q31))
9903 : : {
9904 : 150 : case SSA_NAME:
9905 : 150 : if (gimple *_d2 = get_def (valueize, _q31))
9906 : : {
9907 : 144 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9908 : 144 : switch (gimple_assign_rhs_code (_a2))
9909 : : {
9910 : 0 : case RSHIFT_EXPR:
9911 : 0 : {
9912 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
9913 : 0 : _q60 = do_valueize (valueize, _q60);
9914 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
9915 : 0 : _q61 = do_valueize (valueize, _q61);
9916 : 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
9917 : : {
9918 : 0 : switch (TREE_CODE (_q61))
9919 : : {
9920 : 0 : case INTEGER_CST:
9921 : 0 : {
9922 : 0 : {
9923 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q61 };
9924 : 0 : if (gimple_simplify_3 (res_op, seq, valueize, type, captures))
9925 : 0 : return true;
9926 : : }
9927 : 0 : break;
9928 : : }
9929 : : default:;
9930 : : }
9931 : : }
9932 : : break;
9933 : : }
9934 : : default:;
9935 : : }
9936 : : }
9937 : : break;
9938 : : default:;
9939 : : }
9940 : : }
9941 : 21444 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9942 : : {
9943 : 6847 : switch (TREE_CODE (_q30))
9944 : : {
9945 : 6847 : case SSA_NAME:
9946 : 6847 : if (gimple *_d2 = get_def (valueize, _q30))
9947 : : {
9948 : 6744 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9949 : 6284 : switch (gimple_assign_rhs_code (_a2))
9950 : : {
9951 : 27 : case RSHIFT_EXPR:
9952 : 27 : {
9953 : 27 : tree _q50 = gimple_assign_rhs1 (_a2);
9954 : 27 : _q50 = do_valueize (valueize, _q50);
9955 : 27 : tree _q51 = gimple_assign_rhs2 (_a2);
9956 : 27 : _q51 = do_valueize (valueize, _q51);
9957 : 27 : switch (TREE_CODE (_q51))
9958 : : {
9959 : 27 : case INTEGER_CST:
9960 : 27 : {
9961 : 27 : if ((_q31 == _q50 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q50, 0) && types_match (_q31, _q50)))
9962 : : {
9963 : 0 : {
9964 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _p0, _q51 };
9965 : 0 : if (gimple_simplify_3 (res_op, seq, valueize, type, captures))
9966 : 0 : return true;
9967 : : }
9968 : : }
9969 : : break;
9970 : : }
9971 : : default:;
9972 : : }
9973 : : break;
9974 : : }
9975 : : default:;
9976 : : }
9977 : : }
9978 : : break;
9979 : : default:;
9980 : : }
9981 : : }
9982 : 801851 : break;
9983 : : }
9984 : : default:;
9985 : : }
9986 : : }
9987 : : break;
9988 : 801851 : default:;
9989 : : }
9990 : 801851 : if (integer_zerop (_p1))
9991 : : {
9992 : 22975 : {
9993 : 22975 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9994 : 22975 : gimple_seq *lseq = seq;
9995 : 22975 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2062;
9996 : 22975 : {
9997 : 22975 : tree tem;
9998 : 22975 : tem = captures[0];
9999 : 22975 : res_op->set_value (tem);
10000 : 22975 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1053, __FILE__, __LINE__, true);
10001 : 22975 : return true;
10002 : : }
10003 : 0 : next_after_fail2062:;
10004 : : }
10005 : : }
10006 : 778876 : switch (TREE_CODE (_p0))
10007 : : {
10008 : 767133 : case SSA_NAME:
10009 : 767133 : if (gimple *_d1 = get_def (valueize, _p0))
10010 : : {
10011 : 625007 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10012 : 695362 : switch (gimple_assign_rhs_code (_a1))
10013 : : {
10014 : 19133 : case LSHIFT_EXPR:
10015 : 19133 : {
10016 : 19133 : tree _q20 = gimple_assign_rhs1 (_a1);
10017 : 19133 : _q20 = do_valueize (valueize, _q20);
10018 : 19133 : tree _q21 = gimple_assign_rhs2 (_a1);
10019 : 19133 : _q21 = do_valueize (valueize, _q21);
10020 : 19133 : switch (TREE_CODE (_p1))
10021 : : {
10022 : 12196 : case SSA_NAME:
10023 : 12196 : if (gimple *_d2 = get_def (valueize, _p1))
10024 : : {
10025 : 11849 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10026 : 11026 : switch (gimple_assign_rhs_code (_a2))
10027 : : {
10028 : 105 : case LSHIFT_EXPR:
10029 : 105 : {
10030 : 105 : tree _q50 = gimple_assign_rhs1 (_a2);
10031 : 105 : _q50 = do_valueize (valueize, _q50);
10032 : 105 : tree _q51 = gimple_assign_rhs2 (_a2);
10033 : 105 : _q51 = do_valueize (valueize, _q51);
10034 : 105 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10035 : : {
10036 : 14 : {
10037 : 14 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10038 : 14 : if (gimple_simplify_4 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10039 : 0 : return true;
10040 : : }
10041 : : }
10042 : : break;
10043 : : }
10044 : : default:;
10045 : : }
10046 : : }
10047 : : break;
10048 : : default:;
10049 : : }
10050 : : break;
10051 : : }
10052 : 29519 : case RSHIFT_EXPR:
10053 : 29519 : {
10054 : 29519 : tree _q20 = gimple_assign_rhs1 (_a1);
10055 : 29519 : _q20 = do_valueize (valueize, _q20);
10056 : 29519 : tree _q21 = gimple_assign_rhs2 (_a1);
10057 : 29519 : _q21 = do_valueize (valueize, _q21);
10058 : 29519 : switch (TREE_CODE (_p1))
10059 : : {
10060 : 23946 : case SSA_NAME:
10061 : 23946 : if (gimple *_d2 = get_def (valueize, _p1))
10062 : : {
10063 : 21433 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10064 : 23006 : switch (gimple_assign_rhs_code (_a2))
10065 : : {
10066 : 2378 : case RSHIFT_EXPR:
10067 : 2378 : {
10068 : 2378 : tree _q50 = gimple_assign_rhs1 (_a2);
10069 : 2378 : _q50 = do_valueize (valueize, _q50);
10070 : 2378 : tree _q51 = gimple_assign_rhs2 (_a2);
10071 : 2378 : _q51 = do_valueize (valueize, _q51);
10072 : 2378 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10073 : : {
10074 : 10 : {
10075 : 10 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10076 : 10 : if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10077 : 3 : return true;
10078 : : }
10079 : : }
10080 : : break;
10081 : : }
10082 : : default:;
10083 : : }
10084 : : }
10085 : : break;
10086 : : default:;
10087 : : }
10088 : : break;
10089 : : }
10090 : 33176 : case BIT_AND_EXPR:
10091 : 33176 : {
10092 : 33176 : tree _q20 = gimple_assign_rhs1 (_a1);
10093 : 33176 : _q20 = do_valueize (valueize, _q20);
10094 : 33176 : tree _q21 = gimple_assign_rhs2 (_a1);
10095 : 33176 : _q21 = do_valueize (valueize, _q21);
10096 : 33176 : if (tree_swap_operands_p (_q20, _q21))
10097 : 1265 : std::swap (_q20, _q21);
10098 : 33176 : switch (TREE_CODE (_p1))
10099 : : {
10100 : 25095 : case SSA_NAME:
10101 : 25095 : if (gimple *_d2 = get_def (valueize, _p1))
10102 : : {
10103 : 21899 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10104 : 19532 : switch (gimple_assign_rhs_code (_a2))
10105 : : {
10106 : 2234 : case BIT_AND_EXPR:
10107 : 2234 : {
10108 : 2234 : tree _q50 = gimple_assign_rhs1 (_a2);
10109 : 2234 : _q50 = do_valueize (valueize, _q50);
10110 : 2234 : tree _q51 = gimple_assign_rhs2 (_a2);
10111 : 2234 : _q51 = do_valueize (valueize, _q51);
10112 : 2234 : if (tree_swap_operands_p (_q50, _q51))
10113 : 65 : std::swap (_q50, _q51);
10114 : 2234 : {
10115 : 2234 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
10116 : 2234 : if (gimple_simplify_6 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10117 : 0 : return true;
10118 : : }
10119 : 2234 : {
10120 : 2234 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q50 };
10121 : 2234 : if (gimple_simplify_6 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10122 : 0 : return true;
10123 : : }
10124 : 2234 : {
10125 : 2234 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q51 };
10126 : 2234 : if (gimple_simplify_6 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10127 : 0 : return true;
10128 : : }
10129 : 2234 : {
10130 : 2234 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q50 };
10131 : 2234 : if (gimple_simplify_6 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10132 : 0 : return true;
10133 : : }
10134 : 2234 : break;
10135 : : }
10136 : : default:;
10137 : : }
10138 : : }
10139 : : break;
10140 : 33176 : default:;
10141 : : }
10142 : 33176 : switch (TREE_CODE (_q21))
10143 : : {
10144 : 18162 : case SSA_NAME:
10145 : 18162 : if (gimple *_d2 = get_def (valueize, _q21))
10146 : : {
10147 : 16722 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10148 : 11546 : switch (gimple_assign_rhs_code (_a2))
10149 : : {
10150 : 641 : case BIT_NOT_EXPR:
10151 : 641 : {
10152 : 641 : tree _q40 = gimple_assign_rhs1 (_a2);
10153 : 641 : _q40 = do_valueize (valueize, _q40);
10154 : 641 : switch (TREE_CODE (_p1))
10155 : : {
10156 : 463 : case SSA_NAME:
10157 : 463 : if (gimple *_d3 = get_def (valueize, _p1))
10158 : : {
10159 : 407 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10160 : 173 : switch (gimple_assign_rhs_code (_a3))
10161 : : {
10162 : 0 : case BIT_NOT_EXPR:
10163 : 0 : {
10164 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
10165 : 0 : _q60 = do_valueize (valueize, _q60);
10166 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10167 : : {
10168 : 0 : {
10169 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10170 : 0 : if (gimple_simplify_7 (res_op, seq, valueize, type, captures))
10171 : 0 : return true;
10172 : : }
10173 : : }
10174 : : break;
10175 : : }
10176 : : default:;
10177 : : }
10178 : : }
10179 : : break;
10180 : : default:;
10181 : : }
10182 : : break;
10183 : : }
10184 : : default:;
10185 : : }
10186 : : }
10187 : : break;
10188 : 33176 : default:;
10189 : : }
10190 : 33176 : switch (TREE_CODE (_q20))
10191 : : {
10192 : 33176 : case SSA_NAME:
10193 : 33176 : if (gimple *_d2 = get_def (valueize, _q20))
10194 : : {
10195 : 32356 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10196 : 33615 : switch (gimple_assign_rhs_code (_a2))
10197 : : {
10198 : 577 : case BIT_NOT_EXPR:
10199 : 577 : {
10200 : 577 : tree _q30 = gimple_assign_rhs1 (_a2);
10201 : 577 : _q30 = do_valueize (valueize, _q30);
10202 : 577 : switch (TREE_CODE (_p1))
10203 : : {
10204 : 501 : case SSA_NAME:
10205 : 501 : if (gimple *_d3 = get_def (valueize, _p1))
10206 : : {
10207 : 485 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10208 : 191 : switch (gimple_assign_rhs_code (_a3))
10209 : : {
10210 : 0 : case BIT_NOT_EXPR:
10211 : 0 : {
10212 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
10213 : 0 : _q60 = do_valueize (valueize, _q60);
10214 : 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
10215 : : {
10216 : 0 : {
10217 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q30 };
10218 : 0 : if (gimple_simplify_7 (res_op, seq, valueize, type, captures))
10219 : 0 : return true;
10220 : : }
10221 : : }
10222 : : break;
10223 : : }
10224 : : default:;
10225 : : }
10226 : : }
10227 : : break;
10228 : 577 : default:;
10229 : : }
10230 : 577 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10231 : : {
10232 : 6 : {
10233 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
10234 : 6 : if (gimple_simplify_8 (res_op, seq, valueize, type, captures))
10235 : 6 : return true;
10236 : : }
10237 : : }
10238 : : break;
10239 : : }
10240 : : default:;
10241 : : }
10242 : : }
10243 : : break;
10244 : 33170 : default:;
10245 : : }
10246 : 33170 : switch (TREE_CODE (_q21))
10247 : : {
10248 : 18156 : case SSA_NAME:
10249 : 18156 : if (gimple *_d2 = get_def (valueize, _q21))
10250 : : {
10251 : 16716 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10252 : 11546 : switch (gimple_assign_rhs_code (_a2))
10253 : : {
10254 : 641 : case BIT_NOT_EXPR:
10255 : 641 : {
10256 : 641 : tree _q40 = gimple_assign_rhs1 (_a2);
10257 : 641 : _q40 = do_valueize (valueize, _q40);
10258 : 641 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
10259 : : {
10260 : 0 : {
10261 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
10262 : 0 : if (gimple_simplify_8 (res_op, seq, valueize, type, captures))
10263 : 0 : return true;
10264 : : }
10265 : : }
10266 : : break;
10267 : : }
10268 : : default:;
10269 : : }
10270 : : }
10271 : : break;
10272 : : default:;
10273 : : }
10274 : 778867 : break;
10275 : : }
10276 : 378 : case BIT_NOT_EXPR:
10277 : 378 : {
10278 : 378 : tree _q20 = gimple_assign_rhs1 (_a1);
10279 : 378 : _q20 = do_valueize (valueize, _q20);
10280 : 378 : switch (TREE_CODE (_p1))
10281 : : {
10282 : 192 : case SSA_NAME:
10283 : 192 : if (gimple *_d2 = get_def (valueize, _p1))
10284 : : {
10285 : 186 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10286 : 168 : switch (gimple_assign_rhs_code (_a2))
10287 : : {
10288 : 0 : case BIT_AND_EXPR:
10289 : 0 : {
10290 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
10291 : 0 : _q40 = do_valueize (valueize, _q40);
10292 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
10293 : 0 : _q41 = do_valueize (valueize, _q41);
10294 : 0 : if (tree_swap_operands_p (_q40, _q41))
10295 : 0 : std::swap (_q40, _q41);
10296 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10297 : : {
10298 : 0 : switch (TREE_CODE (_q41))
10299 : : {
10300 : 0 : case SSA_NAME:
10301 : 0 : if (gimple *_d3 = get_def (valueize, _q41))
10302 : : {
10303 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10304 : 0 : switch (gimple_assign_rhs_code (_a3))
10305 : : {
10306 : 0 : case BIT_NOT_EXPR:
10307 : 0 : {
10308 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
10309 : 0 : _q60 = do_valueize (valueize, _q60);
10310 : 0 : {
10311 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q60 };
10312 : 0 : if (gimple_simplify_7 (res_op, seq, valueize, type, captures))
10313 : 0 : return true;
10314 : : }
10315 : 0 : break;
10316 : : }
10317 : : default:;
10318 : : }
10319 : : }
10320 : : break;
10321 : : default:;
10322 : : }
10323 : : }
10324 : 0 : switch (TREE_CODE (_q40))
10325 : : {
10326 : 0 : case SSA_NAME:
10327 : 0 : if (gimple *_d3 = get_def (valueize, _q40))
10328 : : {
10329 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10330 : 0 : switch (gimple_assign_rhs_code (_a3))
10331 : : {
10332 : 0 : case BIT_NOT_EXPR:
10333 : 0 : {
10334 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
10335 : 0 : _q50 = do_valueize (valueize, _q50);
10336 : 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
10337 : : {
10338 : 0 : {
10339 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q50 };
10340 : 0 : if (gimple_simplify_7 (res_op, seq, valueize, type, captures))
10341 : 0 : return true;
10342 : : }
10343 : : }
10344 : : break;
10345 : : }
10346 : : default:;
10347 : : }
10348 : : }
10349 : : break;
10350 : : default:;
10351 : : }
10352 : 778867 : break;
10353 : : }
10354 : : default:;
10355 : : }
10356 : : }
10357 : : break;
10358 : : default:;
10359 : : }
10360 : : break;
10361 : : }
10362 : : default:;
10363 : : }
10364 : : }
10365 : : break;
10366 : 778867 : default:;
10367 : : }
10368 : 778867 : switch (TREE_CODE (_p1))
10369 : : {
10370 : 541640 : case SSA_NAME:
10371 : 541640 : if (gimple *_d1 = get_def (valueize, _p1))
10372 : : {
10373 : 443698 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10374 : 496056 : switch (gimple_assign_rhs_code (_a1))
10375 : : {
10376 : 14613 : case BIT_AND_EXPR:
10377 : 14613 : {
10378 : 14613 : tree _q30 = gimple_assign_rhs1 (_a1);
10379 : 14613 : _q30 = do_valueize (valueize, _q30);
10380 : 14613 : tree _q31 = gimple_assign_rhs2 (_a1);
10381 : 14613 : _q31 = do_valueize (valueize, _q31);
10382 : 14613 : if (tree_swap_operands_p (_q30, _q31))
10383 : 597 : std::swap (_q30, _q31);
10384 : 14613 : switch (TREE_CODE (_q30))
10385 : : {
10386 : 14613 : case SSA_NAME:
10387 : 14613 : if (gimple *_d2 = get_def (valueize, _q30))
10388 : : {
10389 : 13611 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10390 : 10728 : switch (gimple_assign_rhs_code (_a2))
10391 : : {
10392 : 602 : case BIT_NOT_EXPR:
10393 : 602 : {
10394 : 602 : tree _q40 = gimple_assign_rhs1 (_a2);
10395 : 602 : _q40 = do_valueize (valueize, _q40);
10396 : 602 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10397 : : {
10398 : 1 : {
10399 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
10400 : 1 : if (gimple_simplify_8 (res_op, seq, valueize, type, captures))
10401 : 1 : return true;
10402 : : }
10403 : : }
10404 : : break;
10405 : : }
10406 : : default:;
10407 : : }
10408 : : }
10409 : : break;
10410 : 14612 : default:;
10411 : : }
10412 : 14612 : switch (TREE_CODE (_q31))
10413 : : {
10414 : 10587 : case SSA_NAME:
10415 : 10587 : if (gimple *_d2 = get_def (valueize, _q31))
10416 : : {
10417 : 10122 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10418 : 7969 : switch (gimple_assign_rhs_code (_a2))
10419 : : {
10420 : 53 : case BIT_NOT_EXPR:
10421 : 53 : {
10422 : 53 : tree _q50 = gimple_assign_rhs1 (_a2);
10423 : 53 : _q50 = do_valueize (valueize, _q50);
10424 : 53 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
10425 : : {
10426 : 0 : {
10427 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q30 };
10428 : 0 : if (gimple_simplify_8 (res_op, seq, valueize, type, captures))
10429 : 0 : return true;
10430 : : }
10431 : : }
10432 : : break;
10433 : : }
10434 : : default:;
10435 : : }
10436 : : }
10437 : : break;
10438 : : default:;
10439 : : }
10440 : 778866 : break;
10441 : : }
10442 : : default:;
10443 : : }
10444 : : }
10445 : : break;
10446 : 778866 : default:;
10447 : : }
10448 : 778866 : switch (TREE_CODE (_p0))
10449 : : {
10450 : 767123 : case SSA_NAME:
10451 : 767123 : if (gimple *_d1 = get_def (valueize, _p0))
10452 : : {
10453 : 624997 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10454 : 695353 : switch (gimple_assign_rhs_code (_a1))
10455 : : {
10456 : 19862 : case PLUS_EXPR:
10457 : 19862 : {
10458 : 19862 : tree _q20 = gimple_assign_rhs1 (_a1);
10459 : 19862 : _q20 = do_valueize (valueize, _q20);
10460 : 19862 : tree _q21 = gimple_assign_rhs2 (_a1);
10461 : 19862 : _q21 = do_valueize (valueize, _q21);
10462 : 19862 : if (tree_swap_operands_p (_q20, _q21))
10463 : 1309 : std::swap (_q20, _q21);
10464 : 19862 : if (integer_minus_onep (_q21))
10465 : : {
10466 : 2031 : switch (TREE_CODE (_p1))
10467 : : {
10468 : 1685 : case SSA_NAME:
10469 : 1685 : if (gimple *_d2 = get_def (valueize, _p1))
10470 : : {
10471 : 1608 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10472 : 1342 : switch (gimple_assign_rhs_code (_a2))
10473 : : {
10474 : 1 : case NEGATE_EXPR:
10475 : 1 : {
10476 : 1 : tree _q50 = gimple_assign_rhs1 (_a2);
10477 : 1 : _q50 = do_valueize (valueize, _q50);
10478 : 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10479 : : {
10480 : 1 : {
10481 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10482 : 1 : if (gimple_simplify_9 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10483 : 1 : return true;
10484 : : }
10485 : : }
10486 : : break;
10487 : : }
10488 : : default:;
10489 : : }
10490 : : }
10491 : : break;
10492 : : default:;
10493 : : }
10494 : : }
10495 : 778847 : break;
10496 : : }
10497 : 3449 : case NEGATE_EXPR:
10498 : 3449 : {
10499 : 3449 : tree _q20 = gimple_assign_rhs1 (_a1);
10500 : 3449 : _q20 = do_valueize (valueize, _q20);
10501 : 3449 : switch (TREE_CODE (_p1))
10502 : : {
10503 : 1293 : case SSA_NAME:
10504 : 1293 : if (gimple *_d2 = get_def (valueize, _p1))
10505 : : {
10506 : 1257 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10507 : 1473 : switch (gimple_assign_rhs_code (_a2))
10508 : : {
10509 : 0 : case PLUS_EXPR:
10510 : 0 : {
10511 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
10512 : 0 : _q40 = do_valueize (valueize, _q40);
10513 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
10514 : 0 : _q41 = do_valueize (valueize, _q41);
10515 : 0 : if (tree_swap_operands_p (_q40, _q41))
10516 : 0 : std::swap (_q40, _q41);
10517 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10518 : : {
10519 : 0 : if (integer_minus_onep (_q41))
10520 : : {
10521 : 0 : {
10522 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10523 : 0 : if (gimple_simplify_10 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10524 : 0 : return true;
10525 : : }
10526 : : }
10527 : : }
10528 : 778847 : break;
10529 : : }
10530 : 0 : case MINUS_EXPR:
10531 : 0 : {
10532 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
10533 : 0 : _q40 = do_valueize (valueize, _q40);
10534 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
10535 : 0 : _q41 = do_valueize (valueize, _q41);
10536 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10537 : : {
10538 : 0 : if (integer_onep (_q41))
10539 : : {
10540 : 0 : {
10541 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10542 : 0 : if (gimple_simplify_11 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10543 : 0 : return true;
10544 : : }
10545 : : }
10546 : : }
10547 : : break;
10548 : : }
10549 : : default:;
10550 : : }
10551 : : }
10552 : : break;
10553 : : default:;
10554 : : }
10555 : : break;
10556 : : }
10557 : 3430 : case MINUS_EXPR:
10558 : 3430 : {
10559 : 3430 : tree _q20 = gimple_assign_rhs1 (_a1);
10560 : 3430 : _q20 = do_valueize (valueize, _q20);
10561 : 3430 : tree _q21 = gimple_assign_rhs2 (_a1);
10562 : 3430 : _q21 = do_valueize (valueize, _q21);
10563 : 3430 : if (integer_onep (_q21))
10564 : : {
10565 : 5 : switch (TREE_CODE (_p1))
10566 : : {
10567 : 4 : case SSA_NAME:
10568 : 4 : if (gimple *_d2 = get_def (valueize, _p1))
10569 : : {
10570 : 4 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10571 : 6 : switch (gimple_assign_rhs_code (_a2))
10572 : : {
10573 : 2 : case NEGATE_EXPR:
10574 : 2 : {
10575 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
10576 : 2 : _q50 = do_valueize (valueize, _q50);
10577 : 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10578 : : {
10579 : 2 : {
10580 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10581 : 2 : if (gimple_simplify_12 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10582 : 2 : return true;
10583 : : }
10584 : : }
10585 : : break;
10586 : : }
10587 : : default:;
10588 : : }
10589 : : }
10590 : : break;
10591 : : default:;
10592 : : }
10593 : : }
10594 : : break;
10595 : : }
10596 : 14933 : case BIT_IOR_EXPR:
10597 : 14933 : {
10598 : 14933 : tree _q20 = gimple_assign_rhs1 (_a1);
10599 : 14933 : _q20 = do_valueize (valueize, _q20);
10600 : 14933 : tree _q21 = gimple_assign_rhs2 (_a1);
10601 : 14933 : _q21 = do_valueize (valueize, _q21);
10602 : 14933 : if (tree_swap_operands_p (_q20, _q21))
10603 : 765 : std::swap (_q20, _q21);
10604 : 14933 : switch (TREE_CODE (_q20))
10605 : : {
10606 : 14933 : case SSA_NAME:
10607 : 14933 : if (gimple *_d2 = get_def (valueize, _q20))
10608 : : {
10609 : 14663 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10610 : 13063 : switch (gimple_assign_rhs_code (_a2))
10611 : : {
10612 : 4013 : case BIT_NOT_EXPR:
10613 : 4013 : {
10614 : 4013 : tree _q30 = gimple_assign_rhs1 (_a2);
10615 : 4013 : _q30 = do_valueize (valueize, _q30);
10616 : 4013 : {
10617 : 4013 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _p1 };
10618 : 4013 : if (gimple_simplify_13 (res_op, seq, valueize, type, captures))
10619 : 1 : return true;
10620 : : }
10621 : 4012 : break;
10622 : : }
10623 : : default:;
10624 : : }
10625 : : }
10626 : : break;
10627 : 14932 : default:;
10628 : : }
10629 : 14932 : switch (TREE_CODE (_q21))
10630 : : {
10631 : 14482 : case SSA_NAME:
10632 : 14482 : if (gimple *_d2 = get_def (valueize, _q21))
10633 : : {
10634 : 13809 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10635 : 6871 : switch (gimple_assign_rhs_code (_a2))
10636 : : {
10637 : 885 : case BIT_NOT_EXPR:
10638 : 885 : {
10639 : 885 : tree _q40 = gimple_assign_rhs1 (_a2);
10640 : 885 : _q40 = do_valueize (valueize, _q40);
10641 : 885 : {
10642 : 885 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20, _p1 };
10643 : 885 : if (gimple_simplify_13 (res_op, seq, valueize, type, captures))
10644 : 15 : return true;
10645 : : }
10646 : 870 : break;
10647 : : }
10648 : : default:;
10649 : : }
10650 : : }
10651 : : break;
10652 : : default:;
10653 : : }
10654 : 778847 : break;
10655 : : }
10656 : : default:;
10657 : : }
10658 : : }
10659 : : break;
10660 : 778847 : default:;
10661 : : }
10662 : 778847 : switch (TREE_CODE (_p1))
10663 : : {
10664 : 541636 : case SSA_NAME:
10665 : 541636 : if (gimple *_d1 = get_def (valueize, _p1))
10666 : : {
10667 : 443694 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10668 : 496052 : switch (gimple_assign_rhs_code (_a1))
10669 : : {
10670 : 6344 : case BIT_IOR_EXPR:
10671 : 6344 : {
10672 : 6344 : tree _q30 = gimple_assign_rhs1 (_a1);
10673 : 6344 : _q30 = do_valueize (valueize, _q30);
10674 : 6344 : tree _q31 = gimple_assign_rhs2 (_a1);
10675 : 6344 : _q31 = do_valueize (valueize, _q31);
10676 : 6344 : if (tree_swap_operands_p (_q30, _q31))
10677 : 387 : std::swap (_q30, _q31);
10678 : 6344 : switch (TREE_CODE (_q30))
10679 : : {
10680 : 6344 : case SSA_NAME:
10681 : 6344 : if (gimple *_d2 = get_def (valueize, _q30))
10682 : : {
10683 : 5755 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10684 : 3120 : switch (gimple_assign_rhs_code (_a2))
10685 : : {
10686 : 408 : case BIT_NOT_EXPR:
10687 : 408 : {
10688 : 408 : tree _q40 = gimple_assign_rhs1 (_a2);
10689 : 408 : _q40 = do_valueize (valueize, _q40);
10690 : 408 : {
10691 : 408 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _q31, _p0 };
10692 : 408 : if (gimple_simplify_13 (res_op, seq, valueize, type, captures))
10693 : 0 : return true;
10694 : : }
10695 : 408 : break;
10696 : : }
10697 : : default:;
10698 : : }
10699 : : }
10700 : : break;
10701 : 6344 : default:;
10702 : : }
10703 : 6344 : switch (TREE_CODE (_q31))
10704 : : {
10705 : 6187 : case SSA_NAME:
10706 : 6187 : if (gimple *_d2 = get_def (valueize, _q31))
10707 : : {
10708 : 5858 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10709 : 3203 : switch (gimple_assign_rhs_code (_a2))
10710 : : {
10711 : 640 : case BIT_NOT_EXPR:
10712 : 640 : {
10713 : 640 : tree _q50 = gimple_assign_rhs1 (_a2);
10714 : 640 : _q50 = do_valueize (valueize, _q50);
10715 : 640 : {
10716 : 640 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q31, _q50, _q30, _p0 };
10717 : 640 : if (gimple_simplify_13 (res_op, seq, valueize, type, captures))
10718 : 0 : return true;
10719 : : }
10720 : 640 : break;
10721 : : }
10722 : : default:;
10723 : : }
10724 : : }
10725 : : break;
10726 : : default:;
10727 : : }
10728 : 778847 : break;
10729 : : }
10730 : : default:;
10731 : : }
10732 : : }
10733 : : break;
10734 : 778847 : default:;
10735 : : }
10736 : 778847 : switch (TREE_CODE (_p0))
10737 : : {
10738 : 767104 : case SSA_NAME:
10739 : 767104 : if (gimple *_d1 = get_def (valueize, _p0))
10740 : : {
10741 : 624978 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10742 : 695334 : switch (gimple_assign_rhs_code (_a1))
10743 : : {
10744 : 33170 : case BIT_AND_EXPR:
10745 : 33170 : {
10746 : 33170 : tree _q20 = gimple_assign_rhs1 (_a1);
10747 : 33170 : _q20 = do_valueize (valueize, _q20);
10748 : 33170 : tree _q21 = gimple_assign_rhs2 (_a1);
10749 : 33170 : _q21 = do_valueize (valueize, _q21);
10750 : 33170 : if (tree_swap_operands_p (_q20, _q21))
10751 : 1265 : std::swap (_q20, _q21);
10752 : 33170 : switch (TREE_CODE (_q20))
10753 : : {
10754 : 33170 : case SSA_NAME:
10755 : 33170 : if (gimple *_d2 = get_def (valueize, _q20))
10756 : : {
10757 : 32350 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10758 : 33609 : switch (gimple_assign_rhs_code (_a2))
10759 : : {
10760 : 571 : case BIT_NOT_EXPR:
10761 : 571 : {
10762 : 571 : tree _q30 = gimple_assign_rhs1 (_a2);
10763 : 571 : _q30 = do_valueize (valueize, _q30);
10764 : 571 : {
10765 : 571 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _p1 };
10766 : 571 : if (gimple_simplify_14 (res_op, seq, valueize, type, captures))
10767 : 1 : return true;
10768 : : }
10769 : 570 : break;
10770 : : }
10771 : : default:;
10772 : : }
10773 : : }
10774 : : break;
10775 : 33169 : default:;
10776 : : }
10777 : 33169 : switch (TREE_CODE (_q21))
10778 : : {
10779 : 18156 : case SSA_NAME:
10780 : 18156 : if (gimple *_d2 = get_def (valueize, _q21))
10781 : : {
10782 : 16716 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10783 : 11546 : switch (gimple_assign_rhs_code (_a2))
10784 : : {
10785 : 641 : case BIT_NOT_EXPR:
10786 : 641 : {
10787 : 641 : tree _q40 = gimple_assign_rhs1 (_a2);
10788 : 641 : _q40 = do_valueize (valueize, _q40);
10789 : 641 : {
10790 : 641 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20, _p1 };
10791 : 641 : if (gimple_simplify_14 (res_op, seq, valueize, type, captures))
10792 : 0 : return true;
10793 : : }
10794 : 641 : break;
10795 : : }
10796 : : default:;
10797 : : }
10798 : : }
10799 : : break;
10800 : : default:;
10801 : : }
10802 : 778846 : break;
10803 : : }
10804 : : default:;
10805 : : }
10806 : : }
10807 : : break;
10808 : 778846 : default:;
10809 : : }
10810 : 778846 : switch (TREE_CODE (_p1))
10811 : : {
10812 : 541636 : case SSA_NAME:
10813 : 541636 : if (gimple *_d1 = get_def (valueize, _p1))
10814 : : {
10815 : 443694 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10816 : 496052 : switch (gimple_assign_rhs_code (_a1))
10817 : : {
10818 : 14612 : case BIT_AND_EXPR:
10819 : 14612 : {
10820 : 14612 : tree _q30 = gimple_assign_rhs1 (_a1);
10821 : 14612 : _q30 = do_valueize (valueize, _q30);
10822 : 14612 : tree _q31 = gimple_assign_rhs2 (_a1);
10823 : 14612 : _q31 = do_valueize (valueize, _q31);
10824 : 14612 : if (tree_swap_operands_p (_q30, _q31))
10825 : 597 : std::swap (_q30, _q31);
10826 : 14612 : switch (TREE_CODE (_q30))
10827 : : {
10828 : 14612 : case SSA_NAME:
10829 : 14612 : if (gimple *_d2 = get_def (valueize, _q30))
10830 : : {
10831 : 13610 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10832 : 10727 : switch (gimple_assign_rhs_code (_a2))
10833 : : {
10834 : 601 : case BIT_NOT_EXPR:
10835 : 601 : {
10836 : 601 : tree _q40 = gimple_assign_rhs1 (_a2);
10837 : 601 : _q40 = do_valueize (valueize, _q40);
10838 : 601 : {
10839 : 601 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _q31, _p0 };
10840 : 601 : if (gimple_simplify_14 (res_op, seq, valueize, type, captures))
10841 : 1 : return true;
10842 : : }
10843 : 600 : break;
10844 : : }
10845 : : default:;
10846 : : }
10847 : : }
10848 : : break;
10849 : 14611 : default:;
10850 : : }
10851 : 14611 : switch (TREE_CODE (_q31))
10852 : : {
10853 : 10586 : case SSA_NAME:
10854 : 10586 : if (gimple *_d2 = get_def (valueize, _q31))
10855 : : {
10856 : 10121 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10857 : 7969 : switch (gimple_assign_rhs_code (_a2))
10858 : : {
10859 : 53 : case BIT_NOT_EXPR:
10860 : 53 : {
10861 : 53 : tree _q50 = gimple_assign_rhs1 (_a2);
10862 : 53 : _q50 = do_valueize (valueize, _q50);
10863 : 53 : {
10864 : 53 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q31, _q50, _q30, _p0 };
10865 : 53 : if (gimple_simplify_14 (res_op, seq, valueize, type, captures))
10866 : 0 : return true;
10867 : : }
10868 : 53 : break;
10869 : : }
10870 : : default:;
10871 : : }
10872 : : }
10873 : : break;
10874 : : default:;
10875 : : }
10876 : 778845 : break;
10877 : : }
10878 : : default:;
10879 : : }
10880 : : }
10881 : : break;
10882 : 778845 : default:;
10883 : : }
10884 : 778845 : switch (TREE_CODE (_p0))
10885 : : {
10886 : 767102 : case SSA_NAME:
10887 : 767102 : if (gimple *_d1 = get_def (valueize, _p0))
10888 : : {
10889 : 624976 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10890 : 695333 : switch (gimple_assign_rhs_code (_a1))
10891 : : {
10892 : 64412 : CASE_CONVERT:
10893 : 64412 : {
10894 : 64412 : tree _q20 = gimple_assign_rhs1 (_a1);
10895 : 64412 : _q20 = do_valueize (valueize, _q20);
10896 : 64412 : switch (TREE_CODE (_p1))
10897 : : {
10898 : 52267 : case SSA_NAME:
10899 : 52267 : if (gimple *_d2 = get_def (valueize, _p1))
10900 : : {
10901 : 50854 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10902 : 48119 : switch (gimple_assign_rhs_code (_a2))
10903 : : {
10904 : 17847 : CASE_CONVERT:
10905 : 17847 : {
10906 : 17847 : tree _q40 = gimple_assign_rhs1 (_a2);
10907 : 17847 : _q40 = do_valueize (valueize, _q40);
10908 : 17847 : {
10909 : 17847 : tree _q40_pops[1];
10910 : 17847 : if (gimple_maybe_bit_not (_q40, _q40_pops, valueize))
10911 : : {
10912 : 611 : tree _q50 = _q40_pops[0];
10913 : 611 : {
10914 : 611 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
10915 : 611 : if (gimple_simplify_15 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10916 : 0 : return true;
10917 : : }
10918 : : }
10919 : : }
10920 : 17847 : break;
10921 : : }
10922 : : default:;
10923 : : }
10924 : : }
10925 : : break;
10926 : 64412 : default:;
10927 : : }
10928 : 64412 : {
10929 : 64412 : tree _q20_pops[1];
10930 : 64412 : if (gimple_maybe_bit_not (_q20, _q20_pops, valueize))
10931 : : {
10932 : 15689 : tree _q30 = _q20_pops[0];
10933 : 15689 : switch (TREE_CODE (_p1))
10934 : : {
10935 : 13051 : case SSA_NAME:
10936 : 13051 : if (gimple *_d2 = get_def (valueize, _p1))
10937 : : {
10938 : 12812 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10939 : 10036 : switch (gimple_assign_rhs_code (_a2))
10940 : : {
10941 : 775 : CASE_CONVERT:
10942 : 775 : {
10943 : 775 : tree _q50 = gimple_assign_rhs1 (_a2);
10944 : 775 : _q50 = do_valueize (valueize, _q50);
10945 : 775 : {
10946 : 775 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
10947 : 775 : if (gimple_simplify_15 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10948 : 0 : return true;
10949 : : }
10950 : 775 : break;
10951 : : }
10952 : : default:;
10953 : : }
10954 : : }
10955 : : break;
10956 : : default:;
10957 : : }
10958 : : }
10959 : : }
10960 : 64412 : break;
10961 : : }
10962 : : default:;
10963 : : }
10964 : : }
10965 : : break;
10966 : 778845 : default:;
10967 : : }
10968 : 778845 : {
10969 : 778845 : tree _p1_pops[1];
10970 : 778845 : if (gimple_maybe_bit_not (_p1, _p1_pops, valueize))
10971 : : {
10972 : 254986 : tree _q30 = _p1_pops[0];
10973 : 254986 : {
10974 : 254986 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
10975 : 254986 : if (gimple_simplify_15 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10976 : 256 : return true;
10977 : : }
10978 : : }
10979 : : }
10980 : 778589 : {
10981 : 778589 : tree _p0_pops[1];
10982 : 778589 : if (gimple_maybe_bit_not (_p0, _p0_pops, valueize))
10983 : : {
10984 : 115783 : tree _q20 = _p0_pops[0];
10985 : 115783 : {
10986 : 115783 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
10987 : 115783 : if (gimple_simplify_15 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
10988 : 0 : return true;
10989 : : }
10990 : : }
10991 : : }
10992 : 778589 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10993 : : {
10994 : 1108 : {
10995 : 1108 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10996 : 1108 : gimple_seq *lseq = seq;
10997 : 1108 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2063;
10998 : 1108 : {
10999 : 1108 : tree tem;
11000 : 1108 : tem = build_zero_cst (type);
11001 : 1108 : res_op->set_value (tem);
11002 : 1108 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1054, __FILE__, __LINE__, true);
11003 : 1108 : return true;
11004 : : }
11005 : 0 : next_after_fail2063:;
11006 : : }
11007 : : }
11008 : 777481 : if (integer_all_onesp (_p1))
11009 : : {
11010 : 98079 : {
11011 : 98079 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11012 : 98079 : gimple_seq *lseq = seq;
11013 : 98079 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2064;
11014 : 98079 : {
11015 : 98079 : res_op->set_op (BIT_NOT_EXPR, type, 1);
11016 : 98079 : res_op->ops[0] = captures[0];
11017 : 98079 : res_op->resimplify (lseq, valueize);
11018 : 98079 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
11019 : 98079 : return true;
11020 : : }
11021 : 0 : next_after_fail2064:;
11022 : : }
11023 : : }
11024 : 679402 : switch (TREE_CODE (_p0))
11025 : : {
11026 : 667659 : case SSA_NAME:
11027 : 667659 : if (gimple *_d1 = get_def (valueize, _p0))
11028 : : {
11029 : 528167 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11030 : 599078 : switch (gimple_assign_rhs_code (_a1))
11031 : : {
11032 : 14386 : case BIT_IOR_EXPR:
11033 : 14386 : {
11034 : 14386 : tree _q20 = gimple_assign_rhs1 (_a1);
11035 : 14386 : _q20 = do_valueize (valueize, _q20);
11036 : 14386 : tree _q21 = gimple_assign_rhs2 (_a1);
11037 : 14386 : _q21 = do_valueize (valueize, _q21);
11038 : 14386 : if (tree_swap_operands_p (_q20, _q21))
11039 : 765 : std::swap (_q20, _q21);
11040 : 14386 : switch (TREE_CODE (_p1))
11041 : : {
11042 : 13558 : case SSA_NAME:
11043 : 13558 : if (gimple *_d2 = get_def (valueize, _p1))
11044 : : {
11045 : 12228 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11046 : 8312 : switch (gimple_assign_rhs_code (_a2))
11047 : : {
11048 : 1423 : case BIT_IOR_EXPR:
11049 : 1423 : {
11050 : 1423 : tree _q50 = gimple_assign_rhs1 (_a2);
11051 : 1423 : _q50 = do_valueize (valueize, _q50);
11052 : 1423 : tree _q51 = gimple_assign_rhs2 (_a2);
11053 : 1423 : _q51 = do_valueize (valueize, _q51);
11054 : 1423 : if (tree_swap_operands_p (_q50, _q51))
11055 : 42 : std::swap (_q50, _q51);
11056 : 1423 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11057 : : {
11058 : 0 : switch (TREE_CODE (_q51))
11059 : : {
11060 : 0 : case SSA_NAME:
11061 : 0 : if (gimple *_d3 = get_def (valueize, _q51))
11062 : : {
11063 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11064 : 0 : switch (gimple_assign_rhs_code (_a3))
11065 : : {
11066 : 0 : case BIT_NOT_EXPR:
11067 : 0 : {
11068 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
11069 : 0 : _q70 = do_valueize (valueize, _q70);
11070 : 0 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
11071 : : {
11072 : 0 : {
11073 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11074 : 0 : if (gimple_simplify_16 (res_op, seq, valueize, type, captures))
11075 : 0 : return true;
11076 : : }
11077 : : }
11078 : : break;
11079 : : }
11080 : : default:;
11081 : : }
11082 : : }
11083 : : break;
11084 : : default:;
11085 : : }
11086 : : }
11087 : 1423 : switch (TREE_CODE (_q50))
11088 : : {
11089 : 1423 : case SSA_NAME:
11090 : 1423 : if (gimple *_d3 = get_def (valueize, _q50))
11091 : : {
11092 : 1231 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11093 : 583 : switch (gimple_assign_rhs_code (_a3))
11094 : : {
11095 : 279 : case BIT_NOT_EXPR:
11096 : 279 : {
11097 : 279 : tree _q60 = gimple_assign_rhs1 (_a3);
11098 : 279 : _q60 = do_valueize (valueize, _q60);
11099 : 279 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
11100 : : {
11101 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11102 : : {
11103 : 0 : {
11104 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11105 : 0 : if (gimple_simplify_16 (res_op, seq, valueize, type, captures))
11106 : 0 : return true;
11107 : : }
11108 : : }
11109 : : }
11110 : 279 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11111 : : {
11112 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11113 : : {
11114 : 0 : {
11115 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
11116 : 0 : if (gimple_simplify_16 (res_op, seq, valueize, type, captures))
11117 : 0 : return true;
11118 : : }
11119 : : }
11120 : : }
11121 : : break;
11122 : : }
11123 : : default:;
11124 : : }
11125 : : }
11126 : : break;
11127 : 1423 : default:;
11128 : : }
11129 : 1423 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11130 : : {
11131 : 0 : switch (TREE_CODE (_q51))
11132 : : {
11133 : 0 : case SSA_NAME:
11134 : 0 : if (gimple *_d3 = get_def (valueize, _q51))
11135 : : {
11136 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11137 : 0 : switch (gimple_assign_rhs_code (_a3))
11138 : : {
11139 : 0 : case BIT_NOT_EXPR:
11140 : 0 : {
11141 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
11142 : 0 : _q70 = do_valueize (valueize, _q70);
11143 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
11144 : : {
11145 : 0 : {
11146 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
11147 : 0 : if (gimple_simplify_16 (res_op, seq, valueize, type, captures))
11148 : 0 : return true;
11149 : : }
11150 : : }
11151 : : break;
11152 : : }
11153 : : default:;
11154 : : }
11155 : : }
11156 : : break;
11157 : : default:;
11158 : : }
11159 : : }
11160 : 14386 : break;
11161 : : }
11162 : : default:;
11163 : : }
11164 : : }
11165 : : break;
11166 : 14386 : default:;
11167 : : }
11168 : 14386 : switch (TREE_CODE (_q21))
11169 : : {
11170 : 13936 : case SSA_NAME:
11171 : 13936 : if (gimple *_d2 = get_def (valueize, _q21))
11172 : : {
11173 : 13263 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11174 : 6332 : switch (gimple_assign_rhs_code (_a2))
11175 : : {
11176 : 855 : case BIT_NOT_EXPR:
11177 : 855 : {
11178 : 855 : tree _q40 = gimple_assign_rhs1 (_a2);
11179 : 855 : _q40 = do_valueize (valueize, _q40);
11180 : 855 : switch (TREE_CODE (_p1))
11181 : : {
11182 : 855 : case SSA_NAME:
11183 : 855 : if (gimple *_d3 = get_def (valueize, _p1))
11184 : : {
11185 : 747 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11186 : 279 : switch (gimple_assign_rhs_code (_a3))
11187 : : {
11188 : 135 : case BIT_IOR_EXPR:
11189 : 135 : {
11190 : 135 : tree _q60 = gimple_assign_rhs1 (_a3);
11191 : 135 : _q60 = do_valueize (valueize, _q60);
11192 : 135 : tree _q61 = gimple_assign_rhs2 (_a3);
11193 : 135 : _q61 = do_valueize (valueize, _q61);
11194 : 135 : if (tree_swap_operands_p (_q60, _q61))
11195 : 0 : std::swap (_q60, _q61);
11196 : 135 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11197 : : {
11198 : 0 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
11199 : : {
11200 : 0 : {
11201 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11202 : 0 : if (gimple_simplify_16 (res_op, seq, valueize, type, captures))
11203 : 0 : return true;
11204 : : }
11205 : : }
11206 : : }
11207 : 14386 : break;
11208 : : }
11209 : : default:;
11210 : : }
11211 : : }
11212 : : break;
11213 : : default:;
11214 : : }
11215 : : break;
11216 : : }
11217 : : default:;
11218 : : }
11219 : : }
11220 : : break;
11221 : 14386 : default:;
11222 : : }
11223 : 14386 : switch (TREE_CODE (_q20))
11224 : : {
11225 : 14386 : case SSA_NAME:
11226 : 14386 : if (gimple *_d2 = get_def (valueize, _q20))
11227 : : {
11228 : 14116 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11229 : 12515 : switch (gimple_assign_rhs_code (_a2))
11230 : : {
11231 : 3989 : case BIT_NOT_EXPR:
11232 : 3989 : {
11233 : 3989 : tree _q30 = gimple_assign_rhs1 (_a2);
11234 : 3989 : _q30 = do_valueize (valueize, _q30);
11235 : 3989 : switch (TREE_CODE (_p1))
11236 : : {
11237 : 3989 : case SSA_NAME:
11238 : 3989 : if (gimple *_d3 = get_def (valueize, _p1))
11239 : : {
11240 : 3566 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11241 : 2693 : switch (gimple_assign_rhs_code (_a3))
11242 : : {
11243 : 405 : case BIT_IOR_EXPR:
11244 : 405 : {
11245 : 405 : tree _q60 = gimple_assign_rhs1 (_a3);
11246 : 405 : _q60 = do_valueize (valueize, _q60);
11247 : 405 : tree _q61 = gimple_assign_rhs2 (_a3);
11248 : 405 : _q61 = do_valueize (valueize, _q61);
11249 : 405 : if (tree_swap_operands_p (_q60, _q61))
11250 : 9 : std::swap (_q60, _q61);
11251 : 405 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
11252 : : {
11253 : 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
11254 : : {
11255 : 0 : {
11256 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q30 };
11257 : 0 : if (gimple_simplify_16 (res_op, seq, valueize, type, captures))
11258 : 0 : return true;
11259 : : }
11260 : : }
11261 : : }
11262 : 405 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11263 : : {
11264 : 270 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
11265 : : {
11266 : 0 : {
11267 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q30 };
11268 : 0 : if (gimple_simplify_16 (res_op, seq, valueize, type, captures))
11269 : 0 : return true;
11270 : : }
11271 : : }
11272 : 270 : switch (TREE_CODE (_q61))
11273 : : {
11274 : 270 : case SSA_NAME:
11275 : 270 : if (gimple *_d4 = get_def (valueize, _q61))
11276 : : {
11277 : 270 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
11278 : 0 : switch (gimple_assign_rhs_code (_a4))
11279 : : {
11280 : 0 : case BIT_NOT_EXPR:
11281 : 0 : {
11282 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
11283 : 0 : _q80 = do_valueize (valueize, _q80);
11284 : 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
11285 : : {
11286 : 0 : {
11287 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
11288 : 0 : if (gimple_simplify_17 (res_op, seq, valueize, type, captures))
11289 : 0 : return true;
11290 : : }
11291 : : }
11292 : : break;
11293 : : }
11294 : : default:;
11295 : : }
11296 : : }
11297 : : break;
11298 : : default:;
11299 : : }
11300 : : }
11301 : 405 : switch (TREE_CODE (_q60))
11302 : : {
11303 : 405 : case SSA_NAME:
11304 : 405 : if (gimple *_d4 = get_def (valueize, _q60))
11305 : : {
11306 : 324 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
11307 : 0 : switch (gimple_assign_rhs_code (_a4))
11308 : : {
11309 : 0 : case BIT_NOT_EXPR:
11310 : 0 : {
11311 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
11312 : 0 : _q70 = do_valueize (valueize, _q70);
11313 : 0 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
11314 : : {
11315 : 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
11316 : : {
11317 : 0 : {
11318 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
11319 : 0 : if (gimple_simplify_17 (res_op, seq, valueize, type, captures))
11320 : 0 : return true;
11321 : : }
11322 : : }
11323 : : }
11324 : : break;
11325 : : }
11326 : : default:;
11327 : : }
11328 : : }
11329 : : break;
11330 : : default:;
11331 : : }
11332 : 3989 : break;
11333 : : }
11334 : 144 : case BIT_XOR_EXPR:
11335 : 144 : {
11336 : 144 : tree _q60 = gimple_assign_rhs1 (_a3);
11337 : 144 : _q60 = do_valueize (valueize, _q60);
11338 : 144 : tree _q61 = gimple_assign_rhs2 (_a3);
11339 : 144 : _q61 = do_valueize (valueize, _q61);
11340 : 144 : if (tree_swap_operands_p (_q60, _q61))
11341 : 0 : std::swap (_q60, _q61);
11342 : 144 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11343 : : {
11344 : 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
11345 : : {
11346 : 0 : {
11347 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q21, _p1 };
11348 : 0 : if (gimple_simplify_18 (res_op, seq, valueize, type, captures))
11349 : 0 : return true;
11350 : : }
11351 : : }
11352 : : }
11353 : 3989 : break;
11354 : : }
11355 : : default:;
11356 : : }
11357 : : }
11358 : : break;
11359 : 3989 : default:;
11360 : : }
11361 : 3989 : {
11362 : 3989 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p1 };
11363 : 3989 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
11364 : 0 : return true;
11365 : : }
11366 : 3989 : break;
11367 : : }
11368 : : default:;
11369 : : }
11370 : : }
11371 : : break;
11372 : 14386 : default:;
11373 : : }
11374 : 14386 : switch (TREE_CODE (_q21))
11375 : : {
11376 : 13936 : case SSA_NAME:
11377 : 13936 : if (gimple *_d2 = get_def (valueize, _q21))
11378 : : {
11379 : 13263 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11380 : 6332 : switch (gimple_assign_rhs_code (_a2))
11381 : : {
11382 : 855 : case BIT_NOT_EXPR:
11383 : 855 : {
11384 : 855 : tree _q40 = gimple_assign_rhs1 (_a2);
11385 : 855 : _q40 = do_valueize (valueize, _q40);
11386 : 855 : switch (TREE_CODE (_p1))
11387 : : {
11388 : 855 : case SSA_NAME:
11389 : 855 : if (gimple *_d3 = get_def (valueize, _p1))
11390 : : {
11391 : 747 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11392 : 279 : switch (gimple_assign_rhs_code (_a3))
11393 : : {
11394 : 135 : case BIT_IOR_EXPR:
11395 : 135 : {
11396 : 135 : tree _q60 = gimple_assign_rhs1 (_a3);
11397 : 135 : _q60 = do_valueize (valueize, _q60);
11398 : 135 : tree _q61 = gimple_assign_rhs2 (_a3);
11399 : 135 : _q61 = do_valueize (valueize, _q61);
11400 : 135 : if (tree_swap_operands_p (_q60, _q61))
11401 : 0 : std::swap (_q60, _q61);
11402 : 135 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
11403 : : {
11404 : 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
11405 : : {
11406 : 0 : {
11407 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11408 : 0 : if (gimple_simplify_16 (res_op, seq, valueize, type, captures))
11409 : 0 : return true;
11410 : : }
11411 : : }
11412 : : }
11413 : 14386 : break;
11414 : : }
11415 : 144 : case BIT_XOR_EXPR:
11416 : 144 : {
11417 : 144 : tree _q60 = gimple_assign_rhs1 (_a3);
11418 : 144 : _q60 = do_valueize (valueize, _q60);
11419 : 144 : tree _q61 = gimple_assign_rhs2 (_a3);
11420 : 144 : _q61 = do_valueize (valueize, _q61);
11421 : 144 : if (tree_swap_operands_p (_q60, _q61))
11422 : 0 : std::swap (_q60, _q61);
11423 : 144 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
11424 : : {
11425 : 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
11426 : : {
11427 : 0 : {
11428 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q40, _q20, _p1 };
11429 : 0 : if (gimple_simplify_18 (res_op, seq, valueize, type, captures))
11430 : 0 : return true;
11431 : : }
11432 : : }
11433 : : }
11434 : 14386 : break;
11435 : : }
11436 : : default:;
11437 : : }
11438 : : }
11439 : : break;
11440 : : default:;
11441 : : }
11442 : : break;
11443 : : }
11444 : : default:;
11445 : : }
11446 : : }
11447 : : break;
11448 : 14386 : default:;
11449 : : }
11450 : 14386 : switch (TREE_CODE (_p1))
11451 : : {
11452 : 13558 : case SSA_NAME:
11453 : 13558 : if (gimple *_d2 = get_def (valueize, _p1))
11454 : : {
11455 : 12228 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11456 : 8312 : switch (gimple_assign_rhs_code (_a2))
11457 : : {
11458 : 964 : case BIT_AND_EXPR:
11459 : 964 : {
11460 : 964 : tree _q50 = gimple_assign_rhs1 (_a2);
11461 : 964 : _q50 = do_valueize (valueize, _q50);
11462 : 964 : tree _q51 = gimple_assign_rhs2 (_a2);
11463 : 964 : _q51 = do_valueize (valueize, _q51);
11464 : 964 : if (tree_swap_operands_p (_q50, _q51))
11465 : 27 : std::swap (_q50, _q51);
11466 : 964 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11467 : : {
11468 : 144 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11469 : : {
11470 : 0 : {
11471 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11472 : 0 : if (gimple_simplify_20 (res_op, seq, valueize, type, captures))
11473 : 0 : return true;
11474 : : }
11475 : : }
11476 : : }
11477 : 14378 : break;
11478 : : }
11479 : 1162 : case BIT_XOR_EXPR:
11480 : 1162 : {
11481 : 1162 : tree _q50 = gimple_assign_rhs1 (_a2);
11482 : 1162 : _q50 = do_valueize (valueize, _q50);
11483 : 1162 : tree _q51 = gimple_assign_rhs2 (_a2);
11484 : 1162 : _q51 = do_valueize (valueize, _q51);
11485 : 1162 : if (tree_swap_operands_p (_q50, _q51))
11486 : 10 : std::swap (_q50, _q51);
11487 : 1162 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11488 : : {
11489 : 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11490 : : {
11491 : 8 : {
11492 : 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11493 : 8 : if (gimple_simplify_21 (res_op, seq, valueize, type, captures))
11494 : 8 : return true;
11495 : : }
11496 : : }
11497 : : }
11498 : 14378 : break;
11499 : : }
11500 : : default:;
11501 : : }
11502 : : }
11503 : : break;
11504 : 14378 : default:;
11505 : : }
11506 : 14378 : switch (TREE_CODE (_q21))
11507 : : {
11508 : 13928 : case SSA_NAME:
11509 : 13928 : if (gimple *_d2 = get_def (valueize, _q21))
11510 : : {
11511 : 13255 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11512 : 6332 : switch (gimple_assign_rhs_code (_a2))
11513 : : {
11514 : 855 : case BIT_NOT_EXPR:
11515 : 855 : {
11516 : 855 : tree _q40 = gimple_assign_rhs1 (_a2);
11517 : 855 : _q40 = do_valueize (valueize, _q40);
11518 : 855 : switch (TREE_CODE (_p1))
11519 : : {
11520 : 855 : case SSA_NAME:
11521 : 855 : if (gimple *_d3 = get_def (valueize, _p1))
11522 : : {
11523 : 747 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11524 : 279 : switch (gimple_assign_rhs_code (_a3))
11525 : : {
11526 : 135 : case BIT_IOR_EXPR:
11527 : 135 : {
11528 : 135 : tree _q60 = gimple_assign_rhs1 (_a3);
11529 : 135 : _q60 = do_valueize (valueize, _q60);
11530 : 135 : tree _q61 = gimple_assign_rhs2 (_a3);
11531 : 135 : _q61 = do_valueize (valueize, _q61);
11532 : 135 : if (tree_swap_operands_p (_q60, _q61))
11533 : 0 : std::swap (_q60, _q61);
11534 : 135 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
11535 : : {
11536 : 0 : switch (TREE_CODE (_q61))
11537 : : {
11538 : 0 : case SSA_NAME:
11539 : 0 : if (gimple *_d4 = get_def (valueize, _q61))
11540 : : {
11541 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
11542 : 0 : switch (gimple_assign_rhs_code (_a4))
11543 : : {
11544 : 0 : case BIT_NOT_EXPR:
11545 : 0 : {
11546 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
11547 : 0 : _q80 = do_valueize (valueize, _q80);
11548 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
11549 : : {
11550 : 0 : {
11551 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
11552 : 0 : if (gimple_simplify_17 (res_op, seq, valueize, type, captures))
11553 : 0 : return true;
11554 : : }
11555 : : }
11556 : : break;
11557 : : }
11558 : : default:;
11559 : : }
11560 : : }
11561 : : break;
11562 : : default:;
11563 : : }
11564 : : }
11565 : 135 : switch (TREE_CODE (_q60))
11566 : : {
11567 : 135 : case SSA_NAME:
11568 : 135 : if (gimple *_d4 = get_def (valueize, _q60))
11569 : : {
11570 : 108 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
11571 : 0 : switch (gimple_assign_rhs_code (_a4))
11572 : : {
11573 : 0 : case BIT_NOT_EXPR:
11574 : 0 : {
11575 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
11576 : 0 : _q70 = do_valueize (valueize, _q70);
11577 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
11578 : : {
11579 : 0 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
11580 : : {
11581 : 0 : {
11582 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
11583 : 0 : if (gimple_simplify_17 (res_op, seq, valueize, type, captures))
11584 : 0 : return true;
11585 : : }
11586 : : }
11587 : : }
11588 : : break;
11589 : : }
11590 : : default:;
11591 : : }
11592 : : }
11593 : : break;
11594 : : default:;
11595 : : }
11596 : 14378 : break;
11597 : : }
11598 : : default:;
11599 : : }
11600 : : }
11601 : : break;
11602 : : default:;
11603 : : }
11604 : : break;
11605 : : }
11606 : : default:;
11607 : : }
11608 : : }
11609 : : break;
11610 : 14378 : default:;
11611 : : }
11612 : 14378 : switch (TREE_CODE (_p1))
11613 : : {
11614 : 13550 : case SSA_NAME:
11615 : 13550 : if (gimple *_d2 = get_def (valueize, _p1))
11616 : : {
11617 : 12220 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11618 : 8304 : switch (gimple_assign_rhs_code (_a2))
11619 : : {
11620 : 225 : CASE_CONVERT:
11621 : 225 : {
11622 : 225 : tree _q50 = gimple_assign_rhs1 (_a2);
11623 : 225 : _q50 = do_valueize (valueize, _q50);
11624 : 225 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
11625 : : {
11626 : 0 : {
11627 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q20 };
11628 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
11629 : 0 : return true;
11630 : : }
11631 : : }
11632 : 225 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
11633 : : {
11634 : 0 : {
11635 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q21 };
11636 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
11637 : 0 : return true;
11638 : : }
11639 : : }
11640 : : break;
11641 : : }
11642 : : default:;
11643 : : }
11644 : : }
11645 : : break;
11646 : 14378 : default:;
11647 : : }
11648 : 14378 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q20, 0))
11649 : : {
11650 : 73 : {
11651 : 73 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q20 };
11652 : 73 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
11653 : 1 : return true;
11654 : : }
11655 : : }
11656 : 14377 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
11657 : : {
11658 : 72 : {
11659 : 72 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q21 };
11660 : 72 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
11661 : 0 : return true;
11662 : : }
11663 : : }
11664 : 14377 : {
11665 : 14377 : tree _q20_pops[1];
11666 : 14377 : if (gimple_nop_convert (_q20, _q20_pops, valueize))
11667 : : {
11668 : 26 : tree _q30 = _q20_pops[0];
11669 : 26 : switch (TREE_CODE (_q30))
11670 : : {
11671 : 26 : case SSA_NAME:
11672 : 26 : if (gimple *_d2 = get_def (valueize, _q30))
11673 : : {
11674 : 26 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11675 : 14 : switch (gimple_assign_rhs_code (_a2))
11676 : : {
11677 : 0 : case BIT_NOT_EXPR:
11678 : 0 : {
11679 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
11680 : 0 : _q40 = do_valueize (valueize, _q40);
11681 : 0 : {
11682 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q21, _p1 };
11683 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
11684 : 0 : return true;
11685 : : }
11686 : 0 : break;
11687 : : }
11688 : : default:;
11689 : : }
11690 : : }
11691 : : break;
11692 : : default:;
11693 : : }
11694 : : }
11695 : : }
11696 : 14377 : switch (TREE_CODE (_q21))
11697 : : {
11698 : 13927 : case SSA_NAME:
11699 : 13927 : if (gimple *_d2 = get_def (valueize, _q21))
11700 : : {
11701 : 13254 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11702 : 6331 : switch (gimple_assign_rhs_code (_a2))
11703 : : {
11704 : 855 : case BIT_NOT_EXPR:
11705 : 855 : {
11706 : 855 : tree _q40 = gimple_assign_rhs1 (_a2);
11707 : 855 : _q40 = do_valueize (valueize, _q40);
11708 : 855 : {
11709 : 855 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q20, _p1 };
11710 : 855 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
11711 : 0 : return true;
11712 : : }
11713 : 855 : break;
11714 : : }
11715 : : default:;
11716 : : }
11717 : : }
11718 : : break;
11719 : 14377 : default:;
11720 : : }
11721 : 14377 : {
11722 : 14377 : tree _q21_pops[1];
11723 : 14377 : if (gimple_nop_convert (_q21, _q21_pops, valueize))
11724 : : {
11725 : 15 : tree _q40 = _q21_pops[0];
11726 : 15 : switch (TREE_CODE (_q40))
11727 : : {
11728 : 3 : case SSA_NAME:
11729 : 3 : if (gimple *_d2 = get_def (valueize, _q40))
11730 : : {
11731 : 3 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11732 : 3 : switch (gimple_assign_rhs_code (_a2))
11733 : : {
11734 : 0 : case BIT_NOT_EXPR:
11735 : 0 : {
11736 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
11737 : 0 : _q50 = do_valueize (valueize, _q50);
11738 : 0 : {
11739 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q20, _p1 };
11740 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
11741 : 0 : return true;
11742 : : }
11743 : 0 : break;
11744 : : }
11745 : : default:;
11746 : : }
11747 : : }
11748 : : break;
11749 : : default:;
11750 : : }
11751 : : }
11752 : : }
11753 : 14377 : break;
11754 : : }
11755 : 43798 : case BIT_XOR_EXPR:
11756 : 43798 : {
11757 : 43798 : tree _q20 = gimple_assign_rhs1 (_a1);
11758 : 43798 : _q20 = do_valueize (valueize, _q20);
11759 : 43798 : tree _q21 = gimple_assign_rhs2 (_a1);
11760 : 43798 : _q21 = do_valueize (valueize, _q21);
11761 : 43798 : if (tree_swap_operands_p (_q20, _q21))
11762 : 1987 : std::swap (_q20, _q21);
11763 : 43798 : switch (TREE_CODE (_p1))
11764 : : {
11765 : 40132 : case SSA_NAME:
11766 : 40132 : if (gimple *_d2 = get_def (valueize, _p1))
11767 : : {
11768 : 38471 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11769 : 45590 : switch (gimple_assign_rhs_code (_a2))
11770 : : {
11771 : 296 : case BIT_IOR_EXPR:
11772 : 296 : {
11773 : 296 : tree _q50 = gimple_assign_rhs1 (_a2);
11774 : 296 : _q50 = do_valueize (valueize, _q50);
11775 : 296 : tree _q51 = gimple_assign_rhs2 (_a2);
11776 : 296 : _q51 = do_valueize (valueize, _q51);
11777 : 296 : if (tree_swap_operands_p (_q50, _q51))
11778 : 107 : std::swap (_q50, _q51);
11779 : 296 : switch (TREE_CODE (_q50))
11780 : : {
11781 : 296 : case SSA_NAME:
11782 : 296 : if (gimple *_d3 = get_def (valueize, _q50))
11783 : : {
11784 : 269 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11785 : 249 : switch (gimple_assign_rhs_code (_a3))
11786 : : {
11787 : 0 : case BIT_NOT_EXPR:
11788 : 0 : {
11789 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
11790 : 0 : _q60 = do_valueize (valueize, _q60);
11791 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11792 : : {
11793 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11794 : : {
11795 : 0 : {
11796 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q20, _q21, _p0 };
11797 : 0 : if (gimple_simplify_18 (res_op, seq, valueize, type, captures))
11798 : 0 : return true;
11799 : : }
11800 : : }
11801 : : }
11802 : : break;
11803 : : }
11804 : : default:;
11805 : : }
11806 : : }
11807 : : break;
11808 : 296 : default:;
11809 : : }
11810 : 296 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11811 : : {
11812 : 0 : switch (TREE_CODE (_q51))
11813 : : {
11814 : 0 : case SSA_NAME:
11815 : 0 : if (gimple *_d3 = get_def (valueize, _q51))
11816 : : {
11817 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11818 : 0 : switch (gimple_assign_rhs_code (_a3))
11819 : : {
11820 : 0 : case BIT_NOT_EXPR:
11821 : 0 : {
11822 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
11823 : 0 : _q70 = do_valueize (valueize, _q70);
11824 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
11825 : : {
11826 : 0 : {
11827 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q20, _q21, _p0 };
11828 : 0 : if (gimple_simplify_18 (res_op, seq, valueize, type, captures))
11829 : 0 : return true;
11830 : : }
11831 : : }
11832 : : break;
11833 : : }
11834 : : default:;
11835 : : }
11836 : : }
11837 : : break;
11838 : : default:;
11839 : : }
11840 : : }
11841 : 296 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11842 : : {
11843 : 23 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11844 : : {
11845 : 8 : {
11846 : 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11847 : 8 : if (gimple_simplify_21 (res_op, seq, valueize, type, captures))
11848 : 8 : return true;
11849 : : }
11850 : : }
11851 : : }
11852 : 43782 : break;
11853 : : }
11854 : 1942 : case BIT_AND_EXPR:
11855 : 1942 : {
11856 : 1942 : tree _q50 = gimple_assign_rhs1 (_a2);
11857 : 1942 : _q50 = do_valueize (valueize, _q50);
11858 : 1942 : tree _q51 = gimple_assign_rhs2 (_a2);
11859 : 1942 : _q51 = do_valueize (valueize, _q51);
11860 : 1942 : if (tree_swap_operands_p (_q50, _q51))
11861 : 28 : std::swap (_q50, _q51);
11862 : 1942 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11863 : : {
11864 : 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11865 : : {
11866 : 8 : {
11867 : 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11868 : 8 : if (gimple_simplify_23 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
11869 : 8 : return true;
11870 : : }
11871 : : }
11872 : : }
11873 : 43782 : break;
11874 : : }
11875 : 1971 : CASE_CONVERT:
11876 : 1971 : {
11877 : 1971 : tree _q50 = gimple_assign_rhs1 (_a2);
11878 : 1971 : _q50 = do_valueize (valueize, _q50);
11879 : 1971 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
11880 : : {
11881 : 0 : {
11882 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
11883 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
11884 : 0 : return true;
11885 : : }
11886 : : }
11887 : 1971 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
11888 : : {
11889 : 0 : {
11890 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q20 };
11891 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
11892 : 0 : return true;
11893 : : }
11894 : : }
11895 : : break;
11896 : : }
11897 : : default:;
11898 : : }
11899 : : }
11900 : : break;
11901 : 43782 : default:;
11902 : : }
11903 : 43782 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
11904 : : {
11905 : 151 : {
11906 : 151 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
11907 : 151 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
11908 : 151 : return true;
11909 : : }
11910 : : }
11911 : 43631 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q20, 0))
11912 : : {
11913 : 23 : {
11914 : 23 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q20 };
11915 : 23 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
11916 : 23 : return true;
11917 : : }
11918 : : }
11919 : 679089 : break;
11920 : : }
11921 : 32817 : case BIT_AND_EXPR:
11922 : 32817 : {
11923 : 32817 : tree _q20 = gimple_assign_rhs1 (_a1);
11924 : 32817 : _q20 = do_valueize (valueize, _q20);
11925 : 32817 : tree _q21 = gimple_assign_rhs2 (_a1);
11926 : 32817 : _q21 = do_valueize (valueize, _q21);
11927 : 32817 : if (tree_swap_operands_p (_q20, _q21))
11928 : 1264 : std::swap (_q20, _q21);
11929 : 32817 : switch (TREE_CODE (_p1))
11930 : : {
11931 : 25088 : case SSA_NAME:
11932 : 25088 : if (gimple *_d2 = get_def (valueize, _p1))
11933 : : {
11934 : 21892 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11935 : 19531 : switch (gimple_assign_rhs_code (_a2))
11936 : : {
11937 : 1416 : case BIT_IOR_EXPR:
11938 : 1416 : {
11939 : 1416 : tree _q50 = gimple_assign_rhs1 (_a2);
11940 : 1416 : _q50 = do_valueize (valueize, _q50);
11941 : 1416 : tree _q51 = gimple_assign_rhs2 (_a2);
11942 : 1416 : _q51 = do_valueize (valueize, _q51);
11943 : 1416 : if (tree_swap_operands_p (_q50, _q51))
11944 : 27 : std::swap (_q50, _q51);
11945 : 1416 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11946 : : {
11947 : 404 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11948 : : {
11949 : 8 : {
11950 : 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11951 : 8 : if (gimple_simplify_20 (res_op, seq, valueize, type, captures))
11952 : 8 : return true;
11953 : : }
11954 : : }
11955 : : }
11956 : 32799 : break;
11957 : : }
11958 : 3990 : case BIT_XOR_EXPR:
11959 : 3990 : {
11960 : 3990 : tree _q50 = gimple_assign_rhs1 (_a2);
11961 : 3990 : _q50 = do_valueize (valueize, _q50);
11962 : 3990 : tree _q51 = gimple_assign_rhs2 (_a2);
11963 : 3990 : _q51 = do_valueize (valueize, _q51);
11964 : 3990 : if (tree_swap_operands_p (_q50, _q51))
11965 : 285 : std::swap (_q50, _q51);
11966 : 3990 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11967 : : {
11968 : 10 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11969 : : {
11970 : 10 : {
11971 : 10 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11972 : 10 : if (gimple_simplify_23 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
11973 : 10 : return true;
11974 : : }
11975 : : }
11976 : : }
11977 : 32799 : break;
11978 : : }
11979 : : default:;
11980 : : }
11981 : : }
11982 : : break;
11983 : 32799 : default:;
11984 : : }
11985 : 32799 : switch (TREE_CODE (_q21))
11986 : : {
11987 : 13994 : case INTEGER_CST:
11988 : 13994 : {
11989 : 13994 : switch (TREE_CODE (_p1))
11990 : : {
11991 : 6597 : case SSA_NAME:
11992 : 6597 : if (gimple *_d2 = get_def (valueize, _p1))
11993 : : {
11994 : 5469 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11995 : 6780 : switch (gimple_assign_rhs_code (_a2))
11996 : : {
11997 : 272 : CASE_CONVERT:
11998 : 272 : {
11999 : 272 : tree _q50 = gimple_assign_rhs1 (_a2);
12000 : 272 : _q50 = do_valueize (valueize, _q50);
12001 : 272 : switch (TREE_CODE (_q50))
12002 : : {
12003 : 272 : case SSA_NAME:
12004 : 272 : if (gimple *_d3 = get_def (valueize, _q50))
12005 : : {
12006 : 254 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12007 : 309 : switch (gimple_assign_rhs_code (_a3))
12008 : : {
12009 : 0 : case BIT_AND_EXPR:
12010 : 0 : {
12011 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
12012 : 0 : _q60 = do_valueize (valueize, _q60);
12013 : 0 : tree _q61 = gimple_assign_rhs2 (_a3);
12014 : 0 : _q61 = do_valueize (valueize, _q61);
12015 : 0 : if (tree_swap_operands_p (_q60, _q61))
12016 : 0 : std::swap (_q60, _q61);
12017 : 0 : switch (TREE_CODE (_q61))
12018 : : {
12019 : 0 : case INTEGER_CST:
12020 : 0 : {
12021 : 0 : {
12022 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q60, _q61 };
12023 : 0 : if (gimple_simplify_25 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
12024 : 0 : return true;
12025 : : }
12026 : 0 : break;
12027 : : }
12028 : : default:;
12029 : : }
12030 : 679089 : break;
12031 : : }
12032 : : default:;
12033 : : }
12034 : : }
12035 : : break;
12036 : : default:;
12037 : : }
12038 : : break;
12039 : : }
12040 : 499 : case BIT_AND_EXPR:
12041 : 499 : {
12042 : 499 : tree _q50 = gimple_assign_rhs1 (_a2);
12043 : 499 : _q50 = do_valueize (valueize, _q50);
12044 : 499 : tree _q51 = gimple_assign_rhs2 (_a2);
12045 : 499 : _q51 = do_valueize (valueize, _q51);
12046 : 499 : if (tree_swap_operands_p (_q50, _q51))
12047 : 0 : std::swap (_q50, _q51);
12048 : 499 : switch (TREE_CODE (_q51))
12049 : : {
12050 : 499 : case INTEGER_CST:
12051 : 499 : {
12052 : 499 : {
12053 : 499 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
12054 : 499 : if (gimple_simplify_25 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
12055 : 96 : return true;
12056 : : }
12057 : 403 : break;
12058 : : }
12059 : : default:;
12060 : : }
12061 : 679089 : break;
12062 : : }
12063 : : default:;
12064 : : }
12065 : : }
12066 : : break;
12067 : : default:;
12068 : : }
12069 : : break;
12070 : : }
12071 : : default:;
12072 : : }
12073 : 679089 : break;
12074 : : }
12075 : 63120 : CASE_CONVERT:
12076 : 63120 : {
12077 : 63120 : tree _q20 = gimple_assign_rhs1 (_a1);
12078 : 63120 : _q20 = do_valueize (valueize, _q20);
12079 : 63120 : switch (TREE_CODE (_q20))
12080 : : {
12081 : 63078 : case SSA_NAME:
12082 : 63078 : if (gimple *_d2 = get_def (valueize, _q20))
12083 : : {
12084 : 60753 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12085 : 70882 : switch (gimple_assign_rhs_code (_a2))
12086 : : {
12087 : 3085 : case BIT_AND_EXPR:
12088 : 3085 : {
12089 : 3085 : tree _q30 = gimple_assign_rhs1 (_a2);
12090 : 3085 : _q30 = do_valueize (valueize, _q30);
12091 : 3085 : tree _q31 = gimple_assign_rhs2 (_a2);
12092 : 3085 : _q31 = do_valueize (valueize, _q31);
12093 : 3085 : if (tree_swap_operands_p (_q30, _q31))
12094 : 15 : std::swap (_q30, _q31);
12095 : 3085 : switch (TREE_CODE (_q31))
12096 : : {
12097 : 2737 : case INTEGER_CST:
12098 : 2737 : {
12099 : 2737 : switch (TREE_CODE (_p1))
12100 : : {
12101 : 2696 : case SSA_NAME:
12102 : 2696 : if (gimple *_d3 = get_def (valueize, _p1))
12103 : : {
12104 : 2687 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12105 : 3148 : switch (gimple_assign_rhs_code (_a3))
12106 : : {
12107 : 14 : CASE_CONVERT:
12108 : 14 : {
12109 : 14 : tree _q60 = gimple_assign_rhs1 (_a3);
12110 : 14 : _q60 = do_valueize (valueize, _q60);
12111 : 14 : switch (TREE_CODE (_q60))
12112 : : {
12113 : 14 : case SSA_NAME:
12114 : 14 : if (gimple *_d4 = get_def (valueize, _q60))
12115 : : {
12116 : 14 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
12117 : 28 : switch (gimple_assign_rhs_code (_a4))
12118 : : {
12119 : 0 : case BIT_AND_EXPR:
12120 : 0 : {
12121 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
12122 : 0 : _q70 = do_valueize (valueize, _q70);
12123 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
12124 : 0 : _q71 = do_valueize (valueize, _q71);
12125 : 0 : if (tree_swap_operands_p (_q70, _q71))
12126 : 0 : std::swap (_q70, _q71);
12127 : 0 : switch (TREE_CODE (_q71))
12128 : : {
12129 : 0 : case INTEGER_CST:
12130 : 0 : {
12131 : 0 : {
12132 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q60, _q70, _q71 };
12133 : 0 : if (gimple_simplify_25 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
12134 : 0 : return true;
12135 : : }
12136 : 0 : break;
12137 : : }
12138 : : default:;
12139 : : }
12140 : 63120 : break;
12141 : : }
12142 : : default:;
12143 : : }
12144 : : }
12145 : : break;
12146 : : default:;
12147 : : }
12148 : : break;
12149 : : }
12150 : 0 : case BIT_AND_EXPR:
12151 : 0 : {
12152 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
12153 : 0 : _q60 = do_valueize (valueize, _q60);
12154 : 0 : tree _q61 = gimple_assign_rhs2 (_a3);
12155 : 0 : _q61 = do_valueize (valueize, _q61);
12156 : 0 : if (tree_swap_operands_p (_q60, _q61))
12157 : 0 : std::swap (_q60, _q61);
12158 : 0 : switch (TREE_CODE (_q61))
12159 : : {
12160 : 0 : case INTEGER_CST:
12161 : 0 : {
12162 : 0 : {
12163 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1, _q60, _q61 };
12164 : 0 : if (gimple_simplify_25 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
12165 : 0 : return true;
12166 : : }
12167 : 0 : break;
12168 : : }
12169 : : default:;
12170 : : }
12171 : 63120 : break;
12172 : : }
12173 : : default:;
12174 : : }
12175 : : }
12176 : : break;
12177 : : default:;
12178 : : }
12179 : : break;
12180 : : }
12181 : : default:;
12182 : : }
12183 : 63120 : break;
12184 : : }
12185 : 459 : case BIT_IOR_EXPR:
12186 : 459 : {
12187 : 459 : tree _q30 = gimple_assign_rhs1 (_a2);
12188 : 459 : _q30 = do_valueize (valueize, _q30);
12189 : 459 : tree _q31 = gimple_assign_rhs2 (_a2);
12190 : 459 : _q31 = do_valueize (valueize, _q31);
12191 : 459 : if (tree_swap_operands_p (_q30, _q31))
12192 : 25 : std::swap (_q30, _q31);
12193 : 459 : switch (TREE_CODE (_p1))
12194 : : {
12195 : 334 : case SSA_NAME:
12196 : 334 : if (gimple *_d3 = get_def (valueize, _p1))
12197 : : {
12198 : 334 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12199 : 366 : switch (gimple_assign_rhs_code (_a3))
12200 : : {
12201 : 12 : CASE_CONVERT:
12202 : 12 : {
12203 : 12 : tree _q60 = gimple_assign_rhs1 (_a3);
12204 : 12 : _q60 = do_valueize (valueize, _q60);
12205 : 12 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q30, 0))
12206 : : {
12207 : 0 : {
12208 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q30 };
12209 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12210 : 0 : return true;
12211 : : }
12212 : : }
12213 : 12 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
12214 : : {
12215 : 0 : {
12216 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q31 };
12217 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12218 : 0 : return true;
12219 : : }
12220 : : }
12221 : : break;
12222 : : }
12223 : : default:;
12224 : : }
12225 : : }
12226 : : break;
12227 : 459 : default:;
12228 : : }
12229 : 459 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q30, 0))
12230 : : {
12231 : 0 : {
12232 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q30 };
12233 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12234 : 0 : return true;
12235 : : }
12236 : : }
12237 : 459 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
12238 : : {
12239 : 0 : {
12240 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q31 };
12241 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12242 : 0 : return true;
12243 : : }
12244 : : }
12245 : 63120 : break;
12246 : : }
12247 : : default:;
12248 : : }
12249 : : }
12250 : : break;
12251 : 63120 : default:;
12252 : : }
12253 : 63120 : switch (TREE_CODE (_p1))
12254 : : {
12255 : 52257 : case SSA_NAME:
12256 : 52257 : if (gimple *_d2 = get_def (valueize, _p1))
12257 : : {
12258 : 50844 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12259 : 48109 : switch (gimple_assign_rhs_code (_a2))
12260 : : {
12261 : 17837 : CASE_CONVERT:
12262 : 17837 : {
12263 : 17837 : tree _q40 = gimple_assign_rhs1 (_a2);
12264 : 17837 : _q40 = do_valueize (valueize, _q40);
12265 : 17837 : switch (TREE_CODE (_q40))
12266 : : {
12267 : 17819 : case SSA_NAME:
12268 : 17819 : if (gimple *_d3 = get_def (valueize, _q40))
12269 : : {
12270 : 17459 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12271 : 17098 : switch (gimple_assign_rhs_code (_a3))
12272 : : {
12273 : 99 : case BIT_IOR_EXPR:
12274 : 99 : {
12275 : 99 : tree _q50 = gimple_assign_rhs1 (_a3);
12276 : 99 : _q50 = do_valueize (valueize, _q50);
12277 : 99 : tree _q51 = gimple_assign_rhs2 (_a3);
12278 : 99 : _q51 = do_valueize (valueize, _q51);
12279 : 99 : if (tree_swap_operands_p (_q50, _q51))
12280 : 0 : std::swap (_q50, _q51);
12281 : 99 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
12282 : : {
12283 : 0 : {
12284 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
12285 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12286 : 0 : return true;
12287 : : }
12288 : : }
12289 : 99 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
12290 : : {
12291 : 0 : {
12292 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q51, _q50, _q20 };
12293 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12294 : 0 : return true;
12295 : : }
12296 : : }
12297 : 679089 : break;
12298 : : }
12299 : : default:;
12300 : : }
12301 : : }
12302 : : break;
12303 : : default:;
12304 : : }
12305 : : break;
12306 : : }
12307 : 155 : case BIT_IOR_EXPR:
12308 : 155 : {
12309 : 155 : tree _q40 = gimple_assign_rhs1 (_a2);
12310 : 155 : _q40 = do_valueize (valueize, _q40);
12311 : 155 : tree _q41 = gimple_assign_rhs2 (_a2);
12312 : 155 : _q41 = do_valueize (valueize, _q41);
12313 : 155 : if (tree_swap_operands_p (_q40, _q41))
12314 : 21 : std::swap (_q40, _q41);
12315 : 155 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _q20, 0))
12316 : : {
12317 : 0 : {
12318 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q20 };
12319 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12320 : 0 : return true;
12321 : : }
12322 : : }
12323 : 155 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _q20, 0))
12324 : : {
12325 : 0 : {
12326 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q20 };
12327 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12328 : 0 : return true;
12329 : : }
12330 : : }
12331 : 679089 : break;
12332 : : }
12333 : : default:;
12334 : : }
12335 : : }
12336 : : break;
12337 : : default:;
12338 : : }
12339 : : break;
12340 : : }
12341 : : default:;
12342 : : }
12343 : : }
12344 : : break;
12345 : 679089 : default:;
12346 : : }
12347 : 679089 : switch (TREE_CODE (_p1))
12348 : : {
12349 : 540081 : case SSA_NAME:
12350 : 540081 : if (gimple *_d1 = get_def (valueize, _p1))
12351 : : {
12352 : 442420 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12353 : 494046 : switch (gimple_assign_rhs_code (_a1))
12354 : : {
12355 : 40766 : CASE_CONVERT:
12356 : 40766 : {
12357 : 40766 : tree _q30 = gimple_assign_rhs1 (_a1);
12358 : 40766 : _q30 = do_valueize (valueize, _q30);
12359 : 40766 : switch (TREE_CODE (_q30))
12360 : : {
12361 : 40748 : case SSA_NAME:
12362 : 40748 : if (gimple *_d2 = get_def (valueize, _q30))
12363 : : {
12364 : 39274 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12365 : 38192 : switch (gimple_assign_rhs_code (_a2))
12366 : : {
12367 : 376 : case BIT_IOR_EXPR:
12368 : 376 : {
12369 : 376 : tree _q40 = gimple_assign_rhs1 (_a2);
12370 : 376 : _q40 = do_valueize (valueize, _q40);
12371 : 376 : tree _q41 = gimple_assign_rhs2 (_a2);
12372 : 376 : _q41 = do_valueize (valueize, _q41);
12373 : 376 : if (tree_swap_operands_p (_q40, _q41))
12374 : 28 : std::swap (_q40, _q41);
12375 : 376 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _p0, 0))
12376 : : {
12377 : 0 : {
12378 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _p0 };
12379 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12380 : 0 : return true;
12381 : : }
12382 : : }
12383 : 376 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
12384 : : {
12385 : 0 : {
12386 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _p0 };
12387 : 0 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12388 : 0 : return true;
12389 : : }
12390 : : }
12391 : 679076 : break;
12392 : : }
12393 : : default:;
12394 : : }
12395 : : }
12396 : : break;
12397 : : default:;
12398 : : }
12399 : : break;
12400 : : }
12401 : 6328 : case BIT_IOR_EXPR:
12402 : 6328 : {
12403 : 6328 : tree _q30 = gimple_assign_rhs1 (_a1);
12404 : 6328 : _q30 = do_valueize (valueize, _q30);
12405 : 6328 : tree _q31 = gimple_assign_rhs2 (_a1);
12406 : 6328 : _q31 = do_valueize (valueize, _q31);
12407 : 6328 : if (tree_swap_operands_p (_q30, _q31))
12408 : 385 : std::swap (_q30, _q31);
12409 : 6328 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || operand_equal_p (_q30, _p0, 0))
12410 : : {
12411 : 2 : {
12412 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
12413 : 2 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12414 : 2 : return true;
12415 : : }
12416 : : }
12417 : 6326 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
12418 : : {
12419 : 11 : {
12420 : 11 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _p0 };
12421 : 11 : if (gimple_simplify_22 (res_op, seq, valueize, type, captures))
12422 : 11 : return true;
12423 : : }
12424 : : }
12425 : 679076 : break;
12426 : : }
12427 : : default:;
12428 : : }
12429 : : }
12430 : : break;
12431 : 679076 : default:;
12432 : : }
12433 : 679076 : {
12434 : 679076 : tree _p0_pops[1];
12435 : 679076 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
12436 : : {
12437 : 11338 : tree _q20 = _p0_pops[0];
12438 : 11338 : switch (TREE_CODE (_q20))
12439 : : {
12440 : 11296 : case SSA_NAME:
12441 : 11296 : if (gimple *_d1 = get_def (valueize, _q20))
12442 : : {
12443 : 10919 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12444 : 8686 : switch (gimple_assign_rhs_code (_a1))
12445 : : {
12446 : 115 : case BIT_IOR_EXPR:
12447 : 115 : {
12448 : 115 : tree _q30 = gimple_assign_rhs1 (_a1);
12449 : 115 : _q30 = do_valueize (valueize, _q30);
12450 : 115 : tree _q31 = gimple_assign_rhs2 (_a1);
12451 : 115 : _q31 = do_valueize (valueize, _q31);
12452 : 115 : if (tree_swap_operands_p (_q30, _q31))
12453 : 6 : std::swap (_q30, _q31);
12454 : 115 : {
12455 : 115 : tree _q30_pops[1];
12456 : 115 : if (gimple_nop_convert (_q30, _q30_pops, valueize))
12457 : : {
12458 : 13 : tree _q40 = _q30_pops[0];
12459 : 13 : switch (TREE_CODE (_q40))
12460 : : {
12461 : 13 : case SSA_NAME:
12462 : 13 : if (gimple *_d2 = get_def (valueize, _q40))
12463 : : {
12464 : 13 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12465 : 1 : switch (gimple_assign_rhs_code (_a2))
12466 : : {
12467 : 0 : case BIT_NOT_EXPR:
12468 : 0 : {
12469 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
12470 : 0 : _q50 = do_valueize (valueize, _q50);
12471 : 0 : {
12472 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q31, _p1 };
12473 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12474 : 0 : return true;
12475 : : }
12476 : 0 : break;
12477 : : }
12478 : : default:;
12479 : : }
12480 : : }
12481 : : break;
12482 : : default:;
12483 : : }
12484 : : }
12485 : : }
12486 : 115 : {
12487 : 115 : tree _q31_pops[1];
12488 : 115 : if (gimple_nop_convert (_q31, _q31_pops, valueize))
12489 : : {
12490 : 12 : tree _q50 = _q31_pops[0];
12491 : 12 : switch (TREE_CODE (_q50))
12492 : : {
12493 : 0 : case SSA_NAME:
12494 : 0 : if (gimple *_d2 = get_def (valueize, _q50))
12495 : : {
12496 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12497 : 0 : switch (gimple_assign_rhs_code (_a2))
12498 : : {
12499 : 0 : case BIT_NOT_EXPR:
12500 : 0 : {
12501 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
12502 : 0 : _q60 = do_valueize (valueize, _q60);
12503 : 0 : {
12504 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q60, _q30, _p1 };
12505 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12506 : 0 : return true;
12507 : : }
12508 : 0 : break;
12509 : : }
12510 : : default:;
12511 : : }
12512 : : }
12513 : : break;
12514 : : default:;
12515 : : }
12516 : : }
12517 : : }
12518 : 115 : switch (TREE_CODE (_q30))
12519 : : {
12520 : 115 : case SSA_NAME:
12521 : 115 : if (gimple *_d2 = get_def (valueize, _q30))
12522 : : {
12523 : 115 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12524 : 115 : switch (gimple_assign_rhs_code (_a2))
12525 : : {
12526 : 0 : case BIT_NOT_EXPR:
12527 : 0 : {
12528 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
12529 : 0 : _q40 = do_valueize (valueize, _q40);
12530 : 0 : {
12531 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q31, _p1 };
12532 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12533 : 0 : return true;
12534 : : }
12535 : 0 : break;
12536 : : }
12537 : : default:;
12538 : : }
12539 : : }
12540 : : break;
12541 : 115 : default:;
12542 : : }
12543 : 115 : switch (TREE_CODE (_q31))
12544 : : {
12545 : 115 : case SSA_NAME:
12546 : 115 : if (gimple *_d2 = get_def (valueize, _q31))
12547 : : {
12548 : 102 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12549 : 102 : switch (gimple_assign_rhs_code (_a2))
12550 : : {
12551 : 0 : case BIT_NOT_EXPR:
12552 : 0 : {
12553 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
12554 : 0 : _q50 = do_valueize (valueize, _q50);
12555 : 0 : {
12556 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q30, _p1 };
12557 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12558 : 0 : return true;
12559 : : }
12560 : 0 : break;
12561 : : }
12562 : : default:;
12563 : : }
12564 : : }
12565 : : break;
12566 : : default:;
12567 : : }
12568 : 679076 : break;
12569 : : }
12570 : : default:;
12571 : : }
12572 : : }
12573 : : break;
12574 : : default:;
12575 : : }
12576 : : }
12577 : : }
12578 : 679076 : switch (TREE_CODE (_p1))
12579 : : {
12580 : 540068 : case SSA_NAME:
12581 : 540068 : if (gimple *_d1 = get_def (valueize, _p1))
12582 : : {
12583 : 442407 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12584 : 494033 : switch (gimple_assign_rhs_code (_a1))
12585 : : {
12586 : 6315 : case BIT_IOR_EXPR:
12587 : 6315 : {
12588 : 6315 : tree _q30 = gimple_assign_rhs1 (_a1);
12589 : 6315 : _q30 = do_valueize (valueize, _q30);
12590 : 6315 : tree _q31 = gimple_assign_rhs2 (_a1);
12591 : 6315 : _q31 = do_valueize (valueize, _q31);
12592 : 6315 : if (tree_swap_operands_p (_q30, _q31))
12593 : 385 : std::swap (_q30, _q31);
12594 : 6315 : {
12595 : 6315 : tree _q30_pops[1];
12596 : 6315 : if (gimple_nop_convert (_q30, _q30_pops, valueize))
12597 : : {
12598 : 72 : tree _q40 = _q30_pops[0];
12599 : 72 : switch (TREE_CODE (_q40))
12600 : : {
12601 : 72 : case SSA_NAME:
12602 : 72 : if (gimple *_d2 = get_def (valueize, _q40))
12603 : : {
12604 : 72 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12605 : 72 : switch (gimple_assign_rhs_code (_a2))
12606 : : {
12607 : 42 : case BIT_NOT_EXPR:
12608 : 42 : {
12609 : 42 : tree _q50 = gimple_assign_rhs1 (_a2);
12610 : 42 : _q50 = do_valueize (valueize, _q50);
12611 : 42 : {
12612 : 42 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q31, _p0 };
12613 : 42 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12614 : 21 : return true;
12615 : : }
12616 : 21 : break;
12617 : : }
12618 : : default:;
12619 : : }
12620 : : }
12621 : : break;
12622 : : default:;
12623 : : }
12624 : : }
12625 : : }
12626 : 6294 : {
12627 : 6294 : tree _q31_pops[1];
12628 : 6294 : if (gimple_nop_convert (_q31, _q31_pops, valueize))
12629 : : {
12630 : 0 : tree _q50 = _q31_pops[0];
12631 : 0 : switch (TREE_CODE (_q50))
12632 : : {
12633 : 0 : case SSA_NAME:
12634 : 0 : if (gimple *_d2 = get_def (valueize, _q50))
12635 : : {
12636 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12637 : 0 : switch (gimple_assign_rhs_code (_a2))
12638 : : {
12639 : 0 : case BIT_NOT_EXPR:
12640 : 0 : {
12641 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
12642 : 0 : _q60 = do_valueize (valueize, _q60);
12643 : 0 : {
12644 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q60, _q30, _p0 };
12645 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12646 : 0 : return true;
12647 : : }
12648 : 0 : break;
12649 : : }
12650 : : default:;
12651 : : }
12652 : : }
12653 : : break;
12654 : : default:;
12655 : : }
12656 : : }
12657 : : }
12658 : 6294 : switch (TREE_CODE (_q30))
12659 : : {
12660 : 6294 : case SSA_NAME:
12661 : 6294 : if (gimple *_d2 = get_def (valueize, _q30))
12662 : : {
12663 : 5705 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12664 : 3087 : switch (gimple_assign_rhs_code (_a2))
12665 : : {
12666 : 408 : case BIT_NOT_EXPR:
12667 : 408 : {
12668 : 408 : tree _q40 = gimple_assign_rhs1 (_a2);
12669 : 408 : _q40 = do_valueize (valueize, _q40);
12670 : 408 : {
12671 : 408 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q31, _p0 };
12672 : 408 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12673 : 56 : return true;
12674 : : }
12675 : 352 : break;
12676 : : }
12677 : : default:;
12678 : : }
12679 : : }
12680 : : break;
12681 : 6238 : default:;
12682 : : }
12683 : 6238 : switch (TREE_CODE (_q31))
12684 : : {
12685 : 6081 : case SSA_NAME:
12686 : 6081 : if (gimple *_d2 = get_def (valueize, _q31))
12687 : : {
12688 : 5752 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12689 : 3190 : switch (gimple_assign_rhs_code (_a2))
12690 : : {
12691 : 640 : case BIT_NOT_EXPR:
12692 : 640 : {
12693 : 640 : tree _q50 = gimple_assign_rhs1 (_a2);
12694 : 640 : _q50 = do_valueize (valueize, _q50);
12695 : 640 : {
12696 : 640 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q30, _p0 };
12697 : 640 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12698 : 0 : return true;
12699 : : }
12700 : 640 : break;
12701 : : }
12702 : : default:;
12703 : : }
12704 : : }
12705 : : break;
12706 : : default:;
12707 : : }
12708 : 678999 : break;
12709 : : }
12710 : : default:;
12711 : : }
12712 : : }
12713 : : break;
12714 : 678999 : default:;
12715 : : }
12716 : 678999 : {
12717 : 678999 : tree _p1_pops[1];
12718 : 678999 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
12719 : : {
12720 : 7612 : tree _q30 = _p1_pops[0];
12721 : 7612 : switch (TREE_CODE (_q30))
12722 : : {
12723 : 7594 : case SSA_NAME:
12724 : 7594 : if (gimple *_d1 = get_def (valueize, _q30))
12725 : : {
12726 : 7177 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12727 : 5576 : switch (gimple_assign_rhs_code (_a1))
12728 : : {
12729 : 40 : case BIT_IOR_EXPR:
12730 : 40 : {
12731 : 40 : tree _q40 = gimple_assign_rhs1 (_a1);
12732 : 40 : _q40 = do_valueize (valueize, _q40);
12733 : 40 : tree _q41 = gimple_assign_rhs2 (_a1);
12734 : 40 : _q41 = do_valueize (valueize, _q41);
12735 : 40 : if (tree_swap_operands_p (_q40, _q41))
12736 : 3 : std::swap (_q40, _q41);
12737 : 40 : {
12738 : 40 : tree _q40_pops[1];
12739 : 40 : if (gimple_nop_convert (_q40, _q40_pops, valueize))
12740 : : {
12741 : 0 : tree _q50 = _q40_pops[0];
12742 : 0 : switch (TREE_CODE (_q50))
12743 : : {
12744 : 0 : case SSA_NAME:
12745 : 0 : if (gimple *_d2 = get_def (valueize, _q50))
12746 : : {
12747 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12748 : 0 : switch (gimple_assign_rhs_code (_a2))
12749 : : {
12750 : 0 : case BIT_NOT_EXPR:
12751 : 0 : {
12752 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
12753 : 0 : _q60 = do_valueize (valueize, _q60);
12754 : 0 : {
12755 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q60, _q41, _p0 };
12756 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12757 : 0 : return true;
12758 : : }
12759 : 0 : break;
12760 : : }
12761 : : default:;
12762 : : }
12763 : : }
12764 : : break;
12765 : : default:;
12766 : : }
12767 : : }
12768 : : }
12769 : 40 : {
12770 : 40 : tree _q41_pops[1];
12771 : 40 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
12772 : : {
12773 : 0 : tree _q60 = _q41_pops[0];
12774 : 0 : switch (TREE_CODE (_q60))
12775 : : {
12776 : 0 : case SSA_NAME:
12777 : 0 : if (gimple *_d2 = get_def (valueize, _q60))
12778 : : {
12779 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12780 : 0 : switch (gimple_assign_rhs_code (_a2))
12781 : : {
12782 : 0 : case BIT_NOT_EXPR:
12783 : 0 : {
12784 : 0 : tree _q70 = gimple_assign_rhs1 (_a2);
12785 : 0 : _q70 = do_valueize (valueize, _q70);
12786 : 0 : {
12787 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q70, _q40, _p0 };
12788 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12789 : 0 : return true;
12790 : : }
12791 : 0 : break;
12792 : : }
12793 : : default:;
12794 : : }
12795 : : }
12796 : : break;
12797 : : default:;
12798 : : }
12799 : : }
12800 : : }
12801 : 40 : switch (TREE_CODE (_q40))
12802 : : {
12803 : 40 : case SSA_NAME:
12804 : 40 : if (gimple *_d2 = get_def (valueize, _q40))
12805 : : {
12806 : 40 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12807 : 40 : switch (gimple_assign_rhs_code (_a2))
12808 : : {
12809 : 0 : case BIT_NOT_EXPR:
12810 : 0 : {
12811 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
12812 : 0 : _q50 = do_valueize (valueize, _q50);
12813 : 0 : {
12814 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q41, _p0 };
12815 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12816 : 0 : return true;
12817 : : }
12818 : 0 : break;
12819 : : }
12820 : : default:;
12821 : : }
12822 : : }
12823 : : break;
12824 : 40 : default:;
12825 : : }
12826 : 40 : switch (TREE_CODE (_q41))
12827 : : {
12828 : 40 : case SSA_NAME:
12829 : 40 : if (gimple *_d2 = get_def (valueize, _q41))
12830 : : {
12831 : 40 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12832 : 40 : switch (gimple_assign_rhs_code (_a2))
12833 : : {
12834 : 0 : case BIT_NOT_EXPR:
12835 : 0 : {
12836 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
12837 : 0 : _q60 = do_valueize (valueize, _q60);
12838 : 0 : {
12839 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q60, _q40, _p0 };
12840 : 0 : if (gimple_simplify_19 (res_op, seq, valueize, type, captures))
12841 : 0 : return true;
12842 : : }
12843 : 0 : break;
12844 : : }
12845 : : default:;
12846 : : }
12847 : : }
12848 : : break;
12849 : : default:;
12850 : : }
12851 : 678999 : break;
12852 : : }
12853 : : default:;
12854 : : }
12855 : : }
12856 : : break;
12857 : : default:;
12858 : : }
12859 : : }
12860 : : }
12861 : 678999 : switch (TREE_CODE (_p0))
12862 : : {
12863 : 667256 : case SSA_NAME:
12864 : 667256 : if (gimple *_d1 = get_def (valueize, _p0))
12865 : : {
12866 : 527764 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12867 : 598724 : switch (gimple_assign_rhs_code (_a1))
12868 : : {
12869 : 63092 : CASE_CONVERT:
12870 : 63092 : {
12871 : 63092 : tree _q20 = gimple_assign_rhs1 (_a1);
12872 : 63092 : _q20 = do_valueize (valueize, _q20);
12873 : 63092 : switch (TREE_CODE (_q20))
12874 : : {
12875 : 63050 : case SSA_NAME:
12876 : 63050 : if (gimple *_d2 = get_def (valueize, _q20))
12877 : : {
12878 : 60725 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12879 : 70882 : switch (gimple_assign_rhs_code (_a2))
12880 : : {
12881 : 7451 : case BIT_NOT_EXPR:
12882 : 7451 : {
12883 : 7451 : tree _q30 = gimple_assign_rhs1 (_a2);
12884 : 7451 : _q30 = do_valueize (valueize, _q30);
12885 : 7451 : switch (TREE_CODE (_p1))
12886 : : {
12887 : 7430 : case SSA_NAME:
12888 : 7430 : if (gimple *_d3 = get_def (valueize, _p1))
12889 : : {
12890 : 7240 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12891 : 8653 : switch (gimple_assign_rhs_code (_a3))
12892 : : {
12893 : 264 : CASE_CONVERT:
12894 : 264 : {
12895 : 264 : tree _q50 = gimple_assign_rhs1 (_a3);
12896 : 264 : _q50 = do_valueize (valueize, _q50);
12897 : 264 : switch (TREE_CODE (_q50))
12898 : : {
12899 : 264 : case SSA_NAME:
12900 : 264 : if (gimple *_d4 = get_def (valueize, _q50))
12901 : : {
12902 : 239 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
12903 : 179 : switch (gimple_assign_rhs_code (_a4))
12904 : : {
12905 : 28 : case BIT_NOT_EXPR:
12906 : 28 : {
12907 : 28 : tree _q60 = gimple_assign_rhs1 (_a4);
12908 : 28 : _q60 = do_valueize (valueize, _q60);
12909 : 28 : {
12910 : 28 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q60 };
12911 : 28 : if (gimple_simplify_26 (res_op, seq, valueize, type, captures))
12912 : 0 : return true;
12913 : : }
12914 : 28 : break;
12915 : : }
12916 : : default:;
12917 : : }
12918 : : }
12919 : : break;
12920 : : default:;
12921 : : }
12922 : : break;
12923 : : }
12924 : 0 : case BIT_NOT_EXPR:
12925 : 0 : {
12926 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
12927 : 0 : _q50 = do_valueize (valueize, _q50);
12928 : 0 : {
12929 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
12930 : 0 : if (gimple_simplify_26 (res_op, seq, valueize, type, captures))
12931 : 0 : return true;
12932 : : }
12933 : 0 : break;
12934 : : }
12935 : : default:;
12936 : : }
12937 : : }
12938 : : break;
12939 : 21 : case INTEGER_CST:
12940 : 21 : {
12941 : 21 : {
12942 : 21 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p1 };
12943 : 21 : if (gimple_simplify_27 (res_op, seq, valueize, type, captures))
12944 : 0 : return true;
12945 : : }
12946 : 21 : break;
12947 : : }
12948 : : default:;
12949 : : }
12950 : : break;
12951 : : }
12952 : : default:;
12953 : : }
12954 : : }
12955 : : break;
12956 : : default:;
12957 : : }
12958 : : break;
12959 : : }
12960 : 208 : case BIT_NOT_EXPR:
12961 : 208 : {
12962 : 208 : tree _q20 = gimple_assign_rhs1 (_a1);
12963 : 208 : _q20 = do_valueize (valueize, _q20);
12964 : 208 : switch (TREE_CODE (_p1))
12965 : : {
12966 : 192 : case SSA_NAME:
12967 : 192 : if (gimple *_d2 = get_def (valueize, _p1))
12968 : : {
12969 : 186 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12970 : 168 : switch (gimple_assign_rhs_code (_a2))
12971 : : {
12972 : 9 : CASE_CONVERT:
12973 : 9 : {
12974 : 9 : tree _q40 = gimple_assign_rhs1 (_a2);
12975 : 9 : _q40 = do_valueize (valueize, _q40);
12976 : 9 : switch (TREE_CODE (_q40))
12977 : : {
12978 : 9 : case SSA_NAME:
12979 : 9 : if (gimple *_d3 = get_def (valueize, _q40))
12980 : : {
12981 : 9 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12982 : 9 : switch (gimple_assign_rhs_code (_a3))
12983 : : {
12984 : 9 : case BIT_NOT_EXPR:
12985 : 9 : {
12986 : 9 : tree _q50 = gimple_assign_rhs1 (_a3);
12987 : 9 : _q50 = do_valueize (valueize, _q50);
12988 : 9 : {
12989 : 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
12990 : 9 : if (gimple_simplify_26 (res_op, seq, valueize, type, captures))
12991 : 9 : return true;
12992 : : }
12993 : 0 : break;
12994 : : }
12995 : : default:;
12996 : : }
12997 : : }
12998 : : break;
12999 : : default:;
13000 : : }
13001 : : break;
13002 : : }
13003 : 38 : case BIT_NOT_EXPR:
13004 : 38 : {
13005 : 38 : tree _q40 = gimple_assign_rhs1 (_a2);
13006 : 38 : _q40 = do_valueize (valueize, _q40);
13007 : 38 : {
13008 : 38 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
13009 : 38 : if (gimple_simplify_26 (res_op, seq, valueize, type, captures))
13010 : 38 : return true;
13011 : : }
13012 : 0 : break;
13013 : : }
13014 : : default:;
13015 : : }
13016 : : }
13017 : : break;
13018 : 16 : case INTEGER_CST:
13019 : 16 : {
13020 : 16 : {
13021 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
13022 : 16 : if (gimple_simplify_27 (res_op, seq, valueize, type, captures))
13023 : 16 : return true;
13024 : : }
13025 : 0 : break;
13026 : : }
13027 : 145 : default:;
13028 : : }
13029 : 145 : {
13030 : 145 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1 };
13031 : 145 : if (gimple_simplify_28 (res_op, seq, valueize, type, captures))
13032 : 112 : return true;
13033 : : }
13034 : 33 : break;
13035 : : }
13036 : 32693 : case BIT_AND_EXPR:
13037 : 32693 : {
13038 : 32693 : tree _q20 = gimple_assign_rhs1 (_a1);
13039 : 32693 : _q20 = do_valueize (valueize, _q20);
13040 : 32693 : tree _q21 = gimple_assign_rhs2 (_a1);
13041 : 32693 : _q21 = do_valueize (valueize, _q21);
13042 : 32693 : if (tree_swap_operands_p (_q20, _q21))
13043 : 1264 : std::swap (_q20, _q21);
13044 : 32693 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
13045 : : {
13046 : 2762 : {
13047 : 2762 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
13048 : 2762 : if (gimple_simplify_29 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13049 : 1368 : return true;
13050 : : }
13051 : : }
13052 : 31325 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13053 : : {
13054 : 36 : {
13055 : 36 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
13056 : 36 : if (gimple_simplify_29 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13057 : 36 : return true;
13058 : : }
13059 : : }
13060 : 31289 : switch (TREE_CODE (_p1))
13061 : : {
13062 : 24928 : case SSA_NAME:
13063 : 24928 : if (gimple *_d2 = get_def (valueize, _p1))
13064 : : {
13065 : 21732 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13066 : 19371 : switch (gimple_assign_rhs_code (_a2))
13067 : : {
13068 : 2137 : case BIT_AND_EXPR:
13069 : 2137 : {
13070 : 2137 : tree _q50 = gimple_assign_rhs1 (_a2);
13071 : 2137 : _q50 = do_valueize (valueize, _q50);
13072 : 2137 : tree _q51 = gimple_assign_rhs2 (_a2);
13073 : 2137 : _q51 = do_valueize (valueize, _q51);
13074 : 2137 : if (tree_swap_operands_p (_q50, _q51))
13075 : 65 : std::swap (_q50, _q51);
13076 : 2137 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
13077 : : {
13078 : 18 : {
13079 : 18 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q20 };
13080 : 18 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13081 : 18 : return true;
13082 : : }
13083 : : }
13084 : 2119 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
13085 : : {
13086 : 0 : {
13087 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q20 };
13088 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13089 : 0 : return true;
13090 : : }
13091 : : }
13092 : 2119 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
13093 : : {
13094 : 0 : {
13095 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q21 };
13096 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13097 : 0 : return true;
13098 : : }
13099 : : }
13100 : 2119 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q21, 0))
13101 : : {
13102 : 129 : {
13103 : 129 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q21 };
13104 : 129 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13105 : 114 : return true;
13106 : : }
13107 : : }
13108 : 677288 : break;
13109 : : }
13110 : : default:;
13111 : : }
13112 : : }
13113 : : break;
13114 : : default:;
13115 : : }
13116 : 677288 : break;
13117 : : }
13118 : : default:;
13119 : : }
13120 : : }
13121 : : break;
13122 : 677288 : default:;
13123 : : }
13124 : 677288 : switch (TREE_CODE (_p1))
13125 : : {
13126 : 539664 : case SSA_NAME:
13127 : 539664 : if (gimple *_d1 = get_def (valueize, _p1))
13128 : : {
13129 : 442009 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13130 : 493636 : switch (gimple_assign_rhs_code (_a1))
13131 : : {
13132 : 14373 : case BIT_AND_EXPR:
13133 : 14373 : {
13134 : 14373 : tree _q30 = gimple_assign_rhs1 (_a1);
13135 : 14373 : _q30 = do_valueize (valueize, _q30);
13136 : 14373 : tree _q31 = gimple_assign_rhs2 (_a1);
13137 : 14373 : _q31 = do_valueize (valueize, _q31);
13138 : 14373 : if (tree_swap_operands_p (_q30, _q31))
13139 : 595 : std::swap (_q30, _q31);
13140 : 14373 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
13141 : : {
13142 : 13 : {
13143 : 13 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
13144 : 13 : if (gimple_simplify_29 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13145 : 5 : return true;
13146 : : }
13147 : : }
13148 : 14368 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
13149 : : {
13150 : 40 : {
13151 : 40 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
13152 : 40 : if (gimple_simplify_29 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13153 : 39 : return true;
13154 : : }
13155 : : }
13156 : 677244 : break;
13157 : : }
13158 : : default:;
13159 : : }
13160 : : }
13161 : : break;
13162 : 677244 : default:;
13163 : : }
13164 : 677244 : switch (TREE_CODE (_p0))
13165 : : {
13166 : 665501 : case SSA_NAME:
13167 : 665501 : if (gimple *_d1 = get_def (valueize, _p0))
13168 : : {
13169 : 526013 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13170 : 596964 : switch (gimple_assign_rhs_code (_a1))
13171 : : {
13172 : 63082 : CASE_CONVERT:
13173 : 63082 : {
13174 : 63082 : tree _q20 = gimple_assign_rhs1 (_a1);
13175 : 63082 : _q20 = do_valueize (valueize, _q20);
13176 : 63082 : switch (TREE_CODE (_q20))
13177 : : {
13178 : 63040 : case SSA_NAME:
13179 : 63040 : if (gimple *_d2 = get_def (valueize, _q20))
13180 : : {
13181 : 60715 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13182 : 70868 : switch (gimple_assign_rhs_code (_a2))
13183 : : {
13184 : 3085 : case BIT_AND_EXPR:
13185 : 3085 : {
13186 : 3085 : tree _q30 = gimple_assign_rhs1 (_a2);
13187 : 3085 : _q30 = do_valueize (valueize, _q30);
13188 : 3085 : tree _q31 = gimple_assign_rhs2 (_a2);
13189 : 3085 : _q31 = do_valueize (valueize, _q31);
13190 : 3085 : if (tree_swap_operands_p (_q30, _q31))
13191 : 15 : std::swap (_q30, _q31);
13192 : 3085 : switch (TREE_CODE (_p1))
13193 : : {
13194 : 2944 : case SSA_NAME:
13195 : 2944 : if (gimple *_d3 = get_def (valueize, _p1))
13196 : : {
13197 : 2919 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13198 : 3405 : switch (gimple_assign_rhs_code (_a3))
13199 : : {
13200 : 31 : CASE_CONVERT:
13201 : 31 : {
13202 : 31 : tree _q60 = gimple_assign_rhs1 (_a3);
13203 : 31 : _q60 = do_valueize (valueize, _q60);
13204 : 31 : switch (TREE_CODE (_q60))
13205 : : {
13206 : 31 : case SSA_NAME:
13207 : 31 : if (gimple *_d4 = get_def (valueize, _q60))
13208 : : {
13209 : 31 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
13210 : 59 : switch (gimple_assign_rhs_code (_a4))
13211 : : {
13212 : 0 : case BIT_AND_EXPR:
13213 : 0 : {
13214 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
13215 : 0 : _q70 = do_valueize (valueize, _q70);
13216 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
13217 : 0 : _q71 = do_valueize (valueize, _q71);
13218 : 0 : if (tree_swap_operands_p (_q70, _q71))
13219 : 0 : std::swap (_q70, _q71);
13220 : 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q30, 0))
13221 : : {
13222 : 0 : {
13223 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q71, _q30 };
13224 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13225 : 0 : return true;
13226 : : }
13227 : : }
13228 : 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || operand_equal_p (_q71, _q30, 0))
13229 : : {
13230 : 0 : {
13231 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q70, _q30 };
13232 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13233 : 0 : return true;
13234 : : }
13235 : : }
13236 : 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q31, 0))
13237 : : {
13238 : 0 : {
13239 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q31, _q30, _q71, _q31 };
13240 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13241 : 0 : return true;
13242 : : }
13243 : : }
13244 : 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || operand_equal_p (_q71, _q31, 0))
13245 : : {
13246 : 0 : {
13247 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q31, _q30, _q70, _q31 };
13248 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR))
13249 : 0 : return true;
13250 : : }
13251 : : }
13252 : 63075 : break;
13253 : : }
13254 : : default:;
13255 : : }
13256 : : }
13257 : : break;
13258 : : default:;
13259 : : }
13260 : : break;
13261 : : }
13262 : : default:;
13263 : : }
13264 : : }
13265 : : break;
13266 : : default:;
13267 : : }
13268 : 63075 : break;
13269 : : }
13270 : 917 : case BIT_XOR_EXPR:
13271 : 917 : {
13272 : 917 : tree _q30 = gimple_assign_rhs1 (_a2);
13273 : 917 : _q30 = do_valueize (valueize, _q30);
13274 : 917 : tree _q31 = gimple_assign_rhs2 (_a2);
13275 : 917 : _q31 = do_valueize (valueize, _q31);
13276 : 917 : if (tree_swap_operands_p (_q30, _q31))
13277 : 64 : std::swap (_q30, _q31);
13278 : 917 : switch (TREE_CODE (_p1))
13279 : : {
13280 : 882 : case SSA_NAME:
13281 : 882 : if (gimple *_d3 = get_def (valueize, _p1))
13282 : : {
13283 : 842 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13284 : 826 : switch (gimple_assign_rhs_code (_a3))
13285 : : {
13286 : 365 : CASE_CONVERT:
13287 : 365 : {
13288 : 365 : tree _q60 = gimple_assign_rhs1 (_a3);
13289 : 365 : _q60 = do_valueize (valueize, _q60);
13290 : 365 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
13291 : : {
13292 : 0 : {
13293 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
13294 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13295 : 0 : return true;
13296 : : }
13297 : : }
13298 : 365 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q30, 0))
13299 : : {
13300 : 0 : {
13301 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q30 };
13302 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13303 : 0 : return true;
13304 : : }
13305 : : }
13306 : : break;
13307 : : }
13308 : : default:;
13309 : : }
13310 : : }
13311 : : break;
13312 : 917 : default:;
13313 : : }
13314 : 917 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
13315 : : {
13316 : 7 : {
13317 : 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
13318 : 7 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13319 : 7 : return true;
13320 : : }
13321 : : }
13322 : 910 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q30, 0))
13323 : : {
13324 : 0 : {
13325 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q30 };
13326 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13327 : 0 : return true;
13328 : : }
13329 : : }
13330 : 63075 : break;
13331 : : }
13332 : : default:;
13333 : : }
13334 : : }
13335 : : break;
13336 : 63075 : default:;
13337 : : }
13338 : 63075 : switch (TREE_CODE (_p1))
13339 : : {
13340 : 52219 : case SSA_NAME:
13341 : 52219 : if (gimple *_d2 = get_def (valueize, _p1))
13342 : : {
13343 : 50806 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13344 : 48071 : switch (gimple_assign_rhs_code (_a2))
13345 : : {
13346 : 17837 : CASE_CONVERT:
13347 : 17837 : {
13348 : 17837 : tree _q40 = gimple_assign_rhs1 (_a2);
13349 : 17837 : _q40 = do_valueize (valueize, _q40);
13350 : 17837 : switch (TREE_CODE (_q40))
13351 : : {
13352 : 17819 : case SSA_NAME:
13353 : 17819 : if (gimple *_d3 = get_def (valueize, _q40))
13354 : : {
13355 : 17459 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13356 : 17098 : switch (gimple_assign_rhs_code (_a3))
13357 : : {
13358 : 26 : case BIT_XOR_EXPR:
13359 : 26 : {
13360 : 26 : tree _q50 = gimple_assign_rhs1 (_a3);
13361 : 26 : _q50 = do_valueize (valueize, _q50);
13362 : 26 : tree _q51 = gimple_assign_rhs2 (_a3);
13363 : 26 : _q51 = do_valueize (valueize, _q51);
13364 : 26 : if (tree_swap_operands_p (_q50, _q51))
13365 : 0 : std::swap (_q50, _q51);
13366 : 26 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
13367 : : {
13368 : 0 : {
13369 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
13370 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13371 : 0 : return true;
13372 : : }
13373 : : }
13374 : 26 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
13375 : : {
13376 : 0 : {
13377 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q51, _q50, _q20 };
13378 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13379 : 0 : return true;
13380 : : }
13381 : : }
13382 : 677237 : break;
13383 : : }
13384 : : default:;
13385 : : }
13386 : : }
13387 : : break;
13388 : : default:;
13389 : : }
13390 : : break;
13391 : : }
13392 : 3143 : case BIT_XOR_EXPR:
13393 : 3143 : {
13394 : 3143 : tree _q40 = gimple_assign_rhs1 (_a2);
13395 : 3143 : _q40 = do_valueize (valueize, _q40);
13396 : 3143 : tree _q41 = gimple_assign_rhs2 (_a2);
13397 : 3143 : _q41 = do_valueize (valueize, _q41);
13398 : 3143 : if (tree_swap_operands_p (_q40, _q41))
13399 : 317 : std::swap (_q40, _q41);
13400 : 3143 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _q20, 0))
13401 : : {
13402 : 0 : {
13403 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q20 };
13404 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13405 : 0 : return true;
13406 : : }
13407 : : }
13408 : 3143 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _q20, 0))
13409 : : {
13410 : 0 : {
13411 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q20 };
13412 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13413 : 0 : return true;
13414 : : }
13415 : : }
13416 : 677237 : break;
13417 : : }
13418 : : default:;
13419 : : }
13420 : : }
13421 : : break;
13422 : : default:;
13423 : : }
13424 : : break;
13425 : : }
13426 : : default:;
13427 : : }
13428 : : }
13429 : : break;
13430 : 677237 : default:;
13431 : : }
13432 : 677237 : switch (TREE_CODE (_p1))
13433 : : {
13434 : 539620 : case SSA_NAME:
13435 : 539620 : if (gimple *_d1 = get_def (valueize, _p1))
13436 : : {
13437 : 441965 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13438 : 493592 : switch (gimple_assign_rhs_code (_a1))
13439 : : {
13440 : 40757 : CASE_CONVERT:
13441 : 40757 : {
13442 : 40757 : tree _q30 = gimple_assign_rhs1 (_a1);
13443 : 40757 : _q30 = do_valueize (valueize, _q30);
13444 : 40757 : switch (TREE_CODE (_q30))
13445 : : {
13446 : 40739 : case SSA_NAME:
13447 : 40739 : if (gimple *_d2 = get_def (valueize, _q30))
13448 : : {
13449 : 39265 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13450 : 38183 : switch (gimple_assign_rhs_code (_a2))
13451 : : {
13452 : 601 : case BIT_XOR_EXPR:
13453 : 601 : {
13454 : 601 : tree _q40 = gimple_assign_rhs1 (_a2);
13455 : 601 : _q40 = do_valueize (valueize, _q40);
13456 : 601 : tree _q41 = gimple_assign_rhs2 (_a2);
13457 : 601 : _q41 = do_valueize (valueize, _q41);
13458 : 601 : if (tree_swap_operands_p (_q40, _q41))
13459 : 19 : std::swap (_q40, _q41);
13460 : 601 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
13461 : : {
13462 : 0 : {
13463 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _p0 };
13464 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13465 : 0 : return true;
13466 : : }
13467 : : }
13468 : 601 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _p0, 0))
13469 : : {
13470 : 0 : {
13471 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _p0 };
13472 : 0 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13473 : 0 : return true;
13474 : : }
13475 : : }
13476 : 676711 : break;
13477 : : }
13478 : : default:;
13479 : : }
13480 : : }
13481 : : break;
13482 : : default:;
13483 : : }
13484 : : break;
13485 : : }
13486 : 41532 : case BIT_XOR_EXPR:
13487 : 41532 : {
13488 : 41532 : tree _q30 = gimple_assign_rhs1 (_a1);
13489 : 41532 : _q30 = do_valueize (valueize, _q30);
13490 : 41532 : tree _q31 = gimple_assign_rhs2 (_a1);
13491 : 41532 : _q31 = do_valueize (valueize, _q31);
13492 : 41532 : if (tree_swap_operands_p (_q30, _q31))
13493 : 3567 : std::swap (_q30, _q31);
13494 : 41532 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
13495 : : {
13496 : 312 : {
13497 : 312 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
13498 : 312 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13499 : 312 : return true;
13500 : : }
13501 : : }
13502 : 41220 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || operand_equal_p (_q30, _p0, 0))
13503 : : {
13504 : 214 : {
13505 : 214 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _p0 };
13506 : 214 : if (gimple_simplify_24 (res_op, seq, valueize, type, captures))
13507 : 214 : return true;
13508 : : }
13509 : : }
13510 : 676711 : break;
13511 : : }
13512 : : default:;
13513 : : }
13514 : : }
13515 : : break;
13516 : 676711 : default:;
13517 : : }
13518 : 676711 : switch (TREE_CODE (_p0))
13519 : : {
13520 : 664968 : case SSA_NAME:
13521 : 664968 : if (gimple *_d1 = get_def (valueize, _p0))
13522 : : {
13523 : 525485 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13524 : 596121 : switch (gimple_assign_rhs_code (_a1))
13525 : : {
13526 : 62956 : CASE_CONVERT:
13527 : 62956 : {
13528 : 62956 : tree _q20 = gimple_assign_rhs1 (_a1);
13529 : 62956 : _q20 = do_valueize (valueize, _q20);
13530 : 62956 : switch (TREE_CODE (_q20))
13531 : : {
13532 : 62914 : case SSA_NAME:
13533 : 62914 : if (gimple *_d2 = get_def (valueize, _q20))
13534 : : {
13535 : 60589 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13536 : 70747 : switch (gimple_assign_rhs_code (_a2))
13537 : : {
13538 : 888 : case BIT_XOR_EXPR:
13539 : 888 : {
13540 : 888 : tree _q30 = gimple_assign_rhs1 (_a2);
13541 : 888 : _q30 = do_valueize (valueize, _q30);
13542 : 888 : tree _q31 = gimple_assign_rhs2 (_a2);
13543 : 888 : _q31 = do_valueize (valueize, _q31);
13544 : 888 : if (tree_swap_operands_p (_q30, _q31))
13545 : 64 : std::swap (_q30, _q31);
13546 : 888 : switch (TREE_CODE (_p1))
13547 : : {
13548 : 860 : case SSA_NAME:
13549 : 860 : if (gimple *_d3 = get_def (valueize, _p1))
13550 : : {
13551 : 820 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13552 : 804 : switch (gimple_assign_rhs_code (_a3))
13553 : : {
13554 : 365 : CASE_CONVERT:
13555 : 365 : {
13556 : 365 : tree _q60 = gimple_assign_rhs1 (_a3);
13557 : 365 : _q60 = do_valueize (valueize, _q60);
13558 : 365 : switch (TREE_CODE (_q60))
13559 : : {
13560 : 365 : case SSA_NAME:
13561 : 365 : if (gimple *_d4 = get_def (valueize, _q60))
13562 : : {
13563 : 354 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
13564 : 576 : switch (gimple_assign_rhs_code (_a4))
13565 : : {
13566 : 4 : case BIT_XOR_EXPR:
13567 : 4 : {
13568 : 4 : tree _q70 = gimple_assign_rhs1 (_a4);
13569 : 4 : _q70 = do_valueize (valueize, _q70);
13570 : 4 : tree _q71 = gimple_assign_rhs2 (_a4);
13571 : 4 : _q71 = do_valueize (valueize, _q71);
13572 : 4 : if (tree_swap_operands_p (_q70, _q71))
13573 : 0 : std::swap (_q70, _q71);
13574 : 4 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
13575 : : {
13576 : 2 : {
13577 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
13578 : 2 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13579 : 0 : return true;
13580 : : }
13581 : : }
13582 : 4 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
13583 : : {
13584 : 0 : {
13585 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q70 };
13586 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13587 : 0 : return true;
13588 : : }
13589 : : }
13590 : 4 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
13591 : : {
13592 : 2 : {
13593 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q71 };
13594 : 2 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13595 : 0 : return true;
13596 : : }
13597 : : }
13598 : 4 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
13599 : : {
13600 : 0 : {
13601 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q70 };
13602 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13603 : 0 : return true;
13604 : : }
13605 : : }
13606 : 62956 : break;
13607 : : }
13608 : : default:;
13609 : : }
13610 : : }
13611 : : break;
13612 : : default:;
13613 : : }
13614 : : break;
13615 : : }
13616 : 34 : case BIT_XOR_EXPR:
13617 : 34 : {
13618 : 34 : tree _q60 = gimple_assign_rhs1 (_a3);
13619 : 34 : _q60 = do_valueize (valueize, _q60);
13620 : 34 : tree _q61 = gimple_assign_rhs2 (_a3);
13621 : 34 : _q61 = do_valueize (valueize, _q61);
13622 : 34 : if (tree_swap_operands_p (_q60, _q61))
13623 : 0 : std::swap (_q60, _q61);
13624 : 34 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13625 : : {
13626 : 0 : {
13627 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q61 };
13628 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13629 : 0 : return true;
13630 : : }
13631 : : }
13632 : 34 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
13633 : : {
13634 : 0 : {
13635 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q60 };
13636 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13637 : 0 : return true;
13638 : : }
13639 : : }
13640 : 34 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
13641 : : {
13642 : 0 : {
13643 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q61 };
13644 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13645 : 0 : return true;
13646 : : }
13647 : : }
13648 : 34 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
13649 : : {
13650 : 0 : {
13651 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q60 };
13652 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13653 : 0 : return true;
13654 : : }
13655 : : }
13656 : 62956 : break;
13657 : : }
13658 : : default:;
13659 : : }
13660 : : }
13661 : : break;
13662 : : default:;
13663 : : }
13664 : 62956 : break;
13665 : : }
13666 : : default:;
13667 : : }
13668 : : }
13669 : : break;
13670 : 62956 : default:;
13671 : : }
13672 : 62956 : switch (TREE_CODE (_p1))
13673 : : {
13674 : 52100 : case SSA_NAME:
13675 : 52100 : if (gimple *_d2 = get_def (valueize, _p1))
13676 : : {
13677 : 50687 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13678 : 47952 : switch (gimple_assign_rhs_code (_a2))
13679 : : {
13680 : 17837 : CASE_CONVERT:
13681 : 17837 : {
13682 : 17837 : tree _q40 = gimple_assign_rhs1 (_a2);
13683 : 17837 : _q40 = do_valueize (valueize, _q40);
13684 : 17837 : {
13685 : 17837 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
13686 : 17837 : if (gimple_simplify_32 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
13687 : 471 : return true;
13688 : : }
13689 : 17366 : break;
13690 : : }
13691 : : default:;
13692 : : }
13693 : : }
13694 : : break;
13695 : 62485 : default:;
13696 : : }
13697 : 62485 : {
13698 : 62485 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
13699 : 62485 : if (gimple_simplify_33 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
13700 : 2222 : return true;
13701 : : }
13702 : 60263 : break;
13703 : : }
13704 : 43582 : case BIT_XOR_EXPR:
13705 : 43582 : {
13706 : 43582 : tree _q20 = gimple_assign_rhs1 (_a1);
13707 : 43582 : _q20 = do_valueize (valueize, _q20);
13708 : 43582 : tree _q21 = gimple_assign_rhs2 (_a1);
13709 : 43582 : _q21 = do_valueize (valueize, _q21);
13710 : 43582 : if (tree_swap_operands_p (_q20, _q21))
13711 : 1985 : std::swap (_q20, _q21);
13712 : 43582 : switch (TREE_CODE (_p1))
13713 : : {
13714 : 40039 : case SSA_NAME:
13715 : 40039 : if (gimple *_d2 = get_def (valueize, _p1))
13716 : : {
13717 : 38385 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13718 : 45510 : switch (gimple_assign_rhs_code (_a2))
13719 : : {
13720 : 1963 : CASE_CONVERT:
13721 : 1963 : {
13722 : 1963 : tree _q50 = gimple_assign_rhs1 (_a2);
13723 : 1963 : _q50 = do_valueize (valueize, _q50);
13724 : 1963 : switch (TREE_CODE (_q50))
13725 : : {
13726 : 1963 : case SSA_NAME:
13727 : 1963 : if (gimple *_d3 = get_def (valueize, _q50))
13728 : : {
13729 : 1940 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13730 : 2675 : switch (gimple_assign_rhs_code (_a3))
13731 : : {
13732 : 86 : case BIT_XOR_EXPR:
13733 : 86 : {
13734 : 86 : tree _q60 = gimple_assign_rhs1 (_a3);
13735 : 86 : _q60 = do_valueize (valueize, _q60);
13736 : 86 : tree _q61 = gimple_assign_rhs2 (_a3);
13737 : 86 : _q61 = do_valueize (valueize, _q61);
13738 : 86 : if (tree_swap_operands_p (_q60, _q61))
13739 : 4 : std::swap (_q60, _q61);
13740 : 86 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
13741 : : {
13742 : 0 : {
13743 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q61 };
13744 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13745 : 0 : return true;
13746 : : }
13747 : : }
13748 : 86 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
13749 : : {
13750 : 0 : {
13751 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q60 };
13752 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13753 : 0 : return true;
13754 : : }
13755 : : }
13756 : 86 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
13757 : : {
13758 : 0 : {
13759 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q61 };
13760 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13761 : 0 : return true;
13762 : : }
13763 : : }
13764 : 86 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
13765 : : {
13766 : 0 : {
13767 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q60 };
13768 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13769 : 0 : return true;
13770 : : }
13771 : : }
13772 : 43552 : break;
13773 : : }
13774 : : default:;
13775 : : }
13776 : : }
13777 : : break;
13778 : : default:;
13779 : : }
13780 : : break;
13781 : : }
13782 : 3137 : case BIT_XOR_EXPR:
13783 : 3137 : {
13784 : 3137 : tree _q50 = gimple_assign_rhs1 (_a2);
13785 : 3137 : _q50 = do_valueize (valueize, _q50);
13786 : 3137 : tree _q51 = gimple_assign_rhs2 (_a2);
13787 : 3137 : _q51 = do_valueize (valueize, _q51);
13788 : 3137 : if (tree_swap_operands_p (_q50, _q51))
13789 : 316 : std::swap (_q50, _q51);
13790 : 3137 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13791 : : {
13792 : 2 : {
13793 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
13794 : 2 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13795 : 2 : return true;
13796 : : }
13797 : : }
13798 : 3135 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13799 : : {
13800 : 0 : {
13801 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
13802 : 0 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13803 : 0 : return true;
13804 : : }
13805 : : }
13806 : 3135 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13807 : : {
13808 : 4 : {
13809 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
13810 : 4 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13811 : 4 : return true;
13812 : : }
13813 : : }
13814 : 3131 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13815 : : {
13816 : 24 : {
13817 : 24 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
13818 : 24 : if (gimple_simplify_31 (res_op, seq, valueize, type, captures))
13819 : 24 : return true;
13820 : : }
13821 : : }
13822 : 43552 : break;
13823 : : }
13824 : : default:;
13825 : : }
13826 : : }
13827 : : break;
13828 : 43552 : default:;
13829 : : }
13830 : 43552 : if (CONSTANT_CLASS_P (_q21))
13831 : : {
13832 : 1293 : if (CONSTANT_CLASS_P (_p1))
13833 : : {
13834 : 92 : {
13835 : 92 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
13836 : 92 : if (gimple_simplify_34 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
13837 : 92 : return true;
13838 : : }
13839 : : }
13840 : : }
13841 : 673848 : break;
13842 : : }
13843 : 107 : case COND_EXPR:
13844 : 107 : {
13845 : 107 : tree _q20 = gimple_assign_rhs1 (_a1);
13846 : 107 : _q20 = do_valueize (valueize, _q20);
13847 : 107 : tree _q21 = gimple_assign_rhs2 (_a1);
13848 : 107 : _q21 = do_valueize (valueize, _q21);
13849 : 107 : tree _q22 = gimple_assign_rhs3 (_a1);
13850 : 107 : _q22 = do_valueize (valueize, _q22);
13851 : 107 : if (integer_zerop (_q22))
13852 : : {
13853 : 80 : switch (TREE_CODE (_p1))
13854 : : {
13855 : 77 : case SSA_NAME:
13856 : 77 : if (gimple *_d2 = get_def (valueize, _p1))
13857 : : {
13858 : 77 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13859 : 66 : switch (gimple_assign_rhs_code (_a2))
13860 : : {
13861 : 28 : case COND_EXPR:
13862 : 28 : {
13863 : 28 : tree _q60 = gimple_assign_rhs1 (_a2);
13864 : 28 : _q60 = do_valueize (valueize, _q60);
13865 : 28 : tree _q61 = gimple_assign_rhs2 (_a2);
13866 : 28 : _q61 = do_valueize (valueize, _q61);
13867 : 28 : tree _q62 = gimple_assign_rhs3 (_a2);
13868 : 28 : _q62 = do_valueize (valueize, _q62);
13869 : 28 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
13870 : : {
13871 : 4 : if (integer_zerop (_q61))
13872 : : {
13873 : 4 : {
13874 : 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
13875 : 4 : const enum tree_code op = BIT_XOR_EXPR;
13876 : 4 : gimple_seq *lseq = seq;
13877 : 4 : if (lseq
13878 : 2 : && (!single_use (captures[0])
13879 : 2 : || !single_use (captures[3])))
13880 : 2 : lseq = NULL;
13881 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2065;
13882 : 4 : {
13883 : 4 : res_op->set_op (COND_EXPR, type, 3);
13884 : 4 : res_op->ops[0] = captures[1];
13885 : 4 : res_op->ops[0] = unshare_expr (res_op->ops[0]);
13886 : 4 : res_op->ops[1] = captures[2];
13887 : 4 : res_op->ops[2] = captures[4];
13888 : 4 : res_op->resimplify (lseq, valueize);
13889 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
13890 : 4 : return true;
13891 : : }
13892 : 0 : next_after_fail2065:;
13893 : : }
13894 : : }
13895 : : }
13896 : : break;
13897 : : }
13898 : : default:;
13899 : : }
13900 : : }
13901 : : break;
13902 : : default:;
13903 : : }
13904 : : }
13905 : 103 : if (integer_zerop (_q21))
13906 : : {
13907 : 0 : switch (TREE_CODE (_p1))
13908 : : {
13909 : 0 : case SSA_NAME:
13910 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
13911 : : {
13912 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13913 : 0 : switch (gimple_assign_rhs_code (_a2))
13914 : : {
13915 : 0 : case COND_EXPR:
13916 : 0 : {
13917 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
13918 : 0 : _q60 = do_valueize (valueize, _q60);
13919 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
13920 : 0 : _q61 = do_valueize (valueize, _q61);
13921 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
13922 : 0 : _q62 = do_valueize (valueize, _q62);
13923 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
13924 : : {
13925 : 0 : if (integer_zerop (_q62))
13926 : : {
13927 : 0 : {
13928 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
13929 : 0 : const enum tree_code op = BIT_XOR_EXPR;
13930 : 0 : gimple_seq *lseq = seq;
13931 : 0 : if (lseq
13932 : 0 : && (!single_use (captures[0])
13933 : 0 : || !single_use (captures[3])))
13934 : 0 : lseq = NULL;
13935 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2066;
13936 : 0 : {
13937 : 0 : res_op->set_op (COND_EXPR, type, 3);
13938 : 0 : res_op->ops[0] = captures[1];
13939 : 0 : res_op->ops[0] = unshare_expr (res_op->ops[0]);
13940 : 0 : res_op->ops[1] = captures[2];
13941 : 0 : res_op->ops[2] = captures[4];
13942 : 0 : res_op->resimplify (lseq, valueize);
13943 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
13944 : 0 : return true;
13945 : : }
13946 : 0 : next_after_fail2066:;
13947 : : }
13948 : : }
13949 : : }
13950 : : break;
13951 : : }
13952 : : default:;
13953 : : }
13954 : : }
13955 : : break;
13956 : : default:;
13957 : : }
13958 : : }
13959 : 103 : switch (TREE_CODE (_q20))
13960 : : {
13961 : 103 : case SSA_NAME:
13962 : 103 : if (gimple *_d2 = get_def (valueize, _q20))
13963 : : {
13964 : 102 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13965 : 102 : switch (gimple_assign_rhs_code (_a2))
13966 : : {
13967 : 25 : case LT_EXPR:
13968 : 25 : {
13969 : 25 : tree _q30 = gimple_assign_rhs1 (_a2);
13970 : 25 : _q30 = do_valueize (valueize, _q30);
13971 : 25 : tree _q31 = gimple_assign_rhs2 (_a2);
13972 : 25 : _q31 = do_valueize (valueize, _q31);
13973 : 25 : if (zerop (_q22))
13974 : : {
13975 : 24 : switch (TREE_CODE (_p1))
13976 : : {
13977 : 24 : case SSA_NAME:
13978 : 24 : if (gimple *_d3 = get_def (valueize, _p1))
13979 : : {
13980 : 24 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13981 : 24 : switch (gimple_assign_rhs_code (_a3))
13982 : : {
13983 : 24 : case COND_EXPR:
13984 : 24 : {
13985 : 24 : tree _q80 = gimple_assign_rhs1 (_a3);
13986 : 24 : _q80 = do_valueize (valueize, _q80);
13987 : 24 : tree _q81 = gimple_assign_rhs2 (_a3);
13988 : 24 : _q81 = do_valueize (valueize, _q81);
13989 : 24 : tree _q82 = gimple_assign_rhs3 (_a3);
13990 : 24 : _q82 = do_valueize (valueize, _q82);
13991 : 24 : switch (TREE_CODE (_q80))
13992 : : {
13993 : 24 : case SSA_NAME:
13994 : 24 : if (gimple *_d4 = get_def (valueize, _q80))
13995 : : {
13996 : 24 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
13997 : 24 : switch (gimple_assign_rhs_code (_a4))
13998 : : {
13999 : 24 : case GE_EXPR:
14000 : 24 : {
14001 : 24 : tree _q90 = gimple_assign_rhs1 (_a4);
14002 : 24 : _q90 = do_valueize (valueize, _q90);
14003 : 24 : tree _q91 = gimple_assign_rhs2 (_a4);
14004 : 24 : _q91 = do_valueize (valueize, _q91);
14005 : 24 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14006 : : {
14007 : 24 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14008 : : {
14009 : 24 : if (zerop (_q82))
14010 : : {
14011 : 24 : {
14012 : 24 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14013 : 24 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LT_EXPR, GE_EXPR))
14014 : 6 : return true;
14015 : : }
14016 : : }
14017 : : }
14018 : : }
14019 : : break;
14020 : : }
14021 : : default:;
14022 : : }
14023 : : }
14024 : : break;
14025 : 0 : case GE_EXPR:
14026 : 0 : {
14027 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14028 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14029 : 0 : || is_gimple_min_invariant (_q90)))
14030 : : {
14031 : 0 : _q90 = do_valueize (valueize, _q90);
14032 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14033 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14034 : 0 : || is_gimple_min_invariant (_q91)))
14035 : : {
14036 : 0 : _q91 = do_valueize (valueize, _q91);
14037 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14038 : : {
14039 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14040 : : {
14041 : 0 : if (zerop (_q82))
14042 : : {
14043 : 0 : {
14044 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14045 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LT_EXPR, GE_EXPR))
14046 : 0 : return true;
14047 : : }
14048 : : }
14049 : : }
14050 : : }
14051 : : }
14052 : : }
14053 : : break;
14054 : : }
14055 : : default:;
14056 : : }
14057 : : break;
14058 : : }
14059 : : default:;
14060 : : }
14061 : : }
14062 : : break;
14063 : : default:;
14064 : : }
14065 : : }
14066 : : break;
14067 : : }
14068 : 0 : case LE_EXPR:
14069 : 0 : {
14070 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
14071 : 0 : _q30 = do_valueize (valueize, _q30);
14072 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
14073 : 0 : _q31 = do_valueize (valueize, _q31);
14074 : 0 : if (zerop (_q22))
14075 : : {
14076 : 0 : switch (TREE_CODE (_p1))
14077 : : {
14078 : 0 : case SSA_NAME:
14079 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
14080 : : {
14081 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
14082 : 0 : switch (gimple_assign_rhs_code (_a3))
14083 : : {
14084 : 0 : case COND_EXPR:
14085 : 0 : {
14086 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
14087 : 0 : _q80 = do_valueize (valueize, _q80);
14088 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
14089 : 0 : _q81 = do_valueize (valueize, _q81);
14090 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
14091 : 0 : _q82 = do_valueize (valueize, _q82);
14092 : 0 : switch (TREE_CODE (_q80))
14093 : : {
14094 : 0 : case SSA_NAME:
14095 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
14096 : : {
14097 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
14098 : 0 : switch (gimple_assign_rhs_code (_a4))
14099 : : {
14100 : 0 : case GT_EXPR:
14101 : 0 : {
14102 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
14103 : 0 : _q90 = do_valueize (valueize, _q90);
14104 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
14105 : 0 : _q91 = do_valueize (valueize, _q91);
14106 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14107 : : {
14108 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14109 : : {
14110 : 0 : if (zerop (_q82))
14111 : : {
14112 : 0 : {
14113 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14114 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LE_EXPR, GT_EXPR))
14115 : 0 : return true;
14116 : : }
14117 : : }
14118 : : }
14119 : : }
14120 : : break;
14121 : : }
14122 : : default:;
14123 : : }
14124 : : }
14125 : : break;
14126 : 0 : case GT_EXPR:
14127 : 0 : {
14128 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14129 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14130 : 0 : || is_gimple_min_invariant (_q90)))
14131 : : {
14132 : 0 : _q90 = do_valueize (valueize, _q90);
14133 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14134 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14135 : 0 : || is_gimple_min_invariant (_q91)))
14136 : : {
14137 : 0 : _q91 = do_valueize (valueize, _q91);
14138 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14139 : : {
14140 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14141 : : {
14142 : 0 : if (zerop (_q82))
14143 : : {
14144 : 0 : {
14145 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14146 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LE_EXPR, GT_EXPR))
14147 : 0 : return true;
14148 : : }
14149 : : }
14150 : : }
14151 : : }
14152 : : }
14153 : : }
14154 : : break;
14155 : : }
14156 : : default:;
14157 : : }
14158 : : break;
14159 : : }
14160 : : default:;
14161 : : }
14162 : : }
14163 : : break;
14164 : : default:;
14165 : : }
14166 : : }
14167 : : break;
14168 : : }
14169 : 23 : case EQ_EXPR:
14170 : 23 : {
14171 : 23 : tree _q30 = gimple_assign_rhs1 (_a2);
14172 : 23 : _q30 = do_valueize (valueize, _q30);
14173 : 23 : tree _q31 = gimple_assign_rhs2 (_a2);
14174 : 23 : _q31 = do_valueize (valueize, _q31);
14175 : 23 : if (tree_swap_operands_p (_q30, _q31))
14176 : 0 : std::swap (_q30, _q31);
14177 : 23 : if (zerop (_q22))
14178 : : {
14179 : 0 : switch (TREE_CODE (_p1))
14180 : : {
14181 : 0 : case SSA_NAME:
14182 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
14183 : : {
14184 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
14185 : 0 : switch (gimple_assign_rhs_code (_a3))
14186 : : {
14187 : 0 : case COND_EXPR:
14188 : 0 : {
14189 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
14190 : 0 : _q80 = do_valueize (valueize, _q80);
14191 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
14192 : 0 : _q81 = do_valueize (valueize, _q81);
14193 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
14194 : 0 : _q82 = do_valueize (valueize, _q82);
14195 : 0 : switch (TREE_CODE (_q80))
14196 : : {
14197 : 0 : case SSA_NAME:
14198 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
14199 : : {
14200 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
14201 : 0 : switch (gimple_assign_rhs_code (_a4))
14202 : : {
14203 : 0 : case NE_EXPR:
14204 : 0 : {
14205 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
14206 : 0 : _q90 = do_valueize (valueize, _q90);
14207 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
14208 : 0 : _q91 = do_valueize (valueize, _q91);
14209 : 0 : if (tree_swap_operands_p (_q90, _q91))
14210 : 0 : std::swap (_q90, _q91);
14211 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14212 : : {
14213 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14214 : : {
14215 : 0 : if (zerop (_q82))
14216 : : {
14217 : 0 : {
14218 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14219 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, EQ_EXPR, NE_EXPR))
14220 : 0 : return true;
14221 : : }
14222 : : }
14223 : : }
14224 : : }
14225 : 673848 : break;
14226 : : }
14227 : : default:;
14228 : : }
14229 : : }
14230 : : break;
14231 : 0 : case NE_EXPR:
14232 : 0 : {
14233 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14234 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14235 : 0 : || is_gimple_min_invariant (_q90)))
14236 : : {
14237 : 0 : _q90 = do_valueize (valueize, _q90);
14238 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14239 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14240 : 0 : || is_gimple_min_invariant (_q91)))
14241 : : {
14242 : 0 : _q91 = do_valueize (valueize, _q91);
14243 : 0 : if (tree_swap_operands_p (_q90, _q91))
14244 : 0 : std::swap (_q90, _q91);
14245 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14246 : : {
14247 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14248 : : {
14249 : 0 : if (zerop (_q82))
14250 : : {
14251 : 0 : {
14252 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14253 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, EQ_EXPR, NE_EXPR))
14254 : 0 : return true;
14255 : : }
14256 : : }
14257 : : }
14258 : : }
14259 : : }
14260 : : }
14261 : 673848 : break;
14262 : : }
14263 : : default:;
14264 : : }
14265 : : break;
14266 : : }
14267 : : default:;
14268 : : }
14269 : : }
14270 : : break;
14271 : : default:;
14272 : : }
14273 : : }
14274 : 673848 : break;
14275 : : }
14276 : 49 : case NE_EXPR:
14277 : 49 : {
14278 : 49 : tree _q30 = gimple_assign_rhs1 (_a2);
14279 : 49 : _q30 = do_valueize (valueize, _q30);
14280 : 49 : tree _q31 = gimple_assign_rhs2 (_a2);
14281 : 49 : _q31 = do_valueize (valueize, _q31);
14282 : 49 : if (tree_swap_operands_p (_q30, _q31))
14283 : 0 : std::swap (_q30, _q31);
14284 : 49 : if (zerop (_q22))
14285 : : {
14286 : 49 : switch (TREE_CODE (_p1))
14287 : : {
14288 : 49 : case SSA_NAME:
14289 : 49 : if (gimple *_d3 = get_def (valueize, _p1))
14290 : : {
14291 : 49 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
14292 : 38 : switch (gimple_assign_rhs_code (_a3))
14293 : : {
14294 : 0 : case COND_EXPR:
14295 : 0 : {
14296 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
14297 : 0 : _q80 = do_valueize (valueize, _q80);
14298 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
14299 : 0 : _q81 = do_valueize (valueize, _q81);
14300 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
14301 : 0 : _q82 = do_valueize (valueize, _q82);
14302 : 0 : switch (TREE_CODE (_q80))
14303 : : {
14304 : 0 : case SSA_NAME:
14305 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
14306 : : {
14307 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
14308 : 0 : switch (gimple_assign_rhs_code (_a4))
14309 : : {
14310 : 0 : case EQ_EXPR:
14311 : 0 : {
14312 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
14313 : 0 : _q90 = do_valueize (valueize, _q90);
14314 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
14315 : 0 : _q91 = do_valueize (valueize, _q91);
14316 : 0 : if (tree_swap_operands_p (_q90, _q91))
14317 : 0 : std::swap (_q90, _q91);
14318 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14319 : : {
14320 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14321 : : {
14322 : 0 : if (zerop (_q82))
14323 : : {
14324 : 0 : {
14325 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14326 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, NE_EXPR, EQ_EXPR))
14327 : 0 : return true;
14328 : : }
14329 : : }
14330 : : }
14331 : : }
14332 : 673848 : break;
14333 : : }
14334 : : default:;
14335 : : }
14336 : : }
14337 : : break;
14338 : 0 : case EQ_EXPR:
14339 : 0 : {
14340 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14341 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14342 : 0 : || is_gimple_min_invariant (_q90)))
14343 : : {
14344 : 0 : _q90 = do_valueize (valueize, _q90);
14345 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14346 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14347 : 0 : || is_gimple_min_invariant (_q91)))
14348 : : {
14349 : 0 : _q91 = do_valueize (valueize, _q91);
14350 : 0 : if (tree_swap_operands_p (_q90, _q91))
14351 : 0 : std::swap (_q90, _q91);
14352 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14353 : : {
14354 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14355 : : {
14356 : 0 : if (zerop (_q82))
14357 : : {
14358 : 0 : {
14359 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14360 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, NE_EXPR, EQ_EXPR))
14361 : 0 : return true;
14362 : : }
14363 : : }
14364 : : }
14365 : : }
14366 : : }
14367 : : }
14368 : 673848 : break;
14369 : : }
14370 : : default:;
14371 : : }
14372 : : break;
14373 : : }
14374 : : default:;
14375 : : }
14376 : : }
14377 : : break;
14378 : : default:;
14379 : : }
14380 : : }
14381 : 673848 : break;
14382 : : }
14383 : 2 : case GE_EXPR:
14384 : 2 : {
14385 : 2 : tree _q30 = gimple_assign_rhs1 (_a2);
14386 : 2 : _q30 = do_valueize (valueize, _q30);
14387 : 2 : tree _q31 = gimple_assign_rhs2 (_a2);
14388 : 2 : _q31 = do_valueize (valueize, _q31);
14389 : 2 : if (zerop (_q22))
14390 : : {
14391 : 2 : switch (TREE_CODE (_p1))
14392 : : {
14393 : 0 : case SSA_NAME:
14394 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
14395 : : {
14396 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
14397 : 0 : switch (gimple_assign_rhs_code (_a3))
14398 : : {
14399 : 0 : case COND_EXPR:
14400 : 0 : {
14401 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
14402 : 0 : _q80 = do_valueize (valueize, _q80);
14403 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
14404 : 0 : _q81 = do_valueize (valueize, _q81);
14405 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
14406 : 0 : _q82 = do_valueize (valueize, _q82);
14407 : 0 : switch (TREE_CODE (_q80))
14408 : : {
14409 : 0 : case SSA_NAME:
14410 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
14411 : : {
14412 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
14413 : 0 : switch (gimple_assign_rhs_code (_a4))
14414 : : {
14415 : 0 : case LT_EXPR:
14416 : 0 : {
14417 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
14418 : 0 : _q90 = do_valueize (valueize, _q90);
14419 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
14420 : 0 : _q91 = do_valueize (valueize, _q91);
14421 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14422 : : {
14423 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14424 : : {
14425 : 0 : if (zerop (_q82))
14426 : : {
14427 : 0 : {
14428 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14429 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GE_EXPR, LT_EXPR))
14430 : 0 : return true;
14431 : : }
14432 : : }
14433 : : }
14434 : : }
14435 : : break;
14436 : : }
14437 : : default:;
14438 : : }
14439 : : }
14440 : : break;
14441 : 0 : case LT_EXPR:
14442 : 0 : {
14443 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14444 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14445 : 0 : || is_gimple_min_invariant (_q90)))
14446 : : {
14447 : 0 : _q90 = do_valueize (valueize, _q90);
14448 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14449 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14450 : 0 : || is_gimple_min_invariant (_q91)))
14451 : : {
14452 : 0 : _q91 = do_valueize (valueize, _q91);
14453 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14454 : : {
14455 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14456 : : {
14457 : 0 : if (zerop (_q82))
14458 : : {
14459 : 0 : {
14460 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14461 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GE_EXPR, LT_EXPR))
14462 : 0 : return true;
14463 : : }
14464 : : }
14465 : : }
14466 : : }
14467 : : }
14468 : : }
14469 : : break;
14470 : : }
14471 : : default:;
14472 : : }
14473 : : break;
14474 : : }
14475 : : default:;
14476 : : }
14477 : : }
14478 : : break;
14479 : : default:;
14480 : : }
14481 : : }
14482 : : break;
14483 : : }
14484 : 0 : case GT_EXPR:
14485 : 0 : {
14486 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
14487 : 0 : _q30 = do_valueize (valueize, _q30);
14488 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
14489 : 0 : _q31 = do_valueize (valueize, _q31);
14490 : 0 : if (zerop (_q22))
14491 : : {
14492 : 0 : switch (TREE_CODE (_p1))
14493 : : {
14494 : 0 : case SSA_NAME:
14495 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
14496 : : {
14497 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
14498 : 0 : switch (gimple_assign_rhs_code (_a3))
14499 : : {
14500 : 0 : case COND_EXPR:
14501 : 0 : {
14502 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
14503 : 0 : _q80 = do_valueize (valueize, _q80);
14504 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
14505 : 0 : _q81 = do_valueize (valueize, _q81);
14506 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
14507 : 0 : _q82 = do_valueize (valueize, _q82);
14508 : 0 : switch (TREE_CODE (_q80))
14509 : : {
14510 : 0 : case SSA_NAME:
14511 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
14512 : : {
14513 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
14514 : 0 : switch (gimple_assign_rhs_code (_a4))
14515 : : {
14516 : 0 : case LE_EXPR:
14517 : 0 : {
14518 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
14519 : 0 : _q90 = do_valueize (valueize, _q90);
14520 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
14521 : 0 : _q91 = do_valueize (valueize, _q91);
14522 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14523 : : {
14524 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14525 : : {
14526 : 0 : if (zerop (_q82))
14527 : : {
14528 : 0 : {
14529 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14530 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GT_EXPR, LE_EXPR))
14531 : 0 : return true;
14532 : : }
14533 : : }
14534 : : }
14535 : : }
14536 : : break;
14537 : : }
14538 : : default:;
14539 : : }
14540 : : }
14541 : : break;
14542 : 0 : case LE_EXPR:
14543 : 0 : {
14544 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14545 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14546 : 0 : || is_gimple_min_invariant (_q90)))
14547 : : {
14548 : 0 : _q90 = do_valueize (valueize, _q90);
14549 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14550 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14551 : 0 : || is_gimple_min_invariant (_q91)))
14552 : : {
14553 : 0 : _q91 = do_valueize (valueize, _q91);
14554 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14555 : : {
14556 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14557 : : {
14558 : 0 : if (zerop (_q82))
14559 : : {
14560 : 0 : {
14561 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14562 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GT_EXPR, LE_EXPR))
14563 : 0 : return true;
14564 : : }
14565 : : }
14566 : : }
14567 : : }
14568 : : }
14569 : : }
14570 : : break;
14571 : : }
14572 : : default:;
14573 : : }
14574 : : break;
14575 : : }
14576 : : default:;
14577 : : }
14578 : : }
14579 : : break;
14580 : : default:;
14581 : : }
14582 : : }
14583 : : break;
14584 : : }
14585 : 0 : case UNORDERED_EXPR:
14586 : 0 : {
14587 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
14588 : 0 : _q30 = do_valueize (valueize, _q30);
14589 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
14590 : 0 : _q31 = do_valueize (valueize, _q31);
14591 : 0 : if (tree_swap_operands_p (_q30, _q31))
14592 : 0 : std::swap (_q30, _q31);
14593 : 0 : if (zerop (_q22))
14594 : : {
14595 : 0 : switch (TREE_CODE (_p1))
14596 : : {
14597 : 0 : case SSA_NAME:
14598 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
14599 : : {
14600 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
14601 : 0 : switch (gimple_assign_rhs_code (_a3))
14602 : : {
14603 : 0 : case COND_EXPR:
14604 : 0 : {
14605 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
14606 : 0 : _q80 = do_valueize (valueize, _q80);
14607 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
14608 : 0 : _q81 = do_valueize (valueize, _q81);
14609 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
14610 : 0 : _q82 = do_valueize (valueize, _q82);
14611 : 0 : switch (TREE_CODE (_q80))
14612 : : {
14613 : 0 : case SSA_NAME:
14614 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
14615 : : {
14616 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
14617 : 0 : switch (gimple_assign_rhs_code (_a4))
14618 : : {
14619 : 0 : case ORDERED_EXPR:
14620 : 0 : {
14621 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
14622 : 0 : _q90 = do_valueize (valueize, _q90);
14623 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
14624 : 0 : _q91 = do_valueize (valueize, _q91);
14625 : 0 : if (tree_swap_operands_p (_q90, _q91))
14626 : 0 : std::swap (_q90, _q91);
14627 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14628 : : {
14629 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14630 : : {
14631 : 0 : if (zerop (_q82))
14632 : : {
14633 : 0 : {
14634 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14635 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNORDERED_EXPR, ORDERED_EXPR))
14636 : 0 : return true;
14637 : : }
14638 : : }
14639 : : }
14640 : : }
14641 : 673848 : break;
14642 : : }
14643 : : default:;
14644 : : }
14645 : : }
14646 : : break;
14647 : 0 : case ORDERED_EXPR:
14648 : 0 : {
14649 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14650 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14651 : 0 : || is_gimple_min_invariant (_q90)))
14652 : : {
14653 : 0 : _q90 = do_valueize (valueize, _q90);
14654 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14655 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14656 : 0 : || is_gimple_min_invariant (_q91)))
14657 : : {
14658 : 0 : _q91 = do_valueize (valueize, _q91);
14659 : 0 : if (tree_swap_operands_p (_q90, _q91))
14660 : 0 : std::swap (_q90, _q91);
14661 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14662 : : {
14663 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14664 : : {
14665 : 0 : if (zerop (_q82))
14666 : : {
14667 : 0 : {
14668 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14669 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNORDERED_EXPR, ORDERED_EXPR))
14670 : 0 : return true;
14671 : : }
14672 : : }
14673 : : }
14674 : : }
14675 : : }
14676 : : }
14677 : 673848 : break;
14678 : : }
14679 : : default:;
14680 : : }
14681 : : break;
14682 : : }
14683 : : default:;
14684 : : }
14685 : : }
14686 : : break;
14687 : : default:;
14688 : : }
14689 : : }
14690 : 673848 : break;
14691 : : }
14692 : 0 : case ORDERED_EXPR:
14693 : 0 : {
14694 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
14695 : 0 : _q30 = do_valueize (valueize, _q30);
14696 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
14697 : 0 : _q31 = do_valueize (valueize, _q31);
14698 : 0 : if (tree_swap_operands_p (_q30, _q31))
14699 : 0 : std::swap (_q30, _q31);
14700 : 0 : if (zerop (_q22))
14701 : : {
14702 : 0 : switch (TREE_CODE (_p1))
14703 : : {
14704 : 0 : case SSA_NAME:
14705 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
14706 : : {
14707 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
14708 : 0 : switch (gimple_assign_rhs_code (_a3))
14709 : : {
14710 : 0 : case COND_EXPR:
14711 : 0 : {
14712 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
14713 : 0 : _q80 = do_valueize (valueize, _q80);
14714 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
14715 : 0 : _q81 = do_valueize (valueize, _q81);
14716 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
14717 : 0 : _q82 = do_valueize (valueize, _q82);
14718 : 0 : switch (TREE_CODE (_q80))
14719 : : {
14720 : 0 : case SSA_NAME:
14721 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
14722 : : {
14723 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
14724 : 0 : switch (gimple_assign_rhs_code (_a4))
14725 : : {
14726 : 0 : case UNORDERED_EXPR:
14727 : 0 : {
14728 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
14729 : 0 : _q90 = do_valueize (valueize, _q90);
14730 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
14731 : 0 : _q91 = do_valueize (valueize, _q91);
14732 : 0 : if (tree_swap_operands_p (_q90, _q91))
14733 : 0 : std::swap (_q90, _q91);
14734 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14735 : : {
14736 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14737 : : {
14738 : 0 : if (zerop (_q82))
14739 : : {
14740 : 0 : {
14741 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14742 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, ORDERED_EXPR, UNORDERED_EXPR))
14743 : 0 : return true;
14744 : : }
14745 : : }
14746 : : }
14747 : : }
14748 : 673848 : break;
14749 : : }
14750 : : default:;
14751 : : }
14752 : : }
14753 : : break;
14754 : 0 : case UNORDERED_EXPR:
14755 : 0 : {
14756 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14757 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14758 : 0 : || is_gimple_min_invariant (_q90)))
14759 : : {
14760 : 0 : _q90 = do_valueize (valueize, _q90);
14761 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14762 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14763 : 0 : || is_gimple_min_invariant (_q91)))
14764 : : {
14765 : 0 : _q91 = do_valueize (valueize, _q91);
14766 : 0 : if (tree_swap_operands_p (_q90, _q91))
14767 : 0 : std::swap (_q90, _q91);
14768 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14769 : : {
14770 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14771 : : {
14772 : 0 : if (zerop (_q82))
14773 : : {
14774 : 0 : {
14775 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14776 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, ORDERED_EXPR, UNORDERED_EXPR))
14777 : 0 : return true;
14778 : : }
14779 : : }
14780 : : }
14781 : : }
14782 : : }
14783 : : }
14784 : 673848 : break;
14785 : : }
14786 : : default:;
14787 : : }
14788 : : break;
14789 : : }
14790 : : default:;
14791 : : }
14792 : : }
14793 : : break;
14794 : : default:;
14795 : : }
14796 : : }
14797 : 673848 : break;
14798 : : }
14799 : 0 : case UNLT_EXPR:
14800 : 0 : {
14801 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
14802 : 0 : _q30 = do_valueize (valueize, _q30);
14803 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
14804 : 0 : _q31 = do_valueize (valueize, _q31);
14805 : 0 : if (zerop (_q22))
14806 : : {
14807 : 0 : switch (TREE_CODE (_p1))
14808 : : {
14809 : 0 : case SSA_NAME:
14810 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
14811 : : {
14812 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
14813 : 0 : switch (gimple_assign_rhs_code (_a3))
14814 : : {
14815 : 0 : case COND_EXPR:
14816 : 0 : {
14817 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
14818 : 0 : _q80 = do_valueize (valueize, _q80);
14819 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
14820 : 0 : _q81 = do_valueize (valueize, _q81);
14821 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
14822 : 0 : _q82 = do_valueize (valueize, _q82);
14823 : 0 : switch (TREE_CODE (_q80))
14824 : : {
14825 : 0 : case SSA_NAME:
14826 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
14827 : : {
14828 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
14829 : 0 : switch (gimple_assign_rhs_code (_a4))
14830 : : {
14831 : 0 : case GE_EXPR:
14832 : 0 : {
14833 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
14834 : 0 : _q90 = do_valueize (valueize, _q90);
14835 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
14836 : 0 : _q91 = do_valueize (valueize, _q91);
14837 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14838 : : {
14839 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14840 : : {
14841 : 0 : if (zerop (_q82))
14842 : : {
14843 : 0 : {
14844 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14845 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLT_EXPR, GE_EXPR))
14846 : 0 : return true;
14847 : : }
14848 : : }
14849 : : }
14850 : : }
14851 : : break;
14852 : : }
14853 : : default:;
14854 : : }
14855 : : }
14856 : : break;
14857 : 0 : case GE_EXPR:
14858 : 0 : {
14859 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14860 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14861 : 0 : || is_gimple_min_invariant (_q90)))
14862 : : {
14863 : 0 : _q90 = do_valueize (valueize, _q90);
14864 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14865 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14866 : 0 : || is_gimple_min_invariant (_q91)))
14867 : : {
14868 : 0 : _q91 = do_valueize (valueize, _q91);
14869 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14870 : : {
14871 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14872 : : {
14873 : 0 : if (zerop (_q82))
14874 : : {
14875 : 0 : {
14876 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14877 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLT_EXPR, GE_EXPR))
14878 : 0 : return true;
14879 : : }
14880 : : }
14881 : : }
14882 : : }
14883 : : }
14884 : : }
14885 : : break;
14886 : : }
14887 : : default:;
14888 : : }
14889 : : break;
14890 : : }
14891 : : default:;
14892 : : }
14893 : : }
14894 : : break;
14895 : : default:;
14896 : : }
14897 : : }
14898 : : break;
14899 : : }
14900 : 0 : case UNLE_EXPR:
14901 : 0 : {
14902 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
14903 : 0 : _q30 = do_valueize (valueize, _q30);
14904 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
14905 : 0 : _q31 = do_valueize (valueize, _q31);
14906 : 0 : if (zerop (_q22))
14907 : : {
14908 : 0 : switch (TREE_CODE (_p1))
14909 : : {
14910 : 0 : case SSA_NAME:
14911 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
14912 : : {
14913 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
14914 : 0 : switch (gimple_assign_rhs_code (_a3))
14915 : : {
14916 : 0 : case COND_EXPR:
14917 : 0 : {
14918 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
14919 : 0 : _q80 = do_valueize (valueize, _q80);
14920 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
14921 : 0 : _q81 = do_valueize (valueize, _q81);
14922 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
14923 : 0 : _q82 = do_valueize (valueize, _q82);
14924 : 0 : switch (TREE_CODE (_q80))
14925 : : {
14926 : 0 : case SSA_NAME:
14927 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
14928 : : {
14929 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
14930 : 0 : switch (gimple_assign_rhs_code (_a4))
14931 : : {
14932 : 0 : case GT_EXPR:
14933 : 0 : {
14934 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
14935 : 0 : _q90 = do_valueize (valueize, _q90);
14936 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
14937 : 0 : _q91 = do_valueize (valueize, _q91);
14938 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14939 : : {
14940 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14941 : : {
14942 : 0 : if (zerop (_q82))
14943 : : {
14944 : 0 : {
14945 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14946 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLE_EXPR, GT_EXPR))
14947 : 0 : return true;
14948 : : }
14949 : : }
14950 : : }
14951 : : }
14952 : : break;
14953 : : }
14954 : : default:;
14955 : : }
14956 : : }
14957 : : break;
14958 : 0 : case GT_EXPR:
14959 : 0 : {
14960 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
14961 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
14962 : 0 : || is_gimple_min_invariant (_q90)))
14963 : : {
14964 : 0 : _q90 = do_valueize (valueize, _q90);
14965 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
14966 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
14967 : 0 : || is_gimple_min_invariant (_q91)))
14968 : : {
14969 : 0 : _q91 = do_valueize (valueize, _q91);
14970 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
14971 : : {
14972 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
14973 : : {
14974 : 0 : if (zerop (_q82))
14975 : : {
14976 : 0 : {
14977 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
14978 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLE_EXPR, GT_EXPR))
14979 : 0 : return true;
14980 : : }
14981 : : }
14982 : : }
14983 : : }
14984 : : }
14985 : : }
14986 : : break;
14987 : : }
14988 : : default:;
14989 : : }
14990 : : break;
14991 : : }
14992 : : default:;
14993 : : }
14994 : : }
14995 : : break;
14996 : : default:;
14997 : : }
14998 : : }
14999 : : break;
15000 : : }
15001 : 0 : case UNGT_EXPR:
15002 : 0 : {
15003 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
15004 : 0 : _q30 = do_valueize (valueize, _q30);
15005 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
15006 : 0 : _q31 = do_valueize (valueize, _q31);
15007 : 0 : if (zerop (_q22))
15008 : : {
15009 : 0 : switch (TREE_CODE (_p1))
15010 : : {
15011 : 0 : case SSA_NAME:
15012 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
15013 : : {
15014 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15015 : 0 : switch (gimple_assign_rhs_code (_a3))
15016 : : {
15017 : 0 : case COND_EXPR:
15018 : 0 : {
15019 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
15020 : 0 : _q80 = do_valueize (valueize, _q80);
15021 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
15022 : 0 : _q81 = do_valueize (valueize, _q81);
15023 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
15024 : 0 : _q82 = do_valueize (valueize, _q82);
15025 : 0 : switch (TREE_CODE (_q80))
15026 : : {
15027 : 0 : case SSA_NAME:
15028 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
15029 : : {
15030 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
15031 : 0 : switch (gimple_assign_rhs_code (_a4))
15032 : : {
15033 : 0 : case LE_EXPR:
15034 : 0 : {
15035 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
15036 : 0 : _q90 = do_valueize (valueize, _q90);
15037 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
15038 : 0 : _q91 = do_valueize (valueize, _q91);
15039 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15040 : : {
15041 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15042 : : {
15043 : 0 : if (zerop (_q82))
15044 : : {
15045 : 0 : {
15046 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15047 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGT_EXPR, LE_EXPR))
15048 : 0 : return true;
15049 : : }
15050 : : }
15051 : : }
15052 : : }
15053 : : break;
15054 : : }
15055 : : default:;
15056 : : }
15057 : : }
15058 : : break;
15059 : 0 : case LE_EXPR:
15060 : 0 : {
15061 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
15062 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
15063 : 0 : || is_gimple_min_invariant (_q90)))
15064 : : {
15065 : 0 : _q90 = do_valueize (valueize, _q90);
15066 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
15067 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
15068 : 0 : || is_gimple_min_invariant (_q91)))
15069 : : {
15070 : 0 : _q91 = do_valueize (valueize, _q91);
15071 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15072 : : {
15073 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15074 : : {
15075 : 0 : if (zerop (_q82))
15076 : : {
15077 : 0 : {
15078 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15079 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGT_EXPR, LE_EXPR))
15080 : 0 : return true;
15081 : : }
15082 : : }
15083 : : }
15084 : : }
15085 : : }
15086 : : }
15087 : : break;
15088 : : }
15089 : : default:;
15090 : : }
15091 : : break;
15092 : : }
15093 : : default:;
15094 : : }
15095 : : }
15096 : : break;
15097 : : default:;
15098 : : }
15099 : : }
15100 : : break;
15101 : : }
15102 : 0 : case UNGE_EXPR:
15103 : 0 : {
15104 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
15105 : 0 : _q30 = do_valueize (valueize, _q30);
15106 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
15107 : 0 : _q31 = do_valueize (valueize, _q31);
15108 : 0 : if (zerop (_q22))
15109 : : {
15110 : 0 : switch (TREE_CODE (_p1))
15111 : : {
15112 : 0 : case SSA_NAME:
15113 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
15114 : : {
15115 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15116 : 0 : switch (gimple_assign_rhs_code (_a3))
15117 : : {
15118 : 0 : case COND_EXPR:
15119 : 0 : {
15120 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
15121 : 0 : _q80 = do_valueize (valueize, _q80);
15122 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
15123 : 0 : _q81 = do_valueize (valueize, _q81);
15124 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
15125 : 0 : _q82 = do_valueize (valueize, _q82);
15126 : 0 : switch (TREE_CODE (_q80))
15127 : : {
15128 : 0 : case SSA_NAME:
15129 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
15130 : : {
15131 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
15132 : 0 : switch (gimple_assign_rhs_code (_a4))
15133 : : {
15134 : 0 : case LT_EXPR:
15135 : 0 : {
15136 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
15137 : 0 : _q90 = do_valueize (valueize, _q90);
15138 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
15139 : 0 : _q91 = do_valueize (valueize, _q91);
15140 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15141 : : {
15142 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15143 : : {
15144 : 0 : if (zerop (_q82))
15145 : : {
15146 : 0 : {
15147 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15148 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGE_EXPR, LT_EXPR))
15149 : 0 : return true;
15150 : : }
15151 : : }
15152 : : }
15153 : : }
15154 : : break;
15155 : : }
15156 : : default:;
15157 : : }
15158 : : }
15159 : : break;
15160 : 0 : case LT_EXPR:
15161 : 0 : {
15162 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
15163 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
15164 : 0 : || is_gimple_min_invariant (_q90)))
15165 : : {
15166 : 0 : _q90 = do_valueize (valueize, _q90);
15167 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
15168 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
15169 : 0 : || is_gimple_min_invariant (_q91)))
15170 : : {
15171 : 0 : _q91 = do_valueize (valueize, _q91);
15172 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15173 : : {
15174 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15175 : : {
15176 : 0 : if (zerop (_q82))
15177 : : {
15178 : 0 : {
15179 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15180 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGE_EXPR, LT_EXPR))
15181 : 0 : return true;
15182 : : }
15183 : : }
15184 : : }
15185 : : }
15186 : : }
15187 : : }
15188 : : break;
15189 : : }
15190 : : default:;
15191 : : }
15192 : : break;
15193 : : }
15194 : : default:;
15195 : : }
15196 : : }
15197 : : break;
15198 : : default:;
15199 : : }
15200 : : }
15201 : : break;
15202 : : }
15203 : 0 : case UNEQ_EXPR:
15204 : 0 : {
15205 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
15206 : 0 : _q30 = do_valueize (valueize, _q30);
15207 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
15208 : 0 : _q31 = do_valueize (valueize, _q31);
15209 : 0 : if (tree_swap_operands_p (_q30, _q31))
15210 : 0 : std::swap (_q30, _q31);
15211 : 0 : if (zerop (_q22))
15212 : : {
15213 : 0 : switch (TREE_CODE (_p1))
15214 : : {
15215 : 0 : case SSA_NAME:
15216 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
15217 : : {
15218 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15219 : 0 : switch (gimple_assign_rhs_code (_a3))
15220 : : {
15221 : 0 : case COND_EXPR:
15222 : 0 : {
15223 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
15224 : 0 : _q80 = do_valueize (valueize, _q80);
15225 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
15226 : 0 : _q81 = do_valueize (valueize, _q81);
15227 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
15228 : 0 : _q82 = do_valueize (valueize, _q82);
15229 : 0 : switch (TREE_CODE (_q80))
15230 : : {
15231 : 0 : case SSA_NAME:
15232 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
15233 : : {
15234 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
15235 : 0 : switch (gimple_assign_rhs_code (_a4))
15236 : : {
15237 : 0 : case LTGT_EXPR:
15238 : 0 : {
15239 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
15240 : 0 : _q90 = do_valueize (valueize, _q90);
15241 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
15242 : 0 : _q91 = do_valueize (valueize, _q91);
15243 : 0 : if (tree_swap_operands_p (_q90, _q91))
15244 : 0 : std::swap (_q90, _q91);
15245 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15246 : : {
15247 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15248 : : {
15249 : 0 : if (zerop (_q82))
15250 : : {
15251 : 0 : {
15252 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15253 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNEQ_EXPR, LTGT_EXPR))
15254 : 0 : return true;
15255 : : }
15256 : : }
15257 : : }
15258 : : }
15259 : 673848 : break;
15260 : : }
15261 : : default:;
15262 : : }
15263 : : }
15264 : : break;
15265 : 0 : case LTGT_EXPR:
15266 : 0 : {
15267 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
15268 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
15269 : 0 : || is_gimple_min_invariant (_q90)))
15270 : : {
15271 : 0 : _q90 = do_valueize (valueize, _q90);
15272 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
15273 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
15274 : 0 : || is_gimple_min_invariant (_q91)))
15275 : : {
15276 : 0 : _q91 = do_valueize (valueize, _q91);
15277 : 0 : if (tree_swap_operands_p (_q90, _q91))
15278 : 0 : std::swap (_q90, _q91);
15279 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15280 : : {
15281 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15282 : : {
15283 : 0 : if (zerop (_q82))
15284 : : {
15285 : 0 : {
15286 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15287 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNEQ_EXPR, LTGT_EXPR))
15288 : 0 : return true;
15289 : : }
15290 : : }
15291 : : }
15292 : : }
15293 : : }
15294 : : }
15295 : 673848 : break;
15296 : : }
15297 : : default:;
15298 : : }
15299 : : break;
15300 : : }
15301 : : default:;
15302 : : }
15303 : : }
15304 : : break;
15305 : : default:;
15306 : : }
15307 : : }
15308 : 673848 : break;
15309 : : }
15310 : 0 : case LTGT_EXPR:
15311 : 0 : {
15312 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
15313 : 0 : _q30 = do_valueize (valueize, _q30);
15314 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
15315 : 0 : _q31 = do_valueize (valueize, _q31);
15316 : 0 : if (tree_swap_operands_p (_q30, _q31))
15317 : 0 : std::swap (_q30, _q31);
15318 : 0 : if (zerop (_q22))
15319 : : {
15320 : 0 : switch (TREE_CODE (_p1))
15321 : : {
15322 : 0 : case SSA_NAME:
15323 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
15324 : : {
15325 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15326 : 0 : switch (gimple_assign_rhs_code (_a3))
15327 : : {
15328 : 0 : case COND_EXPR:
15329 : 0 : {
15330 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
15331 : 0 : _q80 = do_valueize (valueize, _q80);
15332 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
15333 : 0 : _q81 = do_valueize (valueize, _q81);
15334 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
15335 : 0 : _q82 = do_valueize (valueize, _q82);
15336 : 0 : switch (TREE_CODE (_q80))
15337 : : {
15338 : 0 : case SSA_NAME:
15339 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
15340 : : {
15341 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
15342 : 0 : switch (gimple_assign_rhs_code (_a4))
15343 : : {
15344 : 0 : case UNEQ_EXPR:
15345 : 0 : {
15346 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
15347 : 0 : _q90 = do_valueize (valueize, _q90);
15348 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
15349 : 0 : _q91 = do_valueize (valueize, _q91);
15350 : 0 : if (tree_swap_operands_p (_q90, _q91))
15351 : 0 : std::swap (_q90, _q91);
15352 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15353 : : {
15354 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15355 : : {
15356 : 0 : if (zerop (_q82))
15357 : : {
15358 : 0 : {
15359 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15360 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LTGT_EXPR, UNEQ_EXPR))
15361 : 0 : return true;
15362 : : }
15363 : : }
15364 : : }
15365 : : }
15366 : 673848 : break;
15367 : : }
15368 : : default:;
15369 : : }
15370 : : }
15371 : : break;
15372 : 0 : case UNEQ_EXPR:
15373 : 0 : {
15374 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
15375 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
15376 : 0 : || is_gimple_min_invariant (_q90)))
15377 : : {
15378 : 0 : _q90 = do_valueize (valueize, _q90);
15379 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
15380 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
15381 : 0 : || is_gimple_min_invariant (_q91)))
15382 : : {
15383 : 0 : _q91 = do_valueize (valueize, _q91);
15384 : 0 : if (tree_swap_operands_p (_q90, _q91))
15385 : 0 : std::swap (_q90, _q91);
15386 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15387 : : {
15388 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15389 : : {
15390 : 0 : if (zerop (_q82))
15391 : : {
15392 : 0 : {
15393 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15394 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LTGT_EXPR, UNEQ_EXPR))
15395 : 0 : return true;
15396 : : }
15397 : : }
15398 : : }
15399 : : }
15400 : : }
15401 : : }
15402 : 673848 : break;
15403 : : }
15404 : : default:;
15405 : : }
15406 : : break;
15407 : : }
15408 : : default:;
15409 : : }
15410 : : }
15411 : : break;
15412 : : default:;
15413 : : }
15414 : : }
15415 : 673848 : break;
15416 : : }
15417 : : default:;
15418 : : }
15419 : : }
15420 : : break;
15421 : 0 : case LT_EXPR:
15422 : 0 : {
15423 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
15424 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
15425 : 0 : || is_gimple_min_invariant (_q30)))
15426 : : {
15427 : 0 : _q30 = do_valueize (valueize, _q30);
15428 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
15429 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
15430 : 0 : || is_gimple_min_invariant (_q31)))
15431 : : {
15432 : 0 : _q31 = do_valueize (valueize, _q31);
15433 : 0 : if (zerop (_q22))
15434 : : {
15435 : 0 : switch (TREE_CODE (_p1))
15436 : : {
15437 : 0 : case SSA_NAME:
15438 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
15439 : : {
15440 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15441 : 0 : switch (gimple_assign_rhs_code (_a2))
15442 : : {
15443 : 0 : case COND_EXPR:
15444 : 0 : {
15445 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
15446 : 0 : _q80 = do_valueize (valueize, _q80);
15447 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
15448 : 0 : _q81 = do_valueize (valueize, _q81);
15449 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
15450 : 0 : _q82 = do_valueize (valueize, _q82);
15451 : 0 : switch (TREE_CODE (_q80))
15452 : : {
15453 : 0 : case SSA_NAME:
15454 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
15455 : : {
15456 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15457 : 0 : switch (gimple_assign_rhs_code (_a3))
15458 : : {
15459 : 0 : case GE_EXPR:
15460 : 0 : {
15461 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
15462 : 0 : _q90 = do_valueize (valueize, _q90);
15463 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
15464 : 0 : _q91 = do_valueize (valueize, _q91);
15465 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15466 : : {
15467 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15468 : : {
15469 : 0 : if (zerop (_q82))
15470 : : {
15471 : 0 : {
15472 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15473 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LT_EXPR, GE_EXPR))
15474 : 0 : return true;
15475 : : }
15476 : : }
15477 : : }
15478 : : }
15479 : : break;
15480 : : }
15481 : : default:;
15482 : : }
15483 : : }
15484 : : break;
15485 : 0 : case GE_EXPR:
15486 : 0 : {
15487 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
15488 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
15489 : 0 : || is_gimple_min_invariant (_q90)))
15490 : : {
15491 : 0 : _q90 = do_valueize (valueize, _q90);
15492 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
15493 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
15494 : 0 : || is_gimple_min_invariant (_q91)))
15495 : : {
15496 : 0 : _q91 = do_valueize (valueize, _q91);
15497 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15498 : : {
15499 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15500 : : {
15501 : 0 : if (zerop (_q82))
15502 : : {
15503 : 0 : {
15504 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15505 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LT_EXPR, GE_EXPR))
15506 : 0 : return true;
15507 : : }
15508 : : }
15509 : : }
15510 : : }
15511 : : }
15512 : : }
15513 : : break;
15514 : : }
15515 : : default:;
15516 : : }
15517 : : break;
15518 : : }
15519 : : default:;
15520 : : }
15521 : : }
15522 : : break;
15523 : : default:;
15524 : : }
15525 : : }
15526 : : }
15527 : : }
15528 : : break;
15529 : : }
15530 : 0 : case LE_EXPR:
15531 : 0 : {
15532 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
15533 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
15534 : 0 : || is_gimple_min_invariant (_q30)))
15535 : : {
15536 : 0 : _q30 = do_valueize (valueize, _q30);
15537 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
15538 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
15539 : 0 : || is_gimple_min_invariant (_q31)))
15540 : : {
15541 : 0 : _q31 = do_valueize (valueize, _q31);
15542 : 0 : if (zerop (_q22))
15543 : : {
15544 : 0 : switch (TREE_CODE (_p1))
15545 : : {
15546 : 0 : case SSA_NAME:
15547 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
15548 : : {
15549 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15550 : 0 : switch (gimple_assign_rhs_code (_a2))
15551 : : {
15552 : 0 : case COND_EXPR:
15553 : 0 : {
15554 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
15555 : 0 : _q80 = do_valueize (valueize, _q80);
15556 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
15557 : 0 : _q81 = do_valueize (valueize, _q81);
15558 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
15559 : 0 : _q82 = do_valueize (valueize, _q82);
15560 : 0 : switch (TREE_CODE (_q80))
15561 : : {
15562 : 0 : case SSA_NAME:
15563 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
15564 : : {
15565 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15566 : 0 : switch (gimple_assign_rhs_code (_a3))
15567 : : {
15568 : 0 : case GT_EXPR:
15569 : 0 : {
15570 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
15571 : 0 : _q90 = do_valueize (valueize, _q90);
15572 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
15573 : 0 : _q91 = do_valueize (valueize, _q91);
15574 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15575 : : {
15576 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15577 : : {
15578 : 0 : if (zerop (_q82))
15579 : : {
15580 : 0 : {
15581 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15582 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LE_EXPR, GT_EXPR))
15583 : 0 : return true;
15584 : : }
15585 : : }
15586 : : }
15587 : : }
15588 : : break;
15589 : : }
15590 : : default:;
15591 : : }
15592 : : }
15593 : : break;
15594 : 0 : case GT_EXPR:
15595 : 0 : {
15596 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
15597 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
15598 : 0 : || is_gimple_min_invariant (_q90)))
15599 : : {
15600 : 0 : _q90 = do_valueize (valueize, _q90);
15601 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
15602 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
15603 : 0 : || is_gimple_min_invariant (_q91)))
15604 : : {
15605 : 0 : _q91 = do_valueize (valueize, _q91);
15606 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15607 : : {
15608 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15609 : : {
15610 : 0 : if (zerop (_q82))
15611 : : {
15612 : 0 : {
15613 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15614 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LE_EXPR, GT_EXPR))
15615 : 0 : return true;
15616 : : }
15617 : : }
15618 : : }
15619 : : }
15620 : : }
15621 : : }
15622 : : break;
15623 : : }
15624 : : default:;
15625 : : }
15626 : : break;
15627 : : }
15628 : : default:;
15629 : : }
15630 : : }
15631 : : break;
15632 : : default:;
15633 : : }
15634 : : }
15635 : : }
15636 : : }
15637 : : break;
15638 : : }
15639 : 0 : case EQ_EXPR:
15640 : 0 : {
15641 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
15642 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
15643 : 0 : || is_gimple_min_invariant (_q30)))
15644 : : {
15645 : 0 : _q30 = do_valueize (valueize, _q30);
15646 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
15647 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
15648 : 0 : || is_gimple_min_invariant (_q31)))
15649 : : {
15650 : 0 : _q31 = do_valueize (valueize, _q31);
15651 : 0 : if (tree_swap_operands_p (_q30, _q31))
15652 : 0 : std::swap (_q30, _q31);
15653 : 0 : if (zerop (_q22))
15654 : : {
15655 : 0 : switch (TREE_CODE (_p1))
15656 : : {
15657 : 0 : case SSA_NAME:
15658 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
15659 : : {
15660 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15661 : 0 : switch (gimple_assign_rhs_code (_a2))
15662 : : {
15663 : 0 : case COND_EXPR:
15664 : 0 : {
15665 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
15666 : 0 : _q80 = do_valueize (valueize, _q80);
15667 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
15668 : 0 : _q81 = do_valueize (valueize, _q81);
15669 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
15670 : 0 : _q82 = do_valueize (valueize, _q82);
15671 : 0 : switch (TREE_CODE (_q80))
15672 : : {
15673 : 0 : case SSA_NAME:
15674 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
15675 : : {
15676 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15677 : 0 : switch (gimple_assign_rhs_code (_a3))
15678 : : {
15679 : 0 : case NE_EXPR:
15680 : 0 : {
15681 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
15682 : 0 : _q90 = do_valueize (valueize, _q90);
15683 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
15684 : 0 : _q91 = do_valueize (valueize, _q91);
15685 : 0 : if (tree_swap_operands_p (_q90, _q91))
15686 : 0 : std::swap (_q90, _q91);
15687 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15688 : : {
15689 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15690 : : {
15691 : 0 : if (zerop (_q82))
15692 : : {
15693 : 0 : {
15694 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15695 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, EQ_EXPR, NE_EXPR))
15696 : 0 : return true;
15697 : : }
15698 : : }
15699 : : }
15700 : : }
15701 : 673848 : break;
15702 : : }
15703 : : default:;
15704 : : }
15705 : : }
15706 : : break;
15707 : 0 : case NE_EXPR:
15708 : 0 : {
15709 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
15710 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
15711 : 0 : || is_gimple_min_invariant (_q90)))
15712 : : {
15713 : 0 : _q90 = do_valueize (valueize, _q90);
15714 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
15715 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
15716 : 0 : || is_gimple_min_invariant (_q91)))
15717 : : {
15718 : 0 : _q91 = do_valueize (valueize, _q91);
15719 : 0 : if (tree_swap_operands_p (_q90, _q91))
15720 : 0 : std::swap (_q90, _q91);
15721 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15722 : : {
15723 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15724 : : {
15725 : 0 : if (zerop (_q82))
15726 : : {
15727 : 0 : {
15728 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15729 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, EQ_EXPR, NE_EXPR))
15730 : 0 : return true;
15731 : : }
15732 : : }
15733 : : }
15734 : : }
15735 : : }
15736 : : }
15737 : 673848 : break;
15738 : : }
15739 : : default:;
15740 : : }
15741 : : break;
15742 : : }
15743 : : default:;
15744 : : }
15745 : : }
15746 : : break;
15747 : : default:;
15748 : : }
15749 : : }
15750 : : }
15751 : : }
15752 : 673848 : break;
15753 : : }
15754 : 0 : case NE_EXPR:
15755 : 0 : {
15756 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
15757 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
15758 : 0 : || is_gimple_min_invariant (_q30)))
15759 : : {
15760 : 0 : _q30 = do_valueize (valueize, _q30);
15761 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
15762 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
15763 : 0 : || is_gimple_min_invariant (_q31)))
15764 : : {
15765 : 0 : _q31 = do_valueize (valueize, _q31);
15766 : 0 : if (tree_swap_operands_p (_q30, _q31))
15767 : 0 : std::swap (_q30, _q31);
15768 : 0 : if (zerop (_q22))
15769 : : {
15770 : 0 : switch (TREE_CODE (_p1))
15771 : : {
15772 : 0 : case SSA_NAME:
15773 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
15774 : : {
15775 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15776 : 0 : switch (gimple_assign_rhs_code (_a2))
15777 : : {
15778 : 0 : case COND_EXPR:
15779 : 0 : {
15780 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
15781 : 0 : _q80 = do_valueize (valueize, _q80);
15782 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
15783 : 0 : _q81 = do_valueize (valueize, _q81);
15784 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
15785 : 0 : _q82 = do_valueize (valueize, _q82);
15786 : 0 : switch (TREE_CODE (_q80))
15787 : : {
15788 : 0 : case SSA_NAME:
15789 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
15790 : : {
15791 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15792 : 0 : switch (gimple_assign_rhs_code (_a3))
15793 : : {
15794 : 0 : case EQ_EXPR:
15795 : 0 : {
15796 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
15797 : 0 : _q90 = do_valueize (valueize, _q90);
15798 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
15799 : 0 : _q91 = do_valueize (valueize, _q91);
15800 : 0 : if (tree_swap_operands_p (_q90, _q91))
15801 : 0 : std::swap (_q90, _q91);
15802 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15803 : : {
15804 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15805 : : {
15806 : 0 : if (zerop (_q82))
15807 : : {
15808 : 0 : {
15809 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15810 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, NE_EXPR, EQ_EXPR))
15811 : 0 : return true;
15812 : : }
15813 : : }
15814 : : }
15815 : : }
15816 : 673848 : break;
15817 : : }
15818 : : default:;
15819 : : }
15820 : : }
15821 : : break;
15822 : 0 : case EQ_EXPR:
15823 : 0 : {
15824 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
15825 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
15826 : 0 : || is_gimple_min_invariant (_q90)))
15827 : : {
15828 : 0 : _q90 = do_valueize (valueize, _q90);
15829 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
15830 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
15831 : 0 : || is_gimple_min_invariant (_q91)))
15832 : : {
15833 : 0 : _q91 = do_valueize (valueize, _q91);
15834 : 0 : if (tree_swap_operands_p (_q90, _q91))
15835 : 0 : std::swap (_q90, _q91);
15836 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15837 : : {
15838 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15839 : : {
15840 : 0 : if (zerop (_q82))
15841 : : {
15842 : 0 : {
15843 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15844 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, NE_EXPR, EQ_EXPR))
15845 : 0 : return true;
15846 : : }
15847 : : }
15848 : : }
15849 : : }
15850 : : }
15851 : : }
15852 : 673848 : break;
15853 : : }
15854 : : default:;
15855 : : }
15856 : : break;
15857 : : }
15858 : : default:;
15859 : : }
15860 : : }
15861 : : break;
15862 : : default:;
15863 : : }
15864 : : }
15865 : : }
15866 : : }
15867 : 673848 : break;
15868 : : }
15869 : 0 : case GE_EXPR:
15870 : 0 : {
15871 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
15872 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
15873 : 0 : || is_gimple_min_invariant (_q30)))
15874 : : {
15875 : 0 : _q30 = do_valueize (valueize, _q30);
15876 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
15877 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
15878 : 0 : || is_gimple_min_invariant (_q31)))
15879 : : {
15880 : 0 : _q31 = do_valueize (valueize, _q31);
15881 : 0 : if (zerop (_q22))
15882 : : {
15883 : 0 : switch (TREE_CODE (_p1))
15884 : : {
15885 : 0 : case SSA_NAME:
15886 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
15887 : : {
15888 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15889 : 0 : switch (gimple_assign_rhs_code (_a2))
15890 : : {
15891 : 0 : case COND_EXPR:
15892 : 0 : {
15893 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
15894 : 0 : _q80 = do_valueize (valueize, _q80);
15895 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
15896 : 0 : _q81 = do_valueize (valueize, _q81);
15897 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
15898 : 0 : _q82 = do_valueize (valueize, _q82);
15899 : 0 : switch (TREE_CODE (_q80))
15900 : : {
15901 : 0 : case SSA_NAME:
15902 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
15903 : : {
15904 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15905 : 0 : switch (gimple_assign_rhs_code (_a3))
15906 : : {
15907 : 0 : case LT_EXPR:
15908 : 0 : {
15909 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
15910 : 0 : _q90 = do_valueize (valueize, _q90);
15911 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
15912 : 0 : _q91 = do_valueize (valueize, _q91);
15913 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15914 : : {
15915 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15916 : : {
15917 : 0 : if (zerop (_q82))
15918 : : {
15919 : 0 : {
15920 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15921 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GE_EXPR, LT_EXPR))
15922 : 0 : return true;
15923 : : }
15924 : : }
15925 : : }
15926 : : }
15927 : : break;
15928 : : }
15929 : : default:;
15930 : : }
15931 : : }
15932 : : break;
15933 : 0 : case LT_EXPR:
15934 : 0 : {
15935 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
15936 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
15937 : 0 : || is_gimple_min_invariant (_q90)))
15938 : : {
15939 : 0 : _q90 = do_valueize (valueize, _q90);
15940 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
15941 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
15942 : 0 : || is_gimple_min_invariant (_q91)))
15943 : : {
15944 : 0 : _q91 = do_valueize (valueize, _q91);
15945 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
15946 : : {
15947 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
15948 : : {
15949 : 0 : if (zerop (_q82))
15950 : : {
15951 : 0 : {
15952 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
15953 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GE_EXPR, LT_EXPR))
15954 : 0 : return true;
15955 : : }
15956 : : }
15957 : : }
15958 : : }
15959 : : }
15960 : : }
15961 : : break;
15962 : : }
15963 : : default:;
15964 : : }
15965 : : break;
15966 : : }
15967 : : default:;
15968 : : }
15969 : : }
15970 : : break;
15971 : : default:;
15972 : : }
15973 : : }
15974 : : }
15975 : : }
15976 : : break;
15977 : : }
15978 : 0 : case GT_EXPR:
15979 : 0 : {
15980 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
15981 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
15982 : 0 : || is_gimple_min_invariant (_q30)))
15983 : : {
15984 : 0 : _q30 = do_valueize (valueize, _q30);
15985 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
15986 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
15987 : 0 : || is_gimple_min_invariant (_q31)))
15988 : : {
15989 : 0 : _q31 = do_valueize (valueize, _q31);
15990 : 0 : if (zerop (_q22))
15991 : : {
15992 : 0 : switch (TREE_CODE (_p1))
15993 : : {
15994 : 0 : case SSA_NAME:
15995 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
15996 : : {
15997 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15998 : 0 : switch (gimple_assign_rhs_code (_a2))
15999 : : {
16000 : 0 : case COND_EXPR:
16001 : 0 : {
16002 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
16003 : 0 : _q80 = do_valueize (valueize, _q80);
16004 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
16005 : 0 : _q81 = do_valueize (valueize, _q81);
16006 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
16007 : 0 : _q82 = do_valueize (valueize, _q82);
16008 : 0 : switch (TREE_CODE (_q80))
16009 : : {
16010 : 0 : case SSA_NAME:
16011 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
16012 : : {
16013 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
16014 : 0 : switch (gimple_assign_rhs_code (_a3))
16015 : : {
16016 : 0 : case LE_EXPR:
16017 : 0 : {
16018 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
16019 : 0 : _q90 = do_valueize (valueize, _q90);
16020 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
16021 : 0 : _q91 = do_valueize (valueize, _q91);
16022 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16023 : : {
16024 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16025 : : {
16026 : 0 : if (zerop (_q82))
16027 : : {
16028 : 0 : {
16029 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16030 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GT_EXPR, LE_EXPR))
16031 : 0 : return true;
16032 : : }
16033 : : }
16034 : : }
16035 : : }
16036 : : break;
16037 : : }
16038 : : default:;
16039 : : }
16040 : : }
16041 : : break;
16042 : 0 : case LE_EXPR:
16043 : 0 : {
16044 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
16045 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
16046 : 0 : || is_gimple_min_invariant (_q90)))
16047 : : {
16048 : 0 : _q90 = do_valueize (valueize, _q90);
16049 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
16050 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
16051 : 0 : || is_gimple_min_invariant (_q91)))
16052 : : {
16053 : 0 : _q91 = do_valueize (valueize, _q91);
16054 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16055 : : {
16056 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16057 : : {
16058 : 0 : if (zerop (_q82))
16059 : : {
16060 : 0 : {
16061 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16062 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GT_EXPR, LE_EXPR))
16063 : 0 : return true;
16064 : : }
16065 : : }
16066 : : }
16067 : : }
16068 : : }
16069 : : }
16070 : : break;
16071 : : }
16072 : : default:;
16073 : : }
16074 : : break;
16075 : : }
16076 : : default:;
16077 : : }
16078 : : }
16079 : : break;
16080 : : default:;
16081 : : }
16082 : : }
16083 : : }
16084 : : }
16085 : : break;
16086 : : }
16087 : 0 : case UNORDERED_EXPR:
16088 : 0 : {
16089 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
16090 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
16091 : 0 : || is_gimple_min_invariant (_q30)))
16092 : : {
16093 : 0 : _q30 = do_valueize (valueize, _q30);
16094 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
16095 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
16096 : 0 : || is_gimple_min_invariant (_q31)))
16097 : : {
16098 : 0 : _q31 = do_valueize (valueize, _q31);
16099 : 0 : if (tree_swap_operands_p (_q30, _q31))
16100 : 0 : std::swap (_q30, _q31);
16101 : 0 : if (zerop (_q22))
16102 : : {
16103 : 0 : switch (TREE_CODE (_p1))
16104 : : {
16105 : 0 : case SSA_NAME:
16106 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
16107 : : {
16108 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16109 : 0 : switch (gimple_assign_rhs_code (_a2))
16110 : : {
16111 : 0 : case COND_EXPR:
16112 : 0 : {
16113 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
16114 : 0 : _q80 = do_valueize (valueize, _q80);
16115 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
16116 : 0 : _q81 = do_valueize (valueize, _q81);
16117 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
16118 : 0 : _q82 = do_valueize (valueize, _q82);
16119 : 0 : switch (TREE_CODE (_q80))
16120 : : {
16121 : 0 : case SSA_NAME:
16122 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
16123 : : {
16124 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
16125 : 0 : switch (gimple_assign_rhs_code (_a3))
16126 : : {
16127 : 0 : case ORDERED_EXPR:
16128 : 0 : {
16129 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
16130 : 0 : _q90 = do_valueize (valueize, _q90);
16131 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
16132 : 0 : _q91 = do_valueize (valueize, _q91);
16133 : 0 : if (tree_swap_operands_p (_q90, _q91))
16134 : 0 : std::swap (_q90, _q91);
16135 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16136 : : {
16137 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16138 : : {
16139 : 0 : if (zerop (_q82))
16140 : : {
16141 : 0 : {
16142 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16143 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNORDERED_EXPR, ORDERED_EXPR))
16144 : 0 : return true;
16145 : : }
16146 : : }
16147 : : }
16148 : : }
16149 : 673848 : break;
16150 : : }
16151 : : default:;
16152 : : }
16153 : : }
16154 : : break;
16155 : 0 : case ORDERED_EXPR:
16156 : 0 : {
16157 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
16158 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
16159 : 0 : || is_gimple_min_invariant (_q90)))
16160 : : {
16161 : 0 : _q90 = do_valueize (valueize, _q90);
16162 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
16163 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
16164 : 0 : || is_gimple_min_invariant (_q91)))
16165 : : {
16166 : 0 : _q91 = do_valueize (valueize, _q91);
16167 : 0 : if (tree_swap_operands_p (_q90, _q91))
16168 : 0 : std::swap (_q90, _q91);
16169 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16170 : : {
16171 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16172 : : {
16173 : 0 : if (zerop (_q82))
16174 : : {
16175 : 0 : {
16176 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16177 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNORDERED_EXPR, ORDERED_EXPR))
16178 : 0 : return true;
16179 : : }
16180 : : }
16181 : : }
16182 : : }
16183 : : }
16184 : : }
16185 : 673848 : break;
16186 : : }
16187 : : default:;
16188 : : }
16189 : : break;
16190 : : }
16191 : : default:;
16192 : : }
16193 : : }
16194 : : break;
16195 : : default:;
16196 : : }
16197 : : }
16198 : : }
16199 : : }
16200 : 673848 : break;
16201 : : }
16202 : 0 : case ORDERED_EXPR:
16203 : 0 : {
16204 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
16205 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
16206 : 0 : || is_gimple_min_invariant (_q30)))
16207 : : {
16208 : 0 : _q30 = do_valueize (valueize, _q30);
16209 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
16210 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
16211 : 0 : || is_gimple_min_invariant (_q31)))
16212 : : {
16213 : 0 : _q31 = do_valueize (valueize, _q31);
16214 : 0 : if (tree_swap_operands_p (_q30, _q31))
16215 : 0 : std::swap (_q30, _q31);
16216 : 0 : if (zerop (_q22))
16217 : : {
16218 : 0 : switch (TREE_CODE (_p1))
16219 : : {
16220 : 0 : case SSA_NAME:
16221 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
16222 : : {
16223 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16224 : 0 : switch (gimple_assign_rhs_code (_a2))
16225 : : {
16226 : 0 : case COND_EXPR:
16227 : 0 : {
16228 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
16229 : 0 : _q80 = do_valueize (valueize, _q80);
16230 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
16231 : 0 : _q81 = do_valueize (valueize, _q81);
16232 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
16233 : 0 : _q82 = do_valueize (valueize, _q82);
16234 : 0 : switch (TREE_CODE (_q80))
16235 : : {
16236 : 0 : case SSA_NAME:
16237 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
16238 : : {
16239 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
16240 : 0 : switch (gimple_assign_rhs_code (_a3))
16241 : : {
16242 : 0 : case UNORDERED_EXPR:
16243 : 0 : {
16244 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
16245 : 0 : _q90 = do_valueize (valueize, _q90);
16246 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
16247 : 0 : _q91 = do_valueize (valueize, _q91);
16248 : 0 : if (tree_swap_operands_p (_q90, _q91))
16249 : 0 : std::swap (_q90, _q91);
16250 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16251 : : {
16252 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16253 : : {
16254 : 0 : if (zerop (_q82))
16255 : : {
16256 : 0 : {
16257 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16258 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, ORDERED_EXPR, UNORDERED_EXPR))
16259 : 0 : return true;
16260 : : }
16261 : : }
16262 : : }
16263 : : }
16264 : 673848 : break;
16265 : : }
16266 : : default:;
16267 : : }
16268 : : }
16269 : : break;
16270 : 0 : case UNORDERED_EXPR:
16271 : 0 : {
16272 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
16273 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
16274 : 0 : || is_gimple_min_invariant (_q90)))
16275 : : {
16276 : 0 : _q90 = do_valueize (valueize, _q90);
16277 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
16278 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
16279 : 0 : || is_gimple_min_invariant (_q91)))
16280 : : {
16281 : 0 : _q91 = do_valueize (valueize, _q91);
16282 : 0 : if (tree_swap_operands_p (_q90, _q91))
16283 : 0 : std::swap (_q90, _q91);
16284 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16285 : : {
16286 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16287 : : {
16288 : 0 : if (zerop (_q82))
16289 : : {
16290 : 0 : {
16291 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16292 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, ORDERED_EXPR, UNORDERED_EXPR))
16293 : 0 : return true;
16294 : : }
16295 : : }
16296 : : }
16297 : : }
16298 : : }
16299 : : }
16300 : 673848 : break;
16301 : : }
16302 : : default:;
16303 : : }
16304 : : break;
16305 : : }
16306 : : default:;
16307 : : }
16308 : : }
16309 : : break;
16310 : : default:;
16311 : : }
16312 : : }
16313 : : }
16314 : : }
16315 : 673848 : break;
16316 : : }
16317 : 0 : case UNLT_EXPR:
16318 : 0 : {
16319 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
16320 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
16321 : 0 : || is_gimple_min_invariant (_q30)))
16322 : : {
16323 : 0 : _q30 = do_valueize (valueize, _q30);
16324 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
16325 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
16326 : 0 : || is_gimple_min_invariant (_q31)))
16327 : : {
16328 : 0 : _q31 = do_valueize (valueize, _q31);
16329 : 0 : if (zerop (_q22))
16330 : : {
16331 : 0 : switch (TREE_CODE (_p1))
16332 : : {
16333 : 0 : case SSA_NAME:
16334 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
16335 : : {
16336 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16337 : 0 : switch (gimple_assign_rhs_code (_a2))
16338 : : {
16339 : 0 : case COND_EXPR:
16340 : 0 : {
16341 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
16342 : 0 : _q80 = do_valueize (valueize, _q80);
16343 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
16344 : 0 : _q81 = do_valueize (valueize, _q81);
16345 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
16346 : 0 : _q82 = do_valueize (valueize, _q82);
16347 : 0 : switch (TREE_CODE (_q80))
16348 : : {
16349 : 0 : case SSA_NAME:
16350 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
16351 : : {
16352 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
16353 : 0 : switch (gimple_assign_rhs_code (_a3))
16354 : : {
16355 : 0 : case GE_EXPR:
16356 : 0 : {
16357 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
16358 : 0 : _q90 = do_valueize (valueize, _q90);
16359 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
16360 : 0 : _q91 = do_valueize (valueize, _q91);
16361 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16362 : : {
16363 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16364 : : {
16365 : 0 : if (zerop (_q82))
16366 : : {
16367 : 0 : {
16368 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16369 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLT_EXPR, GE_EXPR))
16370 : 0 : return true;
16371 : : }
16372 : : }
16373 : : }
16374 : : }
16375 : : break;
16376 : : }
16377 : : default:;
16378 : : }
16379 : : }
16380 : : break;
16381 : 0 : case GE_EXPR:
16382 : 0 : {
16383 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
16384 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
16385 : 0 : || is_gimple_min_invariant (_q90)))
16386 : : {
16387 : 0 : _q90 = do_valueize (valueize, _q90);
16388 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
16389 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
16390 : 0 : || is_gimple_min_invariant (_q91)))
16391 : : {
16392 : 0 : _q91 = do_valueize (valueize, _q91);
16393 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16394 : : {
16395 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16396 : : {
16397 : 0 : if (zerop (_q82))
16398 : : {
16399 : 0 : {
16400 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16401 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLT_EXPR, GE_EXPR))
16402 : 0 : return true;
16403 : : }
16404 : : }
16405 : : }
16406 : : }
16407 : : }
16408 : : }
16409 : : break;
16410 : : }
16411 : : default:;
16412 : : }
16413 : : break;
16414 : : }
16415 : : default:;
16416 : : }
16417 : : }
16418 : : break;
16419 : : default:;
16420 : : }
16421 : : }
16422 : : }
16423 : : }
16424 : : break;
16425 : : }
16426 : 0 : case UNLE_EXPR:
16427 : 0 : {
16428 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
16429 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
16430 : 0 : || is_gimple_min_invariant (_q30)))
16431 : : {
16432 : 0 : _q30 = do_valueize (valueize, _q30);
16433 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
16434 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
16435 : 0 : || is_gimple_min_invariant (_q31)))
16436 : : {
16437 : 0 : _q31 = do_valueize (valueize, _q31);
16438 : 0 : if (zerop (_q22))
16439 : : {
16440 : 0 : switch (TREE_CODE (_p1))
16441 : : {
16442 : 0 : case SSA_NAME:
16443 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
16444 : : {
16445 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16446 : 0 : switch (gimple_assign_rhs_code (_a2))
16447 : : {
16448 : 0 : case COND_EXPR:
16449 : 0 : {
16450 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
16451 : 0 : _q80 = do_valueize (valueize, _q80);
16452 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
16453 : 0 : _q81 = do_valueize (valueize, _q81);
16454 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
16455 : 0 : _q82 = do_valueize (valueize, _q82);
16456 : 0 : switch (TREE_CODE (_q80))
16457 : : {
16458 : 0 : case SSA_NAME:
16459 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
16460 : : {
16461 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
16462 : 0 : switch (gimple_assign_rhs_code (_a3))
16463 : : {
16464 : 0 : case GT_EXPR:
16465 : 0 : {
16466 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
16467 : 0 : _q90 = do_valueize (valueize, _q90);
16468 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
16469 : 0 : _q91 = do_valueize (valueize, _q91);
16470 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16471 : : {
16472 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16473 : : {
16474 : 0 : if (zerop (_q82))
16475 : : {
16476 : 0 : {
16477 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16478 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLE_EXPR, GT_EXPR))
16479 : 0 : return true;
16480 : : }
16481 : : }
16482 : : }
16483 : : }
16484 : : break;
16485 : : }
16486 : : default:;
16487 : : }
16488 : : }
16489 : : break;
16490 : 0 : case GT_EXPR:
16491 : 0 : {
16492 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
16493 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
16494 : 0 : || is_gimple_min_invariant (_q90)))
16495 : : {
16496 : 0 : _q90 = do_valueize (valueize, _q90);
16497 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
16498 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
16499 : 0 : || is_gimple_min_invariant (_q91)))
16500 : : {
16501 : 0 : _q91 = do_valueize (valueize, _q91);
16502 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16503 : : {
16504 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16505 : : {
16506 : 0 : if (zerop (_q82))
16507 : : {
16508 : 0 : {
16509 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16510 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLE_EXPR, GT_EXPR))
16511 : 0 : return true;
16512 : : }
16513 : : }
16514 : : }
16515 : : }
16516 : : }
16517 : : }
16518 : : break;
16519 : : }
16520 : : default:;
16521 : : }
16522 : : break;
16523 : : }
16524 : : default:;
16525 : : }
16526 : : }
16527 : : break;
16528 : : default:;
16529 : : }
16530 : : }
16531 : : }
16532 : : }
16533 : : break;
16534 : : }
16535 : 0 : case UNGT_EXPR:
16536 : 0 : {
16537 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
16538 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
16539 : 0 : || is_gimple_min_invariant (_q30)))
16540 : : {
16541 : 0 : _q30 = do_valueize (valueize, _q30);
16542 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
16543 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
16544 : 0 : || is_gimple_min_invariant (_q31)))
16545 : : {
16546 : 0 : _q31 = do_valueize (valueize, _q31);
16547 : 0 : if (zerop (_q22))
16548 : : {
16549 : 0 : switch (TREE_CODE (_p1))
16550 : : {
16551 : 0 : case SSA_NAME:
16552 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
16553 : : {
16554 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16555 : 0 : switch (gimple_assign_rhs_code (_a2))
16556 : : {
16557 : 0 : case COND_EXPR:
16558 : 0 : {
16559 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
16560 : 0 : _q80 = do_valueize (valueize, _q80);
16561 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
16562 : 0 : _q81 = do_valueize (valueize, _q81);
16563 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
16564 : 0 : _q82 = do_valueize (valueize, _q82);
16565 : 0 : switch (TREE_CODE (_q80))
16566 : : {
16567 : 0 : case SSA_NAME:
16568 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
16569 : : {
16570 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
16571 : 0 : switch (gimple_assign_rhs_code (_a3))
16572 : : {
16573 : 0 : case LE_EXPR:
16574 : 0 : {
16575 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
16576 : 0 : _q90 = do_valueize (valueize, _q90);
16577 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
16578 : 0 : _q91 = do_valueize (valueize, _q91);
16579 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16580 : : {
16581 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16582 : : {
16583 : 0 : if (zerop (_q82))
16584 : : {
16585 : 0 : {
16586 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16587 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGT_EXPR, LE_EXPR))
16588 : 0 : return true;
16589 : : }
16590 : : }
16591 : : }
16592 : : }
16593 : : break;
16594 : : }
16595 : : default:;
16596 : : }
16597 : : }
16598 : : break;
16599 : 0 : case LE_EXPR:
16600 : 0 : {
16601 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
16602 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
16603 : 0 : || is_gimple_min_invariant (_q90)))
16604 : : {
16605 : 0 : _q90 = do_valueize (valueize, _q90);
16606 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
16607 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
16608 : 0 : || is_gimple_min_invariant (_q91)))
16609 : : {
16610 : 0 : _q91 = do_valueize (valueize, _q91);
16611 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16612 : : {
16613 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16614 : : {
16615 : 0 : if (zerop (_q82))
16616 : : {
16617 : 0 : {
16618 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16619 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGT_EXPR, LE_EXPR))
16620 : 0 : return true;
16621 : : }
16622 : : }
16623 : : }
16624 : : }
16625 : : }
16626 : : }
16627 : : break;
16628 : : }
16629 : : default:;
16630 : : }
16631 : : break;
16632 : : }
16633 : : default:;
16634 : : }
16635 : : }
16636 : : break;
16637 : : default:;
16638 : : }
16639 : : }
16640 : : }
16641 : : }
16642 : : break;
16643 : : }
16644 : 0 : case UNGE_EXPR:
16645 : 0 : {
16646 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
16647 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
16648 : 0 : || is_gimple_min_invariant (_q30)))
16649 : : {
16650 : 0 : _q30 = do_valueize (valueize, _q30);
16651 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
16652 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
16653 : 0 : || is_gimple_min_invariant (_q31)))
16654 : : {
16655 : 0 : _q31 = do_valueize (valueize, _q31);
16656 : 0 : if (zerop (_q22))
16657 : : {
16658 : 0 : switch (TREE_CODE (_p1))
16659 : : {
16660 : 0 : case SSA_NAME:
16661 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
16662 : : {
16663 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16664 : 0 : switch (gimple_assign_rhs_code (_a2))
16665 : : {
16666 : 0 : case COND_EXPR:
16667 : 0 : {
16668 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
16669 : 0 : _q80 = do_valueize (valueize, _q80);
16670 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
16671 : 0 : _q81 = do_valueize (valueize, _q81);
16672 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
16673 : 0 : _q82 = do_valueize (valueize, _q82);
16674 : 0 : switch (TREE_CODE (_q80))
16675 : : {
16676 : 0 : case SSA_NAME:
16677 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
16678 : : {
16679 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
16680 : 0 : switch (gimple_assign_rhs_code (_a3))
16681 : : {
16682 : 0 : case LT_EXPR:
16683 : 0 : {
16684 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
16685 : 0 : _q90 = do_valueize (valueize, _q90);
16686 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
16687 : 0 : _q91 = do_valueize (valueize, _q91);
16688 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16689 : : {
16690 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16691 : : {
16692 : 0 : if (zerop (_q82))
16693 : : {
16694 : 0 : {
16695 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16696 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGE_EXPR, LT_EXPR))
16697 : 0 : return true;
16698 : : }
16699 : : }
16700 : : }
16701 : : }
16702 : : break;
16703 : : }
16704 : : default:;
16705 : : }
16706 : : }
16707 : : break;
16708 : 0 : case LT_EXPR:
16709 : 0 : {
16710 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
16711 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
16712 : 0 : || is_gimple_min_invariant (_q90)))
16713 : : {
16714 : 0 : _q90 = do_valueize (valueize, _q90);
16715 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
16716 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
16717 : 0 : || is_gimple_min_invariant (_q91)))
16718 : : {
16719 : 0 : _q91 = do_valueize (valueize, _q91);
16720 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16721 : : {
16722 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16723 : : {
16724 : 0 : if (zerop (_q82))
16725 : : {
16726 : 0 : {
16727 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16728 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGE_EXPR, LT_EXPR))
16729 : 0 : return true;
16730 : : }
16731 : : }
16732 : : }
16733 : : }
16734 : : }
16735 : : }
16736 : : break;
16737 : : }
16738 : : default:;
16739 : : }
16740 : : break;
16741 : : }
16742 : : default:;
16743 : : }
16744 : : }
16745 : : break;
16746 : : default:;
16747 : : }
16748 : : }
16749 : : }
16750 : : }
16751 : : break;
16752 : : }
16753 : 0 : case UNEQ_EXPR:
16754 : 0 : {
16755 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
16756 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
16757 : 0 : || is_gimple_min_invariant (_q30)))
16758 : : {
16759 : 0 : _q30 = do_valueize (valueize, _q30);
16760 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
16761 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
16762 : 0 : || is_gimple_min_invariant (_q31)))
16763 : : {
16764 : 0 : _q31 = do_valueize (valueize, _q31);
16765 : 0 : if (tree_swap_operands_p (_q30, _q31))
16766 : 0 : std::swap (_q30, _q31);
16767 : 0 : if (zerop (_q22))
16768 : : {
16769 : 0 : switch (TREE_CODE (_p1))
16770 : : {
16771 : 0 : case SSA_NAME:
16772 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
16773 : : {
16774 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16775 : 0 : switch (gimple_assign_rhs_code (_a2))
16776 : : {
16777 : 0 : case COND_EXPR:
16778 : 0 : {
16779 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
16780 : 0 : _q80 = do_valueize (valueize, _q80);
16781 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
16782 : 0 : _q81 = do_valueize (valueize, _q81);
16783 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
16784 : 0 : _q82 = do_valueize (valueize, _q82);
16785 : 0 : switch (TREE_CODE (_q80))
16786 : : {
16787 : 0 : case SSA_NAME:
16788 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
16789 : : {
16790 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
16791 : 0 : switch (gimple_assign_rhs_code (_a3))
16792 : : {
16793 : 0 : case LTGT_EXPR:
16794 : 0 : {
16795 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
16796 : 0 : _q90 = do_valueize (valueize, _q90);
16797 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
16798 : 0 : _q91 = do_valueize (valueize, _q91);
16799 : 0 : if (tree_swap_operands_p (_q90, _q91))
16800 : 0 : std::swap (_q90, _q91);
16801 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16802 : : {
16803 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16804 : : {
16805 : 0 : if (zerop (_q82))
16806 : : {
16807 : 0 : {
16808 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16809 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNEQ_EXPR, LTGT_EXPR))
16810 : 0 : return true;
16811 : : }
16812 : : }
16813 : : }
16814 : : }
16815 : 673848 : break;
16816 : : }
16817 : : default:;
16818 : : }
16819 : : }
16820 : : break;
16821 : 0 : case LTGT_EXPR:
16822 : 0 : {
16823 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
16824 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
16825 : 0 : || is_gimple_min_invariant (_q90)))
16826 : : {
16827 : 0 : _q90 = do_valueize (valueize, _q90);
16828 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
16829 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
16830 : 0 : || is_gimple_min_invariant (_q91)))
16831 : : {
16832 : 0 : _q91 = do_valueize (valueize, _q91);
16833 : 0 : if (tree_swap_operands_p (_q90, _q91))
16834 : 0 : std::swap (_q90, _q91);
16835 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16836 : : {
16837 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16838 : : {
16839 : 0 : if (zerop (_q82))
16840 : : {
16841 : 0 : {
16842 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16843 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNEQ_EXPR, LTGT_EXPR))
16844 : 0 : return true;
16845 : : }
16846 : : }
16847 : : }
16848 : : }
16849 : : }
16850 : : }
16851 : 673848 : break;
16852 : : }
16853 : : default:;
16854 : : }
16855 : : break;
16856 : : }
16857 : : default:;
16858 : : }
16859 : : }
16860 : : break;
16861 : : default:;
16862 : : }
16863 : : }
16864 : : }
16865 : : }
16866 : 673848 : break;
16867 : : }
16868 : 0 : case LTGT_EXPR:
16869 : 0 : {
16870 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
16871 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
16872 : 0 : || is_gimple_min_invariant (_q30)))
16873 : : {
16874 : 0 : _q30 = do_valueize (valueize, _q30);
16875 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
16876 : 0 : if ((TREE_CODE (_q31) == SSA_NAME
16877 : 0 : || is_gimple_min_invariant (_q31)))
16878 : : {
16879 : 0 : _q31 = do_valueize (valueize, _q31);
16880 : 0 : if (tree_swap_operands_p (_q30, _q31))
16881 : 0 : std::swap (_q30, _q31);
16882 : 0 : if (zerop (_q22))
16883 : : {
16884 : 0 : switch (TREE_CODE (_p1))
16885 : : {
16886 : 0 : case SSA_NAME:
16887 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
16888 : : {
16889 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16890 : 0 : switch (gimple_assign_rhs_code (_a2))
16891 : : {
16892 : 0 : case COND_EXPR:
16893 : 0 : {
16894 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
16895 : 0 : _q80 = do_valueize (valueize, _q80);
16896 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
16897 : 0 : _q81 = do_valueize (valueize, _q81);
16898 : 0 : tree _q82 = gimple_assign_rhs3 (_a2);
16899 : 0 : _q82 = do_valueize (valueize, _q82);
16900 : 0 : switch (TREE_CODE (_q80))
16901 : : {
16902 : 0 : case SSA_NAME:
16903 : 0 : if (gimple *_d3 = get_def (valueize, _q80))
16904 : : {
16905 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
16906 : 0 : switch (gimple_assign_rhs_code (_a3))
16907 : : {
16908 : 0 : case UNEQ_EXPR:
16909 : 0 : {
16910 : 0 : tree _q90 = gimple_assign_rhs1 (_a3);
16911 : 0 : _q90 = do_valueize (valueize, _q90);
16912 : 0 : tree _q91 = gimple_assign_rhs2 (_a3);
16913 : 0 : _q91 = do_valueize (valueize, _q91);
16914 : 0 : if (tree_swap_operands_p (_q90, _q91))
16915 : 0 : std::swap (_q90, _q91);
16916 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16917 : : {
16918 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16919 : : {
16920 : 0 : if (zerop (_q82))
16921 : : {
16922 : 0 : {
16923 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16924 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LTGT_EXPR, UNEQ_EXPR))
16925 : 0 : return true;
16926 : : }
16927 : : }
16928 : : }
16929 : : }
16930 : 673848 : break;
16931 : : }
16932 : : default:;
16933 : : }
16934 : : }
16935 : : break;
16936 : 0 : case UNEQ_EXPR:
16937 : 0 : {
16938 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
16939 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
16940 : 0 : || is_gimple_min_invariant (_q90)))
16941 : : {
16942 : 0 : _q90 = do_valueize (valueize, _q90);
16943 : 0 : tree _q91 = TREE_OPERAND (_q80, 1);
16944 : 0 : if ((TREE_CODE (_q91) == SSA_NAME
16945 : 0 : || is_gimple_min_invariant (_q91)))
16946 : : {
16947 : 0 : _q91 = do_valueize (valueize, _q91);
16948 : 0 : if (tree_swap_operands_p (_q90, _q91))
16949 : 0 : std::swap (_q90, _q91);
16950 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
16951 : : {
16952 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
16953 : : {
16954 : 0 : if (zerop (_q82))
16955 : : {
16956 : 0 : {
16957 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
16958 : 0 : if (gimple_simplify_36 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LTGT_EXPR, UNEQ_EXPR))
16959 : 0 : return true;
16960 : : }
16961 : : }
16962 : : }
16963 : : }
16964 : : }
16965 : : }
16966 : 673848 : break;
16967 : : }
16968 : : default:;
16969 : : }
16970 : : break;
16971 : : }
16972 : : default:;
16973 : : }
16974 : : }
16975 : : break;
16976 : : default:;
16977 : : }
16978 : : }
16979 : : }
16980 : : }
16981 : 673848 : break;
16982 : : }
16983 : : default:;
16984 : : }
16985 : : break;
16986 : : }
16987 : 237 : case VEC_COND_EXPR:
16988 : 237 : {
16989 : 237 : tree _q20 = gimple_assign_rhs1 (_a1);
16990 : 237 : _q20 = do_valueize (valueize, _q20);
16991 : 237 : tree _q21 = gimple_assign_rhs2 (_a1);
16992 : 237 : _q21 = do_valueize (valueize, _q21);
16993 : 237 : tree _q22 = gimple_assign_rhs3 (_a1);
16994 : 237 : _q22 = do_valueize (valueize, _q22);
16995 : 237 : if (integer_zerop (_q22))
16996 : : {
16997 : 231 : switch (TREE_CODE (_p1))
16998 : : {
16999 : 231 : case SSA_NAME:
17000 : 231 : if (gimple *_d2 = get_def (valueize, _p1))
17001 : : {
17002 : 226 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17003 : 208 : switch (gimple_assign_rhs_code (_a2))
17004 : : {
17005 : 62 : case VEC_COND_EXPR:
17006 : 62 : {
17007 : 62 : tree _q60 = gimple_assign_rhs1 (_a2);
17008 : 62 : _q60 = do_valueize (valueize, _q60);
17009 : 62 : tree _q61 = gimple_assign_rhs2 (_a2);
17010 : 62 : _q61 = do_valueize (valueize, _q61);
17011 : 62 : tree _q62 = gimple_assign_rhs3 (_a2);
17012 : 62 : _q62 = do_valueize (valueize, _q62);
17013 : 62 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
17014 : : {
17015 : 18 : if (integer_zerop (_q61))
17016 : : {
17017 : 18 : {
17018 : 18 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
17019 : 18 : const enum tree_code op = BIT_XOR_EXPR;
17020 : 18 : gimple_seq *lseq = seq;
17021 : 18 : if (lseq
17022 : 6 : && (!single_use (captures[0])
17023 : 6 : || !single_use (captures[3])))
17024 : 12 : lseq = NULL;
17025 : 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2067;
17026 : 18 : {
17027 : 18 : res_op->set_op (VEC_COND_EXPR, type, 3);
17028 : 18 : res_op->ops[0] = captures[1];
17029 : 18 : res_op->ops[1] = captures[2];
17030 : 18 : res_op->ops[2] = captures[4];
17031 : 18 : res_op->resimplify (lseq, valueize);
17032 : 18 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
17033 : 18 : return true;
17034 : : }
17035 : 0 : next_after_fail2067:;
17036 : : }
17037 : : }
17038 : : }
17039 : : break;
17040 : : }
17041 : : default:;
17042 : : }
17043 : : }
17044 : : break;
17045 : : default:;
17046 : : }
17047 : : }
17048 : 219 : if (integer_zerop (_q21))
17049 : : {
17050 : 0 : switch (TREE_CODE (_p1))
17051 : : {
17052 : 0 : case SSA_NAME:
17053 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
17054 : : {
17055 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17056 : 0 : switch (gimple_assign_rhs_code (_a2))
17057 : : {
17058 : 0 : case VEC_COND_EXPR:
17059 : 0 : {
17060 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
17061 : 0 : _q60 = do_valueize (valueize, _q60);
17062 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
17063 : 0 : _q61 = do_valueize (valueize, _q61);
17064 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
17065 : 0 : _q62 = do_valueize (valueize, _q62);
17066 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
17067 : : {
17068 : 0 : if (integer_zerop (_q62))
17069 : : {
17070 : 0 : {
17071 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
17072 : 0 : const enum tree_code op = BIT_XOR_EXPR;
17073 : 0 : gimple_seq *lseq = seq;
17074 : 0 : if (lseq
17075 : 0 : && (!single_use (captures[0])
17076 : 0 : || !single_use (captures[3])))
17077 : 0 : lseq = NULL;
17078 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2068;
17079 : 0 : {
17080 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
17081 : 0 : res_op->ops[0] = captures[1];
17082 : 0 : res_op->ops[1] = captures[2];
17083 : 0 : res_op->ops[2] = captures[4];
17084 : 0 : res_op->resimplify (lseq, valueize);
17085 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
17086 : 0 : return true;
17087 : : }
17088 : 0 : next_after_fail2068:;
17089 : : }
17090 : : }
17091 : : }
17092 : : break;
17093 : : }
17094 : : default:;
17095 : : }
17096 : : }
17097 : : break;
17098 : : default:;
17099 : : }
17100 : : }
17101 : 219 : switch (TREE_CODE (_q20))
17102 : : {
17103 : 219 : case SSA_NAME:
17104 : 219 : if (gimple *_d2 = get_def (valueize, _q20))
17105 : : {
17106 : 219 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17107 : 219 : switch (gimple_assign_rhs_code (_a2))
17108 : : {
17109 : 36 : case LT_EXPR:
17110 : 36 : {
17111 : 36 : tree _q30 = gimple_assign_rhs1 (_a2);
17112 : 36 : _q30 = do_valueize (valueize, _q30);
17113 : 36 : tree _q31 = gimple_assign_rhs2 (_a2);
17114 : 36 : _q31 = do_valueize (valueize, _q31);
17115 : 36 : if (integer_zerop (_q22))
17116 : : {
17117 : 36 : switch (TREE_CODE (_p1))
17118 : : {
17119 : 36 : case SSA_NAME:
17120 : 36 : if (gimple *_d3 = get_def (valueize, _p1))
17121 : : {
17122 : 36 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17123 : 30 : switch (gimple_assign_rhs_code (_a3))
17124 : : {
17125 : 30 : case VEC_COND_EXPR:
17126 : 30 : {
17127 : 30 : tree _q80 = gimple_assign_rhs1 (_a3);
17128 : 30 : _q80 = do_valueize (valueize, _q80);
17129 : 30 : tree _q81 = gimple_assign_rhs2 (_a3);
17130 : 30 : _q81 = do_valueize (valueize, _q81);
17131 : 30 : tree _q82 = gimple_assign_rhs3 (_a3);
17132 : 30 : _q82 = do_valueize (valueize, _q82);
17133 : 30 : switch (TREE_CODE (_q80))
17134 : : {
17135 : 30 : case SSA_NAME:
17136 : 30 : if (gimple *_d4 = get_def (valueize, _q80))
17137 : : {
17138 : 30 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17139 : 30 : switch (gimple_assign_rhs_code (_a4))
17140 : : {
17141 : 18 : case GE_EXPR:
17142 : 18 : {
17143 : 18 : tree _q90 = gimple_assign_rhs1 (_a4);
17144 : 18 : _q90 = do_valueize (valueize, _q90);
17145 : 18 : tree _q91 = gimple_assign_rhs2 (_a4);
17146 : 18 : _q91 = do_valueize (valueize, _q91);
17147 : 18 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17148 : : {
17149 : 18 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17150 : : {
17151 : 18 : if (integer_zerop (_q82))
17152 : : {
17153 : 18 : {
17154 : 18 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17155 : 18 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LT_EXPR, GE_EXPR))
17156 : 18 : return true;
17157 : : }
17158 : : }
17159 : : }
17160 : : }
17161 : : break;
17162 : : }
17163 : : default:;
17164 : : }
17165 : : }
17166 : : break;
17167 : : default:;
17168 : : }
17169 : : break;
17170 : : }
17171 : : default:;
17172 : : }
17173 : : }
17174 : : break;
17175 : : default:;
17176 : : }
17177 : : }
17178 : : break;
17179 : : }
17180 : 0 : case LE_EXPR:
17181 : 0 : {
17182 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17183 : 0 : _q30 = do_valueize (valueize, _q30);
17184 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17185 : 0 : _q31 = do_valueize (valueize, _q31);
17186 : 0 : if (integer_zerop (_q22))
17187 : : {
17188 : 0 : switch (TREE_CODE (_p1))
17189 : : {
17190 : 0 : case SSA_NAME:
17191 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17192 : : {
17193 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17194 : 0 : switch (gimple_assign_rhs_code (_a3))
17195 : : {
17196 : 0 : case VEC_COND_EXPR:
17197 : 0 : {
17198 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17199 : 0 : _q80 = do_valueize (valueize, _q80);
17200 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17201 : 0 : _q81 = do_valueize (valueize, _q81);
17202 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17203 : 0 : _q82 = do_valueize (valueize, _q82);
17204 : 0 : switch (TREE_CODE (_q80))
17205 : : {
17206 : 0 : case SSA_NAME:
17207 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17208 : : {
17209 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17210 : 0 : switch (gimple_assign_rhs_code (_a4))
17211 : : {
17212 : 0 : case GT_EXPR:
17213 : 0 : {
17214 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17215 : 0 : _q90 = do_valueize (valueize, _q90);
17216 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17217 : 0 : _q91 = do_valueize (valueize, _q91);
17218 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17219 : : {
17220 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17221 : : {
17222 : 0 : if (integer_zerop (_q82))
17223 : : {
17224 : 0 : {
17225 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17226 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LE_EXPR, GT_EXPR))
17227 : 0 : return true;
17228 : : }
17229 : : }
17230 : : }
17231 : : }
17232 : : break;
17233 : : }
17234 : : default:;
17235 : : }
17236 : : }
17237 : : break;
17238 : : default:;
17239 : : }
17240 : : break;
17241 : : }
17242 : : default:;
17243 : : }
17244 : : }
17245 : : break;
17246 : : default:;
17247 : : }
17248 : : }
17249 : : break;
17250 : : }
17251 : 16 : case EQ_EXPR:
17252 : 16 : {
17253 : 16 : tree _q30 = gimple_assign_rhs1 (_a2);
17254 : 16 : _q30 = do_valueize (valueize, _q30);
17255 : 16 : tree _q31 = gimple_assign_rhs2 (_a2);
17256 : 16 : _q31 = do_valueize (valueize, _q31);
17257 : 16 : if (tree_swap_operands_p (_q30, _q31))
17258 : 0 : std::swap (_q30, _q31);
17259 : 16 : if (integer_zerop (_q22))
17260 : : {
17261 : 10 : switch (TREE_CODE (_p1))
17262 : : {
17263 : 10 : case SSA_NAME:
17264 : 10 : if (gimple *_d3 = get_def (valueize, _p1))
17265 : : {
17266 : 10 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17267 : 0 : switch (gimple_assign_rhs_code (_a3))
17268 : : {
17269 : 0 : case VEC_COND_EXPR:
17270 : 0 : {
17271 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17272 : 0 : _q80 = do_valueize (valueize, _q80);
17273 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17274 : 0 : _q81 = do_valueize (valueize, _q81);
17275 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17276 : 0 : _q82 = do_valueize (valueize, _q82);
17277 : 0 : switch (TREE_CODE (_q80))
17278 : : {
17279 : 0 : case SSA_NAME:
17280 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17281 : : {
17282 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17283 : 0 : switch (gimple_assign_rhs_code (_a4))
17284 : : {
17285 : 0 : case NE_EXPR:
17286 : 0 : {
17287 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17288 : 0 : _q90 = do_valueize (valueize, _q90);
17289 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17290 : 0 : _q91 = do_valueize (valueize, _q91);
17291 : 0 : if (tree_swap_operands_p (_q90, _q91))
17292 : 0 : std::swap (_q90, _q91);
17293 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17294 : : {
17295 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17296 : : {
17297 : 0 : if (integer_zerop (_q82))
17298 : : {
17299 : 0 : {
17300 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17301 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, EQ_EXPR, NE_EXPR))
17302 : 0 : return true;
17303 : : }
17304 : : }
17305 : : }
17306 : : }
17307 : 673848 : break;
17308 : : }
17309 : : default:;
17310 : : }
17311 : : }
17312 : : break;
17313 : : default:;
17314 : : }
17315 : : break;
17316 : : }
17317 : : default:;
17318 : : }
17319 : : }
17320 : : break;
17321 : : default:;
17322 : : }
17323 : : }
17324 : 673848 : break;
17325 : : }
17326 : 49 : case NE_EXPR:
17327 : 49 : {
17328 : 49 : tree _q30 = gimple_assign_rhs1 (_a2);
17329 : 49 : _q30 = do_valueize (valueize, _q30);
17330 : 49 : tree _q31 = gimple_assign_rhs2 (_a2);
17331 : 49 : _q31 = do_valueize (valueize, _q31);
17332 : 49 : if (tree_swap_operands_p (_q30, _q31))
17333 : 0 : std::swap (_q30, _q31);
17334 : 49 : if (integer_zerop (_q22))
17335 : : {
17336 : 49 : switch (TREE_CODE (_p1))
17337 : : {
17338 : 49 : case SSA_NAME:
17339 : 49 : if (gimple *_d3 = get_def (valueize, _p1))
17340 : : {
17341 : 44 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17342 : 42 : switch (gimple_assign_rhs_code (_a3))
17343 : : {
17344 : 14 : case VEC_COND_EXPR:
17345 : 14 : {
17346 : 14 : tree _q80 = gimple_assign_rhs1 (_a3);
17347 : 14 : _q80 = do_valueize (valueize, _q80);
17348 : 14 : tree _q81 = gimple_assign_rhs2 (_a3);
17349 : 14 : _q81 = do_valueize (valueize, _q81);
17350 : 14 : tree _q82 = gimple_assign_rhs3 (_a3);
17351 : 14 : _q82 = do_valueize (valueize, _q82);
17352 : 14 : switch (TREE_CODE (_q80))
17353 : : {
17354 : 14 : case SSA_NAME:
17355 : 14 : if (gimple *_d4 = get_def (valueize, _q80))
17356 : : {
17357 : 14 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17358 : 14 : switch (gimple_assign_rhs_code (_a4))
17359 : : {
17360 : 0 : case EQ_EXPR:
17361 : 0 : {
17362 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17363 : 0 : _q90 = do_valueize (valueize, _q90);
17364 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17365 : 0 : _q91 = do_valueize (valueize, _q91);
17366 : 0 : if (tree_swap_operands_p (_q90, _q91))
17367 : 0 : std::swap (_q90, _q91);
17368 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17369 : : {
17370 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17371 : : {
17372 : 0 : if (integer_zerop (_q82))
17373 : : {
17374 : 0 : {
17375 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17376 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, NE_EXPR, EQ_EXPR))
17377 : 0 : return true;
17378 : : }
17379 : : }
17380 : : }
17381 : : }
17382 : 673848 : break;
17383 : : }
17384 : : default:;
17385 : : }
17386 : : }
17387 : : break;
17388 : : default:;
17389 : : }
17390 : : break;
17391 : : }
17392 : : default:;
17393 : : }
17394 : : }
17395 : : break;
17396 : : default:;
17397 : : }
17398 : : }
17399 : 673848 : break;
17400 : : }
17401 : 0 : case GE_EXPR:
17402 : 0 : {
17403 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17404 : 0 : _q30 = do_valueize (valueize, _q30);
17405 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17406 : 0 : _q31 = do_valueize (valueize, _q31);
17407 : 0 : if (integer_zerop (_q22))
17408 : : {
17409 : 0 : switch (TREE_CODE (_p1))
17410 : : {
17411 : 0 : case SSA_NAME:
17412 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17413 : : {
17414 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17415 : 0 : switch (gimple_assign_rhs_code (_a3))
17416 : : {
17417 : 0 : case VEC_COND_EXPR:
17418 : 0 : {
17419 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17420 : 0 : _q80 = do_valueize (valueize, _q80);
17421 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17422 : 0 : _q81 = do_valueize (valueize, _q81);
17423 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17424 : 0 : _q82 = do_valueize (valueize, _q82);
17425 : 0 : switch (TREE_CODE (_q80))
17426 : : {
17427 : 0 : case SSA_NAME:
17428 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17429 : : {
17430 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17431 : 0 : switch (gimple_assign_rhs_code (_a4))
17432 : : {
17433 : 0 : case LT_EXPR:
17434 : 0 : {
17435 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17436 : 0 : _q90 = do_valueize (valueize, _q90);
17437 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17438 : 0 : _q91 = do_valueize (valueize, _q91);
17439 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17440 : : {
17441 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17442 : : {
17443 : 0 : if (integer_zerop (_q82))
17444 : : {
17445 : 0 : {
17446 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17447 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GE_EXPR, LT_EXPR))
17448 : 0 : return true;
17449 : : }
17450 : : }
17451 : : }
17452 : : }
17453 : : break;
17454 : : }
17455 : : default:;
17456 : : }
17457 : : }
17458 : : break;
17459 : : default:;
17460 : : }
17461 : : break;
17462 : : }
17463 : : default:;
17464 : : }
17465 : : }
17466 : : break;
17467 : : default:;
17468 : : }
17469 : : }
17470 : : break;
17471 : : }
17472 : 0 : case GT_EXPR:
17473 : 0 : {
17474 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17475 : 0 : _q30 = do_valueize (valueize, _q30);
17476 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17477 : 0 : _q31 = do_valueize (valueize, _q31);
17478 : 0 : if (integer_zerop (_q22))
17479 : : {
17480 : 0 : switch (TREE_CODE (_p1))
17481 : : {
17482 : 0 : case SSA_NAME:
17483 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17484 : : {
17485 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17486 : 0 : switch (gimple_assign_rhs_code (_a3))
17487 : : {
17488 : 0 : case VEC_COND_EXPR:
17489 : 0 : {
17490 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17491 : 0 : _q80 = do_valueize (valueize, _q80);
17492 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17493 : 0 : _q81 = do_valueize (valueize, _q81);
17494 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17495 : 0 : _q82 = do_valueize (valueize, _q82);
17496 : 0 : switch (TREE_CODE (_q80))
17497 : : {
17498 : 0 : case SSA_NAME:
17499 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17500 : : {
17501 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17502 : 0 : switch (gimple_assign_rhs_code (_a4))
17503 : : {
17504 : 0 : case LE_EXPR:
17505 : 0 : {
17506 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17507 : 0 : _q90 = do_valueize (valueize, _q90);
17508 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17509 : 0 : _q91 = do_valueize (valueize, _q91);
17510 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17511 : : {
17512 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17513 : : {
17514 : 0 : if (integer_zerop (_q82))
17515 : : {
17516 : 0 : {
17517 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17518 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, GT_EXPR, LE_EXPR))
17519 : 0 : return true;
17520 : : }
17521 : : }
17522 : : }
17523 : : }
17524 : : break;
17525 : : }
17526 : : default:;
17527 : : }
17528 : : }
17529 : : break;
17530 : : default:;
17531 : : }
17532 : : break;
17533 : : }
17534 : : default:;
17535 : : }
17536 : : }
17537 : : break;
17538 : : default:;
17539 : : }
17540 : : }
17541 : : break;
17542 : : }
17543 : 0 : case UNORDERED_EXPR:
17544 : 0 : {
17545 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17546 : 0 : _q30 = do_valueize (valueize, _q30);
17547 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17548 : 0 : _q31 = do_valueize (valueize, _q31);
17549 : 0 : if (tree_swap_operands_p (_q30, _q31))
17550 : 0 : std::swap (_q30, _q31);
17551 : 0 : if (integer_zerop (_q22))
17552 : : {
17553 : 0 : switch (TREE_CODE (_p1))
17554 : : {
17555 : 0 : case SSA_NAME:
17556 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17557 : : {
17558 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17559 : 0 : switch (gimple_assign_rhs_code (_a3))
17560 : : {
17561 : 0 : case VEC_COND_EXPR:
17562 : 0 : {
17563 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17564 : 0 : _q80 = do_valueize (valueize, _q80);
17565 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17566 : 0 : _q81 = do_valueize (valueize, _q81);
17567 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17568 : 0 : _q82 = do_valueize (valueize, _q82);
17569 : 0 : switch (TREE_CODE (_q80))
17570 : : {
17571 : 0 : case SSA_NAME:
17572 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17573 : : {
17574 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17575 : 0 : switch (gimple_assign_rhs_code (_a4))
17576 : : {
17577 : 0 : case ORDERED_EXPR:
17578 : 0 : {
17579 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17580 : 0 : _q90 = do_valueize (valueize, _q90);
17581 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17582 : 0 : _q91 = do_valueize (valueize, _q91);
17583 : 0 : if (tree_swap_operands_p (_q90, _q91))
17584 : 0 : std::swap (_q90, _q91);
17585 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17586 : : {
17587 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17588 : : {
17589 : 0 : if (integer_zerop (_q82))
17590 : : {
17591 : 0 : {
17592 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17593 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNORDERED_EXPR, ORDERED_EXPR))
17594 : 0 : return true;
17595 : : }
17596 : : }
17597 : : }
17598 : : }
17599 : 673848 : break;
17600 : : }
17601 : : default:;
17602 : : }
17603 : : }
17604 : : break;
17605 : : default:;
17606 : : }
17607 : : break;
17608 : : }
17609 : : default:;
17610 : : }
17611 : : }
17612 : : break;
17613 : : default:;
17614 : : }
17615 : : }
17616 : 673848 : break;
17617 : : }
17618 : 0 : case ORDERED_EXPR:
17619 : 0 : {
17620 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17621 : 0 : _q30 = do_valueize (valueize, _q30);
17622 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17623 : 0 : _q31 = do_valueize (valueize, _q31);
17624 : 0 : if (tree_swap_operands_p (_q30, _q31))
17625 : 0 : std::swap (_q30, _q31);
17626 : 0 : if (integer_zerop (_q22))
17627 : : {
17628 : 0 : switch (TREE_CODE (_p1))
17629 : : {
17630 : 0 : case SSA_NAME:
17631 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17632 : : {
17633 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17634 : 0 : switch (gimple_assign_rhs_code (_a3))
17635 : : {
17636 : 0 : case VEC_COND_EXPR:
17637 : 0 : {
17638 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17639 : 0 : _q80 = do_valueize (valueize, _q80);
17640 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17641 : 0 : _q81 = do_valueize (valueize, _q81);
17642 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17643 : 0 : _q82 = do_valueize (valueize, _q82);
17644 : 0 : switch (TREE_CODE (_q80))
17645 : : {
17646 : 0 : case SSA_NAME:
17647 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17648 : : {
17649 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17650 : 0 : switch (gimple_assign_rhs_code (_a4))
17651 : : {
17652 : 0 : case UNORDERED_EXPR:
17653 : 0 : {
17654 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17655 : 0 : _q90 = do_valueize (valueize, _q90);
17656 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17657 : 0 : _q91 = do_valueize (valueize, _q91);
17658 : 0 : if (tree_swap_operands_p (_q90, _q91))
17659 : 0 : std::swap (_q90, _q91);
17660 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17661 : : {
17662 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17663 : : {
17664 : 0 : if (integer_zerop (_q82))
17665 : : {
17666 : 0 : {
17667 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17668 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, ORDERED_EXPR, UNORDERED_EXPR))
17669 : 0 : return true;
17670 : : }
17671 : : }
17672 : : }
17673 : : }
17674 : 673848 : break;
17675 : : }
17676 : : default:;
17677 : : }
17678 : : }
17679 : : break;
17680 : : default:;
17681 : : }
17682 : : break;
17683 : : }
17684 : : default:;
17685 : : }
17686 : : }
17687 : : break;
17688 : : default:;
17689 : : }
17690 : : }
17691 : 673848 : break;
17692 : : }
17693 : 0 : case UNLT_EXPR:
17694 : 0 : {
17695 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17696 : 0 : _q30 = do_valueize (valueize, _q30);
17697 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17698 : 0 : _q31 = do_valueize (valueize, _q31);
17699 : 0 : if (integer_zerop (_q22))
17700 : : {
17701 : 0 : switch (TREE_CODE (_p1))
17702 : : {
17703 : 0 : case SSA_NAME:
17704 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17705 : : {
17706 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17707 : 0 : switch (gimple_assign_rhs_code (_a3))
17708 : : {
17709 : 0 : case VEC_COND_EXPR:
17710 : 0 : {
17711 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17712 : 0 : _q80 = do_valueize (valueize, _q80);
17713 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17714 : 0 : _q81 = do_valueize (valueize, _q81);
17715 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17716 : 0 : _q82 = do_valueize (valueize, _q82);
17717 : 0 : switch (TREE_CODE (_q80))
17718 : : {
17719 : 0 : case SSA_NAME:
17720 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17721 : : {
17722 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17723 : 0 : switch (gimple_assign_rhs_code (_a4))
17724 : : {
17725 : 0 : case GE_EXPR:
17726 : 0 : {
17727 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17728 : 0 : _q90 = do_valueize (valueize, _q90);
17729 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17730 : 0 : _q91 = do_valueize (valueize, _q91);
17731 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17732 : : {
17733 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17734 : : {
17735 : 0 : if (integer_zerop (_q82))
17736 : : {
17737 : 0 : {
17738 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17739 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLT_EXPR, GE_EXPR))
17740 : 0 : return true;
17741 : : }
17742 : : }
17743 : : }
17744 : : }
17745 : : break;
17746 : : }
17747 : : default:;
17748 : : }
17749 : : }
17750 : : break;
17751 : : default:;
17752 : : }
17753 : : break;
17754 : : }
17755 : : default:;
17756 : : }
17757 : : }
17758 : : break;
17759 : : default:;
17760 : : }
17761 : : }
17762 : : break;
17763 : : }
17764 : 0 : case UNLE_EXPR:
17765 : 0 : {
17766 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17767 : 0 : _q30 = do_valueize (valueize, _q30);
17768 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17769 : 0 : _q31 = do_valueize (valueize, _q31);
17770 : 0 : if (integer_zerop (_q22))
17771 : : {
17772 : 0 : switch (TREE_CODE (_p1))
17773 : : {
17774 : 0 : case SSA_NAME:
17775 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17776 : : {
17777 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17778 : 0 : switch (gimple_assign_rhs_code (_a3))
17779 : : {
17780 : 0 : case VEC_COND_EXPR:
17781 : 0 : {
17782 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17783 : 0 : _q80 = do_valueize (valueize, _q80);
17784 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17785 : 0 : _q81 = do_valueize (valueize, _q81);
17786 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17787 : 0 : _q82 = do_valueize (valueize, _q82);
17788 : 0 : switch (TREE_CODE (_q80))
17789 : : {
17790 : 0 : case SSA_NAME:
17791 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17792 : : {
17793 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17794 : 0 : switch (gimple_assign_rhs_code (_a4))
17795 : : {
17796 : 0 : case GT_EXPR:
17797 : 0 : {
17798 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17799 : 0 : _q90 = do_valueize (valueize, _q90);
17800 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17801 : 0 : _q91 = do_valueize (valueize, _q91);
17802 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17803 : : {
17804 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17805 : : {
17806 : 0 : if (integer_zerop (_q82))
17807 : : {
17808 : 0 : {
17809 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17810 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNLE_EXPR, GT_EXPR))
17811 : 0 : return true;
17812 : : }
17813 : : }
17814 : : }
17815 : : }
17816 : : break;
17817 : : }
17818 : : default:;
17819 : : }
17820 : : }
17821 : : break;
17822 : : default:;
17823 : : }
17824 : : break;
17825 : : }
17826 : : default:;
17827 : : }
17828 : : }
17829 : : break;
17830 : : default:;
17831 : : }
17832 : : }
17833 : : break;
17834 : : }
17835 : 0 : case UNGT_EXPR:
17836 : 0 : {
17837 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17838 : 0 : _q30 = do_valueize (valueize, _q30);
17839 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17840 : 0 : _q31 = do_valueize (valueize, _q31);
17841 : 0 : if (integer_zerop (_q22))
17842 : : {
17843 : 0 : switch (TREE_CODE (_p1))
17844 : : {
17845 : 0 : case SSA_NAME:
17846 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17847 : : {
17848 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17849 : 0 : switch (gimple_assign_rhs_code (_a3))
17850 : : {
17851 : 0 : case VEC_COND_EXPR:
17852 : 0 : {
17853 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17854 : 0 : _q80 = do_valueize (valueize, _q80);
17855 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17856 : 0 : _q81 = do_valueize (valueize, _q81);
17857 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17858 : 0 : _q82 = do_valueize (valueize, _q82);
17859 : 0 : switch (TREE_CODE (_q80))
17860 : : {
17861 : 0 : case SSA_NAME:
17862 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17863 : : {
17864 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17865 : 0 : switch (gimple_assign_rhs_code (_a4))
17866 : : {
17867 : 0 : case LE_EXPR:
17868 : 0 : {
17869 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17870 : 0 : _q90 = do_valueize (valueize, _q90);
17871 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17872 : 0 : _q91 = do_valueize (valueize, _q91);
17873 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17874 : : {
17875 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17876 : : {
17877 : 0 : if (integer_zerop (_q82))
17878 : : {
17879 : 0 : {
17880 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17881 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGT_EXPR, LE_EXPR))
17882 : 0 : return true;
17883 : : }
17884 : : }
17885 : : }
17886 : : }
17887 : : break;
17888 : : }
17889 : : default:;
17890 : : }
17891 : : }
17892 : : break;
17893 : : default:;
17894 : : }
17895 : : break;
17896 : : }
17897 : : default:;
17898 : : }
17899 : : }
17900 : : break;
17901 : : default:;
17902 : : }
17903 : : }
17904 : : break;
17905 : : }
17906 : 0 : case UNGE_EXPR:
17907 : 0 : {
17908 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17909 : 0 : _q30 = do_valueize (valueize, _q30);
17910 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17911 : 0 : _q31 = do_valueize (valueize, _q31);
17912 : 0 : if (integer_zerop (_q22))
17913 : : {
17914 : 0 : switch (TREE_CODE (_p1))
17915 : : {
17916 : 0 : case SSA_NAME:
17917 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17918 : : {
17919 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17920 : 0 : switch (gimple_assign_rhs_code (_a3))
17921 : : {
17922 : 0 : case VEC_COND_EXPR:
17923 : 0 : {
17924 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17925 : 0 : _q80 = do_valueize (valueize, _q80);
17926 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
17927 : 0 : _q81 = do_valueize (valueize, _q81);
17928 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
17929 : 0 : _q82 = do_valueize (valueize, _q82);
17930 : 0 : switch (TREE_CODE (_q80))
17931 : : {
17932 : 0 : case SSA_NAME:
17933 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
17934 : : {
17935 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17936 : 0 : switch (gimple_assign_rhs_code (_a4))
17937 : : {
17938 : 0 : case LT_EXPR:
17939 : 0 : {
17940 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
17941 : 0 : _q90 = do_valueize (valueize, _q90);
17942 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
17943 : 0 : _q91 = do_valueize (valueize, _q91);
17944 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
17945 : : {
17946 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
17947 : : {
17948 : 0 : if (integer_zerop (_q82))
17949 : : {
17950 : 0 : {
17951 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
17952 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNGE_EXPR, LT_EXPR))
17953 : 0 : return true;
17954 : : }
17955 : : }
17956 : : }
17957 : : }
17958 : : break;
17959 : : }
17960 : : default:;
17961 : : }
17962 : : }
17963 : : break;
17964 : : default:;
17965 : : }
17966 : : break;
17967 : : }
17968 : : default:;
17969 : : }
17970 : : }
17971 : : break;
17972 : : default:;
17973 : : }
17974 : : }
17975 : : break;
17976 : : }
17977 : 0 : case UNEQ_EXPR:
17978 : 0 : {
17979 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
17980 : 0 : _q30 = do_valueize (valueize, _q30);
17981 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
17982 : 0 : _q31 = do_valueize (valueize, _q31);
17983 : 0 : if (tree_swap_operands_p (_q30, _q31))
17984 : 0 : std::swap (_q30, _q31);
17985 : 0 : if (integer_zerop (_q22))
17986 : : {
17987 : 0 : switch (TREE_CODE (_p1))
17988 : : {
17989 : 0 : case SSA_NAME:
17990 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
17991 : : {
17992 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17993 : 0 : switch (gimple_assign_rhs_code (_a3))
17994 : : {
17995 : 0 : case VEC_COND_EXPR:
17996 : 0 : {
17997 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
17998 : 0 : _q80 = do_valueize (valueize, _q80);
17999 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
18000 : 0 : _q81 = do_valueize (valueize, _q81);
18001 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
18002 : 0 : _q82 = do_valueize (valueize, _q82);
18003 : 0 : switch (TREE_CODE (_q80))
18004 : : {
18005 : 0 : case SSA_NAME:
18006 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
18007 : : {
18008 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
18009 : 0 : switch (gimple_assign_rhs_code (_a4))
18010 : : {
18011 : 0 : case LTGT_EXPR:
18012 : 0 : {
18013 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
18014 : 0 : _q90 = do_valueize (valueize, _q90);
18015 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
18016 : 0 : _q91 = do_valueize (valueize, _q91);
18017 : 0 : if (tree_swap_operands_p (_q90, _q91))
18018 : 0 : std::swap (_q90, _q91);
18019 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
18020 : : {
18021 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
18022 : : {
18023 : 0 : if (integer_zerop (_q82))
18024 : : {
18025 : 0 : {
18026 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
18027 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, UNEQ_EXPR, LTGT_EXPR))
18028 : 0 : return true;
18029 : : }
18030 : : }
18031 : : }
18032 : : }
18033 : 673848 : break;
18034 : : }
18035 : : default:;
18036 : : }
18037 : : }
18038 : : break;
18039 : : default:;
18040 : : }
18041 : : break;
18042 : : }
18043 : : default:;
18044 : : }
18045 : : }
18046 : : break;
18047 : : default:;
18048 : : }
18049 : : }
18050 : 673848 : break;
18051 : : }
18052 : 0 : case LTGT_EXPR:
18053 : 0 : {
18054 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
18055 : 0 : _q30 = do_valueize (valueize, _q30);
18056 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
18057 : 0 : _q31 = do_valueize (valueize, _q31);
18058 : 0 : if (tree_swap_operands_p (_q30, _q31))
18059 : 0 : std::swap (_q30, _q31);
18060 : 0 : if (integer_zerop (_q22))
18061 : : {
18062 : 0 : switch (TREE_CODE (_p1))
18063 : : {
18064 : 0 : case SSA_NAME:
18065 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
18066 : : {
18067 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
18068 : 0 : switch (gimple_assign_rhs_code (_a3))
18069 : : {
18070 : 0 : case VEC_COND_EXPR:
18071 : 0 : {
18072 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
18073 : 0 : _q80 = do_valueize (valueize, _q80);
18074 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
18075 : 0 : _q81 = do_valueize (valueize, _q81);
18076 : 0 : tree _q82 = gimple_assign_rhs3 (_a3);
18077 : 0 : _q82 = do_valueize (valueize, _q82);
18078 : 0 : switch (TREE_CODE (_q80))
18079 : : {
18080 : 0 : case SSA_NAME:
18081 : 0 : if (gimple *_d4 = get_def (valueize, _q80))
18082 : : {
18083 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
18084 : 0 : switch (gimple_assign_rhs_code (_a4))
18085 : : {
18086 : 0 : case UNEQ_EXPR:
18087 : 0 : {
18088 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
18089 : 0 : _q90 = do_valueize (valueize, _q90);
18090 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
18091 : 0 : _q91 = do_valueize (valueize, _q91);
18092 : 0 : if (tree_swap_operands_p (_q90, _q91))
18093 : 0 : std::swap (_q90, _q91);
18094 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
18095 : : {
18096 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
18097 : : {
18098 : 0 : if (integer_zerop (_q82))
18099 : : {
18100 : 0 : {
18101 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
18102 : 0 : if (gimple_simplify_37 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LTGT_EXPR, UNEQ_EXPR))
18103 : 0 : return true;
18104 : : }
18105 : : }
18106 : : }
18107 : : }
18108 : 673848 : break;
18109 : : }
18110 : : default:;
18111 : : }
18112 : : }
18113 : : break;
18114 : : default:;
18115 : : }
18116 : : break;
18117 : : }
18118 : : default:;
18119 : : }
18120 : : }
18121 : : break;
18122 : : default:;
18123 : : }
18124 : : }
18125 : 673848 : break;
18126 : : }
18127 : : default:;
18128 : : }
18129 : : }
18130 : : break;
18131 : : default:;
18132 : : }
18133 : : break;
18134 : : }
18135 : 31156 : case BIT_AND_EXPR:
18136 : 31156 : {
18137 : 31156 : tree _q20 = gimple_assign_rhs1 (_a1);
18138 : 31156 : _q20 = do_valueize (valueize, _q20);
18139 : 31156 : tree _q21 = gimple_assign_rhs2 (_a1);
18140 : 31156 : _q21 = do_valueize (valueize, _q21);
18141 : 31156 : if (tree_swap_operands_p (_q20, _q21))
18142 : 1264 : std::swap (_q20, _q21);
18143 : 31156 : if (gimple_truth_valued_p (_q20, valueize))
18144 : : {
18145 : 31 : if (gimple_truth_valued_p (_q21, valueize))
18146 : : {
18147 : 31 : switch (TREE_CODE (_p1))
18148 : : {
18149 : 31 : case SSA_NAME:
18150 : 31 : if (gimple *_d2 = get_def (valueize, _p1))
18151 : : {
18152 : 31 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18153 : 3 : switch (gimple_assign_rhs_code (_a2))
18154 : : {
18155 : 2 : case EQ_EXPR:
18156 : 2 : {
18157 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
18158 : 2 : _q50 = do_valueize (valueize, _q50);
18159 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
18160 : 2 : _q51 = do_valueize (valueize, _q51);
18161 : 2 : if (tree_swap_operands_p (_q50, _q51))
18162 : 0 : std::swap (_q50, _q51);
18163 : 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18164 : : {
18165 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18166 : : {
18167 : 2 : {
18168 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18169 : 2 : gimple_seq *lseq = seq;
18170 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2069;
18171 : 2 : {
18172 : 2 : res_op->set_op (BIT_NOT_EXPR, type, 1);
18173 : 2 : {
18174 : 2 : tree _o1[2], _r1;
18175 : 2 : _o1[0] = captures[0];
18176 : 2 : _o1[1] = captures[1];
18177 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
18178 : 2 : tem_op.resimplify (lseq, valueize);
18179 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
18180 : 2 : if (!_r1) goto next_after_fail2069;
18181 : 1 : res_op->ops[0] = _r1;
18182 : : }
18183 : 1 : res_op->resimplify (lseq, valueize);
18184 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1057, __FILE__, __LINE__, true);
18185 : 1 : return true;
18186 : : }
18187 : 1 : next_after_fail2069:;
18188 : : }
18189 : : }
18190 : : }
18191 : 1 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18192 : : {
18193 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18194 : : {
18195 : 0 : {
18196 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
18197 : 0 : gimple_seq *lseq = seq;
18198 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2070;
18199 : 0 : {
18200 : 0 : res_op->set_op (BIT_NOT_EXPR, type, 1);
18201 : 0 : {
18202 : 0 : tree _o1[2], _r1;
18203 : 0 : _o1[0] = captures[0];
18204 : 0 : _o1[1] = captures[1];
18205 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
18206 : 0 : tem_op.resimplify (lseq, valueize);
18207 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
18208 : 0 : if (!_r1) goto next_after_fail2070;
18209 : 0 : res_op->ops[0] = _r1;
18210 : : }
18211 : 0 : res_op->resimplify (lseq, valueize);
18212 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1057, __FILE__, __LINE__, true);
18213 : 0 : return true;
18214 : : }
18215 : 0 : next_after_fail2070:;
18216 : : }
18217 : : }
18218 : : }
18219 : 673848 : break;
18220 : : }
18221 : : default:;
18222 : : }
18223 : : }
18224 : : break;
18225 : : default:;
18226 : : }
18227 : : }
18228 : : }
18229 : 673848 : break;
18230 : : }
18231 : 1013 : case EQ_EXPR:
18232 : 1013 : {
18233 : 1013 : tree _q20 = gimple_assign_rhs1 (_a1);
18234 : 1013 : _q20 = do_valueize (valueize, _q20);
18235 : 1013 : tree _q21 = gimple_assign_rhs2 (_a1);
18236 : 1013 : _q21 = do_valueize (valueize, _q21);
18237 : 1013 : if (tree_swap_operands_p (_q20, _q21))
18238 : 22 : std::swap (_q20, _q21);
18239 : 1013 : switch (TREE_CODE (_p1))
18240 : : {
18241 : 1013 : case SSA_NAME:
18242 : 1013 : if (gimple *_d2 = get_def (valueize, _p1))
18243 : : {
18244 : 1008 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18245 : 991 : switch (gimple_assign_rhs_code (_a2))
18246 : : {
18247 : 1 : case BIT_AND_EXPR:
18248 : 1 : {
18249 : 1 : tree _q50 = gimple_assign_rhs1 (_a2);
18250 : 1 : _q50 = do_valueize (valueize, _q50);
18251 : 1 : tree _q51 = gimple_assign_rhs2 (_a2);
18252 : 1 : _q51 = do_valueize (valueize, _q51);
18253 : 1 : if (tree_swap_operands_p (_q50, _q51))
18254 : 0 : std::swap (_q50, _q51);
18255 : 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18256 : : {
18257 : 1 : if (gimple_truth_valued_p (_q50, valueize))
18258 : : {
18259 : 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18260 : : {
18261 : 1 : if (gimple_truth_valued_p (_q51, valueize))
18262 : : {
18263 : 1 : {
18264 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18265 : 1 : gimple_seq *lseq = seq;
18266 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2071;
18267 : 1 : {
18268 : 1 : res_op->set_op (BIT_NOT_EXPR, type, 1);
18269 : 1 : {
18270 : 1 : tree _o1[2], _r1;
18271 : 1 : _o1[0] = captures[0];
18272 : 1 : _o1[1] = captures[1];
18273 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
18274 : 1 : tem_op.resimplify (lseq, valueize);
18275 : 1 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
18276 : 1 : if (!_r1) goto next_after_fail2071;
18277 : 1 : res_op->ops[0] = _r1;
18278 : : }
18279 : 1 : res_op->resimplify (lseq, valueize);
18280 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1057, __FILE__, __LINE__, true);
18281 : 1 : return true;
18282 : : }
18283 : 0 : next_after_fail2071:;
18284 : : }
18285 : : }
18286 : : }
18287 : : }
18288 : : }
18289 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18290 : : {
18291 : 0 : if (gimple_truth_valued_p (_q50, valueize))
18292 : : {
18293 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18294 : : {
18295 : 0 : if (gimple_truth_valued_p (_q51, valueize))
18296 : : {
18297 : 0 : {
18298 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18299 : 0 : gimple_seq *lseq = seq;
18300 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2072;
18301 : 0 : {
18302 : 0 : res_op->set_op (BIT_NOT_EXPR, type, 1);
18303 : 0 : {
18304 : 0 : tree _o1[2], _r1;
18305 : 0 : _o1[0] = captures[0];
18306 : 0 : _o1[1] = captures[1];
18307 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
18308 : 0 : tem_op.resimplify (lseq, valueize);
18309 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
18310 : 0 : if (!_r1) goto next_after_fail2072;
18311 : 0 : res_op->ops[0] = _r1;
18312 : : }
18313 : 0 : res_op->resimplify (lseq, valueize);
18314 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1057, __FILE__, __LINE__, true);
18315 : 0 : return true;
18316 : : }
18317 : 0 : next_after_fail2072:;
18318 : : }
18319 : : }
18320 : : }
18321 : : }
18322 : : }
18323 : 673848 : break;
18324 : : }
18325 : : default:;
18326 : : }
18327 : : }
18328 : : break;
18329 : : default:;
18330 : : }
18331 : 673848 : break;
18332 : : }
18333 : : default:;
18334 : : }
18335 : : }
18336 : : break;
18337 : 673848 : default:;
18338 : : }
18339 : 673848 : {
18340 : 673848 : tree _p0_pops[1];
18341 : 673848 : if (gimple_logical_inverted_value (_p0, _p0_pops, valueize))
18342 : : {
18343 : 427 : tree _q20 = _p0_pops[0];
18344 : 427 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18345 : : {
18346 : 0 : if (gimple_truth_valued_p (_p1, valueize))
18347 : : {
18348 : 0 : {
18349 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
18350 : 0 : if (gimple_simplify_35 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
18351 : 0 : return true;
18352 : : }
18353 : : }
18354 : : }
18355 : : }
18356 : : }
18357 : 673848 : {
18358 : 673848 : tree _p0_pops[1];
18359 : 673848 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
18360 : : {
18361 : 10847 : tree _q20 = _p0_pops[0];
18362 : 10847 : switch (TREE_CODE (_q20))
18363 : : {
18364 : 10805 : case SSA_NAME:
18365 : 10805 : if (gimple *_d1 = get_def (valueize, _q20))
18366 : : {
18367 : 10484 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18368 : 8314 : switch (gimple_assign_rhs_code (_a1))
18369 : : {
18370 : 187 : case BIT_NOT_EXPR:
18371 : 187 : {
18372 : 187 : tree _q30 = gimple_assign_rhs1 (_a1);
18373 : 187 : _q30 = do_valueize (valueize, _q30);
18374 : 187 : {
18375 : 187 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1 };
18376 : 187 : if (gimple_simplify_38 (res_op, seq, valueize, type, captures))
18377 : 5 : return true;
18378 : : }
18379 : 182 : break;
18380 : : }
18381 : 163 : case MULT_EXPR:
18382 : 163 : {
18383 : 163 : tree _q30 = gimple_assign_rhs1 (_a1);
18384 : 163 : _q30 = do_valueize (valueize, _q30);
18385 : 163 : tree _q31 = gimple_assign_rhs2 (_a1);
18386 : 163 : _q31 = do_valueize (valueize, _q31);
18387 : 163 : if (tree_swap_operands_p (_q30, _q31))
18388 : 0 : std::swap (_q30, _q31);
18389 : 163 : {
18390 : 163 : tree _q30_pops[1];
18391 : 163 : if (gimple_nop_convert (_q30, _q30_pops, valueize))
18392 : : {
18393 : 39 : tree _q40 = _q30_pops[0];
18394 : 39 : switch (TREE_CODE (_q31))
18395 : : {
18396 : 39 : case INTEGER_CST:
18397 : 39 : {
18398 : 39 : switch (TREE_CODE (_p1))
18399 : : {
18400 : 39 : case SSA_NAME:
18401 : 39 : if (gimple *_d2 = get_def (valueize, _p1))
18402 : : {
18403 : 39 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18404 : 24 : switch (gimple_assign_rhs_code (_a2))
18405 : : {
18406 : 0 : case LSHIFT_EXPR:
18407 : 0 : {
18408 : 0 : tree _q70 = gimple_assign_rhs1 (_a2);
18409 : 0 : _q70 = do_valueize (valueize, _q70);
18410 : 0 : tree _q71 = gimple_assign_rhs2 (_a2);
18411 : 0 : _q71 = do_valueize (valueize, _q71);
18412 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
18413 : : {
18414 : 0 : switch (TREE_CODE (_q71))
18415 : : {
18416 : 0 : case INTEGER_CST:
18417 : 0 : {
18418 : 0 : {
18419 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31, _p1, _q71 };
18420 : 0 : if (gimple_simplify_40 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
18421 : 0 : return true;
18422 : : }
18423 : 0 : break;
18424 : : }
18425 : : default:;
18426 : : }
18427 : : }
18428 : : break;
18429 : : }
18430 : : default:;
18431 : : }
18432 : : }
18433 : : break;
18434 : 39 : default:;
18435 : : }
18436 : 39 : {
18437 : 39 : tree _p1_pops[1];
18438 : 39 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
18439 : : {
18440 : 0 : tree _q70 = _p1_pops[0];
18441 : 0 : switch (TREE_CODE (_q70))
18442 : : {
18443 : 0 : case SSA_NAME:
18444 : 0 : if (gimple *_d2 = get_def (valueize, _q70))
18445 : : {
18446 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18447 : 0 : switch (gimple_assign_rhs_code (_a2))
18448 : : {
18449 : 0 : case MULT_EXPR:
18450 : 0 : {
18451 : 0 : tree _q80 = gimple_assign_rhs1 (_a2);
18452 : 0 : _q80 = do_valueize (valueize, _q80);
18453 : 0 : tree _q81 = gimple_assign_rhs2 (_a2);
18454 : 0 : _q81 = do_valueize (valueize, _q81);
18455 : 0 : if (tree_swap_operands_p (_q80, _q81))
18456 : 0 : std::swap (_q80, _q81);
18457 : 0 : {
18458 : 0 : tree _q80_pops[1];
18459 : 0 : if (gimple_nop_convert (_q80, _q80_pops, valueize))
18460 : : {
18461 : 0 : tree _q90 = _q80_pops[0];
18462 : 0 : switch (TREE_CODE (_q81))
18463 : : {
18464 : 0 : case INTEGER_CST:
18465 : 0 : {
18466 : 0 : {
18467 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31, _p1, _q70, _q90, _q81 };
18468 : 0 : if (gimple_simplify_39 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
18469 : 0 : return true;
18470 : : }
18471 : 0 : break;
18472 : : }
18473 : : default:;
18474 : : }
18475 : : }
18476 : : }
18477 : 0 : break;
18478 : : }
18479 : : default:;
18480 : : }
18481 : : }
18482 : : break;
18483 : : default:;
18484 : : }
18485 : : }
18486 : : }
18487 : 39 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
18488 : : {
18489 : 0 : {
18490 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
18491 : 0 : if (gimple_simplify_41 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
18492 : 0 : return true;
18493 : : }
18494 : : }
18495 : : break;
18496 : : }
18497 : : default:;
18498 : : }
18499 : : }
18500 : : }
18501 : 163 : break;
18502 : : }
18503 : : default:;
18504 : : }
18505 : : }
18506 : : break;
18507 : : default:;
18508 : : }
18509 : : }
18510 : : }
18511 : 673843 : if (gimple_truth_valued_p (_p0, valueize))
18512 : : {
18513 : 66508 : {
18514 : 66508 : tree _p1_pops[1];
18515 : 66508 : if (gimple_logical_inverted_value (_p1, _p1_pops, valueize))
18516 : : {
18517 : 1124 : tree _q30 = _p1_pops[0];
18518 : 1124 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
18519 : : {
18520 : 0 : {
18521 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
18522 : 0 : if (gimple_simplify_35 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
18523 : 0 : return true;
18524 : : }
18525 : : }
18526 : : }
18527 : : }
18528 : : }
18529 : 673843 : switch (TREE_CODE (_p1))
18530 : : {
18531 : 538540 : case SSA_NAME:
18532 : 538540 : if (gimple *_d1 = get_def (valueize, _p1))
18533 : : {
18534 : 440885 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18535 : 492512 : switch (gimple_assign_rhs_code (_a1))
18536 : : {
18537 : 670 : case BIT_NOT_EXPR:
18538 : 670 : {
18539 : 670 : tree _q30 = gimple_assign_rhs1 (_a1);
18540 : 670 : _q30 = do_valueize (valueize, _q30);
18541 : 670 : {
18542 : 670 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
18543 : 670 : if (gimple_simplify_28 (res_op, seq, valueize, type, captures))
18544 : 277 : return true;
18545 : : }
18546 : 393 : break;
18547 : : }
18548 : : default:;
18549 : : }
18550 : : }
18551 : : break;
18552 : 673566 : default:;
18553 : : }
18554 : 673566 : {
18555 : 673566 : tree _p1_pops[1];
18556 : 673566 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
18557 : : {
18558 : 7396 : tree _q30 = _p1_pops[0];
18559 : 7396 : switch (TREE_CODE (_q30))
18560 : : {
18561 : 7378 : case SSA_NAME:
18562 : 7378 : if (gimple *_d1 = get_def (valueize, _q30))
18563 : : {
18564 : 6973 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18565 : 5341 : switch (gimple_assign_rhs_code (_a1))
18566 : : {
18567 : 94 : case BIT_NOT_EXPR:
18568 : 94 : {
18569 : 94 : tree _q40 = gimple_assign_rhs1 (_a1);
18570 : 94 : _q40 = do_valueize (valueize, _q40);
18571 : 94 : {
18572 : 94 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
18573 : 94 : if (gimple_simplify_38 (res_op, seq, valueize, type, captures))
18574 : 0 : return true;
18575 : : }
18576 : 94 : break;
18577 : : }
18578 : : default:;
18579 : : }
18580 : : }
18581 : : break;
18582 : : default:;
18583 : : }
18584 : : }
18585 : : }
18586 : 673566 : switch (TREE_CODE (_p0))
18587 : : {
18588 : 661823 : case SSA_NAME:
18589 : 661823 : if (gimple *_d1 = get_def (valueize, _p0))
18590 : : {
18591 : 522340 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18592 : 593079 : switch (gimple_assign_rhs_code (_a1))
18593 : : {
18594 : 14377 : case BIT_IOR_EXPR:
18595 : 14377 : {
18596 : 14377 : tree _q20 = gimple_assign_rhs1 (_a1);
18597 : 14377 : _q20 = do_valueize (valueize, _q20);
18598 : 14377 : tree _q21 = gimple_assign_rhs2 (_a1);
18599 : 14377 : _q21 = do_valueize (valueize, _q21);
18600 : 14377 : if (tree_swap_operands_p (_q20, _q21))
18601 : 765 : std::swap (_q20, _q21);
18602 : 14377 : switch (TREE_CODE (_q21))
18603 : : {
18604 : 448 : case INTEGER_CST:
18605 : 448 : {
18606 : 448 : switch (TREE_CODE (_p1))
18607 : : {
18608 : 254 : case INTEGER_CST:
18609 : 254 : {
18610 : 254 : {
18611 : 254 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
18612 : 254 : if (gimple_simplify_42 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_XOR_EXPR))
18613 : 2 : return true;
18614 : : }
18615 : 252 : break;
18616 : : }
18617 : : default:;
18618 : : }
18619 : : break;
18620 : : }
18621 : : default:;
18622 : : }
18623 : 673302 : break;
18624 : : }
18625 : 4765 : case LT_EXPR:
18626 : 4765 : {
18627 : 4765 : tree _q20 = gimple_assign_rhs1 (_a1);
18628 : 4765 : _q20 = do_valueize (valueize, _q20);
18629 : 4765 : tree _q21 = gimple_assign_rhs2 (_a1);
18630 : 4765 : _q21 = do_valueize (valueize, _q21);
18631 : 4765 : switch (TREE_CODE (_p1))
18632 : : {
18633 : 4765 : case SSA_NAME:
18634 : 4765 : if (gimple *_d2 = get_def (valueize, _p1))
18635 : : {
18636 : 4653 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18637 : 4777 : switch (gimple_assign_rhs_code (_a2))
18638 : : {
18639 : 28 : case GT_EXPR:
18640 : 28 : {
18641 : 28 : tree _q50 = gimple_assign_rhs1 (_a2);
18642 : 28 : _q50 = do_valueize (valueize, _q50);
18643 : 28 : tree _q51 = gimple_assign_rhs2 (_a2);
18644 : 28 : _q51 = do_valueize (valueize, _q51);
18645 : 28 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18646 : : {
18647 : 21 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18648 : : {
18649 : 21 : {
18650 : 21 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18651 : 21 : const enum tree_code cmp1 = LT_EXPR;
18652 : 21 : const enum tree_code cmp2 = GT_EXPR;
18653 : 21 : const enum tree_code rcmp = NE_EXPR;
18654 : 21 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
18655 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
18656 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
18657 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
18658 : : )
18659 : : {
18660 : 21 : gimple_seq *lseq = seq;
18661 : 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2073;
18662 : 21 : {
18663 : 21 : res_op->set_op (rcmp, type, 2);
18664 : 21 : res_op->ops[0] = captures[0];
18665 : 21 : res_op->ops[1] = captures[1];
18666 : 21 : res_op->resimplify (lseq, valueize);
18667 : 21 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18668 : 21 : return true;
18669 : : }
18670 : 0 : next_after_fail2073:;
18671 : : }
18672 : : }
18673 : : }
18674 : : }
18675 : : break;
18676 : : }
18677 : 91 : case EQ_EXPR:
18678 : 91 : {
18679 : 91 : tree _q50 = gimple_assign_rhs1 (_a2);
18680 : 91 : _q50 = do_valueize (valueize, _q50);
18681 : 91 : tree _q51 = gimple_assign_rhs2 (_a2);
18682 : 91 : _q51 = do_valueize (valueize, _q51);
18683 : 91 : if (tree_swap_operands_p (_q50, _q51))
18684 : 0 : std::swap (_q50, _q51);
18685 : 91 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18686 : : {
18687 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18688 : : {
18689 : 16 : {
18690 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18691 : 16 : const enum tree_code cmp1 = LT_EXPR;
18692 : 16 : const enum tree_code cmp2 = EQ_EXPR;
18693 : 16 : const enum tree_code rcmp = LE_EXPR;
18694 : 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
18695 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
18696 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
18697 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
18698 : : )
18699 : : {
18700 : 16 : gimple_seq *lseq = seq;
18701 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2074;
18702 : 16 : {
18703 : 16 : res_op->set_op (rcmp, type, 2);
18704 : 16 : res_op->ops[0] = captures[0];
18705 : 16 : res_op->ops[1] = captures[1];
18706 : 16 : res_op->resimplify (lseq, valueize);
18707 : 16 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18708 : 16 : return true;
18709 : : }
18710 : 0 : next_after_fail2074:;
18711 : : }
18712 : : }
18713 : : }
18714 : : }
18715 : 673302 : break;
18716 : : }
18717 : 18 : case NE_EXPR:
18718 : 18 : {
18719 : 18 : tree _q50 = gimple_assign_rhs1 (_a2);
18720 : 18 : _q50 = do_valueize (valueize, _q50);
18721 : 18 : tree _q51 = gimple_assign_rhs2 (_a2);
18722 : 18 : _q51 = do_valueize (valueize, _q51);
18723 : 18 : if (tree_swap_operands_p (_q50, _q51))
18724 : 0 : std::swap (_q50, _q51);
18725 : 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18726 : : {
18727 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18728 : : {
18729 : 16 : {
18730 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18731 : 16 : const enum tree_code cmp1 = LT_EXPR;
18732 : 16 : const enum tree_code cmp2 = NE_EXPR;
18733 : 16 : const enum tree_code rcmp = GT_EXPR;
18734 : 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
18735 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
18736 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
18737 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
18738 : : )
18739 : : {
18740 : 16 : gimple_seq *lseq = seq;
18741 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2075;
18742 : 16 : {
18743 : 16 : res_op->set_op (rcmp, type, 2);
18744 : 16 : res_op->ops[0] = captures[0];
18745 : 16 : res_op->ops[1] = captures[1];
18746 : 16 : res_op->resimplify (lseq, valueize);
18747 : 16 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18748 : 16 : return true;
18749 : : }
18750 : 0 : next_after_fail2075:;
18751 : : }
18752 : : }
18753 : : }
18754 : : }
18755 : 673302 : break;
18756 : : }
18757 : : default:;
18758 : : }
18759 : : }
18760 : : break;
18761 : : default:;
18762 : : }
18763 : : break;
18764 : : }
18765 : 637 : case LE_EXPR:
18766 : 637 : {
18767 : 637 : tree _q20 = gimple_assign_rhs1 (_a1);
18768 : 637 : _q20 = do_valueize (valueize, _q20);
18769 : 637 : tree _q21 = gimple_assign_rhs2 (_a1);
18770 : 637 : _q21 = do_valueize (valueize, _q21);
18771 : 637 : switch (TREE_CODE (_p1))
18772 : : {
18773 : 637 : case SSA_NAME:
18774 : 637 : if (gimple *_d2 = get_def (valueize, _p1))
18775 : : {
18776 : 633 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18777 : 642 : switch (gimple_assign_rhs_code (_a2))
18778 : : {
18779 : 16 : case GE_EXPR:
18780 : 16 : {
18781 : 16 : tree _q50 = gimple_assign_rhs1 (_a2);
18782 : 16 : _q50 = do_valueize (valueize, _q50);
18783 : 16 : tree _q51 = gimple_assign_rhs2 (_a2);
18784 : 16 : _q51 = do_valueize (valueize, _q51);
18785 : 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18786 : : {
18787 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18788 : : {
18789 : 16 : {
18790 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18791 : 16 : const enum tree_code cmp1 = LE_EXPR;
18792 : 16 : const enum tree_code cmp2 = GE_EXPR;
18793 : 16 : const enum tree_code rcmp = NE_EXPR;
18794 : 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
18795 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
18796 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
18797 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
18798 : : )
18799 : : {
18800 : 16 : gimple_seq *lseq = seq;
18801 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2076;
18802 : 16 : {
18803 : 16 : res_op->set_op (rcmp, type, 2);
18804 : 16 : res_op->ops[0] = captures[0];
18805 : 16 : res_op->ops[1] = captures[1];
18806 : 16 : res_op->resimplify (lseq, valueize);
18807 : 16 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18808 : 16 : return true;
18809 : : }
18810 : 0 : next_after_fail2076:;
18811 : : }
18812 : : }
18813 : : }
18814 : : }
18815 : : break;
18816 : : }
18817 : 18 : case EQ_EXPR:
18818 : 18 : {
18819 : 18 : tree _q50 = gimple_assign_rhs1 (_a2);
18820 : 18 : _q50 = do_valueize (valueize, _q50);
18821 : 18 : tree _q51 = gimple_assign_rhs2 (_a2);
18822 : 18 : _q51 = do_valueize (valueize, _q51);
18823 : 18 : if (tree_swap_operands_p (_q50, _q51))
18824 : 0 : std::swap (_q50, _q51);
18825 : 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18826 : : {
18827 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18828 : : {
18829 : 16 : {
18830 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18831 : 16 : const enum tree_code cmp1 = LE_EXPR;
18832 : 16 : const enum tree_code cmp2 = EQ_EXPR;
18833 : 16 : const enum tree_code rcmp = LT_EXPR;
18834 : 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
18835 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
18836 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
18837 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
18838 : : )
18839 : : {
18840 : 16 : gimple_seq *lseq = seq;
18841 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2077;
18842 : 16 : {
18843 : 16 : res_op->set_op (rcmp, type, 2);
18844 : 16 : res_op->ops[0] = captures[0];
18845 : 16 : res_op->ops[1] = captures[1];
18846 : 16 : res_op->resimplify (lseq, valueize);
18847 : 16 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18848 : 16 : return true;
18849 : : }
18850 : 0 : next_after_fail2077:;
18851 : : }
18852 : : }
18853 : : }
18854 : : }
18855 : 673302 : break;
18856 : : }
18857 : 70 : case NE_EXPR:
18858 : 70 : {
18859 : 70 : tree _q50 = gimple_assign_rhs1 (_a2);
18860 : 70 : _q50 = do_valueize (valueize, _q50);
18861 : 70 : tree _q51 = gimple_assign_rhs2 (_a2);
18862 : 70 : _q51 = do_valueize (valueize, _q51);
18863 : 70 : if (tree_swap_operands_p (_q50, _q51))
18864 : 0 : std::swap (_q50, _q51);
18865 : 70 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18866 : : {
18867 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18868 : : {
18869 : 16 : {
18870 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18871 : 16 : const enum tree_code cmp1 = LE_EXPR;
18872 : 16 : const enum tree_code cmp2 = NE_EXPR;
18873 : 16 : const enum tree_code rcmp = GE_EXPR;
18874 : 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
18875 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
18876 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
18877 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
18878 : : )
18879 : : {
18880 : 16 : gimple_seq *lseq = seq;
18881 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2078;
18882 : 16 : {
18883 : 16 : res_op->set_op (rcmp, type, 2);
18884 : 16 : res_op->ops[0] = captures[0];
18885 : 16 : res_op->ops[1] = captures[1];
18886 : 16 : res_op->resimplify (lseq, valueize);
18887 : 16 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18888 : 16 : return true;
18889 : : }
18890 : 0 : next_after_fail2078:;
18891 : : }
18892 : : }
18893 : : }
18894 : : }
18895 : 673302 : break;
18896 : : }
18897 : : default:;
18898 : : }
18899 : : }
18900 : : break;
18901 : : default:;
18902 : : }
18903 : : break;
18904 : : }
18905 : 9981 : case GT_EXPR:
18906 : 9981 : {
18907 : 9981 : tree _q20 = gimple_assign_rhs1 (_a1);
18908 : 9981 : _q20 = do_valueize (valueize, _q20);
18909 : 9981 : tree _q21 = gimple_assign_rhs2 (_a1);
18910 : 9981 : _q21 = do_valueize (valueize, _q21);
18911 : 9981 : switch (TREE_CODE (_p1))
18912 : : {
18913 : 9981 : case SSA_NAME:
18914 : 9981 : if (gimple *_d2 = get_def (valueize, _p1))
18915 : : {
18916 : 9922 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18917 : 10419 : switch (gimple_assign_rhs_code (_a2))
18918 : : {
18919 : 190 : case GT_EXPR:
18920 : 190 : {
18921 : 190 : tree _q50 = gimple_assign_rhs1 (_a2);
18922 : 190 : _q50 = do_valueize (valueize, _q50);
18923 : 190 : tree _q51 = gimple_assign_rhs2 (_a2);
18924 : 190 : _q51 = do_valueize (valueize, _q51);
18925 : 190 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18926 : : {
18927 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18928 : : {
18929 : 0 : {
18930 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
18931 : 0 : const enum tree_code cmp1 = LT_EXPR;
18932 : 0 : const enum tree_code cmp2 = GT_EXPR;
18933 : 0 : const enum tree_code rcmp = NE_EXPR;
18934 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
18935 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
18936 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
18937 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
18938 : : )
18939 : : {
18940 : 0 : gimple_seq *lseq = seq;
18941 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2079;
18942 : 0 : {
18943 : 0 : res_op->set_op (rcmp, type, 2);
18944 : 0 : res_op->ops[0] = captures[0];
18945 : 0 : res_op->ops[1] = captures[1];
18946 : 0 : res_op->resimplify (lseq, valueize);
18947 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18948 : 0 : return true;
18949 : : }
18950 : 0 : next_after_fail2079:;
18951 : : }
18952 : : }
18953 : 0 : {
18954 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18955 : 0 : const enum tree_code cmp1 = LT_EXPR;
18956 : 0 : const enum tree_code cmp2 = GT_EXPR;
18957 : 0 : const enum tree_code rcmp = NE_EXPR;
18958 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
18959 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
18960 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
18961 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
18962 : : )
18963 : : {
18964 : 0 : gimple_seq *lseq = seq;
18965 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2080;
18966 : 0 : {
18967 : 0 : res_op->set_op (rcmp, type, 2);
18968 : 0 : res_op->ops[0] = captures[0];
18969 : 0 : res_op->ops[1] = captures[1];
18970 : 0 : res_op->resimplify (lseq, valueize);
18971 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18972 : 0 : return true;
18973 : : }
18974 : 0 : next_after_fail2080:;
18975 : : }
18976 : : }
18977 : : }
18978 : : }
18979 : : break;
18980 : : }
18981 : 227 : case EQ_EXPR:
18982 : 227 : {
18983 : 227 : tree _q50 = gimple_assign_rhs1 (_a2);
18984 : 227 : _q50 = do_valueize (valueize, _q50);
18985 : 227 : tree _q51 = gimple_assign_rhs2 (_a2);
18986 : 227 : _q51 = do_valueize (valueize, _q51);
18987 : 227 : if (tree_swap_operands_p (_q50, _q51))
18988 : 4 : std::swap (_q50, _q51);
18989 : 227 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18990 : : {
18991 : 4 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18992 : : {
18993 : 4 : {
18994 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
18995 : 4 : const enum tree_code cmp1 = LT_EXPR;
18996 : 4 : const enum tree_code cmp2 = EQ_EXPR;
18997 : 4 : const enum tree_code rcmp = LE_EXPR;
18998 : 4 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
18999 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19000 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19001 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19002 : : )
19003 : : {
19004 : 4 : gimple_seq *lseq = seq;
19005 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2081;
19006 : 4 : {
19007 : 4 : res_op->set_op (rcmp, type, 2);
19008 : 4 : res_op->ops[0] = captures[0];
19009 : 4 : res_op->ops[1] = captures[1];
19010 : 4 : res_op->resimplify (lseq, valueize);
19011 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19012 : 4 : return true;
19013 : : }
19014 : 0 : next_after_fail2081:;
19015 : : }
19016 : : }
19017 : : }
19018 : : }
19019 : 673302 : break;
19020 : : }
19021 : 445 : case NE_EXPR:
19022 : 445 : {
19023 : 445 : tree _q50 = gimple_assign_rhs1 (_a2);
19024 : 445 : _q50 = do_valueize (valueize, _q50);
19025 : 445 : tree _q51 = gimple_assign_rhs2 (_a2);
19026 : 445 : _q51 = do_valueize (valueize, _q51);
19027 : 445 : if (tree_swap_operands_p (_q50, _q51))
19028 : 4 : std::swap (_q50, _q51);
19029 : 445 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
19030 : : {
19031 : 4 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
19032 : : {
19033 : 4 : {
19034 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
19035 : 4 : const enum tree_code cmp1 = LT_EXPR;
19036 : 4 : const enum tree_code cmp2 = NE_EXPR;
19037 : 4 : const enum tree_code rcmp = GT_EXPR;
19038 : 4 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19039 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19040 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19041 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19042 : : )
19043 : : {
19044 : 4 : gimple_seq *lseq = seq;
19045 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2082;
19046 : 4 : {
19047 : 4 : res_op->set_op (rcmp, type, 2);
19048 : 4 : res_op->ops[0] = captures[0];
19049 : 4 : res_op->ops[1] = captures[1];
19050 : 4 : res_op->resimplify (lseq, valueize);
19051 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19052 : 4 : return true;
19053 : : }
19054 : 0 : next_after_fail2082:;
19055 : : }
19056 : : }
19057 : : }
19058 : : }
19059 : 673302 : break;
19060 : : }
19061 : 42 : case LT_EXPR:
19062 : 42 : {
19063 : 42 : tree _q50 = gimple_assign_rhs1 (_a2);
19064 : 42 : _q50 = do_valueize (valueize, _q50);
19065 : 42 : tree _q51 = gimple_assign_rhs2 (_a2);
19066 : 42 : _q51 = do_valueize (valueize, _q51);
19067 : 42 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19068 : : {
19069 : 20 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
19070 : : {
19071 : 20 : {
19072 : 20 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19073 : 20 : const enum tree_code cmp1 = LT_EXPR;
19074 : 20 : const enum tree_code cmp2 = GT_EXPR;
19075 : 20 : const enum tree_code rcmp = NE_EXPR;
19076 : 20 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19077 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19078 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19079 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19080 : : )
19081 : : {
19082 : 20 : gimple_seq *lseq = seq;
19083 : 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2083;
19084 : 20 : {
19085 : 20 : res_op->set_op (rcmp, type, 2);
19086 : 20 : res_op->ops[0] = captures[0];
19087 : 20 : res_op->ops[1] = captures[1];
19088 : 20 : res_op->resimplify (lseq, valueize);
19089 : 20 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19090 : 20 : return true;
19091 : : }
19092 : 0 : next_after_fail2083:;
19093 : : }
19094 : : }
19095 : : }
19096 : : }
19097 : : break;
19098 : : }
19099 : : default:;
19100 : : }
19101 : : }
19102 : : break;
19103 : : default:;
19104 : : }
19105 : : break;
19106 : : }
19107 : 1546 : case GE_EXPR:
19108 : 1546 : {
19109 : 1546 : tree _q20 = gimple_assign_rhs1 (_a1);
19110 : 1546 : _q20 = do_valueize (valueize, _q20);
19111 : 1546 : tree _q21 = gimple_assign_rhs2 (_a1);
19112 : 1546 : _q21 = do_valueize (valueize, _q21);
19113 : 1546 : switch (TREE_CODE (_p1))
19114 : : {
19115 : 1546 : case SSA_NAME:
19116 : 1546 : if (gimple *_d2 = get_def (valueize, _p1))
19117 : : {
19118 : 1530 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19119 : 1486 : switch (gimple_assign_rhs_code (_a2))
19120 : : {
19121 : 226 : case GE_EXPR:
19122 : 226 : {
19123 : 226 : tree _q50 = gimple_assign_rhs1 (_a2);
19124 : 226 : _q50 = do_valueize (valueize, _q50);
19125 : 226 : tree _q51 = gimple_assign_rhs2 (_a2);
19126 : 226 : _q51 = do_valueize (valueize, _q51);
19127 : 226 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
19128 : : {
19129 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
19130 : : {
19131 : 0 : {
19132 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
19133 : 0 : const enum tree_code cmp1 = LE_EXPR;
19134 : 0 : const enum tree_code cmp2 = GE_EXPR;
19135 : 0 : const enum tree_code rcmp = NE_EXPR;
19136 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19137 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19138 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19139 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19140 : : )
19141 : : {
19142 : 0 : gimple_seq *lseq = seq;
19143 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2084;
19144 : 0 : {
19145 : 0 : res_op->set_op (rcmp, type, 2);
19146 : 0 : res_op->ops[0] = captures[0];
19147 : 0 : res_op->ops[1] = captures[1];
19148 : 0 : res_op->resimplify (lseq, valueize);
19149 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19150 : 0 : return true;
19151 : : }
19152 : 0 : next_after_fail2084:;
19153 : : }
19154 : : }
19155 : 0 : {
19156 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19157 : 0 : const enum tree_code cmp1 = LE_EXPR;
19158 : 0 : const enum tree_code cmp2 = GE_EXPR;
19159 : 0 : const enum tree_code rcmp = NE_EXPR;
19160 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19161 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19162 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19163 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19164 : : )
19165 : : {
19166 : 0 : gimple_seq *lseq = seq;
19167 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2085;
19168 : 0 : {
19169 : 0 : res_op->set_op (rcmp, type, 2);
19170 : 0 : res_op->ops[0] = captures[0];
19171 : 0 : res_op->ops[1] = captures[1];
19172 : 0 : res_op->resimplify (lseq, valueize);
19173 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19174 : 0 : return true;
19175 : : }
19176 : 0 : next_after_fail2085:;
19177 : : }
19178 : : }
19179 : : }
19180 : : }
19181 : : break;
19182 : : }
19183 : 323 : case EQ_EXPR:
19184 : 323 : {
19185 : 323 : tree _q50 = gimple_assign_rhs1 (_a2);
19186 : 323 : _q50 = do_valueize (valueize, _q50);
19187 : 323 : tree _q51 = gimple_assign_rhs2 (_a2);
19188 : 323 : _q51 = do_valueize (valueize, _q51);
19189 : 323 : if (tree_swap_operands_p (_q50, _q51))
19190 : 26 : std::swap (_q50, _q51);
19191 : 323 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
19192 : : {
19193 : 26 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
19194 : : {
19195 : 26 : {
19196 : 26 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
19197 : 26 : const enum tree_code cmp1 = LE_EXPR;
19198 : 26 : const enum tree_code cmp2 = EQ_EXPR;
19199 : 26 : const enum tree_code rcmp = LT_EXPR;
19200 : 26 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19201 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19202 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19203 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19204 : : )
19205 : : {
19206 : 26 : gimple_seq *lseq = seq;
19207 : 26 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2086;
19208 : 26 : {
19209 : 26 : res_op->set_op (rcmp, type, 2);
19210 : 26 : res_op->ops[0] = captures[0];
19211 : 26 : res_op->ops[1] = captures[1];
19212 : 26 : res_op->resimplify (lseq, valueize);
19213 : 26 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19214 : 26 : return true;
19215 : : }
19216 : 0 : next_after_fail2086:;
19217 : : }
19218 : : }
19219 : : }
19220 : : }
19221 : 673302 : break;
19222 : : }
19223 : 427 : case NE_EXPR:
19224 : 427 : {
19225 : 427 : tree _q50 = gimple_assign_rhs1 (_a2);
19226 : 427 : _q50 = do_valueize (valueize, _q50);
19227 : 427 : tree _q51 = gimple_assign_rhs2 (_a2);
19228 : 427 : _q51 = do_valueize (valueize, _q51);
19229 : 427 : if (tree_swap_operands_p (_q50, _q51))
19230 : 41 : std::swap (_q50, _q51);
19231 : 427 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
19232 : : {
19233 : 26 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
19234 : : {
19235 : 26 : {
19236 : 26 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
19237 : 26 : const enum tree_code cmp1 = LE_EXPR;
19238 : 26 : const enum tree_code cmp2 = NE_EXPR;
19239 : 26 : const enum tree_code rcmp = GE_EXPR;
19240 : 26 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19241 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19242 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19243 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19244 : : )
19245 : : {
19246 : 26 : gimple_seq *lseq = seq;
19247 : 26 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2087;
19248 : 26 : {
19249 : 26 : res_op->set_op (rcmp, type, 2);
19250 : 26 : res_op->ops[0] = captures[0];
19251 : 26 : res_op->ops[1] = captures[1];
19252 : 26 : res_op->resimplify (lseq, valueize);
19253 : 26 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19254 : 26 : return true;
19255 : : }
19256 : 0 : next_after_fail2087:;
19257 : : }
19258 : : }
19259 : : }
19260 : : }
19261 : 673302 : break;
19262 : : }
19263 : 14 : case LE_EXPR:
19264 : 14 : {
19265 : 14 : tree _q50 = gimple_assign_rhs1 (_a2);
19266 : 14 : _q50 = do_valueize (valueize, _q50);
19267 : 14 : tree _q51 = gimple_assign_rhs2 (_a2);
19268 : 14 : _q51 = do_valueize (valueize, _q51);
19269 : 14 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19270 : : {
19271 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
19272 : : {
19273 : 14 : {
19274 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19275 : 14 : const enum tree_code cmp1 = LE_EXPR;
19276 : 14 : const enum tree_code cmp2 = GE_EXPR;
19277 : 14 : const enum tree_code rcmp = NE_EXPR;
19278 : 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19279 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19280 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19281 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19282 : : )
19283 : : {
19284 : 14 : gimple_seq *lseq = seq;
19285 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2088;
19286 : 14 : {
19287 : 14 : res_op->set_op (rcmp, type, 2);
19288 : 14 : res_op->ops[0] = captures[0];
19289 : 14 : res_op->ops[1] = captures[1];
19290 : 14 : res_op->resimplify (lseq, valueize);
19291 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19292 : 14 : return true;
19293 : : }
19294 : 0 : next_after_fail2088:;
19295 : : }
19296 : : }
19297 : : }
19298 : : }
19299 : : break;
19300 : : }
19301 : : default:;
19302 : : }
19303 : : }
19304 : : break;
19305 : : default:;
19306 : : }
19307 : : break;
19308 : : }
19309 : 1012 : case EQ_EXPR:
19310 : 1012 : {
19311 : 1012 : tree _q20 = gimple_assign_rhs1 (_a1);
19312 : 1012 : _q20 = do_valueize (valueize, _q20);
19313 : 1012 : tree _q21 = gimple_assign_rhs2 (_a1);
19314 : 1012 : _q21 = do_valueize (valueize, _q21);
19315 : 1012 : if (tree_swap_operands_p (_q20, _q21))
19316 : 22 : std::swap (_q20, _q21);
19317 : 1012 : switch (TREE_CODE (_p1))
19318 : : {
19319 : 1012 : case SSA_NAME:
19320 : 1012 : if (gimple *_d2 = get_def (valueize, _p1))
19321 : : {
19322 : 1007 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19323 : 990 : switch (gimple_assign_rhs_code (_a2))
19324 : : {
19325 : 5 : case LT_EXPR:
19326 : 5 : {
19327 : 5 : tree _q50 = gimple_assign_rhs1 (_a2);
19328 : 5 : _q50 = do_valueize (valueize, _q50);
19329 : 5 : tree _q51 = gimple_assign_rhs2 (_a2);
19330 : 5 : _q51 = do_valueize (valueize, _q51);
19331 : 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19332 : : {
19333 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
19334 : : {
19335 : 0 : {
19336 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19337 : 0 : const enum tree_code cmp1 = LT_EXPR;
19338 : 0 : const enum tree_code cmp2 = EQ_EXPR;
19339 : 0 : const enum tree_code rcmp = LE_EXPR;
19340 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19341 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19342 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19343 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19344 : : )
19345 : : {
19346 : 0 : gimple_seq *lseq = seq;
19347 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2089;
19348 : 0 : {
19349 : 0 : res_op->set_op (rcmp, type, 2);
19350 : 0 : res_op->ops[0] = captures[0];
19351 : 0 : res_op->ops[1] = captures[1];
19352 : 0 : res_op->resimplify (lseq, valueize);
19353 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19354 : 0 : return true;
19355 : : }
19356 : 0 : next_after_fail2089:;
19357 : : }
19358 : : }
19359 : : }
19360 : : }
19361 : : break;
19362 : : }
19363 : 0 : case LE_EXPR:
19364 : 0 : {
19365 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
19366 : 0 : _q50 = do_valueize (valueize, _q50);
19367 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
19368 : 0 : _q51 = do_valueize (valueize, _q51);
19369 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19370 : : {
19371 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
19372 : : {
19373 : 0 : {
19374 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19375 : 0 : const enum tree_code cmp1 = LE_EXPR;
19376 : 0 : const enum tree_code cmp2 = EQ_EXPR;
19377 : 0 : const enum tree_code rcmp = LT_EXPR;
19378 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19379 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19380 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19381 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19382 : : )
19383 : : {
19384 : 0 : gimple_seq *lseq = seq;
19385 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2090;
19386 : 0 : {
19387 : 0 : res_op->set_op (rcmp, type, 2);
19388 : 0 : res_op->ops[0] = captures[0];
19389 : 0 : res_op->ops[1] = captures[1];
19390 : 0 : res_op->resimplify (lseq, valueize);
19391 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19392 : 0 : return true;
19393 : : }
19394 : 0 : next_after_fail2090:;
19395 : : }
19396 : : }
19397 : : }
19398 : : }
19399 : : break;
19400 : : }
19401 : 105 : case GT_EXPR:
19402 : 105 : {
19403 : 105 : tree _q50 = gimple_assign_rhs1 (_a2);
19404 : 105 : _q50 = do_valueize (valueize, _q50);
19405 : 105 : tree _q51 = gimple_assign_rhs2 (_a2);
19406 : 105 : _q51 = do_valueize (valueize, _q51);
19407 : 105 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
19408 : : {
19409 : 22 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
19410 : : {
19411 : 22 : {
19412 : 22 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19413 : 22 : const enum tree_code cmp1 = LT_EXPR;
19414 : 22 : const enum tree_code cmp2 = EQ_EXPR;
19415 : 22 : const enum tree_code rcmp = LE_EXPR;
19416 : 22 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19417 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19418 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19419 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19420 : : )
19421 : : {
19422 : 22 : gimple_seq *lseq = seq;
19423 : 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2091;
19424 : 22 : {
19425 : 22 : res_op->set_op (rcmp, type, 2);
19426 : 22 : res_op->ops[0] = captures[0];
19427 : 22 : res_op->ops[1] = captures[1];
19428 : 22 : res_op->resimplify (lseq, valueize);
19429 : 22 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19430 : 22 : return true;
19431 : : }
19432 : 0 : next_after_fail2091:;
19433 : : }
19434 : : }
19435 : : }
19436 : : }
19437 : : break;
19438 : : }
19439 : 59 : case GE_EXPR:
19440 : 59 : {
19441 : 59 : tree _q50 = gimple_assign_rhs1 (_a2);
19442 : 59 : _q50 = do_valueize (valueize, _q50);
19443 : 59 : tree _q51 = gimple_assign_rhs2 (_a2);
19444 : 59 : _q51 = do_valueize (valueize, _q51);
19445 : 59 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
19446 : : {
19447 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
19448 : : {
19449 : 0 : {
19450 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19451 : 0 : const enum tree_code cmp1 = LE_EXPR;
19452 : 0 : const enum tree_code cmp2 = EQ_EXPR;
19453 : 0 : const enum tree_code rcmp = LT_EXPR;
19454 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19455 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19456 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19457 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19458 : : )
19459 : : {
19460 : 0 : gimple_seq *lseq = seq;
19461 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2092;
19462 : 0 : {
19463 : 0 : res_op->set_op (rcmp, type, 2);
19464 : 0 : res_op->ops[0] = captures[0];
19465 : 0 : res_op->ops[1] = captures[1];
19466 : 0 : res_op->resimplify (lseq, valueize);
19467 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19468 : 0 : return true;
19469 : : }
19470 : 0 : next_after_fail2092:;
19471 : : }
19472 : : }
19473 : : }
19474 : : }
19475 : : break;
19476 : : }
19477 : : default:;
19478 : : }
19479 : : }
19480 : : break;
19481 : : default:;
19482 : : }
19483 : 673302 : break;
19484 : : }
19485 : 2096 : case NE_EXPR:
19486 : 2096 : {
19487 : 2096 : tree _q20 = gimple_assign_rhs1 (_a1);
19488 : 2096 : _q20 = do_valueize (valueize, _q20);
19489 : 2096 : tree _q21 = gimple_assign_rhs2 (_a1);
19490 : 2096 : _q21 = do_valueize (valueize, _q21);
19491 : 2096 : if (tree_swap_operands_p (_q20, _q21))
19492 : 36 : std::swap (_q20, _q21);
19493 : 2096 : switch (TREE_CODE (_p1))
19494 : : {
19495 : 2094 : case SSA_NAME:
19496 : 2094 : if (gimple *_d2 = get_def (valueize, _p1))
19497 : : {
19498 : 2034 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19499 : 1462 : switch (gimple_assign_rhs_code (_a2))
19500 : : {
19501 : 0 : case LT_EXPR:
19502 : 0 : {
19503 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
19504 : 0 : _q50 = do_valueize (valueize, _q50);
19505 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
19506 : 0 : _q51 = do_valueize (valueize, _q51);
19507 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19508 : : {
19509 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
19510 : : {
19511 : 0 : {
19512 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19513 : 0 : const enum tree_code cmp1 = LT_EXPR;
19514 : 0 : const enum tree_code cmp2 = NE_EXPR;
19515 : 0 : const enum tree_code rcmp = GT_EXPR;
19516 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19517 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19518 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19519 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19520 : : )
19521 : : {
19522 : 0 : gimple_seq *lseq = seq;
19523 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2093;
19524 : 0 : {
19525 : 0 : res_op->set_op (rcmp, type, 2);
19526 : 0 : res_op->ops[0] = captures[0];
19527 : 0 : res_op->ops[1] = captures[1];
19528 : 0 : res_op->resimplify (lseq, valueize);
19529 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19530 : 0 : return true;
19531 : : }
19532 : 0 : next_after_fail2093:;
19533 : : }
19534 : : }
19535 : : }
19536 : : }
19537 : : break;
19538 : : }
19539 : 111 : case LE_EXPR:
19540 : 111 : {
19541 : 111 : tree _q50 = gimple_assign_rhs1 (_a2);
19542 : 111 : _q50 = do_valueize (valueize, _q50);
19543 : 111 : tree _q51 = gimple_assign_rhs2 (_a2);
19544 : 111 : _q51 = do_valueize (valueize, _q51);
19545 : 111 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19546 : : {
19547 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
19548 : : {
19549 : 0 : {
19550 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19551 : 0 : const enum tree_code cmp1 = LE_EXPR;
19552 : 0 : const enum tree_code cmp2 = NE_EXPR;
19553 : 0 : const enum tree_code rcmp = GE_EXPR;
19554 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19555 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19556 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19557 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19558 : : )
19559 : : {
19560 : 0 : gimple_seq *lseq = seq;
19561 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2094;
19562 : 0 : {
19563 : 0 : res_op->set_op (rcmp, type, 2);
19564 : 0 : res_op->ops[0] = captures[0];
19565 : 0 : res_op->ops[1] = captures[1];
19566 : 0 : res_op->resimplify (lseq, valueize);
19567 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19568 : 0 : return true;
19569 : : }
19570 : 0 : next_after_fail2094:;
19571 : : }
19572 : : }
19573 : : }
19574 : : }
19575 : : break;
19576 : : }
19577 : 198 : case GT_EXPR:
19578 : 198 : {
19579 : 198 : tree _q50 = gimple_assign_rhs1 (_a2);
19580 : 198 : _q50 = do_valueize (valueize, _q50);
19581 : 198 : tree _q51 = gimple_assign_rhs2 (_a2);
19582 : 198 : _q51 = do_valueize (valueize, _q51);
19583 : 198 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
19584 : : {
19585 : 22 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
19586 : : {
19587 : 22 : {
19588 : 22 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19589 : 22 : const enum tree_code cmp1 = LT_EXPR;
19590 : 22 : const enum tree_code cmp2 = NE_EXPR;
19591 : 22 : const enum tree_code rcmp = GT_EXPR;
19592 : 22 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19593 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19594 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19595 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19596 : : )
19597 : : {
19598 : 22 : gimple_seq *lseq = seq;
19599 : 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2095;
19600 : 22 : {
19601 : 22 : res_op->set_op (rcmp, type, 2);
19602 : 22 : res_op->ops[0] = captures[0];
19603 : 22 : res_op->ops[1] = captures[1];
19604 : 22 : res_op->resimplify (lseq, valueize);
19605 : 22 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19606 : 22 : return true;
19607 : : }
19608 : 0 : next_after_fail2095:;
19609 : : }
19610 : : }
19611 : : }
19612 : : }
19613 : : break;
19614 : : }
19615 : 10 : case GE_EXPR:
19616 : 10 : {
19617 : 10 : tree _q50 = gimple_assign_rhs1 (_a2);
19618 : 10 : _q50 = do_valueize (valueize, _q50);
19619 : 10 : tree _q51 = gimple_assign_rhs2 (_a2);
19620 : 10 : _q51 = do_valueize (valueize, _q51);
19621 : 10 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
19622 : : {
19623 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
19624 : : {
19625 : 0 : {
19626 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19627 : 0 : const enum tree_code cmp1 = LE_EXPR;
19628 : 0 : const enum tree_code cmp2 = NE_EXPR;
19629 : 0 : const enum tree_code rcmp = GE_EXPR;
19630 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
19631 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
19632 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
19633 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
19634 : : )
19635 : : {
19636 : 0 : gimple_seq *lseq = seq;
19637 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2096;
19638 : 0 : {
19639 : 0 : res_op->set_op (rcmp, type, 2);
19640 : 0 : res_op->ops[0] = captures[0];
19641 : 0 : res_op->ops[1] = captures[1];
19642 : 0 : res_op->resimplify (lseq, valueize);
19643 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19644 : 0 : return true;
19645 : : }
19646 : 0 : next_after_fail2096:;
19647 : : }
19648 : : }
19649 : : }
19650 : : }
19651 : : break;
19652 : : }
19653 : : default:;
19654 : : }
19655 : : }
19656 : : break;
19657 : : default:;
19658 : : }
19659 : 673302 : break;
19660 : : }
19661 : 6952 : case MULT_EXPR:
19662 : 6952 : {
19663 : 6952 : tree _q20 = gimple_assign_rhs1 (_a1);
19664 : 6952 : _q20 = do_valueize (valueize, _q20);
19665 : 6952 : tree _q21 = gimple_assign_rhs2 (_a1);
19666 : 6952 : _q21 = do_valueize (valueize, _q21);
19667 : 6952 : if (tree_swap_operands_p (_q20, _q21))
19668 : 58 : std::swap (_q20, _q21);
19669 : 6952 : switch (TREE_CODE (_q21))
19670 : : {
19671 : 6066 : case INTEGER_CST:
19672 : 6066 : {
19673 : 6066 : switch (TREE_CODE (_p1))
19674 : : {
19675 : 5640 : case SSA_NAME:
19676 : 5640 : if (gimple *_d2 = get_def (valueize, _p1))
19677 : : {
19678 : 5223 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19679 : 3861 : switch (gimple_assign_rhs_code (_a2))
19680 : : {
19681 : 331 : case MULT_EXPR:
19682 : 331 : {
19683 : 331 : tree _q50 = gimple_assign_rhs1 (_a2);
19684 : 331 : _q50 = do_valueize (valueize, _q50);
19685 : 331 : tree _q51 = gimple_assign_rhs2 (_a2);
19686 : 331 : _q51 = do_valueize (valueize, _q51);
19687 : 331 : if (tree_swap_operands_p (_q50, _q51))
19688 : 0 : std::swap (_q50, _q51);
19689 : 331 : switch (TREE_CODE (_q51))
19690 : : {
19691 : 331 : case INTEGER_CST:
19692 : 331 : {
19693 : 331 : {
19694 : 331 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1, _p1, _q50, _q51 };
19695 : 331 : if (gimple_simplify_43 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
19696 : 5 : return true;
19697 : : }
19698 : 326 : break;
19699 : : }
19700 : : default:;
19701 : : }
19702 : 6061 : break;
19703 : : }
19704 : 65 : case LSHIFT_EXPR:
19705 : 65 : {
19706 : 65 : tree _q50 = gimple_assign_rhs1 (_a2);
19707 : 65 : _q50 = do_valueize (valueize, _q50);
19708 : 65 : tree _q51 = gimple_assign_rhs2 (_a2);
19709 : 65 : _q51 = do_valueize (valueize, _q51);
19710 : 65 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19711 : : {
19712 : 0 : switch (TREE_CODE (_q51))
19713 : : {
19714 : 0 : case INTEGER_CST:
19715 : 0 : {
19716 : 0 : {
19717 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1, _q51 };
19718 : 0 : if (gimple_simplify_44 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
19719 : 0 : return true;
19720 : : }
19721 : 0 : break;
19722 : : }
19723 : : default:;
19724 : : }
19725 : : }
19726 : : break;
19727 : : }
19728 : : default:;
19729 : : }
19730 : : }
19731 : : break;
19732 : 6061 : default:;
19733 : : }
19734 : 6061 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19735 : : {
19736 : 87 : {
19737 : 87 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
19738 : 87 : if (gimple_simplify_45 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
19739 : 12 : return true;
19740 : : }
19741 : : }
19742 : : break;
19743 : : }
19744 : 6935 : default:;
19745 : : }
19746 : 6935 : switch (TREE_CODE (_q20))
19747 : : {
19748 : 6935 : case SSA_NAME:
19749 : 6935 : if (gimple *_d2 = get_def (valueize, _q20))
19750 : : {
19751 : 6474 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19752 : 4691 : switch (gimple_assign_rhs_code (_a2))
19753 : : {
19754 : 2111 : case BIT_XOR_EXPR:
19755 : 2111 : {
19756 : 2111 : tree _q30 = gimple_assign_rhs1 (_a2);
19757 : 2111 : _q30 = do_valueize (valueize, _q30);
19758 : 2111 : tree _q31 = gimple_assign_rhs2 (_a2);
19759 : 2111 : _q31 = do_valueize (valueize, _q31);
19760 : 2111 : if (tree_swap_operands_p (_q30, _q31))
19761 : 167 : std::swap (_q30, _q31);
19762 : 2111 : if (gimple_zero_one_valued_p (_q21, valueize))
19763 : : {
19764 : 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
19765 : : {
19766 : 0 : {
19767 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
19768 : 0 : if (gimple_simplify_46 (res_op, seq, valueize, type, captures))
19769 : 0 : return true;
19770 : : }
19771 : : }
19772 : 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
19773 : : {
19774 : 0 : {
19775 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q21 };
19776 : 0 : if (gimple_simplify_46 (res_op, seq, valueize, type, captures))
19777 : 0 : return true;
19778 : : }
19779 : : }
19780 : : }
19781 : 6935 : break;
19782 : : }
19783 : : default:;
19784 : : }
19785 : : }
19786 : : break;
19787 : 6935 : default:;
19788 : : }
19789 : 6935 : if (gimple_zero_one_valued_p (_q20, valueize))
19790 : : {
19791 : 884 : switch (TREE_CODE (_q21))
19792 : : {
19793 : 111 : case SSA_NAME:
19794 : 111 : if (gimple *_d2 = get_def (valueize, _q21))
19795 : : {
19796 : 105 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19797 : 41 : switch (gimple_assign_rhs_code (_a2))
19798 : : {
19799 : 22 : case BIT_XOR_EXPR:
19800 : 22 : {
19801 : 22 : tree _q40 = gimple_assign_rhs1 (_a2);
19802 : 22 : _q40 = do_valueize (valueize, _q40);
19803 : 22 : tree _q41 = gimple_assign_rhs2 (_a2);
19804 : 22 : _q41 = do_valueize (valueize, _q41);
19805 : 22 : if (tree_swap_operands_p (_q40, _q41))
19806 : 0 : std::swap (_q40, _q41);
19807 : 22 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
19808 : : {
19809 : 6 : {
19810 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q20 };
19811 : 6 : if (gimple_simplify_46 (res_op, seq, valueize, type, captures))
19812 : 6 : return true;
19813 : : }
19814 : : }
19815 : 16 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
19816 : : {
19817 : 0 : {
19818 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q20 };
19819 : 0 : if (gimple_simplify_46 (res_op, seq, valueize, type, captures))
19820 : 0 : return true;
19821 : : }
19822 : : }
19823 : 673302 : break;
19824 : : }
19825 : : default:;
19826 : : }
19827 : : }
19828 : : break;
19829 : : default:;
19830 : : }
19831 : : }
19832 : 673302 : break;
19833 : : }
19834 : 19133 : case LSHIFT_EXPR:
19835 : 19133 : {
19836 : 19133 : tree _q20 = gimple_assign_rhs1 (_a1);
19837 : 19133 : _q20 = do_valueize (valueize, _q20);
19838 : 19133 : tree _q21 = gimple_assign_rhs2 (_a1);
19839 : 19133 : _q21 = do_valueize (valueize, _q21);
19840 : 19133 : switch (TREE_CODE (_q21))
19841 : : {
19842 : 16024 : case INTEGER_CST:
19843 : 16024 : {
19844 : 16024 : switch (TREE_CODE (_p1))
19845 : : {
19846 : 9210 : case SSA_NAME:
19847 : 9210 : if (gimple *_d2 = get_def (valueize, _p1))
19848 : : {
19849 : 8896 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19850 : 8409 : switch (gimple_assign_rhs_code (_a2))
19851 : : {
19852 : 17 : case MULT_EXPR:
19853 : 17 : {
19854 : 17 : tree _q50 = gimple_assign_rhs1 (_a2);
19855 : 17 : _q50 = do_valueize (valueize, _q50);
19856 : 17 : tree _q51 = gimple_assign_rhs2 (_a2);
19857 : 17 : _q51 = do_valueize (valueize, _q51);
19858 : 17 : if (tree_swap_operands_p (_q50, _q51))
19859 : 0 : std::swap (_q50, _q51);
19860 : 17 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19861 : : {
19862 : 0 : switch (TREE_CODE (_q51))
19863 : : {
19864 : 0 : case INTEGER_CST:
19865 : 0 : {
19866 : 0 : {
19867 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q51, _p0, _q21 };
19868 : 0 : if (gimple_simplify_44 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
19869 : 0 : return true;
19870 : : }
19871 : 0 : break;
19872 : : }
19873 : : default:;
19874 : : }
19875 : : }
19876 : 16024 : break;
19877 : : }
19878 : : default:;
19879 : : }
19880 : : }
19881 : : break;
19882 : 16024 : default:;
19883 : : }
19884 : 16024 : {
19885 : 16024 : tree _p1_pops[1];
19886 : 16024 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
19887 : : {
19888 : 152 : tree _q50 = _p1_pops[0];
19889 : 152 : switch (TREE_CODE (_q50))
19890 : : {
19891 : 152 : case SSA_NAME:
19892 : 152 : if (gimple *_d2 = get_def (valueize, _q50))
19893 : : {
19894 : 152 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19895 : 140 : switch (gimple_assign_rhs_code (_a2))
19896 : : {
19897 : 0 : case MULT_EXPR:
19898 : 0 : {
19899 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
19900 : 0 : _q60 = do_valueize (valueize, _q60);
19901 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
19902 : 0 : _q61 = do_valueize (valueize, _q61);
19903 : 0 : if (tree_swap_operands_p (_q60, _q61))
19904 : 0 : std::swap (_q60, _q61);
19905 : 0 : {
19906 : 0 : tree _q60_pops[1];
19907 : 0 : if (gimple_nop_convert (_q60, _q60_pops, valueize))
19908 : : {
19909 : 0 : tree _q70 = _q60_pops[0];
19910 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
19911 : : {
19912 : 0 : switch (TREE_CODE (_q61))
19913 : : {
19914 : 0 : case INTEGER_CST:
19915 : 0 : {
19916 : 0 : {
19917 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q61, _p0, _q21 };
19918 : 0 : if (gimple_simplify_40 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
19919 : 0 : return true;
19920 : : }
19921 : 0 : break;
19922 : : }
19923 : : default:;
19924 : : }
19925 : : }
19926 : : }
19927 : : }
19928 : 0 : break;
19929 : : }
19930 : : default:;
19931 : : }
19932 : : }
19933 : : break;
19934 : : default:;
19935 : : }
19936 : : }
19937 : : }
19938 : 16024 : break;
19939 : : }
19940 : : default:;
19941 : : }
19942 : : break;
19943 : : }
19944 : : default:;
19945 : : }
19946 : : }
19947 : : break;
19948 : 673302 : default:;
19949 : : }
19950 : 673302 : switch (TREE_CODE (_p1))
19951 : : {
19952 : 538001 : case SSA_NAME:
19953 : 538001 : if (gimple *_d1 = get_def (valueize, _p1))
19954 : : {
19955 : 440346 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19956 : 491991 : switch (gimple_assign_rhs_code (_a1))
19957 : : {
19958 : 7411 : case MULT_EXPR:
19959 : 7411 : {
19960 : 7411 : tree _q30 = gimple_assign_rhs1 (_a1);
19961 : 7411 : _q30 = do_valueize (valueize, _q30);
19962 : 7411 : tree _q31 = gimple_assign_rhs2 (_a1);
19963 : 7411 : _q31 = do_valueize (valueize, _q31);
19964 : 7411 : if (tree_swap_operands_p (_q30, _q31))
19965 : 105 : std::swap (_q30, _q31);
19966 : 7411 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
19967 : : {
19968 : 132 : switch (TREE_CODE (_q31))
19969 : : {
19970 : 132 : case INTEGER_CST:
19971 : 132 : {
19972 : 132 : {
19973 : 132 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
19974 : 132 : if (gimple_simplify_45 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
19975 : 0 : return true;
19976 : : }
19977 : 132 : break;
19978 : : }
19979 : : default:;
19980 : : }
19981 : : }
19982 : 673302 : break;
19983 : : }
19984 : : default:;
19985 : : }
19986 : : }
19987 : : break;
19988 : 673302 : default:;
19989 : : }
19990 : 673302 : {
19991 : 673302 : tree _p1_pops[1];
19992 : 673302 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
19993 : : {
19994 : 7396 : tree _q30 = _p1_pops[0];
19995 : 7396 : switch (TREE_CODE (_q30))
19996 : : {
19997 : 7378 : case SSA_NAME:
19998 : 7378 : if (gimple *_d1 = get_def (valueize, _q30))
19999 : : {
20000 : 6973 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20001 : 5341 : switch (gimple_assign_rhs_code (_a1))
20002 : : {
20003 : 122 : case MULT_EXPR:
20004 : 122 : {
20005 : 122 : tree _q40 = gimple_assign_rhs1 (_a1);
20006 : 122 : _q40 = do_valueize (valueize, _q40);
20007 : 122 : tree _q41 = gimple_assign_rhs2 (_a1);
20008 : 122 : _q41 = do_valueize (valueize, _q41);
20009 : 122 : if (tree_swap_operands_p (_q40, _q41))
20010 : 0 : std::swap (_q40, _q41);
20011 : 122 : {
20012 : 122 : tree _q40_pops[1];
20013 : 122 : if (gimple_nop_convert (_q40, _q40_pops, valueize))
20014 : : {
20015 : 44 : tree _q50 = _q40_pops[0];
20016 : 44 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
20017 : : {
20018 : 0 : switch (TREE_CODE (_q41))
20019 : : {
20020 : 0 : case INTEGER_CST:
20021 : 0 : {
20022 : 0 : {
20023 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
20024 : 0 : if (gimple_simplify_41 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
20025 : 0 : return true;
20026 : : }
20027 : 0 : break;
20028 : : }
20029 : : default:;
20030 : : }
20031 : : }
20032 : : }
20033 : : }
20034 : 122 : break;
20035 : : }
20036 : : default:;
20037 : : }
20038 : : }
20039 : : break;
20040 : : default:;
20041 : : }
20042 : : }
20043 : : }
20044 : 673302 : switch (TREE_CODE (_p0))
20045 : : {
20046 : 661559 : case SSA_NAME:
20047 : 661559 : if (gimple *_d1 = get_def (valueize, _p0))
20048 : : {
20049 : 522076 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20050 : 592815 : switch (gimple_assign_rhs_code (_a1))
20051 : : {
20052 : 19133 : case LSHIFT_EXPR:
20053 : 19133 : {
20054 : 19133 : tree _q20 = gimple_assign_rhs1 (_a1);
20055 : 19133 : _q20 = do_valueize (valueize, _q20);
20056 : 19133 : tree _q21 = gimple_assign_rhs2 (_a1);
20057 : 19133 : _q21 = do_valueize (valueize, _q21);
20058 : 19133 : switch (TREE_CODE (_q21))
20059 : : {
20060 : 16024 : case INTEGER_CST:
20061 : 16024 : {
20062 : 16024 : switch (TREE_CODE (_p1))
20063 : : {
20064 : 9210 : case SSA_NAME:
20065 : 9210 : if (gimple *_d2 = get_def (valueize, _p1))
20066 : : {
20067 : 8896 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20068 : 8409 : switch (gimple_assign_rhs_code (_a2))
20069 : : {
20070 : 105 : case LSHIFT_EXPR:
20071 : 105 : {
20072 : 105 : tree _q50 = gimple_assign_rhs1 (_a2);
20073 : 105 : _q50 = do_valueize (valueize, _q50);
20074 : 105 : tree _q51 = gimple_assign_rhs2 (_a2);
20075 : 105 : _q51 = do_valueize (valueize, _q51);
20076 : 105 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20077 : : {
20078 : 3 : switch (TREE_CODE (_q51))
20079 : : {
20080 : 3 : case INTEGER_CST:
20081 : 3 : {
20082 : 3 : {
20083 : 3 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
20084 : 3 : if (gimple_simplify_47 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
20085 : 2 : return true;
20086 : : }
20087 : 1 : break;
20088 : : }
20089 : : default:;
20090 : : }
20091 : : }
20092 : : break;
20093 : : }
20094 : : default:;
20095 : : }
20096 : : }
20097 : : break;
20098 : 16022 : default:;
20099 : : }
20100 : 16022 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20101 : : {
20102 : 102 : {
20103 : 102 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
20104 : 102 : if (gimple_simplify_48 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
20105 : 1 : return true;
20106 : : }
20107 : : }
20108 : : break;
20109 : : }
20110 : : default:;
20111 : : }
20112 : : break;
20113 : : }
20114 : : default:;
20115 : : }
20116 : : }
20117 : : break;
20118 : 673299 : default:;
20119 : : }
20120 : 673299 : switch (TREE_CODE (_p1))
20121 : : {
20122 : 537998 : case SSA_NAME:
20123 : 537998 : if (gimple *_d1 = get_def (valueize, _p1))
20124 : : {
20125 : 440343 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20126 : 491988 : switch (gimple_assign_rhs_code (_a1))
20127 : : {
20128 : 7613 : case LSHIFT_EXPR:
20129 : 7613 : {
20130 : 7613 : tree _q30 = gimple_assign_rhs1 (_a1);
20131 : 7613 : _q30 = do_valueize (valueize, _q30);
20132 : 7613 : tree _q31 = gimple_assign_rhs2 (_a1);
20133 : 7613 : _q31 = do_valueize (valueize, _q31);
20134 : 7613 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
20135 : : {
20136 : 1043 : switch (TREE_CODE (_q31))
20137 : : {
20138 : 1028 : case INTEGER_CST:
20139 : 1028 : {
20140 : 1028 : {
20141 : 1028 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
20142 : 1028 : if (gimple_simplify_48 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
20143 : 0 : return true;
20144 : : }
20145 : 1028 : break;
20146 : : }
20147 : : default:;
20148 : : }
20149 : : }
20150 : : break;
20151 : : }
20152 : : default:;
20153 : : }
20154 : : }
20155 : : break;
20156 : 673299 : default:;
20157 : : }
20158 : 673299 : switch (TREE_CODE (_p0))
20159 : : {
20160 : 661556 : case SSA_NAME:
20161 : 661556 : if (gimple *_d1 = get_def (valueize, _p0))
20162 : : {
20163 : 522073 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20164 : 592812 : switch (gimple_assign_rhs_code (_a1))
20165 : : {
20166 : 42 : case MIN_EXPR:
20167 : 42 : {
20168 : 42 : tree _q20 = gimple_assign_rhs1 (_a1);
20169 : 42 : _q20 = do_valueize (valueize, _q20);
20170 : 42 : tree _q21 = gimple_assign_rhs2 (_a1);
20171 : 42 : _q21 = do_valueize (valueize, _q21);
20172 : 42 : if (tree_swap_operands_p (_q20, _q21))
20173 : 0 : std::swap (_q20, _q21);
20174 : 42 : switch (TREE_CODE (_p1))
20175 : : {
20176 : 0 : case SSA_NAME:
20177 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
20178 : : {
20179 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20180 : 0 : switch (gimple_assign_rhs_code (_a2))
20181 : : {
20182 : 0 : case MAX_EXPR:
20183 : 0 : {
20184 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
20185 : 0 : _q50 = do_valueize (valueize, _q50);
20186 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
20187 : 0 : _q51 = do_valueize (valueize, _q51);
20188 : 0 : if (tree_swap_operands_p (_q50, _q51))
20189 : 0 : std::swap (_q50, _q51);
20190 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20191 : : {
20192 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
20193 : : {
20194 : 0 : {
20195 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
20196 : 0 : if (!HONOR_NANS (captures[0])
20197 : : )
20198 : : {
20199 : 0 : gimple_seq *lseq = seq;
20200 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2097;
20201 : 0 : {
20202 : 0 : res_op->set_op (BIT_XOR_EXPR, type, 2);
20203 : 0 : res_op->ops[0] = captures[0];
20204 : 0 : res_op->ops[1] = captures[1];
20205 : 0 : res_op->resimplify (lseq, valueize);
20206 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
20207 : 0 : return true;
20208 : : }
20209 : 0 : next_after_fail2097:;
20210 : : }
20211 : : }
20212 : : }
20213 : : }
20214 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
20215 : : {
20216 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
20217 : : {
20218 : 0 : {
20219 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
20220 : 0 : if (!HONOR_NANS (captures[0])
20221 : : )
20222 : : {
20223 : 0 : gimple_seq *lseq = seq;
20224 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2098;
20225 : 0 : {
20226 : 0 : res_op->set_op (BIT_XOR_EXPR, type, 2);
20227 : 0 : res_op->ops[0] = captures[0];
20228 : 0 : res_op->ops[1] = captures[1];
20229 : 0 : res_op->resimplify (lseq, valueize);
20230 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
20231 : 0 : return true;
20232 : : }
20233 : 0 : next_after_fail2098:;
20234 : : }
20235 : : }
20236 : : }
20237 : : }
20238 : 673297 : break;
20239 : : }
20240 : : default:;
20241 : : }
20242 : : }
20243 : : break;
20244 : : default:;
20245 : : }
20246 : 673297 : break;
20247 : : }
20248 : 4 : case MAX_EXPR:
20249 : 4 : {
20250 : 4 : tree _q20 = gimple_assign_rhs1 (_a1);
20251 : 4 : _q20 = do_valueize (valueize, _q20);
20252 : 4 : tree _q21 = gimple_assign_rhs2 (_a1);
20253 : 4 : _q21 = do_valueize (valueize, _q21);
20254 : 4 : if (tree_swap_operands_p (_q20, _q21))
20255 : 0 : std::swap (_q20, _q21);
20256 : 4 : switch (TREE_CODE (_p1))
20257 : : {
20258 : 4 : case SSA_NAME:
20259 : 4 : if (gimple *_d2 = get_def (valueize, _p1))
20260 : : {
20261 : 4 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20262 : 4 : switch (gimple_assign_rhs_code (_a2))
20263 : : {
20264 : 2 : case MIN_EXPR:
20265 : 2 : {
20266 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
20267 : 2 : _q50 = do_valueize (valueize, _q50);
20268 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
20269 : 2 : _q51 = do_valueize (valueize, _q51);
20270 : 2 : if (tree_swap_operands_p (_q50, _q51))
20271 : 0 : std::swap (_q50, _q51);
20272 : 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20273 : : {
20274 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
20275 : : {
20276 : 2 : {
20277 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
20278 : 2 : if (!HONOR_NANS (captures[0])
20279 : : )
20280 : : {
20281 : 2 : gimple_seq *lseq = seq;
20282 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2099;
20283 : 2 : {
20284 : 2 : res_op->set_op (BIT_XOR_EXPR, type, 2);
20285 : 2 : res_op->ops[0] = captures[0];
20286 : 2 : res_op->ops[1] = captures[1];
20287 : 2 : res_op->resimplify (lseq, valueize);
20288 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
20289 : 2 : return true;
20290 : : }
20291 : 0 : next_after_fail2099:;
20292 : : }
20293 : : }
20294 : : }
20295 : : }
20296 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
20297 : : {
20298 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
20299 : : {
20300 : 0 : {
20301 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
20302 : 0 : if (!HONOR_NANS (captures[0])
20303 : : )
20304 : : {
20305 : 0 : gimple_seq *lseq = seq;
20306 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2100;
20307 : 0 : {
20308 : 0 : res_op->set_op (BIT_XOR_EXPR, type, 2);
20309 : 0 : res_op->ops[0] = captures[0];
20310 : 0 : res_op->ops[1] = captures[1];
20311 : 0 : res_op->resimplify (lseq, valueize);
20312 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
20313 : 0 : return true;
20314 : : }
20315 : 0 : next_after_fail2100:;
20316 : : }
20317 : : }
20318 : : }
20319 : : }
20320 : 673297 : break;
20321 : : }
20322 : : default:;
20323 : : }
20324 : : }
20325 : : break;
20326 : : default:;
20327 : : }
20328 : 673297 : break;
20329 : : }
20330 : : default:;
20331 : : }
20332 : : }
20333 : : break;
20334 : 673297 : default:;
20335 : : }
20336 : 673297 : switch (TREE_CODE (_p1))
20337 : : {
20338 : 537996 : case SSA_NAME:
20339 : 537996 : if (gimple *_d1 = get_def (valueize, _p1))
20340 : : {
20341 : 440341 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20342 : 491986 : switch (gimple_assign_rhs_code (_a1))
20343 : : {
20344 : 7411 : case MULT_EXPR:
20345 : 7411 : {
20346 : 7411 : tree _q30 = gimple_assign_rhs1 (_a1);
20347 : 7411 : _q30 = do_valueize (valueize, _q30);
20348 : 7411 : tree _q31 = gimple_assign_rhs2 (_a1);
20349 : 7411 : _q31 = do_valueize (valueize, _q31);
20350 : 7411 : if (tree_swap_operands_p (_q30, _q31))
20351 : 105 : std::swap (_q30, _q31);
20352 : 7411 : switch (TREE_CODE (_q30))
20353 : : {
20354 : 7411 : case SSA_NAME:
20355 : 7411 : if (gimple *_d2 = get_def (valueize, _q30))
20356 : : {
20357 : 6726 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20358 : 3701 : switch (gimple_assign_rhs_code (_a2))
20359 : : {
20360 : 1035 : case BIT_XOR_EXPR:
20361 : 1035 : {
20362 : 1035 : tree _q40 = gimple_assign_rhs1 (_a2);
20363 : 1035 : _q40 = do_valueize (valueize, _q40);
20364 : 1035 : tree _q41 = gimple_assign_rhs2 (_a2);
20365 : 1035 : _q41 = do_valueize (valueize, _q41);
20366 : 1035 : if (tree_swap_operands_p (_q40, _q41))
20367 : 110 : std::swap (_q40, _q41);
20368 : 1035 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
20369 : : {
20370 : 0 : if (gimple_zero_one_valued_p (_q31, valueize))
20371 : : {
20372 : 0 : {
20373 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q41, _q31 };
20374 : 0 : if (gimple_simplify_46 (res_op, seq, valueize, type, captures))
20375 : 0 : return true;
20376 : : }
20377 : : }
20378 : : }
20379 : 1035 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
20380 : : {
20381 : 0 : if (gimple_zero_one_valued_p (_q31, valueize))
20382 : : {
20383 : 0 : {
20384 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q31 };
20385 : 0 : if (gimple_simplify_46 (res_op, seq, valueize, type, captures))
20386 : 0 : return true;
20387 : : }
20388 : : }
20389 : : }
20390 : 7411 : break;
20391 : : }
20392 : : default:;
20393 : : }
20394 : : }
20395 : : break;
20396 : 7411 : default:;
20397 : : }
20398 : 7411 : if (gimple_zero_one_valued_p (_q30, valueize))
20399 : : {
20400 : 931 : switch (TREE_CODE (_q31))
20401 : : {
20402 : 174 : case SSA_NAME:
20403 : 174 : if (gimple *_d2 = get_def (valueize, _q31))
20404 : : {
20405 : 167 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20406 : 75 : switch (gimple_assign_rhs_code (_a2))
20407 : : {
20408 : 68 : case BIT_XOR_EXPR:
20409 : 68 : {
20410 : 68 : tree _q50 = gimple_assign_rhs1 (_a2);
20411 : 68 : _q50 = do_valueize (valueize, _q50);
20412 : 68 : tree _q51 = gimple_assign_rhs2 (_a2);
20413 : 68 : _q51 = do_valueize (valueize, _q51);
20414 : 68 : if (tree_swap_operands_p (_q50, _q51))
20415 : 2 : std::swap (_q50, _q51);
20416 : 68 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
20417 : : {
20418 : 18 : {
20419 : 18 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q51, _q30 };
20420 : 18 : if (gimple_simplify_46 (res_op, seq, valueize, type, captures))
20421 : 16 : return true;
20422 : : }
20423 : : }
20424 : 52 : if ((_q51 == _p0 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _p0, 0) && types_match (_q51, _p0)))
20425 : : {
20426 : 50 : {
20427 : 50 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q50, _q30 };
20428 : 50 : if (gimple_simplify_46 (res_op, seq, valueize, type, captures))
20429 : 40 : return true;
20430 : : }
20431 : : }
20432 : 673241 : break;
20433 : : }
20434 : : default:;
20435 : : }
20436 : : }
20437 : : break;
20438 : : default:;
20439 : : }
20440 : : }
20441 : 673241 : break;
20442 : : }
20443 : : default:;
20444 : : }
20445 : : }
20446 : : break;
20447 : 673241 : default:;
20448 : : }
20449 : 673241 : switch (TREE_CODE (_p0))
20450 : : {
20451 : 661498 : case SSA_NAME:
20452 : 661498 : if (gimple *_d1 = get_def (valueize, _p0))
20453 : : {
20454 : 522015 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20455 : 592698 : switch (gimple_assign_rhs_code (_a1))
20456 : : {
20457 : 201 : case VEC_COND_EXPR:
20458 : 201 : {
20459 : 201 : tree _q20 = gimple_assign_rhs1 (_a1);
20460 : 201 : _q20 = do_valueize (valueize, _q20);
20461 : 201 : tree _q21 = gimple_assign_rhs2 (_a1);
20462 : 201 : _q21 = do_valueize (valueize, _q21);
20463 : 201 : tree _q22 = gimple_assign_rhs3 (_a1);
20464 : 201 : _q22 = do_valueize (valueize, _q22);
20465 : 201 : switch (TREE_CODE (_p1))
20466 : : {
20467 : 201 : case SSA_NAME:
20468 : 201 : if (gimple *_d2 = get_def (valueize, _p1))
20469 : : {
20470 : 196 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20471 : 172 : switch (gimple_assign_rhs_code (_a2))
20472 : : {
20473 : 26 : case VEC_COND_EXPR:
20474 : 26 : {
20475 : 26 : tree _q60 = gimple_assign_rhs1 (_a2);
20476 : 26 : _q60 = do_valueize (valueize, _q60);
20477 : 26 : tree _q61 = gimple_assign_rhs2 (_a2);
20478 : 26 : _q61 = do_valueize (valueize, _q61);
20479 : 26 : tree _q62 = gimple_assign_rhs3 (_a2);
20480 : 26 : _q62 = do_valueize (valueize, _q62);
20481 : 26 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20482 : : {
20483 : 0 : {
20484 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
20485 : 0 : if (VECTOR_TYPE_P (type)
20486 : 0 : && (TREE_CODE_CLASS (BIT_XOR_EXPR) != tcc_comparison
20487 : : || types_match (type, TREE_TYPE (captures[2]))
20488 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
20489 : : || (optimize_vectors_before_lowering_p ()
20490 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
20491 : : )
20492 : : {
20493 : 0 : gimple_seq *lseq = seq;
20494 : 0 : if (lseq
20495 : 0 : && (!single_use (captures[0])
20496 : 0 : || !single_use (captures[4])))
20497 : 0 : lseq = NULL;
20498 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2101;
20499 : 0 : {
20500 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20501 : 0 : res_op->ops[0] = captures[1];
20502 : 0 : {
20503 : 0 : tree _o1[2], _r1;
20504 : 0 : _o1[0] = captures[2];
20505 : 0 : _o1[1] = captures[5];
20506 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20507 : 0 : tem_op.resimplify (NULL, valueize);
20508 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20509 : 0 : if (!_r1) goto next_after_fail2101;
20510 : 0 : res_op->ops[1] = _r1;
20511 : : }
20512 : 0 : {
20513 : 0 : tree _o1[2], _r1;
20514 : 0 : _o1[0] = captures[3];
20515 : 0 : _o1[1] = captures[6];
20516 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20517 : 0 : tem_op.resimplify (NULL, valueize);
20518 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20519 : 0 : if (!_r1) goto next_after_fail2101;
20520 : 0 : res_op->ops[2] = _r1;
20521 : : }
20522 : 0 : res_op->resimplify (lseq, valueize);
20523 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
20524 : 0 : return true;
20525 : : }
20526 : 0 : next_after_fail2101:;
20527 : : }
20528 : : }
20529 : : }
20530 : : break;
20531 : : }
20532 : : default:;
20533 : : }
20534 : : }
20535 : : break;
20536 : 201 : default:;
20537 : : }
20538 : 201 : if (integer_minus_onep (_q21))
20539 : : {
20540 : 12 : if (integer_zerop (_q22))
20541 : : {
20542 : 12 : switch (TREE_CODE (_p1))
20543 : : {
20544 : 12 : case SSA_NAME:
20545 : 12 : if (gimple *_d2 = get_def (valueize, _p1))
20546 : : {
20547 : 9 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20548 : 0 : switch (gimple_assign_rhs_code (_a2))
20549 : : {
20550 : 0 : case VEC_COND_EXPR:
20551 : 0 : {
20552 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
20553 : 0 : _q60 = do_valueize (valueize, _q60);
20554 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
20555 : 0 : _q61 = do_valueize (valueize, _q61);
20556 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
20557 : 0 : _q62 = do_valueize (valueize, _q62);
20558 : 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
20559 : : {
20560 : 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
20561 : : {
20562 : 0 : {
20563 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20564 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20565 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20566 : : )
20567 : : {
20568 : 0 : gimple_seq *lseq = seq;
20569 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2102;
20570 : 0 : {
20571 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20572 : 0 : {
20573 : 0 : tree _o1[2], _r1;
20574 : 0 : _o1[0] = captures[0];
20575 : 0 : _o1[1] = captures[3];
20576 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20577 : 0 : tem_op.resimplify (lseq, valueize);
20578 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20579 : 0 : if (!_r1) goto next_after_fail2102;
20580 : 0 : res_op->ops[0] = _r1;
20581 : : }
20582 : 0 : res_op->ops[1] = captures[1];
20583 : 0 : res_op->ops[2] = captures[2];
20584 : 0 : res_op->resimplify (lseq, valueize);
20585 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20586 : 0 : return true;
20587 : : }
20588 : 0 : next_after_fail2102:;
20589 : : }
20590 : : }
20591 : 0 : {
20592 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20593 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20594 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20595 : : )
20596 : : {
20597 : 0 : gimple_seq *lseq = seq;
20598 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2103;
20599 : 0 : {
20600 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20601 : 0 : {
20602 : 0 : tree _o1[2], _r1;
20603 : 0 : _o1[0] = captures[0];
20604 : 0 : _o1[1] = captures[3];
20605 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20606 : 0 : tem_op.resimplify (lseq, valueize);
20607 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20608 : 0 : if (!_r1) goto next_after_fail2103;
20609 : 0 : res_op->ops[0] = _r1;
20610 : : }
20611 : 0 : res_op->ops[1] = captures[1];
20612 : 0 : res_op->ops[2] = captures[2];
20613 : 0 : res_op->resimplify (lseq, valueize);
20614 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20615 : 0 : return true;
20616 : : }
20617 : 0 : next_after_fail2103:;
20618 : : }
20619 : : }
20620 : 0 : {
20621 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20622 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20623 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20624 : : )
20625 : : {
20626 : 0 : gimple_seq *lseq = seq;
20627 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2104;
20628 : 0 : {
20629 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20630 : 0 : {
20631 : 0 : tree _o1[2], _r1;
20632 : 0 : _o1[0] = captures[0];
20633 : 0 : _o1[1] = captures[3];
20634 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20635 : 0 : tem_op.resimplify (lseq, valueize);
20636 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20637 : 0 : if (!_r1) goto next_after_fail2104;
20638 : 0 : res_op->ops[0] = _r1;
20639 : : }
20640 : 0 : res_op->ops[1] = captures[1];
20641 : 0 : res_op->ops[2] = captures[2];
20642 : 0 : res_op->resimplify (lseq, valueize);
20643 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20644 : 0 : return true;
20645 : : }
20646 : 0 : next_after_fail2104:;
20647 : : }
20648 : : }
20649 : 0 : {
20650 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20651 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20652 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20653 : : )
20654 : : {
20655 : 0 : gimple_seq *lseq = seq;
20656 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2105;
20657 : 0 : {
20658 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20659 : 0 : {
20660 : 0 : tree _o1[2], _r1;
20661 : 0 : _o1[0] = captures[0];
20662 : 0 : _o1[1] = captures[3];
20663 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20664 : 0 : tem_op.resimplify (lseq, valueize);
20665 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20666 : 0 : if (!_r1) goto next_after_fail2105;
20667 : 0 : res_op->ops[0] = _r1;
20668 : : }
20669 : 0 : res_op->ops[1] = captures[1];
20670 : 0 : res_op->ops[2] = captures[2];
20671 : 0 : res_op->resimplify (lseq, valueize);
20672 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20673 : 0 : return true;
20674 : : }
20675 : 0 : next_after_fail2105:;
20676 : : }
20677 : : }
20678 : 0 : {
20679 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20680 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20681 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20682 : : )
20683 : : {
20684 : 0 : gimple_seq *lseq = seq;
20685 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2106;
20686 : 0 : {
20687 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20688 : 0 : {
20689 : 0 : tree _o1[2], _r1;
20690 : 0 : _o1[0] = captures[0];
20691 : 0 : _o1[1] = captures[3];
20692 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20693 : 0 : tem_op.resimplify (lseq, valueize);
20694 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20695 : 0 : if (!_r1) goto next_after_fail2106;
20696 : 0 : res_op->ops[0] = _r1;
20697 : : }
20698 : 0 : res_op->ops[1] = captures[1];
20699 : 0 : res_op->ops[2] = captures[2];
20700 : 0 : res_op->resimplify (lseq, valueize);
20701 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20702 : 0 : return true;
20703 : : }
20704 : 0 : next_after_fail2106:;
20705 : : }
20706 : : }
20707 : 0 : {
20708 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20709 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20710 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20711 : : )
20712 : : {
20713 : 0 : gimple_seq *lseq = seq;
20714 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2107;
20715 : 0 : {
20716 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20717 : 0 : {
20718 : 0 : tree _o1[2], _r1;
20719 : 0 : _o1[0] = captures[0];
20720 : 0 : _o1[1] = captures[3];
20721 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20722 : 0 : tem_op.resimplify (lseq, valueize);
20723 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20724 : 0 : if (!_r1) goto next_after_fail2107;
20725 : 0 : res_op->ops[0] = _r1;
20726 : : }
20727 : 0 : res_op->ops[1] = captures[1];
20728 : 0 : res_op->ops[2] = captures[2];
20729 : 0 : res_op->resimplify (lseq, valueize);
20730 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20731 : 0 : return true;
20732 : : }
20733 : 0 : next_after_fail2107:;
20734 : : }
20735 : : }
20736 : 0 : {
20737 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20738 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20739 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20740 : : )
20741 : : {
20742 : 0 : gimple_seq *lseq = seq;
20743 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2108;
20744 : 0 : {
20745 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20746 : 0 : {
20747 : 0 : tree _o1[2], _r1;
20748 : 0 : _o1[0] = captures[0];
20749 : 0 : _o1[1] = captures[3];
20750 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20751 : 0 : tem_op.resimplify (lseq, valueize);
20752 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20753 : 0 : if (!_r1) goto next_after_fail2108;
20754 : 0 : res_op->ops[0] = _r1;
20755 : : }
20756 : 0 : res_op->ops[1] = captures[1];
20757 : 0 : res_op->ops[2] = captures[2];
20758 : 0 : res_op->resimplify (lseq, valueize);
20759 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20760 : 0 : return true;
20761 : : }
20762 : 0 : next_after_fail2108:;
20763 : : }
20764 : : }
20765 : 0 : {
20766 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20767 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20768 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20769 : : )
20770 : : {
20771 : 0 : gimple_seq *lseq = seq;
20772 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2109;
20773 : 0 : {
20774 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20775 : 0 : {
20776 : 0 : tree _o1[2], _r1;
20777 : 0 : _o1[0] = captures[0];
20778 : 0 : _o1[1] = captures[3];
20779 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20780 : 0 : tem_op.resimplify (lseq, valueize);
20781 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20782 : 0 : if (!_r1) goto next_after_fail2109;
20783 : 0 : res_op->ops[0] = _r1;
20784 : : }
20785 : 0 : res_op->ops[1] = captures[1];
20786 : 0 : res_op->ops[2] = captures[2];
20787 : 0 : res_op->resimplify (lseq, valueize);
20788 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20789 : 0 : return true;
20790 : : }
20791 : 0 : next_after_fail2109:;
20792 : : }
20793 : : }
20794 : 0 : {
20795 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20796 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20797 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20798 : : )
20799 : : {
20800 : 0 : gimple_seq *lseq = seq;
20801 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2110;
20802 : 0 : {
20803 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20804 : 0 : {
20805 : 0 : tree _o1[2], _r1;
20806 : 0 : _o1[0] = captures[0];
20807 : 0 : _o1[1] = captures[3];
20808 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20809 : 0 : tem_op.resimplify (lseq, valueize);
20810 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20811 : 0 : if (!_r1) goto next_after_fail2110;
20812 : 0 : res_op->ops[0] = _r1;
20813 : : }
20814 : 0 : res_op->ops[1] = captures[1];
20815 : 0 : res_op->ops[2] = captures[2];
20816 : 0 : res_op->resimplify (lseq, valueize);
20817 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20818 : 0 : return true;
20819 : : }
20820 : 0 : next_after_fail2110:;
20821 : : }
20822 : : }
20823 : 0 : {
20824 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20825 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20826 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20827 : : )
20828 : : {
20829 : 0 : gimple_seq *lseq = seq;
20830 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2111;
20831 : 0 : {
20832 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20833 : 0 : {
20834 : 0 : tree _o1[2], _r1;
20835 : 0 : _o1[0] = captures[0];
20836 : 0 : _o1[1] = captures[3];
20837 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20838 : 0 : tem_op.resimplify (lseq, valueize);
20839 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20840 : 0 : if (!_r1) goto next_after_fail2111;
20841 : 0 : res_op->ops[0] = _r1;
20842 : : }
20843 : 0 : res_op->ops[1] = captures[1];
20844 : 0 : res_op->ops[2] = captures[2];
20845 : 0 : res_op->resimplify (lseq, valueize);
20846 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20847 : 0 : return true;
20848 : : }
20849 : 0 : next_after_fail2111:;
20850 : : }
20851 : : }
20852 : 0 : {
20853 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20854 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20855 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20856 : : )
20857 : : {
20858 : 0 : gimple_seq *lseq = seq;
20859 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2112;
20860 : 0 : {
20861 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20862 : 0 : {
20863 : 0 : tree _o1[2], _r1;
20864 : 0 : _o1[0] = captures[0];
20865 : 0 : _o1[1] = captures[3];
20866 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20867 : 0 : tem_op.resimplify (lseq, valueize);
20868 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20869 : 0 : if (!_r1) goto next_after_fail2112;
20870 : 0 : res_op->ops[0] = _r1;
20871 : : }
20872 : 0 : res_op->ops[1] = captures[1];
20873 : 0 : res_op->ops[2] = captures[2];
20874 : 0 : res_op->resimplify (lseq, valueize);
20875 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20876 : 0 : return true;
20877 : : }
20878 : 0 : next_after_fail2112:;
20879 : : }
20880 : : }
20881 : 0 : {
20882 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20883 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20884 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20885 : : )
20886 : : {
20887 : 0 : gimple_seq *lseq = seq;
20888 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2113;
20889 : 0 : {
20890 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20891 : 0 : {
20892 : 0 : tree _o1[2], _r1;
20893 : 0 : _o1[0] = captures[0];
20894 : 0 : _o1[1] = captures[3];
20895 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20896 : 0 : tem_op.resimplify (lseq, valueize);
20897 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20898 : 0 : if (!_r1) goto next_after_fail2113;
20899 : 0 : res_op->ops[0] = _r1;
20900 : : }
20901 : 0 : res_op->ops[1] = captures[1];
20902 : 0 : res_op->ops[2] = captures[2];
20903 : 0 : res_op->resimplify (lseq, valueize);
20904 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20905 : 0 : return true;
20906 : : }
20907 : 0 : next_after_fail2113:;
20908 : : }
20909 : : }
20910 : 0 : {
20911 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20912 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20913 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20914 : : )
20915 : : {
20916 : 0 : gimple_seq *lseq = seq;
20917 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2114;
20918 : 0 : {
20919 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20920 : 0 : {
20921 : 0 : tree _o1[2], _r1;
20922 : 0 : _o1[0] = captures[0];
20923 : 0 : _o1[1] = captures[3];
20924 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20925 : 0 : tem_op.resimplify (lseq, valueize);
20926 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20927 : 0 : if (!_r1) goto next_after_fail2114;
20928 : 0 : res_op->ops[0] = _r1;
20929 : : }
20930 : 0 : res_op->ops[1] = captures[1];
20931 : 0 : res_op->ops[2] = captures[2];
20932 : 0 : res_op->resimplify (lseq, valueize);
20933 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20934 : 0 : return true;
20935 : : }
20936 : 0 : next_after_fail2114:;
20937 : : }
20938 : : }
20939 : 0 : {
20940 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20941 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20942 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20943 : : )
20944 : : {
20945 : 0 : gimple_seq *lseq = seq;
20946 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2115;
20947 : 0 : {
20948 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20949 : 0 : {
20950 : 0 : tree _o1[2], _r1;
20951 : 0 : _o1[0] = captures[0];
20952 : 0 : _o1[1] = captures[3];
20953 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20954 : 0 : tem_op.resimplify (lseq, valueize);
20955 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20956 : 0 : if (!_r1) goto next_after_fail2115;
20957 : 0 : res_op->ops[0] = _r1;
20958 : : }
20959 : 0 : res_op->ops[1] = captures[1];
20960 : 0 : res_op->ops[2] = captures[2];
20961 : 0 : res_op->resimplify (lseq, valueize);
20962 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20963 : 0 : return true;
20964 : : }
20965 : 0 : next_after_fail2115:;
20966 : : }
20967 : : }
20968 : 0 : {
20969 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20970 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
20971 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
20972 : : )
20973 : : {
20974 : 0 : gimple_seq *lseq = seq;
20975 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2116;
20976 : 0 : {
20977 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20978 : 0 : {
20979 : 0 : tree _o1[2], _r1;
20980 : 0 : _o1[0] = captures[0];
20981 : 0 : _o1[1] = captures[3];
20982 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20983 : 0 : tem_op.resimplify (lseq, valueize);
20984 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20985 : 0 : if (!_r1) goto next_after_fail2116;
20986 : 0 : res_op->ops[0] = _r1;
20987 : : }
20988 : 0 : res_op->ops[1] = captures[1];
20989 : 0 : res_op->ops[2] = captures[2];
20990 : 0 : res_op->resimplify (lseq, valueize);
20991 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20992 : 0 : return true;
20993 : : }
20994 : 0 : next_after_fail2116:;
20995 : : }
20996 : : }
20997 : 0 : {
20998 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
20999 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21000 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21001 : : )
21002 : : {
21003 : 0 : gimple_seq *lseq = seq;
21004 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2117;
21005 : 0 : {
21006 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21007 : 0 : {
21008 : 0 : tree _o1[2], _r1;
21009 : 0 : _o1[0] = captures[0];
21010 : 0 : _o1[1] = captures[3];
21011 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21012 : 0 : tem_op.resimplify (lseq, valueize);
21013 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21014 : 0 : if (!_r1) goto next_after_fail2117;
21015 : 0 : res_op->ops[0] = _r1;
21016 : : }
21017 : 0 : res_op->ops[1] = captures[1];
21018 : 0 : res_op->ops[2] = captures[2];
21019 : 0 : res_op->resimplify (lseq, valueize);
21020 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21021 : 0 : return true;
21022 : : }
21023 : 0 : next_after_fail2117:;
21024 : : }
21025 : : }
21026 : 0 : {
21027 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21028 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21029 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21030 : : )
21031 : : {
21032 : 0 : gimple_seq *lseq = seq;
21033 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2118;
21034 : 0 : {
21035 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21036 : 0 : {
21037 : 0 : tree _o1[2], _r1;
21038 : 0 : _o1[0] = captures[0];
21039 : 0 : _o1[1] = captures[3];
21040 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21041 : 0 : tem_op.resimplify (lseq, valueize);
21042 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21043 : 0 : if (!_r1) goto next_after_fail2118;
21044 : 0 : res_op->ops[0] = _r1;
21045 : : }
21046 : 0 : res_op->ops[1] = captures[1];
21047 : 0 : res_op->ops[2] = captures[2];
21048 : 0 : res_op->resimplify (lseq, valueize);
21049 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21050 : 0 : return true;
21051 : : }
21052 : 0 : next_after_fail2118:;
21053 : : }
21054 : : }
21055 : 0 : {
21056 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21057 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21058 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21059 : : )
21060 : : {
21061 : 0 : gimple_seq *lseq = seq;
21062 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2119;
21063 : 0 : {
21064 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21065 : 0 : {
21066 : 0 : tree _o1[2], _r1;
21067 : 0 : _o1[0] = captures[0];
21068 : 0 : _o1[1] = captures[3];
21069 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21070 : 0 : tem_op.resimplify (lseq, valueize);
21071 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21072 : 0 : if (!_r1) goto next_after_fail2119;
21073 : 0 : res_op->ops[0] = _r1;
21074 : : }
21075 : 0 : res_op->ops[1] = captures[1];
21076 : 0 : res_op->ops[2] = captures[2];
21077 : 0 : res_op->resimplify (lseq, valueize);
21078 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21079 : 0 : return true;
21080 : : }
21081 : 0 : next_after_fail2119:;
21082 : : }
21083 : : }
21084 : 0 : {
21085 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21086 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21087 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21088 : : )
21089 : : {
21090 : 0 : gimple_seq *lseq = seq;
21091 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2120;
21092 : 0 : {
21093 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21094 : 0 : {
21095 : 0 : tree _o1[2], _r1;
21096 : 0 : _o1[0] = captures[0];
21097 : 0 : _o1[1] = captures[3];
21098 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21099 : 0 : tem_op.resimplify (lseq, valueize);
21100 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21101 : 0 : if (!_r1) goto next_after_fail2120;
21102 : 0 : res_op->ops[0] = _r1;
21103 : : }
21104 : 0 : res_op->ops[1] = captures[1];
21105 : 0 : res_op->ops[2] = captures[2];
21106 : 0 : res_op->resimplify (lseq, valueize);
21107 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21108 : 0 : return true;
21109 : : }
21110 : 0 : next_after_fail2120:;
21111 : : }
21112 : : }
21113 : 0 : {
21114 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21115 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21116 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21117 : : )
21118 : : {
21119 : 0 : gimple_seq *lseq = seq;
21120 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2121;
21121 : 0 : {
21122 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21123 : 0 : {
21124 : 0 : tree _o1[2], _r1;
21125 : 0 : _o1[0] = captures[0];
21126 : 0 : _o1[1] = captures[3];
21127 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21128 : 0 : tem_op.resimplify (lseq, valueize);
21129 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21130 : 0 : if (!_r1) goto next_after_fail2121;
21131 : 0 : res_op->ops[0] = _r1;
21132 : : }
21133 : 0 : res_op->ops[1] = captures[1];
21134 : 0 : res_op->ops[2] = captures[2];
21135 : 0 : res_op->resimplify (lseq, valueize);
21136 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21137 : 0 : return true;
21138 : : }
21139 : 0 : next_after_fail2121:;
21140 : : }
21141 : : }
21142 : 0 : {
21143 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21144 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21145 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21146 : : )
21147 : : {
21148 : 0 : gimple_seq *lseq = seq;
21149 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2122;
21150 : 0 : {
21151 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21152 : 0 : {
21153 : 0 : tree _o1[2], _r1;
21154 : 0 : _o1[0] = captures[0];
21155 : 0 : _o1[1] = captures[3];
21156 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21157 : 0 : tem_op.resimplify (lseq, valueize);
21158 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21159 : 0 : if (!_r1) goto next_after_fail2122;
21160 : 0 : res_op->ops[0] = _r1;
21161 : : }
21162 : 0 : res_op->ops[1] = captures[1];
21163 : 0 : res_op->ops[2] = captures[2];
21164 : 0 : res_op->resimplify (lseq, valueize);
21165 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21166 : 0 : return true;
21167 : : }
21168 : 0 : next_after_fail2122:;
21169 : : }
21170 : : }
21171 : 0 : {
21172 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21173 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21174 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21175 : : )
21176 : : {
21177 : 0 : gimple_seq *lseq = seq;
21178 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2123;
21179 : 0 : {
21180 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21181 : 0 : {
21182 : 0 : tree _o1[2], _r1;
21183 : 0 : _o1[0] = captures[0];
21184 : 0 : _o1[1] = captures[3];
21185 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21186 : 0 : tem_op.resimplify (lseq, valueize);
21187 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21188 : 0 : if (!_r1) goto next_after_fail2123;
21189 : 0 : res_op->ops[0] = _r1;
21190 : : }
21191 : 0 : res_op->ops[1] = captures[1];
21192 : 0 : res_op->ops[2] = captures[2];
21193 : 0 : res_op->resimplify (lseq, valueize);
21194 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21195 : 0 : return true;
21196 : : }
21197 : 0 : next_after_fail2123:;
21198 : : }
21199 : : }
21200 : 0 : {
21201 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21202 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21203 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21204 : : )
21205 : : {
21206 : 0 : gimple_seq *lseq = seq;
21207 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2124;
21208 : 0 : {
21209 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21210 : 0 : {
21211 : 0 : tree _o1[2], _r1;
21212 : 0 : _o1[0] = captures[0];
21213 : 0 : _o1[1] = captures[3];
21214 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21215 : 0 : tem_op.resimplify (lseq, valueize);
21216 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21217 : 0 : if (!_r1) goto next_after_fail2124;
21218 : 0 : res_op->ops[0] = _r1;
21219 : : }
21220 : 0 : res_op->ops[1] = captures[1];
21221 : 0 : res_op->ops[2] = captures[2];
21222 : 0 : res_op->resimplify (lseq, valueize);
21223 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21224 : 0 : return true;
21225 : : }
21226 : 0 : next_after_fail2124:;
21227 : : }
21228 : : }
21229 : 0 : {
21230 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21231 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21232 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21233 : : )
21234 : : {
21235 : 0 : gimple_seq *lseq = seq;
21236 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2125;
21237 : 0 : {
21238 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21239 : 0 : {
21240 : 0 : tree _o1[2], _r1;
21241 : 0 : _o1[0] = captures[0];
21242 : 0 : _o1[1] = captures[3];
21243 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21244 : 0 : tem_op.resimplify (lseq, valueize);
21245 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21246 : 0 : if (!_r1) goto next_after_fail2125;
21247 : 0 : res_op->ops[0] = _r1;
21248 : : }
21249 : 0 : res_op->ops[1] = captures[1];
21250 : 0 : res_op->ops[2] = captures[2];
21251 : 0 : res_op->resimplify (lseq, valueize);
21252 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21253 : 0 : return true;
21254 : : }
21255 : 0 : next_after_fail2125:;
21256 : : }
21257 : : }
21258 : 0 : {
21259 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21260 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21261 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21262 : : )
21263 : : {
21264 : 0 : gimple_seq *lseq = seq;
21265 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2126;
21266 : 0 : {
21267 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21268 : 0 : {
21269 : 0 : tree _o1[2], _r1;
21270 : 0 : _o1[0] = captures[0];
21271 : 0 : _o1[1] = captures[3];
21272 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21273 : 0 : tem_op.resimplify (lseq, valueize);
21274 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21275 : 0 : if (!_r1) goto next_after_fail2126;
21276 : 0 : res_op->ops[0] = _r1;
21277 : : }
21278 : 0 : res_op->ops[1] = captures[1];
21279 : 0 : res_op->ops[2] = captures[2];
21280 : 0 : res_op->resimplify (lseq, valueize);
21281 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21282 : 0 : return true;
21283 : : }
21284 : 0 : next_after_fail2126:;
21285 : : }
21286 : : }
21287 : 0 : {
21288 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21289 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21290 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21291 : : )
21292 : : {
21293 : 0 : gimple_seq *lseq = seq;
21294 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2127;
21295 : 0 : {
21296 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21297 : 0 : {
21298 : 0 : tree _o1[2], _r1;
21299 : 0 : _o1[0] = captures[0];
21300 : 0 : _o1[1] = captures[3];
21301 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21302 : 0 : tem_op.resimplify (lseq, valueize);
21303 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21304 : 0 : if (!_r1) goto next_after_fail2127;
21305 : 0 : res_op->ops[0] = _r1;
21306 : : }
21307 : 0 : res_op->ops[1] = captures[1];
21308 : 0 : res_op->ops[2] = captures[2];
21309 : 0 : res_op->resimplify (lseq, valueize);
21310 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21311 : 0 : return true;
21312 : : }
21313 : 0 : next_after_fail2127:;
21314 : : }
21315 : : }
21316 : 0 : {
21317 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21318 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21319 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21320 : : )
21321 : : {
21322 : 0 : gimple_seq *lseq = seq;
21323 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2128;
21324 : 0 : {
21325 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21326 : 0 : {
21327 : 0 : tree _o1[2], _r1;
21328 : 0 : _o1[0] = captures[0];
21329 : 0 : _o1[1] = captures[3];
21330 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21331 : 0 : tem_op.resimplify (lseq, valueize);
21332 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21333 : 0 : if (!_r1) goto next_after_fail2128;
21334 : 0 : res_op->ops[0] = _r1;
21335 : : }
21336 : 0 : res_op->ops[1] = captures[1];
21337 : 0 : res_op->ops[2] = captures[2];
21338 : 0 : res_op->resimplify (lseq, valueize);
21339 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21340 : 0 : return true;
21341 : : }
21342 : 0 : next_after_fail2128:;
21343 : : }
21344 : : }
21345 : 0 : {
21346 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21347 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21348 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21349 : : )
21350 : : {
21351 : 0 : gimple_seq *lseq = seq;
21352 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2129;
21353 : 0 : {
21354 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21355 : 0 : {
21356 : 0 : tree _o1[2], _r1;
21357 : 0 : _o1[0] = captures[0];
21358 : 0 : _o1[1] = captures[3];
21359 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21360 : 0 : tem_op.resimplify (lseq, valueize);
21361 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21362 : 0 : if (!_r1) goto next_after_fail2129;
21363 : 0 : res_op->ops[0] = _r1;
21364 : : }
21365 : 0 : res_op->ops[1] = captures[1];
21366 : 0 : res_op->ops[2] = captures[2];
21367 : 0 : res_op->resimplify (lseq, valueize);
21368 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21369 : 0 : return true;
21370 : : }
21371 : 0 : next_after_fail2129:;
21372 : : }
21373 : : }
21374 : 0 : {
21375 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21376 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21377 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21378 : : )
21379 : : {
21380 : 0 : gimple_seq *lseq = seq;
21381 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2130;
21382 : 0 : {
21383 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21384 : 0 : {
21385 : 0 : tree _o1[2], _r1;
21386 : 0 : _o1[0] = captures[0];
21387 : 0 : _o1[1] = captures[3];
21388 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21389 : 0 : tem_op.resimplify (lseq, valueize);
21390 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21391 : 0 : if (!_r1) goto next_after_fail2130;
21392 : 0 : res_op->ops[0] = _r1;
21393 : : }
21394 : 0 : res_op->ops[1] = captures[1];
21395 : 0 : res_op->ops[2] = captures[2];
21396 : 0 : res_op->resimplify (lseq, valueize);
21397 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21398 : 0 : return true;
21399 : : }
21400 : 0 : next_after_fail2130:;
21401 : : }
21402 : : }
21403 : 0 : {
21404 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21405 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21406 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21407 : : )
21408 : : {
21409 : 0 : gimple_seq *lseq = seq;
21410 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2131;
21411 : 0 : {
21412 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21413 : 0 : {
21414 : 0 : tree _o1[2], _r1;
21415 : 0 : _o1[0] = captures[0];
21416 : 0 : _o1[1] = captures[3];
21417 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21418 : 0 : tem_op.resimplify (lseq, valueize);
21419 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21420 : 0 : if (!_r1) goto next_after_fail2131;
21421 : 0 : res_op->ops[0] = _r1;
21422 : : }
21423 : 0 : res_op->ops[1] = captures[1];
21424 : 0 : res_op->ops[2] = captures[2];
21425 : 0 : res_op->resimplify (lseq, valueize);
21426 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21427 : 0 : return true;
21428 : : }
21429 : 0 : next_after_fail2131:;
21430 : : }
21431 : : }
21432 : 0 : {
21433 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21434 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21435 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21436 : : )
21437 : : {
21438 : 0 : gimple_seq *lseq = seq;
21439 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2132;
21440 : 0 : {
21441 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21442 : 0 : {
21443 : 0 : tree _o1[2], _r1;
21444 : 0 : _o1[0] = captures[0];
21445 : 0 : _o1[1] = captures[3];
21446 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21447 : 0 : tem_op.resimplify (lseq, valueize);
21448 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21449 : 0 : if (!_r1) goto next_after_fail2132;
21450 : 0 : res_op->ops[0] = _r1;
21451 : : }
21452 : 0 : res_op->ops[1] = captures[1];
21453 : 0 : res_op->ops[2] = captures[2];
21454 : 0 : res_op->resimplify (lseq, valueize);
21455 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21456 : 0 : return true;
21457 : : }
21458 : 0 : next_after_fail2132:;
21459 : : }
21460 : : }
21461 : 0 : {
21462 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21463 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21464 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21465 : : )
21466 : : {
21467 : 0 : gimple_seq *lseq = seq;
21468 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2133;
21469 : 0 : {
21470 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21471 : 0 : {
21472 : 0 : tree _o1[2], _r1;
21473 : 0 : _o1[0] = captures[0];
21474 : 0 : _o1[1] = captures[3];
21475 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21476 : 0 : tem_op.resimplify (lseq, valueize);
21477 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21478 : 0 : if (!_r1) goto next_after_fail2133;
21479 : 0 : res_op->ops[0] = _r1;
21480 : : }
21481 : 0 : res_op->ops[1] = captures[1];
21482 : 0 : res_op->ops[2] = captures[2];
21483 : 0 : res_op->resimplify (lseq, valueize);
21484 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21485 : 0 : return true;
21486 : : }
21487 : 0 : next_after_fail2133:;
21488 : : }
21489 : : }
21490 : 0 : {
21491 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21492 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21493 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21494 : : )
21495 : : {
21496 : 0 : gimple_seq *lseq = seq;
21497 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2134;
21498 : 0 : {
21499 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21500 : 0 : {
21501 : 0 : tree _o1[2], _r1;
21502 : 0 : _o1[0] = captures[0];
21503 : 0 : _o1[1] = captures[3];
21504 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21505 : 0 : tem_op.resimplify (lseq, valueize);
21506 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21507 : 0 : if (!_r1) goto next_after_fail2134;
21508 : 0 : res_op->ops[0] = _r1;
21509 : : }
21510 : 0 : res_op->ops[1] = captures[1];
21511 : 0 : res_op->ops[2] = captures[2];
21512 : 0 : res_op->resimplify (lseq, valueize);
21513 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21514 : 0 : return true;
21515 : : }
21516 : 0 : next_after_fail2134:;
21517 : : }
21518 : : }
21519 : 0 : {
21520 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
21521 : 0 : const enum tree_code lop = BIT_XOR_EXPR;
21522 : 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
21523 : : )
21524 : : {
21525 : 0 : gimple_seq *lseq = seq;
21526 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2135;
21527 : 0 : {
21528 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
21529 : 0 : {
21530 : 0 : tree _o1[2], _r1;
21531 : 0 : _o1[0] = captures[0];
21532 : 0 : _o1[1] = captures[3];
21533 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21534 : 0 : tem_op.resimplify (lseq, valueize);
21535 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21536 : 0 : if (!_r1) goto next_after_fail2135;
21537 : 0 : res_op->ops[0] = _r1;
21538 : : }
21539 : 0 : res_op->ops[1] = captures[1];
21540 : 0 : res_op->ops[2] = captures[2];
21541 : 0 : res_op->resimplify (lseq, valueize);
21542 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
21543 : 0 : return true;
21544 : : }
21545 : 0 : next_after_fail2135:;
21546 : : }
21547 : : }
21548 : : }
21549 : : }
21550 : : break;
21551 : : }
21552 : : default:;
21553 : : }
21554 : : }
21555 : : break;
21556 : : default:;
21557 : : }
21558 : : }
21559 : : }
21560 : 201 : {
21561 : 201 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
21562 : 201 : if (VECTOR_TYPE_P (type)
21563 : 201 : && (TREE_CODE_CLASS (BIT_XOR_EXPR) != tcc_comparison
21564 : : || types_match (type, TREE_TYPE (captures[2]))
21565 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
21566 : : || (optimize_vectors_before_lowering_p ()
21567 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
21568 : : )
21569 : : {
21570 : 201 : gimple_seq *lseq = seq;
21571 : 201 : if (lseq
21572 : 61 : && (!single_use (captures[0])))
21573 : 175 : lseq = NULL;
21574 : 201 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2136;
21575 : 201 : {
21576 : 201 : res_op->set_op (VEC_COND_EXPR, type, 3);
21577 : 201 : res_op->ops[0] = captures[1];
21578 : 201 : {
21579 : 201 : tree _o1[2], _r1;
21580 : 201 : _o1[0] = captures[2];
21581 : 201 : _o1[1] = captures[4];
21582 : 201 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21583 : 201 : tem_op.resimplify (NULL, valueize);
21584 : 201 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
21585 : 201 : if (!_r1) goto next_after_fail2136;
21586 : 0 : res_op->ops[1] = _r1;
21587 : : }
21588 : 0 : {
21589 : 0 : tree _o1[2], _r1;
21590 : 0 : _o1[0] = captures[3];
21591 : 0 : _o1[1] = captures[4];
21592 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21593 : 0 : tem_op.resimplify (NULL, valueize);
21594 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
21595 : 0 : if (!_r1) goto next_after_fail2136;
21596 : 0 : res_op->ops[2] = _r1;
21597 : : }
21598 : 0 : res_op->resimplify (lseq, valueize);
21599 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
21600 : 0 : return true;
21601 : : }
21602 : 201 : next_after_fail2136:;
21603 : : }
21604 : : }
21605 : 201 : break;
21606 : : }
21607 : : default:;
21608 : : }
21609 : : }
21610 : : break;
21611 : 673241 : default:;
21612 : : }
21613 : 673241 : switch (TREE_CODE (_p1))
21614 : : {
21615 : 537940 : case SSA_NAME:
21616 : 537940 : if (gimple *_d1 = get_def (valueize, _p1))
21617 : : {
21618 : 440285 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21619 : 491930 : switch (gimple_assign_rhs_code (_a1))
21620 : : {
21621 : 148 : case VEC_COND_EXPR:
21622 : 148 : {
21623 : 148 : tree _q30 = gimple_assign_rhs1 (_a1);
21624 : 148 : _q30 = do_valueize (valueize, _q30);
21625 : 148 : tree _q31 = gimple_assign_rhs2 (_a1);
21626 : 148 : _q31 = do_valueize (valueize, _q31);
21627 : 148 : tree _q32 = gimple_assign_rhs3 (_a1);
21628 : 148 : _q32 = do_valueize (valueize, _q32);
21629 : 148 : {
21630 : 148 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
21631 : 148 : if (VECTOR_TYPE_P (type)
21632 : 148 : && (TREE_CODE_CLASS (BIT_XOR_EXPR) != tcc_comparison
21633 : : || types_match (type, TREE_TYPE (captures[3]))
21634 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
21635 : : || (optimize_vectors_before_lowering_p ()
21636 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
21637 : : )
21638 : : {
21639 : 148 : gimple_seq *lseq = seq;
21640 : 148 : if (lseq
21641 : 55 : && (!single_use (captures[1])))
21642 : 95 : lseq = NULL;
21643 : 148 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2137;
21644 : 148 : {
21645 : 148 : res_op->set_op (VEC_COND_EXPR, type, 3);
21646 : 148 : res_op->ops[0] = captures[2];
21647 : 148 : {
21648 : 148 : tree _o1[2], _r1;
21649 : 148 : _o1[0] = captures[0];
21650 : 148 : _o1[1] = captures[3];
21651 : 148 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21652 : 148 : tem_op.resimplify (NULL, valueize);
21653 : 148 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
21654 : 148 : if (!_r1) goto next_after_fail2137;
21655 : 24 : res_op->ops[1] = _r1;
21656 : : }
21657 : 24 : {
21658 : 24 : tree _o1[2], _r1;
21659 : 24 : _o1[0] = captures[0];
21660 : 24 : _o1[1] = captures[4];
21661 : 24 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21662 : 24 : tem_op.resimplify (NULL, valueize);
21663 : 24 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
21664 : 24 : if (!_r1) goto next_after_fail2137;
21665 : 0 : res_op->ops[2] = _r1;
21666 : : }
21667 : 0 : res_op->resimplify (lseq, valueize);
21668 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
21669 : 0 : return true;
21670 : : }
21671 : 148 : next_after_fail2137:;
21672 : : }
21673 : : }
21674 : 148 : break;
21675 : : }
21676 : : default:;
21677 : : }
21678 : : }
21679 : : break;
21680 : 673241 : default:;
21681 : : }
21682 : 673241 : switch (TREE_CODE (_p0))
21683 : : {
21684 : 661498 : case SSA_NAME:
21685 : 661498 : if (gimple *_d1 = get_def (valueize, _p0))
21686 : : {
21687 : 522015 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21688 : 592698 : switch (gimple_assign_rhs_code (_a1))
21689 : : {
21690 : 4712 : case LT_EXPR:
21691 : 4712 : {
21692 : 4712 : tree _q20 = gimple_assign_rhs1 (_a1);
21693 : 4712 : _q20 = do_valueize (valueize, _q20);
21694 : 4712 : tree _q21 = gimple_assign_rhs2 (_a1);
21695 : 4712 : _q21 = do_valueize (valueize, _q21);
21696 : 4712 : if (integer_truep (_p1))
21697 : : {
21698 : 0 : {
21699 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21700 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR, UNGE_EXPR))
21701 : 0 : return true;
21702 : : }
21703 : : }
21704 : 4712 : if (integer_zerop (_q21))
21705 : : {
21706 : 2193 : switch (TREE_CODE (_p1))
21707 : : {
21708 : 2193 : case SSA_NAME:
21709 : 2193 : if (gimple *_d2 = get_def (valueize, _p1))
21710 : : {
21711 : 2193 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
21712 : 2188 : switch (gimple_assign_rhs_code (_a2))
21713 : : {
21714 : 75 : case LT_EXPR:
21715 : 75 : {
21716 : 75 : tree _q50 = gimple_assign_rhs1 (_a2);
21717 : 75 : _q50 = do_valueize (valueize, _q50);
21718 : 75 : tree _q51 = gimple_assign_rhs2 (_a2);
21719 : 75 : _q51 = do_valueize (valueize, _q51);
21720 : 75 : if (integer_zerop (_q51))
21721 : : {
21722 : 75 : {
21723 : 75 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q50 };
21724 : 75 : if (gimple_simplify_50 (res_op, seq, valueize, type, captures, LT_EXPR))
21725 : 5 : return true;
21726 : : }
21727 : : }
21728 : : break;
21729 : : }
21730 : 0 : case GE_EXPR:
21731 : 0 : {
21732 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
21733 : 0 : _q50 = do_valueize (valueize, _q50);
21734 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
21735 : 0 : _q51 = do_valueize (valueize, _q51);
21736 : 0 : if (integer_zerop (_q51))
21737 : : {
21738 : 0 : {
21739 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q50 };
21740 : 0 : if (gimple_simplify_51 (res_op, seq, valueize, type, captures))
21741 : 0 : return true;
21742 : : }
21743 : : }
21744 : : break;
21745 : : }
21746 : : default:;
21747 : : }
21748 : : }
21749 : : break;
21750 : : default:;
21751 : : }
21752 : : }
21753 : : break;
21754 : : }
21755 : 589 : case LE_EXPR:
21756 : 589 : {
21757 : 589 : tree _q20 = gimple_assign_rhs1 (_a1);
21758 : 589 : _q20 = do_valueize (valueize, _q20);
21759 : 589 : tree _q21 = gimple_assign_rhs2 (_a1);
21760 : 589 : _q21 = do_valueize (valueize, _q21);
21761 : 589 : if (integer_truep (_p1))
21762 : : {
21763 : 0 : {
21764 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21765 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR, UNGT_EXPR))
21766 : 0 : return true;
21767 : : }
21768 : : }
21769 : : break;
21770 : : }
21771 : 990 : case EQ_EXPR:
21772 : 990 : {
21773 : 990 : tree _q20 = gimple_assign_rhs1 (_a1);
21774 : 990 : _q20 = do_valueize (valueize, _q20);
21775 : 990 : tree _q21 = gimple_assign_rhs2 (_a1);
21776 : 990 : _q21 = do_valueize (valueize, _q21);
21777 : 990 : if (tree_swap_operands_p (_q20, _q21))
21778 : 0 : std::swap (_q20, _q21);
21779 : 990 : if (integer_truep (_p1))
21780 : : {
21781 : 0 : {
21782 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21783 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR, NE_EXPR))
21784 : 0 : return true;
21785 : : }
21786 : : }
21787 : 673234 : break;
21788 : : }
21789 : 2074 : case NE_EXPR:
21790 : 2074 : {
21791 : 2074 : tree _q20 = gimple_assign_rhs1 (_a1);
21792 : 2074 : _q20 = do_valueize (valueize, _q20);
21793 : 2074 : tree _q21 = gimple_assign_rhs2 (_a1);
21794 : 2074 : _q21 = do_valueize (valueize, _q21);
21795 : 2074 : if (tree_swap_operands_p (_q20, _q21))
21796 : 14 : std::swap (_q20, _q21);
21797 : 2074 : if (integer_truep (_p1))
21798 : : {
21799 : 0 : {
21800 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21801 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR, EQ_EXPR))
21802 : 0 : return true;
21803 : : }
21804 : : }
21805 : 673234 : break;
21806 : : }
21807 : 1480 : case GE_EXPR:
21808 : 1480 : {
21809 : 1480 : tree _q20 = gimple_assign_rhs1 (_a1);
21810 : 1480 : _q20 = do_valueize (valueize, _q20);
21811 : 1480 : tree _q21 = gimple_assign_rhs2 (_a1);
21812 : 1480 : _q21 = do_valueize (valueize, _q21);
21813 : 1480 : if (integer_truep (_p1))
21814 : : {
21815 : 0 : {
21816 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21817 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR, UNLT_EXPR))
21818 : 0 : return true;
21819 : : }
21820 : : }
21821 : 1480 : if (integer_zerop (_q21))
21822 : : {
21823 : 14 : switch (TREE_CODE (_p1))
21824 : : {
21825 : 14 : case SSA_NAME:
21826 : 14 : if (gimple *_d2 = get_def (valueize, _p1))
21827 : : {
21828 : 14 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
21829 : 2 : switch (gimple_assign_rhs_code (_a2))
21830 : : {
21831 : 1 : case GE_EXPR:
21832 : 1 : {
21833 : 1 : tree _q50 = gimple_assign_rhs1 (_a2);
21834 : 1 : _q50 = do_valueize (valueize, _q50);
21835 : 1 : tree _q51 = gimple_assign_rhs2 (_a2);
21836 : 1 : _q51 = do_valueize (valueize, _q51);
21837 : 1 : if (integer_zerop (_q51))
21838 : : {
21839 : 1 : {
21840 : 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q50 };
21841 : 1 : if (gimple_simplify_50 (res_op, seq, valueize, type, captures, GE_EXPR))
21842 : 1 : return true;
21843 : : }
21844 : : }
21845 : : break;
21846 : : }
21847 : 0 : case LT_EXPR:
21848 : 0 : {
21849 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
21850 : 0 : _q50 = do_valueize (valueize, _q50);
21851 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
21852 : 0 : _q51 = do_valueize (valueize, _q51);
21853 : 0 : if (integer_zerop (_q51))
21854 : : {
21855 : 0 : {
21856 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _p0, _q20 };
21857 : 0 : if (gimple_simplify_51 (res_op, seq, valueize, type, captures))
21858 : 0 : return true;
21859 : : }
21860 : : }
21861 : : break;
21862 : : }
21863 : : default:;
21864 : : }
21865 : : }
21866 : : break;
21867 : : default:;
21868 : : }
21869 : : }
21870 : : break;
21871 : : }
21872 : 9953 : case GT_EXPR:
21873 : 9953 : {
21874 : 9953 : tree _q20 = gimple_assign_rhs1 (_a1);
21875 : 9953 : _q20 = do_valueize (valueize, _q20);
21876 : 9953 : tree _q21 = gimple_assign_rhs2 (_a1);
21877 : 9953 : _q21 = do_valueize (valueize, _q21);
21878 : 9953 : if (integer_truep (_p1))
21879 : : {
21880 : 0 : {
21881 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21882 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR, UNLE_EXPR))
21883 : 0 : return true;
21884 : : }
21885 : : }
21886 : : break;
21887 : : }
21888 : 235 : case UNORDERED_EXPR:
21889 : 235 : {
21890 : 235 : tree _q20 = gimple_assign_rhs1 (_a1);
21891 : 235 : _q20 = do_valueize (valueize, _q20);
21892 : 235 : tree _q21 = gimple_assign_rhs2 (_a1);
21893 : 235 : _q21 = do_valueize (valueize, _q21);
21894 : 235 : if (tree_swap_operands_p (_q20, _q21))
21895 : 0 : std::swap (_q20, _q21);
21896 : 235 : if (integer_truep (_p1))
21897 : : {
21898 : 0 : {
21899 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21900 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR))
21901 : 0 : return true;
21902 : : }
21903 : : }
21904 : 673234 : break;
21905 : : }
21906 : 11 : case ORDERED_EXPR:
21907 : 11 : {
21908 : 11 : tree _q20 = gimple_assign_rhs1 (_a1);
21909 : 11 : _q20 = do_valueize (valueize, _q20);
21910 : 11 : tree _q21 = gimple_assign_rhs2 (_a1);
21911 : 11 : _q21 = do_valueize (valueize, _q21);
21912 : 11 : if (tree_swap_operands_p (_q20, _q21))
21913 : 0 : std::swap (_q20, _q21);
21914 : 11 : if (integer_truep (_p1))
21915 : : {
21916 : 0 : {
21917 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21918 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR))
21919 : 0 : return true;
21920 : : }
21921 : : }
21922 : 673234 : break;
21923 : : }
21924 : 0 : case UNLT_EXPR:
21925 : 0 : {
21926 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
21927 : 0 : _q20 = do_valueize (valueize, _q20);
21928 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
21929 : 0 : _q21 = do_valueize (valueize, _q21);
21930 : 0 : if (integer_truep (_p1))
21931 : : {
21932 : 0 : {
21933 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21934 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, UNLT_EXPR, GE_EXPR, GE_EXPR))
21935 : 0 : return true;
21936 : : }
21937 : : }
21938 : : break;
21939 : : }
21940 : 12 : case UNLE_EXPR:
21941 : 12 : {
21942 : 12 : tree _q20 = gimple_assign_rhs1 (_a1);
21943 : 12 : _q20 = do_valueize (valueize, _q20);
21944 : 12 : tree _q21 = gimple_assign_rhs2 (_a1);
21945 : 12 : _q21 = do_valueize (valueize, _q21);
21946 : 12 : if (integer_truep (_p1))
21947 : : {
21948 : 0 : {
21949 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21950 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, UNLE_EXPR, GT_EXPR, GT_EXPR))
21951 : 0 : return true;
21952 : : }
21953 : : }
21954 : : break;
21955 : : }
21956 : 0 : case UNGT_EXPR:
21957 : 0 : {
21958 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
21959 : 0 : _q20 = do_valueize (valueize, _q20);
21960 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
21961 : 0 : _q21 = do_valueize (valueize, _q21);
21962 : 0 : if (integer_truep (_p1))
21963 : : {
21964 : 0 : {
21965 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21966 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, UNGT_EXPR, LE_EXPR, LE_EXPR))
21967 : 0 : return true;
21968 : : }
21969 : : }
21970 : : break;
21971 : : }
21972 : 16 : case UNGE_EXPR:
21973 : 16 : {
21974 : 16 : tree _q20 = gimple_assign_rhs1 (_a1);
21975 : 16 : _q20 = do_valueize (valueize, _q20);
21976 : 16 : tree _q21 = gimple_assign_rhs2 (_a1);
21977 : 16 : _q21 = do_valueize (valueize, _q21);
21978 : 16 : if (integer_truep (_p1))
21979 : : {
21980 : 0 : {
21981 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
21982 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, UNGE_EXPR, LT_EXPR, LT_EXPR))
21983 : 0 : return true;
21984 : : }
21985 : : }
21986 : : break;
21987 : : }
21988 : 0 : case UNEQ_EXPR:
21989 : 0 : {
21990 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
21991 : 0 : _q20 = do_valueize (valueize, _q20);
21992 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
21993 : 0 : _q21 = do_valueize (valueize, _q21);
21994 : 0 : if (tree_swap_operands_p (_q20, _q21))
21995 : 0 : std::swap (_q20, _q21);
21996 : 0 : if (integer_truep (_p1))
21997 : : {
21998 : 0 : {
21999 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
22000 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR))
22001 : 0 : return true;
22002 : : }
22003 : : }
22004 : 673234 : break;
22005 : : }
22006 : 0 : case LTGT_EXPR:
22007 : 0 : {
22008 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22009 : 0 : _q20 = do_valueize (valueize, _q20);
22010 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
22011 : 0 : _q21 = do_valueize (valueize, _q21);
22012 : 0 : if (tree_swap_operands_p (_q20, _q21))
22013 : 0 : std::swap (_q20, _q21);
22014 : 0 : if (integer_truep (_p1))
22015 : : {
22016 : 0 : {
22017 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
22018 : 0 : if (gimple_simplify_49 (res_op, seq, valueize, type, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR))
22019 : 0 : return true;
22020 : : }
22021 : : }
22022 : 673234 : break;
22023 : : }
22024 : 201 : case VEC_COND_EXPR:
22025 : 201 : {
22026 : 201 : tree _q20 = gimple_assign_rhs1 (_a1);
22027 : 201 : _q20 = do_valueize (valueize, _q20);
22028 : 201 : tree _q21 = gimple_assign_rhs2 (_a1);
22029 : 201 : _q21 = do_valueize (valueize, _q21);
22030 : 201 : tree _q22 = gimple_assign_rhs3 (_a1);
22031 : 201 : _q22 = do_valueize (valueize, _q22);
22032 : 201 : if (uniform_integer_cst_p (_q21))
22033 : : {
22034 : 154 : if (uniform_integer_cst_p (_q22))
22035 : : {
22036 : 154 : {
22037 : 154 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1 };
22038 : 154 : if (gimple_simplify_53 (res_op, seq, valueize, type, captures))
22039 : 0 : return true;
22040 : : }
22041 : : }
22042 : : }
22043 : : break;
22044 : : }
22045 : : default:;
22046 : : }
22047 : 95757 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
22048 : 13701 : switch (gimple_call_combined_fn (_c1))
22049 : : {
22050 : 2 : case CFN_PARITY:
22051 : 2 : if (gimple_call_num_args (_c1) == 1)
22052 : : {
22053 : 2 : tree _q20 = gimple_call_arg (_c1, 0);
22054 : 2 : _q20 = do_valueize (valueize, _q20);
22055 : 2 : switch (TREE_CODE (_p1))
22056 : : {
22057 : 2 : case SSA_NAME:
22058 : 2 : if (gimple *_d2 = get_def (valueize, _p1))
22059 : : {
22060 : 2 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
22061 : 2 : switch (gimple_call_combined_fn (_c2))
22062 : : {
22063 : 2 : case CFN_PARITY:
22064 : 2 : if (gimple_call_num_args (_c2) == 1)
22065 : : {
22066 : 2 : tree _q40 = gimple_call_arg (_c2, 0);
22067 : 2 : _q40 = do_valueize (valueize, _q40);
22068 : 2 : {
22069 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22070 : 2 : if (gimple_simplify_52 (res_op, seq, valueize, type, captures, CFN_PARITY))
22071 : 1 : return true;
22072 : : }
22073 : : }
22074 : : break;
22075 : : default:;
22076 : : }
22077 : : }
22078 : : break;
22079 : : default:;
22080 : : }
22081 : : }
22082 : : break;
22083 : 0 : case CFN_BUILT_IN_PARITYL:
22084 : 0 : if (gimple_call_num_args (_c1) == 1)
22085 : : {
22086 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22087 : 0 : _q20 = do_valueize (valueize, _q20);
22088 : 0 : switch (TREE_CODE (_p1))
22089 : : {
22090 : 0 : case SSA_NAME:
22091 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22092 : : {
22093 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
22094 : 0 : switch (gimple_call_combined_fn (_c2))
22095 : : {
22096 : 0 : case CFN_BUILT_IN_PARITYL:
22097 : 0 : if (gimple_call_num_args (_c2) == 1)
22098 : : {
22099 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
22100 : 0 : _q40 = do_valueize (valueize, _q40);
22101 : 0 : {
22102 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22103 : 0 : if (gimple_simplify_52 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_PARITYL))
22104 : 0 : return true;
22105 : : }
22106 : : }
22107 : : break;
22108 : : default:;
22109 : : }
22110 : : }
22111 : : break;
22112 : : default:;
22113 : : }
22114 : : }
22115 : : break;
22116 : 0 : case CFN_BUILT_IN_PARITYIMAX:
22117 : 0 : if (gimple_call_num_args (_c1) == 1)
22118 : : {
22119 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22120 : 0 : _q20 = do_valueize (valueize, _q20);
22121 : 0 : switch (TREE_CODE (_p1))
22122 : : {
22123 : 0 : case SSA_NAME:
22124 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22125 : : {
22126 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
22127 : 0 : switch (gimple_call_combined_fn (_c2))
22128 : : {
22129 : 0 : case CFN_BUILT_IN_PARITYIMAX:
22130 : 0 : if (gimple_call_num_args (_c2) == 1)
22131 : : {
22132 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
22133 : 0 : _q40 = do_valueize (valueize, _q40);
22134 : 0 : {
22135 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22136 : 0 : if (gimple_simplify_52 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_PARITYIMAX))
22137 : 0 : return true;
22138 : : }
22139 : : }
22140 : : break;
22141 : : default:;
22142 : : }
22143 : : }
22144 : : break;
22145 : : default:;
22146 : : }
22147 : : }
22148 : : break;
22149 : 11 : case CFN_BUILT_IN_PARITY:
22150 : 11 : if (gimple_call_num_args (_c1) == 1)
22151 : : {
22152 : 11 : tree _q20 = gimple_call_arg (_c1, 0);
22153 : 11 : _q20 = do_valueize (valueize, _q20);
22154 : 11 : switch (TREE_CODE (_p1))
22155 : : {
22156 : 0 : case SSA_NAME:
22157 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22158 : : {
22159 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
22160 : 0 : switch (gimple_call_combined_fn (_c2))
22161 : : {
22162 : 0 : case CFN_BUILT_IN_PARITY:
22163 : 0 : if (gimple_call_num_args (_c2) == 1)
22164 : : {
22165 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
22166 : 0 : _q40 = do_valueize (valueize, _q40);
22167 : 0 : {
22168 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22169 : 0 : if (gimple_simplify_52 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_PARITY))
22170 : 0 : return true;
22171 : : }
22172 : : }
22173 : : break;
22174 : : default:;
22175 : : }
22176 : : }
22177 : : break;
22178 : : default:;
22179 : : }
22180 : : }
22181 : : break;
22182 : 11 : case CFN_BUILT_IN_PARITYLL:
22183 : 11 : if (gimple_call_num_args (_c1) == 1)
22184 : : {
22185 : 11 : tree _q20 = gimple_call_arg (_c1, 0);
22186 : 11 : _q20 = do_valueize (valueize, _q20);
22187 : 11 : switch (TREE_CODE (_p1))
22188 : : {
22189 : 0 : case SSA_NAME:
22190 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22191 : : {
22192 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
22193 : 0 : switch (gimple_call_combined_fn (_c2))
22194 : : {
22195 : 0 : case CFN_BUILT_IN_PARITYLL:
22196 : 0 : if (gimple_call_num_args (_c2) == 1)
22197 : : {
22198 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
22199 : 0 : _q40 = do_valueize (valueize, _q40);
22200 : 0 : {
22201 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22202 : 0 : if (gimple_simplify_52 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_PARITYLL))
22203 : 0 : return true;
22204 : : }
22205 : : }
22206 : : break;
22207 : : default:;
22208 : : }
22209 : : }
22210 : : break;
22211 : : default:;
22212 : : }
22213 : : }
22214 : : break;
22215 : : default:;
22216 : : }
22217 : : }
22218 : : break;
22219 : 673234 : default:;
22220 : : }
22221 : 673234 : switch (TREE_CODE (_p1))
22222 : : {
22223 : 537933 : case SSA_NAME:
22224 : 537933 : if (gimple *_d1 = get_def (valueize, _p1))
22225 : : {
22226 : 440278 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22227 : 491924 : switch (gimple_assign_rhs_code (_a1))
22228 : : {
22229 : 148 : case VEC_COND_EXPR:
22230 : 148 : {
22231 : 148 : tree _q30 = gimple_assign_rhs1 (_a1);
22232 : 148 : _q30 = do_valueize (valueize, _q30);
22233 : 148 : tree _q31 = gimple_assign_rhs2 (_a1);
22234 : 148 : _q31 = do_valueize (valueize, _q31);
22235 : 148 : tree _q32 = gimple_assign_rhs3 (_a1);
22236 : 148 : _q32 = do_valueize (valueize, _q32);
22237 : 148 : if (uniform_integer_cst_p (_q31))
22238 : : {
22239 : 46 : if (uniform_integer_cst_p (_q32))
22240 : : {
22241 : 22 : {
22242 : 22 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q32, _p0 };
22243 : 22 : if (gimple_simplify_53 (res_op, seq, valueize, type, captures))
22244 : 0 : return true;
22245 : : }
22246 : : }
22247 : : }
22248 : : break;
22249 : : }
22250 : : default:;
22251 : : }
22252 : : }
22253 : : break;
22254 : 673234 : default:;
22255 : : }
22256 : 673234 : switch (TREE_CODE (_p0))
22257 : : {
22258 : 661491 : case SSA_NAME:
22259 : 661491 : if (gimple *_d1 = get_def (valueize, _p0))
22260 : : {
22261 : 522008 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22262 : 592692 : switch (gimple_assign_rhs_code (_a1))
22263 : : {
22264 : 293 : case VEC_PERM_EXPR:
22265 : 293 : {
22266 : 293 : tree _q20 = gimple_assign_rhs1 (_a1);
22267 : 293 : _q20 = do_valueize (valueize, _q20);
22268 : 293 : tree _q21 = gimple_assign_rhs2 (_a1);
22269 : 293 : _q21 = do_valueize (valueize, _q21);
22270 : 293 : tree _q22 = gimple_assign_rhs3 (_a1);
22271 : 293 : _q22 = do_valueize (valueize, _q22);
22272 : 293 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
22273 : : {
22274 : 40 : switch (TREE_CODE (_p1))
22275 : : {
22276 : 40 : case SSA_NAME:
22277 : 40 : if (gimple *_d2 = get_def (valueize, _p1))
22278 : : {
22279 : 40 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22280 : 26 : switch (gimple_assign_rhs_code (_a2))
22281 : : {
22282 : 16 : case VEC_PERM_EXPR:
22283 : 16 : {
22284 : 16 : tree _q60 = gimple_assign_rhs1 (_a2);
22285 : 16 : _q60 = do_valueize (valueize, _q60);
22286 : 16 : tree _q61 = gimple_assign_rhs2 (_a2);
22287 : 16 : _q61 = do_valueize (valueize, _q61);
22288 : 16 : tree _q62 = gimple_assign_rhs3 (_a2);
22289 : 16 : _q62 = do_valueize (valueize, _q62);
22290 : 16 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
22291 : : {
22292 : 16 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
22293 : : {
22294 : 2 : {
22295 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
22296 : 2 : if (VECTOR_INTEGER_TYPE_P (type)
22297 : : )
22298 : : {
22299 : 2 : gimple_seq *lseq = seq;
22300 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2138;
22301 : 2 : {
22302 : 2 : res_op->set_op (VEC_PERM_EXPR, type, 3);
22303 : 2 : {
22304 : 2 : tree _o1[2], _r1;
22305 : 2 : _o1[0] = captures[0];
22306 : 2 : _o1[1] = captures[2];
22307 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22308 : 2 : tem_op.resimplify (lseq, valueize);
22309 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22310 : 2 : if (!_r1) goto next_after_fail2138;
22311 : 1 : captures[3] = _r1;
22312 : : }
22313 : 1 : res_op->ops[0] = captures[3];
22314 : 1 : res_op->ops[1] = captures[3];
22315 : 1 : res_op->ops[2] = captures[1];
22316 : 1 : res_op->resimplify (lseq, valueize);
22317 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
22318 : 1 : return true;
22319 : : }
22320 : : next_after_fail2138:;
22321 : : }
22322 : : }
22323 : : }
22324 : : }
22325 : : break;
22326 : : }
22327 : : default:;
22328 : : }
22329 : : }
22330 : : break;
22331 : : default:;
22332 : : }
22333 : : }
22334 : : break;
22335 : : }
22336 : : default:;
22337 : : }
22338 : : }
22339 : : break;
22340 : : default:;
22341 : : }
22342 : : return false;
22343 : : }
22344 : :
22345 : : bool
22346 : 272279 : gimple_simplify_UNGE_EXPR (gimple_match_op *res_op, gimple_seq *seq,
22347 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22348 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22349 : : {
22350 : 272279 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22351 : 272279 : switch (TREE_CODE (_p0))
22352 : : {
22353 : 260282 : case SSA_NAME:
22354 : 260282 : if (gimple *_d1 = get_def (valueize, _p0))
22355 : : {
22356 : 123294 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22357 : 120249 : switch (gimple_assign_rhs_code (_a1))
22358 : : {
22359 : 0 : case VEC_COND_EXPR:
22360 : 0 : {
22361 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22362 : 0 : _q20 = do_valueize (valueize, _q20);
22363 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
22364 : 0 : _q21 = do_valueize (valueize, _q21);
22365 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
22366 : 0 : _q22 = do_valueize (valueize, _q22);
22367 : 0 : switch (TREE_CODE (_p1))
22368 : : {
22369 : 0 : case SSA_NAME:
22370 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22371 : : {
22372 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22373 : 0 : switch (gimple_assign_rhs_code (_a2))
22374 : : {
22375 : 0 : case VEC_COND_EXPR:
22376 : 0 : {
22377 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
22378 : 0 : _q60 = do_valueize (valueize, _q60);
22379 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
22380 : 0 : _q61 = do_valueize (valueize, _q61);
22381 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
22382 : 0 : _q62 = do_valueize (valueize, _q62);
22383 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
22384 : : {
22385 : 0 : {
22386 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
22387 : 0 : if (VECTOR_TYPE_P (type)
22388 : 0 : && (TREE_CODE_CLASS (UNGE_EXPR) != tcc_comparison
22389 : 0 : || types_match (type, TREE_TYPE (captures[2]))
22390 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
22391 : : || (optimize_vectors_before_lowering_p ()
22392 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
22393 : : )
22394 : : {
22395 : 0 : gimple_seq *lseq = seq;
22396 : 0 : if (lseq
22397 : 0 : && (!single_use (captures[0])
22398 : 0 : || !single_use (captures[4])))
22399 : 0 : lseq = NULL;
22400 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2832;
22401 : 0 : {
22402 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
22403 : 0 : res_op->ops[0] = captures[1];
22404 : 0 : {
22405 : 0 : tree _o1[2], _r1;
22406 : 0 : _o1[0] = captures[2];
22407 : 0 : _o1[1] = captures[5];
22408 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGE_EXPR, type, _o1[0], _o1[1]);
22409 : 0 : tem_op.resimplify (NULL, valueize);
22410 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22411 : 0 : if (!_r1) goto next_after_fail2832;
22412 : 0 : res_op->ops[1] = _r1;
22413 : : }
22414 : 0 : {
22415 : 0 : tree _o1[2], _r1;
22416 : 0 : _o1[0] = captures[3];
22417 : 0 : _o1[1] = captures[6];
22418 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGE_EXPR, type, _o1[0], _o1[1]);
22419 : 0 : tem_op.resimplify (NULL, valueize);
22420 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22421 : 0 : if (!_r1) goto next_after_fail2832;
22422 : 0 : res_op->ops[2] = _r1;
22423 : : }
22424 : 0 : res_op->resimplify (lseq, valueize);
22425 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
22426 : 0 : return true;
22427 : : }
22428 : 0 : next_after_fail2832:;
22429 : : }
22430 : : }
22431 : : }
22432 : : break;
22433 : : }
22434 : : default:;
22435 : : }
22436 : : }
22437 : : break;
22438 : 0 : default:;
22439 : : }
22440 : 0 : {
22441 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
22442 : 0 : if (VECTOR_TYPE_P (type)
22443 : 0 : && (TREE_CODE_CLASS (UNGE_EXPR) != tcc_comparison
22444 : 0 : || types_match (type, TREE_TYPE (captures[2]))
22445 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
22446 : : || (optimize_vectors_before_lowering_p ()
22447 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
22448 : : )
22449 : : {
22450 : 0 : gimple_seq *lseq = seq;
22451 : 0 : if (lseq
22452 : 0 : && (!single_use (captures[0])))
22453 : 0 : lseq = NULL;
22454 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2833;
22455 : 0 : {
22456 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
22457 : 0 : res_op->ops[0] = captures[1];
22458 : 0 : {
22459 : 0 : tree _o1[2], _r1;
22460 : 0 : _o1[0] = captures[2];
22461 : 0 : _o1[1] = captures[4];
22462 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGE_EXPR, type, _o1[0], _o1[1]);
22463 : 0 : tem_op.resimplify (NULL, valueize);
22464 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22465 : 0 : if (!_r1) goto next_after_fail2833;
22466 : 0 : res_op->ops[1] = _r1;
22467 : : }
22468 : 0 : {
22469 : 0 : tree _o1[2], _r1;
22470 : 0 : _o1[0] = captures[3];
22471 : 0 : _o1[1] = captures[4];
22472 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGE_EXPR, type, _o1[0], _o1[1]);
22473 : 0 : tem_op.resimplify (NULL, valueize);
22474 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22475 : 0 : if (!_r1) goto next_after_fail2833;
22476 : 0 : res_op->ops[2] = _r1;
22477 : : }
22478 : 0 : res_op->resimplify (lseq, valueize);
22479 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
22480 : 0 : return true;
22481 : : }
22482 : 0 : next_after_fail2833:;
22483 : : }
22484 : : }
22485 : 0 : break;
22486 : : }
22487 : : default:;
22488 : : }
22489 : : }
22490 : : break;
22491 : 272279 : default:;
22492 : : }
22493 : 272279 : switch (TREE_CODE (_p1))
22494 : : {
22495 : 26394 : case SSA_NAME:
22496 : 26394 : if (gimple *_d1 = get_def (valueize, _p1))
22497 : : {
22498 : 12338 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22499 : 11928 : switch (gimple_assign_rhs_code (_a1))
22500 : : {
22501 : 0 : case VEC_COND_EXPR:
22502 : 0 : {
22503 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
22504 : 0 : _q30 = do_valueize (valueize, _q30);
22505 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
22506 : 0 : _q31 = do_valueize (valueize, _q31);
22507 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
22508 : 0 : _q32 = do_valueize (valueize, _q32);
22509 : 0 : {
22510 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
22511 : 0 : if (VECTOR_TYPE_P (type)
22512 : 0 : && (TREE_CODE_CLASS (UNGE_EXPR) != tcc_comparison
22513 : 0 : || types_match (type, TREE_TYPE (captures[3]))
22514 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
22515 : : || (optimize_vectors_before_lowering_p ()
22516 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
22517 : : )
22518 : : {
22519 : 0 : gimple_seq *lseq = seq;
22520 : 0 : if (lseq
22521 : 0 : && (!single_use (captures[1])))
22522 : 0 : lseq = NULL;
22523 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2834;
22524 : 0 : {
22525 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
22526 : 0 : res_op->ops[0] = captures[2];
22527 : 0 : {
22528 : 0 : tree _o1[2], _r1;
22529 : 0 : _o1[0] = captures[0];
22530 : 0 : _o1[1] = captures[3];
22531 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGE_EXPR, type, _o1[0], _o1[1]);
22532 : 0 : tem_op.resimplify (NULL, valueize);
22533 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22534 : 0 : if (!_r1) goto next_after_fail2834;
22535 : 0 : res_op->ops[1] = _r1;
22536 : : }
22537 : 0 : {
22538 : 0 : tree _o1[2], _r1;
22539 : 0 : _o1[0] = captures[0];
22540 : 0 : _o1[1] = captures[4];
22541 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGE_EXPR, type, _o1[0], _o1[1]);
22542 : 0 : tem_op.resimplify (NULL, valueize);
22543 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22544 : 0 : if (!_r1) goto next_after_fail2834;
22545 : 0 : res_op->ops[2] = _r1;
22546 : : }
22547 : 0 : res_op->resimplify (lseq, valueize);
22548 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
22549 : 0 : return true;
22550 : : }
22551 : 0 : next_after_fail2834:;
22552 : : }
22553 : : }
22554 : 0 : break;
22555 : : }
22556 : : default:;
22557 : : }
22558 : : }
22559 : : break;
22560 : 272279 : default:;
22561 : : }
22562 : 272279 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
22563 : : {
22564 : 15 : {
22565 : 15 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22566 : 15 : if (gimple_simplify_660 (res_op, seq, valueize, type, captures, UNGE_EXPR))
22567 : 15 : return true;
22568 : : }
22569 : : }
22570 : 272264 : switch (TREE_CODE (_p0))
22571 : : {
22572 : 260267 : case SSA_NAME:
22573 : 260267 : if (gimple *_d1 = get_def (valueize, _p0))
22574 : : {
22575 : 123284 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22576 : 120249 : switch (gimple_assign_rhs_code (_a1))
22577 : : {
22578 : 609 : case FLOAT_EXPR:
22579 : 609 : {
22580 : 609 : tree _q20 = gimple_assign_rhs1 (_a1);
22581 : 609 : _q20 = do_valueize (valueize, _q20);
22582 : 609 : switch (TREE_CODE (_p1))
22583 : : {
22584 : 0 : case SSA_NAME:
22585 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22586 : : {
22587 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22588 : 0 : switch (gimple_assign_rhs_code (_a2))
22589 : : {
22590 : 0 : case FLOAT_EXPR:
22591 : 0 : {
22592 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
22593 : 0 : _q40 = do_valueize (valueize, _q40);
22594 : 0 : {
22595 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
22596 : 0 : if (gimple_simplify_286 (res_op, seq, valueize, type, captures, UNGE_EXPR, GE_EXPR))
22597 : 0 : return true;
22598 : : }
22599 : 0 : break;
22600 : : }
22601 : : default:;
22602 : : }
22603 : : }
22604 : : break;
22605 : : default:;
22606 : : }
22607 : : break;
22608 : : }
22609 : 43 : case NEGATE_EXPR:
22610 : 43 : {
22611 : 43 : tree _q20 = gimple_assign_rhs1 (_a1);
22612 : 43 : _q20 = do_valueize (valueize, _q20);
22613 : 43 : switch (TREE_CODE (_p1))
22614 : : {
22615 : 30 : case SSA_NAME:
22616 : 30 : if (gimple *_d2 = get_def (valueize, _p1))
22617 : : {
22618 : 30 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22619 : 30 : switch (gimple_assign_rhs_code (_a2))
22620 : : {
22621 : 30 : case NEGATE_EXPR:
22622 : 30 : {
22623 : 30 : tree _q40 = gimple_assign_rhs1 (_a2);
22624 : 30 : _q40 = do_valueize (valueize, _q40);
22625 : 30 : {
22626 : 30 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
22627 : 30 : if (gimple_simplify_289 (res_op, seq, valueize, type, captures, UNGE_EXPR, UNLE_EXPR))
22628 : 30 : return true;
22629 : : }
22630 : 0 : break;
22631 : : }
22632 : : default:;
22633 : : }
22634 : : }
22635 : : break;
22636 : 13 : default:;
22637 : : }
22638 : 13 : if (CONSTANT_CLASS_P (_p1))
22639 : : {
22640 : 13 : {
22641 : 13 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22642 : 13 : if (gimple_simplify_290 (res_op, seq, valueize, type, captures, UNGE_EXPR, UNLE_EXPR))
22643 : 13 : return true;
22644 : : }
22645 : : }
22646 : : break;
22647 : : }
22648 : : default:;
22649 : : }
22650 : : }
22651 : : break;
22652 : 272221 : default:;
22653 : : }
22654 : 272221 : switch (TREE_CODE (_p1))
22655 : : {
22656 : 243120 : case REAL_CST:
22657 : 243120 : {
22658 : 243120 : {
22659 : 243120 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22660 : 243120 : if (gimple_simplify_658 (res_op, seq, valueize, type, captures, UNGE_EXPR))
22661 : 0 : return true;
22662 : : }
22663 : 243120 : break;
22664 : : }
22665 : : default:;
22666 : : }
22667 : : return false;
22668 : : }
22669 : :
22670 : : bool
22671 : 0 : gimple_simplify_TRUTH_ORIF_EXPR (gimple_match_op *res_op, gimple_seq *seq,
22672 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22673 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22674 : : {
22675 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22676 : 0 : switch (TREE_CODE (_p0))
22677 : : {
22678 : 0 : case SSA_NAME:
22679 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
22680 : : {
22681 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22682 : 0 : switch (gimple_assign_rhs_code (_a1))
22683 : : {
22684 : 0 : case LE_EXPR:
22685 : 0 : {
22686 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22687 : 0 : _q20 = do_valueize (valueize, _q20);
22688 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
22689 : 0 : _q21 = do_valueize (valueize, _q21);
22690 : 0 : switch (TREE_CODE (_q20))
22691 : : {
22692 : 0 : case SSA_NAME:
22693 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
22694 : : {
22695 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22696 : 0 : switch (gimple_assign_rhs_code (_a2))
22697 : : {
22698 : 0 : case POINTER_PLUS_EXPR:
22699 : 0 : {
22700 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
22701 : 0 : _q30 = do_valueize (valueize, _q30);
22702 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
22703 : 0 : _q31 = do_valueize (valueize, _q31);
22704 : 0 : switch (TREE_CODE (_q31))
22705 : : {
22706 : 0 : case INTEGER_CST:
22707 : 0 : {
22708 : 0 : switch (TREE_CODE (_p1))
22709 : : {
22710 : 0 : case SSA_NAME:
22711 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
22712 : : {
22713 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
22714 : 0 : switch (gimple_assign_rhs_code (_a3))
22715 : : {
22716 : 0 : case LE_EXPR:
22717 : 0 : {
22718 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
22719 : 0 : _q70 = do_valueize (valueize, _q70);
22720 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
22721 : 0 : _q71 = do_valueize (valueize, _q71);
22722 : 0 : switch (TREE_CODE (_q70))
22723 : : {
22724 : 0 : case SSA_NAME:
22725 : 0 : if (gimple *_d4 = get_def (valueize, _q70))
22726 : : {
22727 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
22728 : 0 : switch (gimple_assign_rhs_code (_a4))
22729 : : {
22730 : 0 : case POINTER_PLUS_EXPR:
22731 : 0 : {
22732 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
22733 : 0 : _q80 = do_valueize (valueize, _q80);
22734 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
22735 : 0 : _q81 = do_valueize (valueize, _q81);
22736 : 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
22737 : : {
22738 : 0 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
22739 : : {
22740 : 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
22741 : : {
22742 : 0 : {
22743 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
22744 : 0 : const enum tree_code cmp = LE_EXPR;
22745 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
22746 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
22747 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
22748 : : )
22749 : : {
22750 : 0 : {
22751 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
22752 : 0 : offset_int rhs = off * 2;
22753 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
22754 : : )
22755 : : {
22756 : 0 : {
22757 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
22758 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
22759 : 0 : if (cmp == LT_EXPR
22760 : : )
22761 : : {
22762 : : gimple_seq *lseq = seq;
22763 : : if (lseq
22764 : : && (!single_use (captures[0])
22765 : : || !single_use (captures[5])))
22766 : : lseq = NULL;
22767 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2852;
22768 : : {
22769 : : res_op->set_op (GT_EXPR, type, 2);
22770 : : {
22771 : : tree _r1;
22772 : : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
22773 : : {
22774 : : tree _o2[2], _r2;
22775 : : _o2[0] = swap_p ? captures[6] : captures[1];
22776 : : _o2[1] = swap_p ? captures[2] : captures[4];
22777 : : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
22778 : : tem_op.ops[0] = _o2[0];
22779 : : tem_op.ops[1] = _o2[1];
22780 : : tem_op.resimplify (lseq, valueize);
22781 : : }
22782 : : if (sizetype != tem_op.type
22783 : : && !useless_type_conversion_p (sizetype, tem_op.type))
22784 : : {
22785 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22786 : : if (!_r1) goto next_after_fail2852;
22787 : : tem_op.set_op (NOP_EXPR, sizetype, 1);
22788 : : tem_op.ops[0] = _r1;
22789 : : tem_op.resimplify (lseq, valueize);
22790 : : }
22791 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22792 : : if (!_r1) goto next_after_fail2852;
22793 : : res_op->ops[0] = _r1;
22794 : : }
22795 : : res_op->ops[1] = rhs_tree;
22796 : : res_op->resimplify (lseq, valueize);
22797 : : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1113, __FILE__, __LINE__, true);
22798 : 0 : return true;
22799 : : }
22800 : : next_after_fail2852:;
22801 : : }
22802 : : else
22803 : : {
22804 : 0 : gimple_seq *lseq = seq;
22805 : 0 : if (lseq
22806 : 0 : && (!single_use (captures[0])
22807 : 0 : || !single_use (captures[5])))
22808 : 0 : lseq = NULL;
22809 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2853;
22810 : 0 : {
22811 : 0 : res_op->set_op (GT_EXPR, type, 2);
22812 : 0 : {
22813 : 0 : tree _r1;
22814 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
22815 : 0 : {
22816 : 0 : tree _o2[2], _r2;
22817 : 0 : {
22818 : 0 : tree _o3[2], _r3;
22819 : 0 : _o3[0] = swap_p ? captures[4] : captures[2];
22820 : 0 : _o3[1] = wide_int_to_tree (sizetype, off);
22821 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
22822 : 0 : tem_op.resimplify (lseq, valueize);
22823 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
22824 : 0 : if (!_r3) goto next_after_fail2853;
22825 : 0 : _o2[0] = _r3;
22826 : : }
22827 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
22828 : 0 : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
22829 : 0 : tem_op.ops[0] = _o2[0];
22830 : 0 : tem_op.ops[1] = _o2[1];
22831 : 0 : tem_op.resimplify (lseq, valueize);
22832 : : }
22833 : 0 : if (sizetype != tem_op.type
22834 : 0 : && !useless_type_conversion_p (sizetype, tem_op.type))
22835 : : {
22836 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22837 : 0 : if (!_r1) goto next_after_fail2853;
22838 : 0 : tem_op.set_op (NOP_EXPR, sizetype, 1);
22839 : 0 : tem_op.ops[0] = _r1;
22840 : 0 : tem_op.resimplify (lseq, valueize);
22841 : : }
22842 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22843 : 0 : if (!_r1) goto next_after_fail2853;
22844 : 0 : res_op->ops[0] = _r1;
22845 : : }
22846 : 0 : res_op->ops[1] = rhs_tree;
22847 : 0 : res_op->resimplify (lseq, valueize);
22848 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
22849 : 0 : return true;
22850 : : }
22851 : 0 : next_after_fail2853:;
22852 : : }
22853 : : }
22854 : : }
22855 : : }
22856 : : }
22857 : : }
22858 : : }
22859 : : }
22860 : : }
22861 : : break;
22862 : : }
22863 : : default:;
22864 : : }
22865 : : }
22866 : : break;
22867 : : default:;
22868 : : }
22869 : : break;
22870 : : }
22871 : 0 : case GE_EXPR:
22872 : 0 : {
22873 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
22874 : 0 : _q70 = do_valueize (valueize, _q70);
22875 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
22876 : 0 : _q71 = do_valueize (valueize, _q71);
22877 : 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
22878 : : {
22879 : 0 : switch (TREE_CODE (_q71))
22880 : : {
22881 : 0 : case SSA_NAME:
22882 : 0 : if (gimple *_d4 = get_def (valueize, _q71))
22883 : : {
22884 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
22885 : 0 : switch (gimple_assign_rhs_code (_a4))
22886 : : {
22887 : 0 : case POINTER_PLUS_EXPR:
22888 : 0 : {
22889 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
22890 : 0 : _q90 = do_valueize (valueize, _q90);
22891 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
22892 : 0 : _q91 = do_valueize (valueize, _q91);
22893 : 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
22894 : : {
22895 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
22896 : : {
22897 : 0 : {
22898 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
22899 : 0 : const enum tree_code cmp = LE_EXPR;
22900 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
22901 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
22902 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
22903 : : )
22904 : : {
22905 : 0 : {
22906 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
22907 : 0 : offset_int rhs = off * 2;
22908 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
22909 : : )
22910 : : {
22911 : 0 : {
22912 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
22913 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
22914 : 0 : if (cmp == LT_EXPR
22915 : : )
22916 : : {
22917 : : gimple_seq *lseq = seq;
22918 : : if (lseq
22919 : : && (!single_use (captures[0])
22920 : : || !single_use (captures[5])))
22921 : : lseq = NULL;
22922 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2854;
22923 : : {
22924 : : res_op->set_op (GT_EXPR, type, 2);
22925 : : {
22926 : : tree _r1;
22927 : : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
22928 : : {
22929 : : tree _o2[2], _r2;
22930 : : _o2[0] = swap_p ? captures[6] : captures[1];
22931 : : _o2[1] = swap_p ? captures[2] : captures[4];
22932 : : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
22933 : : tem_op.ops[0] = _o2[0];
22934 : : tem_op.ops[1] = _o2[1];
22935 : : tem_op.resimplify (lseq, valueize);
22936 : : }
22937 : : if (sizetype != tem_op.type
22938 : : && !useless_type_conversion_p (sizetype, tem_op.type))
22939 : : {
22940 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22941 : : if (!_r1) goto next_after_fail2854;
22942 : : tem_op.set_op (NOP_EXPR, sizetype, 1);
22943 : : tem_op.ops[0] = _r1;
22944 : : tem_op.resimplify (lseq, valueize);
22945 : : }
22946 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22947 : : if (!_r1) goto next_after_fail2854;
22948 : : res_op->ops[0] = _r1;
22949 : : }
22950 : : res_op->ops[1] = rhs_tree;
22951 : : res_op->resimplify (lseq, valueize);
22952 : : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1113, __FILE__, __LINE__, true);
22953 : 0 : return true;
22954 : : }
22955 : : next_after_fail2854:;
22956 : : }
22957 : : else
22958 : : {
22959 : 0 : gimple_seq *lseq = seq;
22960 : 0 : if (lseq
22961 : 0 : && (!single_use (captures[0])
22962 : 0 : || !single_use (captures[5])))
22963 : 0 : lseq = NULL;
22964 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2855;
22965 : 0 : {
22966 : 0 : res_op->set_op (GT_EXPR, type, 2);
22967 : 0 : {
22968 : 0 : tree _r1;
22969 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
22970 : 0 : {
22971 : 0 : tree _o2[2], _r2;
22972 : 0 : {
22973 : 0 : tree _o3[2], _r3;
22974 : 0 : _o3[0] = swap_p ? captures[4] : captures[2];
22975 : 0 : _o3[1] = wide_int_to_tree (sizetype, off);
22976 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
22977 : 0 : tem_op.resimplify (lseq, valueize);
22978 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
22979 : 0 : if (!_r3) goto next_after_fail2855;
22980 : 0 : _o2[0] = _r3;
22981 : : }
22982 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
22983 : 0 : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
22984 : 0 : tem_op.ops[0] = _o2[0];
22985 : 0 : tem_op.ops[1] = _o2[1];
22986 : 0 : tem_op.resimplify (lseq, valueize);
22987 : : }
22988 : 0 : if (sizetype != tem_op.type
22989 : 0 : && !useless_type_conversion_p (sizetype, tem_op.type))
22990 : : {
22991 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22992 : 0 : if (!_r1) goto next_after_fail2855;
22993 : 0 : tem_op.set_op (NOP_EXPR, sizetype, 1);
22994 : 0 : tem_op.ops[0] = _r1;
22995 : 0 : tem_op.resimplify (lseq, valueize);
22996 : : }
22997 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22998 : 0 : if (!_r1) goto next_after_fail2855;
22999 : 0 : res_op->ops[0] = _r1;
23000 : : }
23001 : 0 : res_op->ops[1] = rhs_tree;
23002 : 0 : res_op->resimplify (lseq, valueize);
23003 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
23004 : 0 : return true;
23005 : : }
23006 : 0 : next_after_fail2855:;
23007 : : }
23008 : : }
23009 : : }
23010 : : }
23011 : : }
23012 : : }
23013 : : }
23014 : : }
23015 : : break;
23016 : : }
23017 : : default:;
23018 : : }
23019 : : }
23020 : : break;
23021 : : default:;
23022 : : }
23023 : : }
23024 : : break;
23025 : : }
23026 : : default:;
23027 : : }
23028 : : }
23029 : : break;
23030 : : default:;
23031 : : }
23032 : : break;
23033 : : }
23034 : : default:;
23035 : : }
23036 : : break;
23037 : : }
23038 : : default:;
23039 : : }
23040 : : }
23041 : : break;
23042 : : default:;
23043 : : }
23044 : : break;
23045 : : }
23046 : 0 : case LT_EXPR:
23047 : 0 : {
23048 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23049 : 0 : _q20 = do_valueize (valueize, _q20);
23050 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
23051 : 0 : _q21 = do_valueize (valueize, _q21);
23052 : 0 : switch (TREE_CODE (_q20))
23053 : : {
23054 : 0 : case SSA_NAME:
23055 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
23056 : : {
23057 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23058 : 0 : switch (gimple_assign_rhs_code (_a2))
23059 : : {
23060 : 0 : case POINTER_PLUS_EXPR:
23061 : 0 : {
23062 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
23063 : 0 : _q30 = do_valueize (valueize, _q30);
23064 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
23065 : 0 : _q31 = do_valueize (valueize, _q31);
23066 : 0 : switch (TREE_CODE (_q31))
23067 : : {
23068 : 0 : case INTEGER_CST:
23069 : 0 : {
23070 : 0 : switch (TREE_CODE (_p1))
23071 : : {
23072 : 0 : case SSA_NAME:
23073 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
23074 : : {
23075 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
23076 : 0 : switch (gimple_assign_rhs_code (_a3))
23077 : : {
23078 : 0 : case LT_EXPR:
23079 : 0 : {
23080 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
23081 : 0 : _q70 = do_valueize (valueize, _q70);
23082 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
23083 : 0 : _q71 = do_valueize (valueize, _q71);
23084 : 0 : switch (TREE_CODE (_q70))
23085 : : {
23086 : 0 : case SSA_NAME:
23087 : 0 : if (gimple *_d4 = get_def (valueize, _q70))
23088 : : {
23089 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
23090 : 0 : switch (gimple_assign_rhs_code (_a4))
23091 : : {
23092 : 0 : case POINTER_PLUS_EXPR:
23093 : 0 : {
23094 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
23095 : 0 : _q80 = do_valueize (valueize, _q80);
23096 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
23097 : 0 : _q81 = do_valueize (valueize, _q81);
23098 : 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
23099 : : {
23100 : 0 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
23101 : : {
23102 : 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
23103 : : {
23104 : 0 : {
23105 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
23106 : 0 : const enum tree_code cmp = LT_EXPR;
23107 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
23108 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
23109 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
23110 : : )
23111 : : {
23112 : 0 : {
23113 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
23114 : 0 : offset_int rhs = off * 2;
23115 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
23116 : : )
23117 : : {
23118 : 0 : {
23119 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
23120 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
23121 : 0 : if (cmp == LT_EXPR
23122 : : )
23123 : : {
23124 : 0 : gimple_seq *lseq = seq;
23125 : 0 : if (lseq
23126 : 0 : && (!single_use (captures[0])
23127 : 0 : || !single_use (captures[5])))
23128 : 0 : lseq = NULL;
23129 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2856;
23130 : 0 : {
23131 : 0 : res_op->set_op (GT_EXPR, type, 2);
23132 : 0 : {
23133 : 0 : tree _r1;
23134 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23135 : 0 : {
23136 : 0 : tree _o2[2], _r2;
23137 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
23138 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
23139 : 0 : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23140 : 0 : tem_op.ops[0] = _o2[0];
23141 : 0 : tem_op.ops[1] = _o2[1];
23142 : 0 : tem_op.resimplify (lseq, valueize);
23143 : : }
23144 : 0 : if (sizetype != tem_op.type
23145 : 0 : && !useless_type_conversion_p (sizetype, tem_op.type))
23146 : : {
23147 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23148 : 0 : if (!_r1) goto next_after_fail2856;
23149 : 0 : tem_op.set_op (NOP_EXPR, sizetype, 1);
23150 : 0 : tem_op.ops[0] = _r1;
23151 : 0 : tem_op.resimplify (lseq, valueize);
23152 : : }
23153 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23154 : 0 : if (!_r1) goto next_after_fail2856;
23155 : 0 : res_op->ops[0] = _r1;
23156 : : }
23157 : 0 : res_op->ops[1] = rhs_tree;
23158 : 0 : res_op->resimplify (lseq, valueize);
23159 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1113, __FILE__, __LINE__, true);
23160 : 0 : return true;
23161 : : }
23162 : 0 : next_after_fail2856:;
23163 : : }
23164 : : else
23165 : : {
23166 : : gimple_seq *lseq = seq;
23167 : : if (lseq
23168 : : && (!single_use (captures[0])
23169 : : || !single_use (captures[5])))
23170 : : lseq = NULL;
23171 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2857;
23172 : : {
23173 : : res_op->set_op (GT_EXPR, type, 2);
23174 : : {
23175 : : tree _r1;
23176 : : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23177 : : {
23178 : : tree _o2[2], _r2;
23179 : : {
23180 : : tree _o3[2], _r3;
23181 : : _o3[0] = swap_p ? captures[4] : captures[2];
23182 : : _o3[1] = wide_int_to_tree (sizetype, off);
23183 : : gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
23184 : : tem_op.resimplify (lseq, valueize);
23185 : : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
23186 : : if (!_r3) goto next_after_fail2857;
23187 : : _o2[0] = _r3;
23188 : : }
23189 : : _o2[1] = swap_p ? captures[2] : captures[4];
23190 : : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23191 : : tem_op.ops[0] = _o2[0];
23192 : : tem_op.ops[1] = _o2[1];
23193 : : tem_op.resimplify (lseq, valueize);
23194 : : }
23195 : : if (sizetype != tem_op.type
23196 : : && !useless_type_conversion_p (sizetype, tem_op.type))
23197 : : {
23198 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23199 : : if (!_r1) goto next_after_fail2857;
23200 : : tem_op.set_op (NOP_EXPR, sizetype, 1);
23201 : : tem_op.ops[0] = _r1;
23202 : : tem_op.resimplify (lseq, valueize);
23203 : : }
23204 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23205 : : if (!_r1) goto next_after_fail2857;
23206 : : res_op->ops[0] = _r1;
23207 : : }
23208 : : res_op->ops[1] = rhs_tree;
23209 : : res_op->resimplify (lseq, valueize);
23210 : : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
23211 : : return true;
23212 : : }
23213 : : next_after_fail2857:;
23214 : : }
23215 : : }
23216 : : }
23217 : : }
23218 : : }
23219 : : }
23220 : : }
23221 : : }
23222 : : }
23223 : : break;
23224 : : }
23225 : : default:;
23226 : : }
23227 : : }
23228 : : break;
23229 : : default:;
23230 : : }
23231 : : break;
23232 : : }
23233 : 0 : case GT_EXPR:
23234 : 0 : {
23235 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
23236 : 0 : _q70 = do_valueize (valueize, _q70);
23237 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
23238 : 0 : _q71 = do_valueize (valueize, _q71);
23239 : 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
23240 : : {
23241 : 0 : switch (TREE_CODE (_q71))
23242 : : {
23243 : 0 : case SSA_NAME:
23244 : 0 : if (gimple *_d4 = get_def (valueize, _q71))
23245 : : {
23246 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
23247 : 0 : switch (gimple_assign_rhs_code (_a4))
23248 : : {
23249 : 0 : case POINTER_PLUS_EXPR:
23250 : 0 : {
23251 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
23252 : 0 : _q90 = do_valueize (valueize, _q90);
23253 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
23254 : 0 : _q91 = do_valueize (valueize, _q91);
23255 : 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
23256 : : {
23257 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
23258 : : {
23259 : 0 : {
23260 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
23261 : 0 : const enum tree_code cmp = LT_EXPR;
23262 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
23263 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
23264 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
23265 : : )
23266 : : {
23267 : 0 : {
23268 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
23269 : 0 : offset_int rhs = off * 2;
23270 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
23271 : : )
23272 : : {
23273 : 0 : {
23274 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
23275 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
23276 : 0 : if (cmp == LT_EXPR
23277 : : )
23278 : : {
23279 : 0 : gimple_seq *lseq = seq;
23280 : 0 : if (lseq
23281 : 0 : && (!single_use (captures[0])
23282 : 0 : || !single_use (captures[5])))
23283 : 0 : lseq = NULL;
23284 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2858;
23285 : 0 : {
23286 : 0 : res_op->set_op (GT_EXPR, type, 2);
23287 : 0 : {
23288 : 0 : tree _r1;
23289 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23290 : 0 : {
23291 : 0 : tree _o2[2], _r2;
23292 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
23293 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
23294 : 0 : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23295 : 0 : tem_op.ops[0] = _o2[0];
23296 : 0 : tem_op.ops[1] = _o2[1];
23297 : 0 : tem_op.resimplify (lseq, valueize);
23298 : : }
23299 : 0 : if (sizetype != tem_op.type
23300 : 0 : && !useless_type_conversion_p (sizetype, tem_op.type))
23301 : : {
23302 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23303 : 0 : if (!_r1) goto next_after_fail2858;
23304 : 0 : tem_op.set_op (NOP_EXPR, sizetype, 1);
23305 : 0 : tem_op.ops[0] = _r1;
23306 : 0 : tem_op.resimplify (lseq, valueize);
23307 : : }
23308 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23309 : 0 : if (!_r1) goto next_after_fail2858;
23310 : 0 : res_op->ops[0] = _r1;
23311 : : }
23312 : 0 : res_op->ops[1] = rhs_tree;
23313 : 0 : res_op->resimplify (lseq, valueize);
23314 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1113, __FILE__, __LINE__, true);
23315 : 0 : return true;
23316 : : }
23317 : 0 : next_after_fail2858:;
23318 : : }
23319 : : else
23320 : : {
23321 : : gimple_seq *lseq = seq;
23322 : : if (lseq
23323 : : && (!single_use (captures[0])
23324 : : || !single_use (captures[5])))
23325 : : lseq = NULL;
23326 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2859;
23327 : : {
23328 : : res_op->set_op (GT_EXPR, type, 2);
23329 : : {
23330 : : tree _r1;
23331 : : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23332 : : {
23333 : : tree _o2[2], _r2;
23334 : : {
23335 : : tree _o3[2], _r3;
23336 : : _o3[0] = swap_p ? captures[4] : captures[2];
23337 : : _o3[1] = wide_int_to_tree (sizetype, off);
23338 : : gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
23339 : : tem_op.resimplify (lseq, valueize);
23340 : : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
23341 : : if (!_r3) goto next_after_fail2859;
23342 : : _o2[0] = _r3;
23343 : : }
23344 : : _o2[1] = swap_p ? captures[2] : captures[4];
23345 : : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23346 : : tem_op.ops[0] = _o2[0];
23347 : : tem_op.ops[1] = _o2[1];
23348 : : tem_op.resimplify (lseq, valueize);
23349 : : }
23350 : : if (sizetype != tem_op.type
23351 : : && !useless_type_conversion_p (sizetype, tem_op.type))
23352 : : {
23353 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23354 : : if (!_r1) goto next_after_fail2859;
23355 : : tem_op.set_op (NOP_EXPR, sizetype, 1);
23356 : : tem_op.ops[0] = _r1;
23357 : : tem_op.resimplify (lseq, valueize);
23358 : : }
23359 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23360 : : if (!_r1) goto next_after_fail2859;
23361 : : res_op->ops[0] = _r1;
23362 : : }
23363 : : res_op->ops[1] = rhs_tree;
23364 : : res_op->resimplify (lseq, valueize);
23365 : : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
23366 : : return true;
23367 : : }
23368 : : next_after_fail2859:;
23369 : : }
23370 : : }
23371 : : }
23372 : : }
23373 : : }
23374 : : }
23375 : : }
23376 : : }
23377 : : break;
23378 : : }
23379 : : default:;
23380 : : }
23381 : : }
23382 : : break;
23383 : : default:;
23384 : : }
23385 : : }
23386 : : break;
23387 : : }
23388 : : default:;
23389 : : }
23390 : : }
23391 : : break;
23392 : : default:;
23393 : : }
23394 : : break;
23395 : : }
23396 : : default:;
23397 : : }
23398 : : break;
23399 : : }
23400 : : default:;
23401 : : }
23402 : : }
23403 : : break;
23404 : : default:;
23405 : : }
23406 : : break;
23407 : : }
23408 : 0 : case GE_EXPR:
23409 : 0 : {
23410 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23411 : 0 : _q20 = do_valueize (valueize, _q20);
23412 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
23413 : 0 : _q21 = do_valueize (valueize, _q21);
23414 : 0 : switch (TREE_CODE (_q21))
23415 : : {
23416 : 0 : case SSA_NAME:
23417 : 0 : if (gimple *_d2 = get_def (valueize, _q21))
23418 : : {
23419 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23420 : 0 : switch (gimple_assign_rhs_code (_a2))
23421 : : {
23422 : 0 : case POINTER_PLUS_EXPR:
23423 : 0 : {
23424 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
23425 : 0 : _q40 = do_valueize (valueize, _q40);
23426 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
23427 : 0 : _q41 = do_valueize (valueize, _q41);
23428 : 0 : switch (TREE_CODE (_q41))
23429 : : {
23430 : 0 : case INTEGER_CST:
23431 : 0 : {
23432 : 0 : switch (TREE_CODE (_p1))
23433 : : {
23434 : 0 : case SSA_NAME:
23435 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
23436 : : {
23437 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
23438 : 0 : switch (gimple_assign_rhs_code (_a3))
23439 : : {
23440 : 0 : case LE_EXPR:
23441 : 0 : {
23442 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
23443 : 0 : _q70 = do_valueize (valueize, _q70);
23444 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
23445 : 0 : _q71 = do_valueize (valueize, _q71);
23446 : 0 : switch (TREE_CODE (_q70))
23447 : : {
23448 : 0 : case SSA_NAME:
23449 : 0 : if (gimple *_d4 = get_def (valueize, _q70))
23450 : : {
23451 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
23452 : 0 : switch (gimple_assign_rhs_code (_a4))
23453 : : {
23454 : 0 : case POINTER_PLUS_EXPR:
23455 : 0 : {
23456 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
23457 : 0 : _q80 = do_valueize (valueize, _q80);
23458 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
23459 : 0 : _q81 = do_valueize (valueize, _q81);
23460 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
23461 : : {
23462 : 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
23463 : : {
23464 : 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
23465 : : {
23466 : 0 : {
23467 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
23468 : 0 : const enum tree_code cmp = LE_EXPR;
23469 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
23470 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
23471 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
23472 : : )
23473 : : {
23474 : 0 : {
23475 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
23476 : 0 : offset_int rhs = off * 2;
23477 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
23478 : : )
23479 : : {
23480 : 0 : {
23481 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
23482 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
23483 : 0 : if (cmp == LT_EXPR
23484 : : )
23485 : : {
23486 : : gimple_seq *lseq = seq;
23487 : : if (lseq
23488 : : && (!single_use (captures[0])
23489 : : || !single_use (captures[5])))
23490 : : lseq = NULL;
23491 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2860;
23492 : : {
23493 : : res_op->set_op (GT_EXPR, type, 2);
23494 : : {
23495 : : tree _r1;
23496 : : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23497 : : {
23498 : : tree _o2[2], _r2;
23499 : : _o2[0] = swap_p ? captures[6] : captures[1];
23500 : : _o2[1] = swap_p ? captures[2] : captures[4];
23501 : : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23502 : : tem_op.ops[0] = _o2[0];
23503 : : tem_op.ops[1] = _o2[1];
23504 : : tem_op.resimplify (lseq, valueize);
23505 : : }
23506 : : if (sizetype != tem_op.type
23507 : : && !useless_type_conversion_p (sizetype, tem_op.type))
23508 : : {
23509 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23510 : : if (!_r1) goto next_after_fail2860;
23511 : : tem_op.set_op (NOP_EXPR, sizetype, 1);
23512 : : tem_op.ops[0] = _r1;
23513 : : tem_op.resimplify (lseq, valueize);
23514 : : }
23515 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23516 : : if (!_r1) goto next_after_fail2860;
23517 : : res_op->ops[0] = _r1;
23518 : : }
23519 : : res_op->ops[1] = rhs_tree;
23520 : : res_op->resimplify (lseq, valueize);
23521 : : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1113, __FILE__, __LINE__, true);
23522 : 0 : return true;
23523 : : }
23524 : : next_after_fail2860:;
23525 : : }
23526 : : else
23527 : : {
23528 : 0 : gimple_seq *lseq = seq;
23529 : 0 : if (lseq
23530 : 0 : && (!single_use (captures[0])
23531 : 0 : || !single_use (captures[5])))
23532 : 0 : lseq = NULL;
23533 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2861;
23534 : 0 : {
23535 : 0 : res_op->set_op (GT_EXPR, type, 2);
23536 : 0 : {
23537 : 0 : tree _r1;
23538 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23539 : 0 : {
23540 : 0 : tree _o2[2], _r2;
23541 : 0 : {
23542 : 0 : tree _o3[2], _r3;
23543 : 0 : _o3[0] = swap_p ? captures[4] : captures[2];
23544 : 0 : _o3[1] = wide_int_to_tree (sizetype, off);
23545 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
23546 : 0 : tem_op.resimplify (lseq, valueize);
23547 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
23548 : 0 : if (!_r3) goto next_after_fail2861;
23549 : 0 : _o2[0] = _r3;
23550 : : }
23551 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
23552 : 0 : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23553 : 0 : tem_op.ops[0] = _o2[0];
23554 : 0 : tem_op.ops[1] = _o2[1];
23555 : 0 : tem_op.resimplify (lseq, valueize);
23556 : : }
23557 : 0 : if (sizetype != tem_op.type
23558 : 0 : && !useless_type_conversion_p (sizetype, tem_op.type))
23559 : : {
23560 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23561 : 0 : if (!_r1) goto next_after_fail2861;
23562 : 0 : tem_op.set_op (NOP_EXPR, sizetype, 1);
23563 : 0 : tem_op.ops[0] = _r1;
23564 : 0 : tem_op.resimplify (lseq, valueize);
23565 : : }
23566 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23567 : 0 : if (!_r1) goto next_after_fail2861;
23568 : 0 : res_op->ops[0] = _r1;
23569 : : }
23570 : 0 : res_op->ops[1] = rhs_tree;
23571 : 0 : res_op->resimplify (lseq, valueize);
23572 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
23573 : 0 : return true;
23574 : : }
23575 : 0 : next_after_fail2861:;
23576 : : }
23577 : : }
23578 : : }
23579 : : }
23580 : : }
23581 : : }
23582 : : }
23583 : : }
23584 : : }
23585 : : break;
23586 : : }
23587 : : default:;
23588 : : }
23589 : : }
23590 : : break;
23591 : : default:;
23592 : : }
23593 : : break;
23594 : : }
23595 : 0 : case GE_EXPR:
23596 : 0 : {
23597 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
23598 : 0 : _q70 = do_valueize (valueize, _q70);
23599 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
23600 : 0 : _q71 = do_valueize (valueize, _q71);
23601 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
23602 : : {
23603 : 0 : switch (TREE_CODE (_q71))
23604 : : {
23605 : 0 : case SSA_NAME:
23606 : 0 : if (gimple *_d4 = get_def (valueize, _q71))
23607 : : {
23608 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
23609 : 0 : switch (gimple_assign_rhs_code (_a4))
23610 : : {
23611 : 0 : case POINTER_PLUS_EXPR:
23612 : 0 : {
23613 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
23614 : 0 : _q90 = do_valueize (valueize, _q90);
23615 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
23616 : 0 : _q91 = do_valueize (valueize, _q91);
23617 : 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
23618 : : {
23619 : 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
23620 : : {
23621 : 0 : {
23622 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
23623 : 0 : const enum tree_code cmp = LE_EXPR;
23624 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
23625 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
23626 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
23627 : : )
23628 : : {
23629 : 0 : {
23630 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
23631 : 0 : offset_int rhs = off * 2;
23632 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
23633 : : )
23634 : : {
23635 : 0 : {
23636 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
23637 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
23638 : 0 : if (cmp == LT_EXPR
23639 : : )
23640 : : {
23641 : : gimple_seq *lseq = seq;
23642 : : if (lseq
23643 : : && (!single_use (captures[0])
23644 : : || !single_use (captures[5])))
23645 : : lseq = NULL;
23646 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2862;
23647 : : {
23648 : : res_op->set_op (GT_EXPR, type, 2);
23649 : : {
23650 : : tree _r1;
23651 : : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23652 : : {
23653 : : tree _o2[2], _r2;
23654 : : _o2[0] = swap_p ? captures[6] : captures[1];
23655 : : _o2[1] = swap_p ? captures[2] : captures[4];
23656 : : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23657 : : tem_op.ops[0] = _o2[0];
23658 : : tem_op.ops[1] = _o2[1];
23659 : : tem_op.resimplify (lseq, valueize);
23660 : : }
23661 : : if (sizetype != tem_op.type
23662 : : && !useless_type_conversion_p (sizetype, tem_op.type))
23663 : : {
23664 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23665 : : if (!_r1) goto next_after_fail2862;
23666 : : tem_op.set_op (NOP_EXPR, sizetype, 1);
23667 : : tem_op.ops[0] = _r1;
23668 : : tem_op.resimplify (lseq, valueize);
23669 : : }
23670 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23671 : : if (!_r1) goto next_after_fail2862;
23672 : : res_op->ops[0] = _r1;
23673 : : }
23674 : : res_op->ops[1] = rhs_tree;
23675 : : res_op->resimplify (lseq, valueize);
23676 : : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1113, __FILE__, __LINE__, true);
23677 : 0 : return true;
23678 : : }
23679 : : next_after_fail2862:;
23680 : : }
23681 : : else
23682 : : {
23683 : 0 : gimple_seq *lseq = seq;
23684 : 0 : if (lseq
23685 : 0 : && (!single_use (captures[0])
23686 : 0 : || !single_use (captures[5])))
23687 : 0 : lseq = NULL;
23688 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2863;
23689 : 0 : {
23690 : 0 : res_op->set_op (GT_EXPR, type, 2);
23691 : 0 : {
23692 : 0 : tree _r1;
23693 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23694 : 0 : {
23695 : 0 : tree _o2[2], _r2;
23696 : 0 : {
23697 : 0 : tree _o3[2], _r3;
23698 : 0 : _o3[0] = swap_p ? captures[4] : captures[2];
23699 : 0 : _o3[1] = wide_int_to_tree (sizetype, off);
23700 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
23701 : 0 : tem_op.resimplify (lseq, valueize);
23702 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
23703 : 0 : if (!_r3) goto next_after_fail2863;
23704 : 0 : _o2[0] = _r3;
23705 : : }
23706 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
23707 : 0 : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23708 : 0 : tem_op.ops[0] = _o2[0];
23709 : 0 : tem_op.ops[1] = _o2[1];
23710 : 0 : tem_op.resimplify (lseq, valueize);
23711 : : }
23712 : 0 : if (sizetype != tem_op.type
23713 : 0 : && !useless_type_conversion_p (sizetype, tem_op.type))
23714 : : {
23715 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23716 : 0 : if (!_r1) goto next_after_fail2863;
23717 : 0 : tem_op.set_op (NOP_EXPR, sizetype, 1);
23718 : 0 : tem_op.ops[0] = _r1;
23719 : 0 : tem_op.resimplify (lseq, valueize);
23720 : : }
23721 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23722 : 0 : if (!_r1) goto next_after_fail2863;
23723 : 0 : res_op->ops[0] = _r1;
23724 : : }
23725 : 0 : res_op->ops[1] = rhs_tree;
23726 : 0 : res_op->resimplify (lseq, valueize);
23727 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
23728 : 0 : return true;
23729 : : }
23730 : 0 : next_after_fail2863:;
23731 : : }
23732 : : }
23733 : : }
23734 : : }
23735 : : }
23736 : : }
23737 : : }
23738 : : }
23739 : : break;
23740 : : }
23741 : : default:;
23742 : : }
23743 : : }
23744 : : break;
23745 : : default:;
23746 : : }
23747 : : }
23748 : : break;
23749 : : }
23750 : : default:;
23751 : : }
23752 : : }
23753 : : break;
23754 : : default:;
23755 : : }
23756 : : break;
23757 : : }
23758 : : default:;
23759 : : }
23760 : : break;
23761 : : }
23762 : : default:;
23763 : : }
23764 : : }
23765 : : break;
23766 : : default:;
23767 : : }
23768 : : break;
23769 : : }
23770 : 0 : case GT_EXPR:
23771 : 0 : {
23772 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23773 : 0 : _q20 = do_valueize (valueize, _q20);
23774 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
23775 : 0 : _q21 = do_valueize (valueize, _q21);
23776 : 0 : switch (TREE_CODE (_q21))
23777 : : {
23778 : 0 : case SSA_NAME:
23779 : 0 : if (gimple *_d2 = get_def (valueize, _q21))
23780 : : {
23781 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23782 : 0 : switch (gimple_assign_rhs_code (_a2))
23783 : : {
23784 : 0 : case POINTER_PLUS_EXPR:
23785 : 0 : {
23786 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
23787 : 0 : _q40 = do_valueize (valueize, _q40);
23788 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
23789 : 0 : _q41 = do_valueize (valueize, _q41);
23790 : 0 : switch (TREE_CODE (_q41))
23791 : : {
23792 : 0 : case INTEGER_CST:
23793 : 0 : {
23794 : 0 : switch (TREE_CODE (_p1))
23795 : : {
23796 : 0 : case SSA_NAME:
23797 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
23798 : : {
23799 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
23800 : 0 : switch (gimple_assign_rhs_code (_a3))
23801 : : {
23802 : 0 : case LT_EXPR:
23803 : 0 : {
23804 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
23805 : 0 : _q70 = do_valueize (valueize, _q70);
23806 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
23807 : 0 : _q71 = do_valueize (valueize, _q71);
23808 : 0 : switch (TREE_CODE (_q70))
23809 : : {
23810 : 0 : case SSA_NAME:
23811 : 0 : if (gimple *_d4 = get_def (valueize, _q70))
23812 : : {
23813 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
23814 : 0 : switch (gimple_assign_rhs_code (_a4))
23815 : : {
23816 : 0 : case POINTER_PLUS_EXPR:
23817 : 0 : {
23818 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
23819 : 0 : _q80 = do_valueize (valueize, _q80);
23820 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
23821 : 0 : _q81 = do_valueize (valueize, _q81);
23822 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
23823 : : {
23824 : 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
23825 : : {
23826 : 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
23827 : : {
23828 : 0 : {
23829 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
23830 : 0 : const enum tree_code cmp = LT_EXPR;
23831 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
23832 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
23833 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
23834 : : )
23835 : : {
23836 : 0 : {
23837 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
23838 : 0 : offset_int rhs = off * 2;
23839 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
23840 : : )
23841 : : {
23842 : 0 : {
23843 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
23844 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
23845 : 0 : if (cmp == LT_EXPR
23846 : : )
23847 : : {
23848 : 0 : gimple_seq *lseq = seq;
23849 : 0 : if (lseq
23850 : 0 : && (!single_use (captures[0])
23851 : 0 : || !single_use (captures[5])))
23852 : 0 : lseq = NULL;
23853 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2864;
23854 : 0 : {
23855 : 0 : res_op->set_op (GT_EXPR, type, 2);
23856 : 0 : {
23857 : 0 : tree _r1;
23858 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23859 : 0 : {
23860 : 0 : tree _o2[2], _r2;
23861 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
23862 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
23863 : 0 : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23864 : 0 : tem_op.ops[0] = _o2[0];
23865 : 0 : tem_op.ops[1] = _o2[1];
23866 : 0 : tem_op.resimplify (lseq, valueize);
23867 : : }
23868 : 0 : if (sizetype != tem_op.type
23869 : 0 : && !useless_type_conversion_p (sizetype, tem_op.type))
23870 : : {
23871 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23872 : 0 : if (!_r1) goto next_after_fail2864;
23873 : 0 : tem_op.set_op (NOP_EXPR, sizetype, 1);
23874 : 0 : tem_op.ops[0] = _r1;
23875 : 0 : tem_op.resimplify (lseq, valueize);
23876 : : }
23877 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23878 : 0 : if (!_r1) goto next_after_fail2864;
23879 : 0 : res_op->ops[0] = _r1;
23880 : : }
23881 : 0 : res_op->ops[1] = rhs_tree;
23882 : 0 : res_op->resimplify (lseq, valueize);
23883 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1113, __FILE__, __LINE__, true);
23884 : 0 : return true;
23885 : : }
23886 : 0 : next_after_fail2864:;
23887 : : }
23888 : : else
23889 : : {
23890 : : gimple_seq *lseq = seq;
23891 : : if (lseq
23892 : : && (!single_use (captures[0])
23893 : : || !single_use (captures[5])))
23894 : : lseq = NULL;
23895 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2865;
23896 : : {
23897 : : res_op->set_op (GT_EXPR, type, 2);
23898 : : {
23899 : : tree _r1;
23900 : : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
23901 : : {
23902 : : tree _o2[2], _r2;
23903 : : {
23904 : : tree _o3[2], _r3;
23905 : : _o3[0] = swap_p ? captures[4] : captures[2];
23906 : : _o3[1] = wide_int_to_tree (sizetype, off);
23907 : : gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
23908 : : tem_op.resimplify (lseq, valueize);
23909 : : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
23910 : : if (!_r3) goto next_after_fail2865;
23911 : : _o2[0] = _r3;
23912 : : }
23913 : : _o2[1] = swap_p ? captures[2] : captures[4];
23914 : : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
23915 : : tem_op.ops[0] = _o2[0];
23916 : : tem_op.ops[1] = _o2[1];
23917 : : tem_op.resimplify (lseq, valueize);
23918 : : }
23919 : : if (sizetype != tem_op.type
23920 : : && !useless_type_conversion_p (sizetype, tem_op.type))
23921 : : {
23922 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23923 : : if (!_r1) goto next_after_fail2865;
23924 : : tem_op.set_op (NOP_EXPR, sizetype, 1);
23925 : : tem_op.ops[0] = _r1;
23926 : : tem_op.resimplify (lseq, valueize);
23927 : : }
23928 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23929 : : if (!_r1) goto next_after_fail2865;
23930 : : res_op->ops[0] = _r1;
23931 : : }
23932 : : res_op->ops[1] = rhs_tree;
23933 : : res_op->resimplify (lseq, valueize);
23934 : : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
23935 : : return true;
23936 : : }
23937 : : next_after_fail2865:;
23938 : : }
23939 : : }
23940 : : }
23941 : : }
23942 : : }
23943 : : }
23944 : : }
23945 : : }
23946 : : }
23947 : : break;
23948 : : }
23949 : : default:;
23950 : : }
23951 : : }
23952 : : break;
23953 : : default:;
23954 : : }
23955 : : break;
23956 : : }
23957 : 0 : case GT_EXPR:
23958 : 0 : {
23959 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
23960 : 0 : _q70 = do_valueize (valueize, _q70);
23961 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
23962 : 0 : _q71 = do_valueize (valueize, _q71);
23963 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
23964 : : {
23965 : 0 : switch (TREE_CODE (_q71))
23966 : : {
23967 : 0 : case SSA_NAME:
23968 : 0 : if (gimple *_d4 = get_def (valueize, _q71))
23969 : : {
23970 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
23971 : 0 : switch (gimple_assign_rhs_code (_a4))
23972 : : {
23973 : 0 : case POINTER_PLUS_EXPR:
23974 : 0 : {
23975 : 0 : tree _q90 = gimple_assign_rhs1 (_a4);
23976 : 0 : _q90 = do_valueize (valueize, _q90);
23977 : 0 : tree _q91 = gimple_assign_rhs2 (_a4);
23978 : 0 : _q91 = do_valueize (valueize, _q91);
23979 : 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
23980 : : {
23981 : 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
23982 : : {
23983 : 0 : {
23984 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
23985 : 0 : const enum tree_code cmp = LT_EXPR;
23986 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
23987 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
23988 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
23989 : : )
23990 : : {
23991 : 0 : {
23992 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
23993 : 0 : offset_int rhs = off * 2;
23994 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
23995 : : )
23996 : : {
23997 : 0 : {
23998 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
23999 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
24000 : 0 : if (cmp == LT_EXPR
24001 : : )
24002 : : {
24003 : 0 : gimple_seq *lseq = seq;
24004 : 0 : if (lseq
24005 : 0 : && (!single_use (captures[0])
24006 : 0 : || !single_use (captures[5])))
24007 : 0 : lseq = NULL;
24008 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2866;
24009 : 0 : {
24010 : 0 : res_op->set_op (GT_EXPR, type, 2);
24011 : 0 : {
24012 : 0 : tree _r1;
24013 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
24014 : 0 : {
24015 : 0 : tree _o2[2], _r2;
24016 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
24017 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
24018 : 0 : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
24019 : 0 : tem_op.ops[0] = _o2[0];
24020 : 0 : tem_op.ops[1] = _o2[1];
24021 : 0 : tem_op.resimplify (lseq, valueize);
24022 : : }
24023 : 0 : if (sizetype != tem_op.type
24024 : 0 : && !useless_type_conversion_p (sizetype, tem_op.type))
24025 : : {
24026 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24027 : 0 : if (!_r1) goto next_after_fail2866;
24028 : 0 : tem_op.set_op (NOP_EXPR, sizetype, 1);
24029 : 0 : tem_op.ops[0] = _r1;
24030 : 0 : tem_op.resimplify (lseq, valueize);
24031 : : }
24032 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24033 : 0 : if (!_r1) goto next_after_fail2866;
24034 : 0 : res_op->ops[0] = _r1;
24035 : : }
24036 : 0 : res_op->ops[1] = rhs_tree;
24037 : 0 : res_op->resimplify (lseq, valueize);
24038 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1113, __FILE__, __LINE__, true);
24039 : 0 : return true;
24040 : : }
24041 : 0 : next_after_fail2866:;
24042 : : }
24043 : : else
24044 : : {
24045 : : gimple_seq *lseq = seq;
24046 : : if (lseq
24047 : : && (!single_use (captures[0])
24048 : : || !single_use (captures[5])))
24049 : : lseq = NULL;
24050 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2867;
24051 : : {
24052 : : res_op->set_op (GT_EXPR, type, 2);
24053 : : {
24054 : : tree _r1;
24055 : : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
24056 : : {
24057 : : tree _o2[2], _r2;
24058 : : {
24059 : : tree _o3[2], _r3;
24060 : : _o3[0] = swap_p ? captures[4] : captures[2];
24061 : : _o3[1] = wide_int_to_tree (sizetype, off);
24062 : : gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
24063 : : tem_op.resimplify (lseq, valueize);
24064 : : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
24065 : : if (!_r3) goto next_after_fail2867;
24066 : : _o2[0] = _r3;
24067 : : }
24068 : : _o2[1] = swap_p ? captures[2] : captures[4];
24069 : : tem_op.set_op (POINTER_DIFF_EXPR, ssizetype, 2);
24070 : : tem_op.ops[0] = _o2[0];
24071 : : tem_op.ops[1] = _o2[1];
24072 : : tem_op.resimplify (lseq, valueize);
24073 : : }
24074 : : if (sizetype != tem_op.type
24075 : : && !useless_type_conversion_p (sizetype, tem_op.type))
24076 : : {
24077 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24078 : : if (!_r1) goto next_after_fail2867;
24079 : : tem_op.set_op (NOP_EXPR, sizetype, 1);
24080 : : tem_op.ops[0] = _r1;
24081 : : tem_op.resimplify (lseq, valueize);
24082 : : }
24083 : : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24084 : : if (!_r1) goto next_after_fail2867;
24085 : : res_op->ops[0] = _r1;
24086 : : }
24087 : : res_op->ops[1] = rhs_tree;
24088 : : res_op->resimplify (lseq, valueize);
24089 : : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
24090 : : return true;
24091 : : }
24092 : : next_after_fail2867:;
24093 : : }
24094 : : }
24095 : : }
24096 : : }
24097 : : }
24098 : : }
24099 : : }
24100 : : }
24101 : : break;
24102 : : }
24103 : : default:;
24104 : : }
24105 : : }
24106 : : break;
24107 : : default:;
24108 : : }
24109 : : }
24110 : : break;
24111 : : }
24112 : : default:;
24113 : : }
24114 : : }
24115 : : break;
24116 : : default:;
24117 : : }
24118 : : break;
24119 : : }
24120 : : default:;
24121 : : }
24122 : : break;
24123 : : }
24124 : : default:;
24125 : : }
24126 : : }
24127 : : break;
24128 : : default:;
24129 : : }
24130 : : break;
24131 : : }
24132 : : default:;
24133 : : }
24134 : : }
24135 : : break;
24136 : : default:;
24137 : : }
24138 : : return false;
24139 : : }
24140 : : #pragma GCC diagnostic pop
|