1 | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
2 | |* *| |
3 | |* AArch64PreLegalizerCombinerImpl Combiner Match Table *| |
4 | |* *| |
5 | |* Automatically generated file, do not edit! *| |
6 | |* *| |
7 | \*===----------------------------------------------------------------------===*/ |
8 | |
9 | #ifdef GET_GICOMBINER_DEPS |
10 | #include "llvm/ADT/SparseBitVector.h" |
11 | namespace llvm { |
12 | extern cl::OptionCategory GICombinerOptionCategory; |
13 | } // end namespace llvm |
14 | #endif // ifdef GET_GICOMBINER_DEPS |
15 | |
16 | #ifdef GET_GICOMBINER_TYPES |
17 | struct AArch64PreLegalizerCombinerImplRuleConfig { |
18 | SparseBitVector<> DisabledRules; |
19 | |
20 | bool isRuleEnabled(unsigned RuleID) const; |
21 | bool parseCommandLineOption(); |
22 | bool setRuleEnabled(StringRef RuleIdentifier); |
23 | bool setRuleDisabled(StringRef RuleIdentifier); |
24 | }; |
25 | |
26 | static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) { |
27 | uint64_t I; |
28 | // getAtInteger(...) returns false on success |
29 | bool Parsed = !RuleIdentifier.getAsInteger(0, I); |
30 | if (Parsed) |
31 | return I; |
32 | |
33 | #ifndef NDEBUG |
34 | switch (RuleIdentifier.size()) { |
35 | default: break; |
36 | case 9: // 5 strings to match. |
37 | switch (RuleIdentifier[0]) { |
38 | default: break; |
39 | case 'c': // 1 string to match. |
40 | if (memcmp(RuleIdentifier.data()+1, "opy_prop" , 8) != 0) |
41 | break; |
42 | return 8; // "copy_prop" |
43 | case 'm': // 3 strings to match. |
44 | switch (RuleIdentifier[1]) { |
45 | default: break; |
46 | case 'a': // 1 string to match. |
47 | if (memcmp(RuleIdentifier.data()+2, "tch_ors" , 7) != 0) |
48 | break; |
49 | return 180; // "match_ors" |
50 | case 'u': // 2 strings to match. |
51 | if (memcmp(RuleIdentifier.data()+2, "lo_by_" , 6) != 0) |
52 | break; |
53 | switch (RuleIdentifier[8]) { |
54 | default: break; |
55 | case '0': // 1 string to match. |
56 | return 130; // "mulo_by_0" |
57 | case '2': // 1 string to match. |
58 | return 129; // "mulo_by_2" |
59 | } |
60 | break; |
61 | } |
62 | break; |
63 | case 'n': // 1 string to match. |
64 | if (memcmp(RuleIdentifier.data()+1, "neg_zext" , 8) != 0) |
65 | break; |
66 | return 187; // "nneg_zext" |
67 | } |
68 | break; |
69 | case 10: // 6 strings to match. |
70 | switch (RuleIdentifier[0]) { |
71 | default: break; |
72 | case 'i': // 1 string to match. |
73 | if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i" , 9) != 0) |
74 | break; |
75 | return 74; // "i2p_to_p2i" |
76 | case 'm': // 2 strings to match. |
77 | switch (RuleIdentifier[1]) { |
78 | default: break; |
79 | case 'a': // 1 string to match. |
80 | if (memcmp(RuleIdentifier.data()+2, "tch_ands" , 8) != 0) |
81 | break; |
82 | return 179; // "match_ands" |
83 | case 'u': // 1 string to match. |
84 | if (memcmp(RuleIdentifier.data()+2, "l_to_shl" , 8) != 0) |
85 | break; |
86 | return 9; // "mul_to_shl" |
87 | } |
88 | break; |
89 | case 'p': // 1 string to match. |
90 | if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p" , 9) != 0) |
91 | break; |
92 | return 73; // "p2i_to_i2p" |
93 | case 's': // 1 string to match. |
94 | if (memcmp(RuleIdentifier.data()+1, "ext_trunc" , 9) != 0) |
95 | break; |
96 | return 185; // "sext_trunc" |
97 | case 'z': // 1 string to match. |
98 | if (memcmp(RuleIdentifier.data()+1, "ext_trunc" , 9) != 0) |
99 | break; |
100 | return 186; // "zext_trunc" |
101 | } |
102 | break; |
103 | case 11: // 5 strings to match. |
104 | switch (RuleIdentifier[0]) { |
105 | default: break; |
106 | case 'a': // 1 string to match. |
107 | if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg" , 10) != 0) |
108 | break; |
109 | return 79; // "add_sub_reg" |
110 | case 'm': // 1 string to match. |
111 | if (memcmp(RuleIdentifier.data()+1, "atch_addos" , 10) != 0) |
112 | break; |
113 | return 184; // "match_addos" |
114 | case 's': // 1 string to match. |
115 | if (memcmp(RuleIdentifier.data()+1, "ub_add_reg" , 10) != 0) |
116 | break; |
117 | return 173; // "sub_add_reg" |
118 | case 't': // 1 string to match. |
119 | if (memcmp(RuleIdentifier.data()+1, "runc_shift" , 10) != 0) |
120 | break; |
121 | return 119; // "trunc_shift" |
122 | case 'u': // 1 string to match. |
123 | if (memcmp(RuleIdentifier.data()+1, "nmerge_cst" , 10) != 0) |
124 | break; |
125 | return 114; // "unmerge_cst" |
126 | } |
127 | break; |
128 | case 12: // 10 strings to match. |
129 | switch (RuleIdentifier[0]) { |
130 | default: break; |
131 | case 'A': // 1 string to match. |
132 | if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB" , 11) != 0) |
133 | break; |
134 | return 2; // "APlusBMinusB" |
135 | case 'B': // 1 string to match. |
136 | if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA" , 11) != 0) |
137 | break; |
138 | return 3; // "BMinusAPlusA" |
139 | case 'a': // 1 string to match. |
140 | if (memcmp(RuleIdentifier.data()+1, "dde_to_addo" , 11) != 0) |
141 | break; |
142 | return 131; // "adde_to_addo" |
143 | case 'e': // 1 string to match. |
144 | if (memcmp(RuleIdentifier.data()+1, "xt_ext_fold" , 11) != 0) |
145 | break; |
146 | return 110; // "ext_ext_fold" |
147 | case 'f': // 1 string to match. |
148 | if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg" , 11) != 0) |
149 | break; |
150 | return 176; // "fsub_to_fneg" |
151 | case 'm': // 1 string to match. |
152 | if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr" , 11) != 0) |
153 | break; |
154 | return 161; // "mulh_to_lshr" |
155 | case 'n': // 1 string to match. |
156 | if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold" , 11) != 0) |
157 | break; |
158 | return 111; // "not_cmp_fold" |
159 | case 'r': // 1 string to match. |
160 | if (memcmp(RuleIdentifier.data()+1, "edundant_or" , 11) != 0) |
161 | break; |
162 | return 104; // "redundant_or" |
163 | case 's': // 1 string to match. |
164 | if (memcmp(RuleIdentifier.data()+1, "div_by_pow2" , 11) != 0) |
165 | break; |
166 | return 159; // "sdiv_by_pow2" |
167 | case 'u': // 1 string to match. |
168 | if (memcmp(RuleIdentifier.data()+1, "div_by_pow2" , 11) != 0) |
169 | break; |
170 | return 160; // "udiv_by_pow2" |
171 | } |
172 | break; |
173 | case 13: // 13 strings to match. |
174 | switch (RuleIdentifier[0]) { |
175 | default: break; |
176 | case 'a': // 1 string to match. |
177 | if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale" , 12) != 0) |
178 | break; |
179 | return 44; // "add_of_vscale" |
180 | case 'c': // 1 string to match. |
181 | if (memcmp(RuleIdentifier.data()+1, "ommute_shift" , 12) != 0) |
182 | break; |
183 | return 147; // "commute_shift" |
184 | case 'l': // 1 string to match. |
185 | if (memcmp(RuleIdentifier.data()+1, "oad_and_mask" , 12) != 0) |
186 | break; |
187 | return 54; // "load_and_mask" |
188 | case 'm': // 3 strings to match. |
189 | switch (RuleIdentifier[1]) { |
190 | default: break; |
191 | case 'a': // 1 string to match. |
192 | if (memcmp(RuleIdentifier.data()+2, "tch_selects" , 11) != 0) |
193 | break; |
194 | return 101; // "match_selects" |
195 | case 'e': // 1 string to match. |
196 | if (memcmp(RuleIdentifier.data()+2, "rge_unmerge" , 11) != 0) |
197 | break; |
198 | return 117; // "merge_unmerge" |
199 | case 'u': // 1 string to match. |
200 | if (memcmp(RuleIdentifier.data()+2, "l_of_vscale" , 11) != 0) |
201 | break; |
202 | return 45; // "mul_of_vscale" |
203 | } |
204 | break; |
205 | case 'r': // 1 string to match. |
206 | if (memcmp(RuleIdentifier.data()+1, "edundant_and" , 12) != 0) |
207 | break; |
208 | return 102; // "redundant_and" |
209 | case 's': // 3 strings to match. |
210 | switch (RuleIdentifier[1]) { |
211 | default: break; |
212 | case 'd': // 1 string to match. |
213 | if (memcmp(RuleIdentifier.data()+2, "iv_by_const" , 11) != 0) |
214 | break; |
215 | return 158; // "sdiv_by_const" |
216 | case 'h': // 1 string to match. |
217 | if (memcmp(RuleIdentifier.data()+2, "l_of_vscale" , 11) != 0) |
218 | break; |
219 | return 46; // "shl_of_vscale" |
220 | case 'u': // 1 string to match. |
221 | if (memcmp(RuleIdentifier.data()+2, "b_of_vscale" , 11) != 0) |
222 | break; |
223 | return 47; // "sub_of_vscale" |
224 | } |
225 | break; |
226 | case 'u': // 3 strings to match. |
227 | switch (RuleIdentifier[1]) { |
228 | default: break; |
229 | case 'd': // 1 string to match. |
230 | if (memcmp(RuleIdentifier.data()+2, "iv_by_const" , 11) != 0) |
231 | break; |
232 | return 157; // "udiv_by_const" |
233 | case 'n': // 2 strings to match. |
234 | if (memcmp(RuleIdentifier.data()+2, "merge_" , 6) != 0) |
235 | break; |
236 | switch (RuleIdentifier[8]) { |
237 | default: break; |
238 | case 'm': // 1 string to match. |
239 | if (memcmp(RuleIdentifier.data()+9, "erge" , 4) != 0) |
240 | break; |
241 | return 113; // "unmerge_merge" |
242 | case 'u': // 1 string to match. |
243 | if (memcmp(RuleIdentifier.data()+9, "ndef" , 4) != 0) |
244 | break; |
245 | return 66; // "unmerge_undef" |
246 | } |
247 | break; |
248 | } |
249 | break; |
250 | } |
251 | break; |
252 | case 14: // 8 strings to match. |
253 | switch (RuleIdentifier[0]) { |
254 | default: break; |
255 | case 'b': // 2 strings to match. |
256 | if (RuleIdentifier[1] != 'i') |
257 | break; |
258 | switch (RuleIdentifier[2]) { |
259 | default: break; |
260 | case 'n': // 1 string to match. |
261 | if (memcmp(RuleIdentifier.data()+3, "op_same_val" , 11) != 0) |
262 | break; |
263 | return 70; // "binop_same_val" |
264 | case 't': // 1 string to match. |
265 | if (memcmp(RuleIdentifier.data()+3, "reverse_shl" , 11) != 0) |
266 | break; |
267 | return 145; // "bitreverse_shl" |
268 | } |
269 | break; |
270 | case 'f': // 2 strings to match. |
271 | switch (RuleIdentifier[1]) { |
272 | default: break; |
273 | case 'a': // 1 string to match. |
274 | if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold" , 12) != 0) |
275 | break; |
276 | return 156; // "fabs_fneg_fold" |
277 | case 'n': // 1 string to match. |
278 | if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold" , 12) != 0) |
279 | break; |
280 | return 76; // "fneg_fneg_fold" |
281 | } |
282 | break; |
283 | case 'm': // 1 string to match. |
284 | if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one" , 13) != 0) |
285 | break; |
286 | return 11; // "mul_by_neg_one" |
287 | case 'r': // 1 string to match. |
288 | if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd" , 13) != 0) |
289 | break; |
290 | return 91; // "reassoc_ptradd" |
291 | case 's': // 1 string to match. |
292 | if (memcmp(RuleIdentifier.data()+1, "hifts_too_big" , 13) != 0) |
293 | break; |
294 | return 90; // "shifts_too_big" |
295 | case 't': // 1 string to match. |
296 | if (memcmp(RuleIdentifier.data()+1, "runc_ext_fold" , 13) != 0) |
297 | break; |
298 | return 118; // "trunc_ext_fold" |
299 | } |
300 | break; |
301 | case 15: // 9 strings to match. |
302 | switch (RuleIdentifier[0]) { |
303 | default: break; |
304 | case 'A': // 1 string to match. |
305 | if (memcmp(RuleIdentifier.data()+1, "PlusZeroMinusB" , 14) != 0) |
306 | break; |
307 | return 1; // "APlusZeroMinusB" |
308 | case 'Z': // 1 string to match. |
309 | if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB" , 14) != 0) |
310 | break; |
311 | return 0; // "ZeroMinusAPlusB" |
312 | case 'b': // 1 string to match. |
313 | if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr" , 14) != 0) |
314 | break; |
315 | return 146; // "bitreverse_lshr" |
316 | case 'e': // 1 string to match. |
317 | if (memcmp(RuleIdentifier.data()+1, "xtending_loads" , 14) != 0) |
318 | break; |
319 | return 53; // "extending_loads" |
320 | case 'i': // 1 string to match. |
321 | if (memcmp(RuleIdentifier.data()+1, "dempotent_prop" , 14) != 0) |
322 | break; |
323 | return 12; // "idempotent_prop" |
324 | case 'l': // 1 string to match. |
325 | if (memcmp(RuleIdentifier.data()+1, "oad_or_combine" , 14) != 0) |
326 | break; |
327 | return 138; // "load_or_combine" |
328 | case 'o': // 1 string to match. |
329 | if (memcmp(RuleIdentifier.data()+1, "verlapping_and" , 14) != 0) |
330 | break; |
331 | return 128; // "overlapping_and" |
332 | case 's': // 1 string to match. |
333 | if (memcmp(RuleIdentifier.data()+1, "elect_same_val" , 14) != 0) |
334 | break; |
335 | return 68; // "select_same_val" |
336 | case 'z': // 1 string to match. |
337 | if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold" , 14) != 0) |
338 | break; |
339 | return 106; // "zext_trunc_fold" |
340 | } |
341 | break; |
342 | case 16: // 3 strings to match. |
343 | switch (RuleIdentifier[0]) { |
344 | default: break; |
345 | case 's': // 2 strings to match. |
346 | if (memcmp(RuleIdentifier.data()+1, "elect_" , 6) != 0) |
347 | break; |
348 | switch (RuleIdentifier[7]) { |
349 | default: break; |
350 | case 't': // 1 string to match. |
351 | if (memcmp(RuleIdentifier.data()+8, "o_minmax" , 8) != 0) |
352 | break; |
353 | return 174; // "select_to_minmax" |
354 | case 'u': // 1 string to match. |
355 | if (memcmp(RuleIdentifier.data()+8, "ndef_cmp" , 8) != 0) |
356 | break; |
357 | return 98; // "select_undef_cmp" |
358 | } |
359 | break; |
360 | case 'u': // 1 string to match. |
361 | if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero" , 15) != 0) |
362 | break; |
363 | return 56; // "undef_to_fp_zero" |
364 | } |
365 | break; |
366 | case 17: // 12 strings to match. |
367 | switch (RuleIdentifier[0]) { |
368 | default: break; |
369 | case 'A': // 2 strings to match. |
370 | if (memcmp(RuleIdentifier.data()+1, "PlusBMinus" , 10) != 0) |
371 | break; |
372 | switch (RuleIdentifier[11]) { |
373 | default: break; |
374 | case 'A': // 1 string to match. |
375 | if (memcmp(RuleIdentifier.data()+12, "plusC" , 5) != 0) |
376 | break; |
377 | return 6; // "APlusBMinusAplusC" |
378 | case 'C': // 1 string to match. |
379 | if (memcmp(RuleIdentifier.data()+12, "PlusA" , 5) != 0) |
380 | break; |
381 | return 7; // "APlusBMinusCPlusA" |
382 | } |
383 | break; |
384 | case 'a': // 2 strings to match. |
385 | switch (RuleIdentifier[1]) { |
386 | default: break; |
387 | case 'd': // 1 string to match. |
388 | if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd" , 15) != 0) |
389 | break; |
390 | return 10; // "add_p2i_to_ptradd" |
391 | case 'n': // 1 string to match. |
392 | if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold" , 15) != 0) |
393 | break; |
394 | return 75; // "anyext_trunc_fold" |
395 | } |
396 | break; |
397 | case 'c': // 1 string to match. |
398 | if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fma" , 16) != 0) |
399 | break; |
400 | return 154; // "constant_fold_fma" |
401 | case 'd': // 1 string to match. |
402 | if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem" , 16) != 0) |
403 | break; |
404 | return 139; // "div_rem_to_divrem" |
405 | case 'e': // 1 string to match. |
406 | if (memcmp(RuleIdentifier.data()+1, "rase_undef_store" , 16) != 0) |
407 | break; |
408 | return 65; // "erase_undef_store" |
409 | case 'p': // 1 string to match. |
410 | if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero" , 16) != 0) |
411 | break; |
412 | return 135; // "ptr_add_with_zero" |
413 | case 's': // 2 strings to match. |
414 | switch (RuleIdentifier[1]) { |
415 | default: break; |
416 | case 'e': // 1 string to match. |
417 | if (memcmp(RuleIdentifier.data()+2, "lect_to_iminmax" , 15) != 0) |
418 | break; |
419 | return 100; // "select_to_iminmax" |
420 | case 'h': // 1 string to match. |
421 | if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain" , 15) != 0) |
422 | break; |
423 | return 136; // "shift_immed_chain" |
424 | } |
425 | break; |
426 | case 'u': // 2 strings to match. |
427 | switch (RuleIdentifier[1]) { |
428 | default: break; |
429 | case 'n': // 1 string to match. |
430 | if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero" , 15) != 0) |
431 | break; |
432 | return 57; // "undef_to_int_zero" |
433 | case 'r': // 1 string to match. |
434 | if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask" , 15) != 0) |
435 | break; |
436 | return 105; // "urem_pow2_to_mask" |
437 | } |
438 | break; |
439 | } |
440 | break; |
441 | case 18: // 11 strings to match. |
442 | switch (RuleIdentifier[0]) { |
443 | default: break; |
444 | case 'A': // 2 strings to match. |
445 | if (memcmp(RuleIdentifier.data()+1, "MinusBPlus" , 10) != 0) |
446 | break; |
447 | switch (RuleIdentifier[11]) { |
448 | default: break; |
449 | case 'B': // 1 string to match. |
450 | if (memcmp(RuleIdentifier.data()+12, "MinusC" , 6) != 0) |
451 | break; |
452 | return 5; // "AMinusBPlusBMinusC" |
453 | case 'C': // 1 string to match. |
454 | if (memcmp(RuleIdentifier.data()+12, "MinusA" , 6) != 0) |
455 | break; |
456 | return 4; // "AMinusBPlusCMinusA" |
457 | } |
458 | break; |
459 | case 'b': // 1 string to match. |
460 | if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero" , 17) != 0) |
461 | break; |
462 | return 71; // "binop_left_to_zero" |
463 | case 'c': // 3 strings to match. |
464 | if (RuleIdentifier[1] != 'o') |
465 | break; |
466 | switch (RuleIdentifier[2]) { |
467 | default: break; |
468 | case 'm': // 1 string to match. |
469 | if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan" , 15) != 0) |
470 | break; |
471 | return 132; // "combine_minmax_nan" |
472 | case 'n': // 2 strings to match. |
473 | if (memcmp(RuleIdentifier.data()+3, "stant_fold_f" , 12) != 0) |
474 | break; |
475 | switch (RuleIdentifier[15]) { |
476 | default: break; |
477 | case 'a': // 1 string to match. |
478 | if (memcmp(RuleIdentifier.data()+16, "bs" , 2) != 0) |
479 | break; |
480 | return 121; // "constant_fold_fabs" |
481 | case 'n': // 1 string to match. |
482 | if (memcmp(RuleIdentifier.data()+16, "eg" , 2) != 0) |
483 | break; |
484 | return 120; // "constant_fold_fneg" |
485 | } |
486 | break; |
487 | } |
488 | break; |
489 | case 'e': // 1 string to match. |
490 | if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi" , 17) != 0) |
491 | break; |
492 | return 133; // "expand_const_fpowi" |
493 | case 'f': // 2 strings to match. |
494 | switch (RuleIdentifier[1]) { |
495 | default: break; |
496 | case 'o': // 1 string to match. |
497 | if (memcmp(RuleIdentifier.data()+2, "ld_global_offset" , 16) != 0) |
498 | break; |
499 | return 191; // "fold_global_offset" |
500 | case 'p': // 1 string to match. |
501 | if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold" , 16) != 0) |
502 | break; |
503 | return 84; // "fptrunc_fpext_fold" |
504 | } |
505 | break; |
506 | case 's': // 2 strings to match. |
507 | switch (RuleIdentifier[1]) { |
508 | default: break; |
509 | case 'e': // 1 string to match. |
510 | if (memcmp(RuleIdentifier.data()+2, "xt_inreg_of_load" , 16) != 0) |
511 | break; |
512 | return 95; // "sext_inreg_of_load" |
513 | case 'h': // 1 string to match. |
514 | if (memcmp(RuleIdentifier.data()+2, "uffle_to_extract" , 16) != 0) |
515 | break; |
516 | return 192; // "shuffle_to_extract" |
517 | } |
518 | break; |
519 | } |
520 | break; |
521 | case 19: // 13 strings to match. |
522 | switch (RuleIdentifier[0]) { |
523 | default: break; |
524 | case 'b': // 1 string to match. |
525 | if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero" , 18) != 0) |
526 | break; |
527 | return 72; // "binop_right_to_zero" |
528 | case 'c': // 4 strings to match. |
529 | if (memcmp(RuleIdentifier.data()+1, "onst" , 4) != 0) |
530 | break; |
531 | switch (RuleIdentifier[5]) { |
532 | default: break; |
533 | case '_': // 1 string to match. |
534 | if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p" , 13) != 0) |
535 | break; |
536 | return 127; // "const_ptradd_to_i2p" |
537 | case 'a': // 3 strings to match. |
538 | if (memcmp(RuleIdentifier.data()+6, "nt_fold_" , 8) != 0) |
539 | break; |
540 | switch (RuleIdentifier[14]) { |
541 | default: break; |
542 | case 'b': // 1 string to match. |
543 | if (memcmp(RuleIdentifier.data()+15, "inop" , 4) != 0) |
544 | break; |
545 | return 152; // "constant_fold_binop" |
546 | case 'f': // 2 strings to match. |
547 | switch (RuleIdentifier[15]) { |
548 | default: break; |
549 | case 'l': // 1 string to match. |
550 | if (memcmp(RuleIdentifier.data()+16, "og2" , 3) != 0) |
551 | break; |
552 | return 123; // "constant_fold_flog2" |
553 | case 's': // 1 string to match. |
554 | if (memcmp(RuleIdentifier.data()+16, "qrt" , 3) != 0) |
555 | break; |
556 | return 122; // "constant_fold_fsqrt" |
557 | } |
558 | break; |
559 | } |
560 | break; |
561 | } |
562 | break; |
563 | case 'e': // 2 strings to match. |
564 | if (memcmp(RuleIdentifier.data()+1, "xt" , 2) != 0) |
565 | break; |
566 | switch (RuleIdentifier[3]) { |
567 | default: break; |
568 | case '_': // 1 string to match. |
569 | if (memcmp(RuleIdentifier.data()+4, "uaddv_to_uaddlv" , 15) != 0) |
570 | break; |
571 | return 194; // "ext_uaddv_to_uaddlv" |
572 | case 'e': // 1 string to match. |
573 | if (memcmp(RuleIdentifier.data()+4, "nd_through_phis" , 15) != 0) |
574 | break; |
575 | return 87; // "extend_through_phis" |
576 | } |
577 | break; |
578 | case 'p': // 1 string to match. |
579 | if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain" , 18) != 0) |
580 | break; |
581 | return 93; // "ptr_add_immed_chain" |
582 | case 'r': // 2 strings to match. |
583 | switch (RuleIdentifier[1]) { |
584 | default: break; |
585 | case 'e': // 1 string to match. |
586 | if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops" , 17) != 0) |
587 | break; |
588 | return 92; // "reassoc_comm_binops" |
589 | case 'i': // 1 string to match. |
590 | if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero" , 17) != 0) |
591 | break; |
592 | return 69; // "right_identity_zero" |
593 | } |
594 | break; |
595 | case 's': // 2 strings to match. |
596 | switch (RuleIdentifier[1]) { |
597 | default: break; |
598 | case 'e': // 1 string to match. |
599 | if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp" , 17) != 0) |
600 | break; |
601 | return 99; // "select_constant_cmp" |
602 | case 'i': // 1 string to match. |
603 | if (memcmp(RuleIdentifier.data()+2, "mplify_add_to_sub" , 17) != 0) |
604 | break; |
605 | return 88; // "simplify_add_to_sub" |
606 | } |
607 | break; |
608 | case 'u': // 1 string to match. |
609 | if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero" , 18) != 0) |
610 | break; |
611 | return 61; // "unary_undef_to_zero" |
612 | } |
613 | break; |
614 | case 20: // 6 strings to match. |
615 | switch (RuleIdentifier[0]) { |
616 | default: break; |
617 | case 'a': // 1 string to match. |
618 | if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask" , 19) != 0) |
619 | break; |
620 | return 163; // "and_or_disjoint_mask" |
621 | case 'b': // 1 string to match. |
622 | if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold" , 19) != 0) |
623 | break; |
624 | return 83; // "bitcast_bitcast_fold" |
625 | case 'i': // 1 string to match. |
626 | if (memcmp(RuleIdentifier.data()+1, "cmp_redundant_trunc" , 19) != 0) |
627 | break; |
628 | return 190; // "icmp_redundant_trunc" |
629 | case 'r': // 2 strings to match. |
630 | if (memcmp(RuleIdentifier.data()+1, "edu" , 3) != 0) |
631 | break; |
632 | switch (RuleIdentifier[4]) { |
633 | default: break; |
634 | case 'c': // 1 string to match. |
635 | if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend" , 15) != 0) |
636 | break; |
637 | return 96; // "reduce_shl_of_extend" |
638 | case 'n': // 1 string to match. |
639 | if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg" , 15) != 0) |
640 | break; |
641 | return 103; // "redundant_sext_inreg" |
642 | } |
643 | break; |
644 | case 'u': // 1 string to match. |
645 | if (memcmp(RuleIdentifier.data()+1, "nmerge_zext_to_zext" , 19) != 0) |
646 | break; |
647 | return 116; // "unmerge_zext_to_zext" |
648 | } |
649 | break; |
650 | case 21: // 13 strings to match. |
651 | switch (RuleIdentifier[0]) { |
652 | default: break; |
653 | case 'c': // 3 strings to match. |
654 | if (RuleIdentifier[1] != 'o') |
655 | break; |
656 | switch (RuleIdentifier[2]) { |
657 | default: break; |
658 | case 'm': // 1 string to match. |
659 | if (memcmp(RuleIdentifier.data()+3, "bine_concat_vector" , 18) != 0) |
660 | break; |
661 | return 181; // "combine_concat_vector" |
662 | case 'n': // 2 strings to match. |
663 | if (memcmp(RuleIdentifier.data()+3, "stant_fold_" , 11) != 0) |
664 | break; |
665 | switch (RuleIdentifier[14]) { |
666 | default: break; |
667 | case 'c': // 1 string to match. |
668 | if (memcmp(RuleIdentifier.data()+15, "ast_op" , 6) != 0) |
669 | break; |
670 | return 155; // "constant_fold_cast_op" |
671 | case 'f': // 1 string to match. |
672 | if (memcmp(RuleIdentifier.data()+15, "ptrunc" , 6) != 0) |
673 | break; |
674 | return 124; // "constant_fold_fptrunc" |
675 | } |
676 | break; |
677 | } |
678 | break; |
679 | case 'e': // 1 string to match. |
680 | if (memcmp(RuleIdentifier.data()+1, "xt_addv_to_udot_addv" , 20) != 0) |
681 | break; |
682 | return 193; // "ext_addv_to_udot_addv" |
683 | case 'f': // 1 string to match. |
684 | if (memcmp(RuleIdentifier.data()+1, "constant_to_constant" , 20) != 0) |
685 | break; |
686 | return 189; // "fconstant_to_constant" |
687 | case 'i': // 1 string to match. |
688 | if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob" , 20) != 0) |
689 | break; |
690 | return 18; // "insert_vector_elt_oob" |
691 | case 'p': // 4 strings to match. |
692 | if (memcmp(RuleIdentifier.data()+1, "ush_" , 4) != 0) |
693 | break; |
694 | switch (RuleIdentifier[5]) { |
695 | default: break; |
696 | case 'a': // 2 strings to match. |
697 | if (memcmp(RuleIdentifier.data()+6, "dd_through_" , 11) != 0) |
698 | break; |
699 | switch (RuleIdentifier[17]) { |
700 | default: break; |
701 | case 's': // 1 string to match. |
702 | if (memcmp(RuleIdentifier.data()+18, "ext" , 3) != 0) |
703 | break; |
704 | return 198; // "push_add_through_sext" |
705 | case 'z': // 1 string to match. |
706 | if (memcmp(RuleIdentifier.data()+18, "ext" , 3) != 0) |
707 | break; |
708 | return 196; // "push_add_through_zext" |
709 | } |
710 | break; |
711 | case 's': // 2 strings to match. |
712 | if (memcmp(RuleIdentifier.data()+6, "ub_through_" , 11) != 0) |
713 | break; |
714 | switch (RuleIdentifier[17]) { |
715 | default: break; |
716 | case 's': // 1 string to match. |
717 | if (memcmp(RuleIdentifier.data()+18, "ext" , 3) != 0) |
718 | break; |
719 | return 197; // "push_sub_through_sext" |
720 | case 'z': // 1 string to match. |
721 | if (memcmp(RuleIdentifier.data()+18, "ext" , 3) != 0) |
722 | break; |
723 | return 195; // "push_sub_through_zext" |
724 | } |
725 | break; |
726 | } |
727 | break; |
728 | case 'r': // 1 string to match. |
729 | if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp" , 20) != 0) |
730 | break; |
731 | return 78; // "right_identity_one_fp" |
732 | case 'u': // 2 strings to match. |
733 | if (RuleIdentifier[1] != 'n') |
734 | break; |
735 | switch (RuleIdentifier[2]) { |
736 | default: break; |
737 | case 'd': // 1 string to match. |
738 | if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one" , 18) != 0) |
739 | break; |
740 | return 58; // "undef_to_negative_one" |
741 | case 'm': // 1 string to match. |
742 | if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc" , 18) != 0) |
743 | break; |
744 | return 115; // "unmerge_dead_to_trunc" |
745 | } |
746 | break; |
747 | } |
748 | break; |
749 | case 22: // 12 strings to match. |
750 | switch (RuleIdentifier[0]) { |
751 | default: break; |
752 | case 'c': // 2 strings to match. |
753 | if (RuleIdentifier[1] != 'o') |
754 | break; |
755 | switch (RuleIdentifier[2]) { |
756 | default: break; |
757 | case 'm': // 1 string to match. |
758 | if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat" , 19) != 0) |
759 | break; |
760 | return 188; // "combine_shuffle_concat" |
761 | case 'n': // 1 string to match. |
762 | if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop" , 19) != 0) |
763 | break; |
764 | return 153; // "constant_fold_fp_binop" |
765 | } |
766 | break; |
767 | case 'f': // 4 strings to match. |
768 | switch (RuleIdentifier[1]) { |
769 | default: break; |
770 | case 'o': // 1 string to match. |
771 | if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select" , 20) != 0) |
772 | break; |
773 | return 172; // "fold_binop_into_select" |
774 | case 'u': // 3 strings to match. |
775 | if (memcmp(RuleIdentifier.data()+2, "nnel_shift_" , 11) != 0) |
776 | break; |
777 | switch (RuleIdentifier[13]) { |
778 | default: break; |
779 | case 'l': // 1 string to match. |
780 | if (memcmp(RuleIdentifier.data()+14, "eft_zero" , 8) != 0) |
781 | break; |
782 | return 143; // "funnel_shift_left_zero" |
783 | case 'o': // 1 string to match. |
784 | if (memcmp(RuleIdentifier.data()+14, "vershift" , 8) != 0) |
785 | break; |
786 | return 144; // "funnel_shift_overshift" |
787 | case 't': // 1 string to match. |
788 | if (memcmp(RuleIdentifier.data()+14, "o_rotate" , 8) != 0) |
789 | break; |
790 | return 141; // "funnel_shift_to_rotate" |
791 | } |
792 | break; |
793 | } |
794 | break; |
795 | case 'i': // 1 string to match. |
796 | if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits" , 21) != 0) |
797 | break; |
798 | return 108; // "icmp_to_lhs_known_bits" |
799 | case 'p': // 1 string to match. |
800 | if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op" , 21) != 0) |
801 | break; |
802 | return 62; // "propagate_undef_any_op" |
803 | case 'r': // 2 strings to match. |
804 | switch (RuleIdentifier[1]) { |
805 | default: break; |
806 | case 'e': // 1 string to match. |
807 | if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands" , 20) != 0) |
808 | break; |
809 | return 162; // "redundant_neg_operands" |
810 | case 'i': // 1 string to match. |
811 | if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int" , 20) != 0) |
812 | break; |
813 | return 77; // "right_identity_one_int" |
814 | } |
815 | break; |
816 | case 's': // 1 string to match. |
817 | if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg" , 21) != 0) |
818 | break; |
819 | return 94; // "shl_ashr_to_sext_inreg" |
820 | case 't': // 1 string to match. |
821 | if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold" , 21) != 0) |
822 | break; |
823 | return 81; // "trunc_buildvector_fold" |
824 | } |
825 | break; |
826 | case 23: // 4 strings to match. |
827 | switch (RuleIdentifier[0]) { |
828 | default: break; |
829 | case 'f': // 1 string to match. |
830 | if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero" , 22) != 0) |
831 | break; |
832 | return 142; // "funnel_shift_right_zero" |
833 | case 'i': // 2 strings to match. |
834 | if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_" , 20) != 0) |
835 | break; |
836 | switch (RuleIdentifier[21]) { |
837 | default: break; |
838 | case 's': // 1 string to match. |
839 | if (RuleIdentifier[22] != 'i') |
840 | break; |
841 | return 125; // "itof_const_zero_fold_si" |
842 | case 'u': // 1 string to match. |
843 | if (RuleIdentifier[22] != 'i') |
844 | break; |
845 | return 126; // "itof_const_zero_fold_ui" |
846 | } |
847 | break; |
848 | case 'p': // 1 string to match. |
849 | if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops" , 22) != 0) |
850 | break; |
851 | return 63; // "propagate_undef_all_ops" |
852 | } |
853 | break; |
854 | case 24: // 5 strings to match. |
855 | switch (RuleIdentifier[0]) { |
856 | default: break; |
857 | case 'b': // 1 string to match. |
858 | if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero" , 23) != 0) |
859 | break; |
860 | return 59; // "binop_left_undef_to_zero" |
861 | case 'm': // 1 string to match. |
862 | if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element" , 23) != 0) |
863 | break; |
864 | return 17; // "match_extract_of_element" |
865 | case 'n': // 1 string to match. |
866 | if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and" , 23) != 0) |
867 | break; |
868 | return 97; // "narrow_binop_feeding_and" |
869 | case 's': // 1 string to match. |
870 | if (memcmp(RuleIdentifier.data()+1, "ext_inreg_to_zext_inreg" , 23) != 0) |
871 | break; |
872 | return 109; // "sext_inreg_to_zext_inreg" |
873 | case 'x': // 1 string to match. |
874 | if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg" , 23) != 0) |
875 | break; |
876 | return 134; // "xor_of_and_with_same_reg" |
877 | } |
878 | break; |
879 | case 25: // 5 strings to match. |
880 | switch (RuleIdentifier[0]) { |
881 | default: break; |
882 | case 'b': // 3 strings to match. |
883 | switch (RuleIdentifier[1]) { |
884 | default: break; |
885 | case 'i': // 2 strings to match. |
886 | if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_" , 20) != 0) |
887 | break; |
888 | switch (RuleIdentifier[22]) { |
889 | default: break; |
890 | case 'a': // 1 string to match. |
891 | if (memcmp(RuleIdentifier.data()+23, "nd" , 2) != 0) |
892 | break; |
893 | return 149; // "bitfield_extract_from_and" |
894 | case 's': // 1 string to match. |
895 | if (memcmp(RuleIdentifier.data()+23, "hr" , 2) != 0) |
896 | break; |
897 | return 150; // "bitfield_extract_from_shr" |
898 | } |
899 | break; |
900 | case 'u': // 1 string to match. |
901 | if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold" , 23) != 0) |
902 | break; |
903 | return 80; // "buildvector_identity_fold" |
904 | } |
905 | break; |
906 | case 'e': // 1 string to match. |
907 | if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec" , 24) != 0) |
908 | break; |
909 | return 51; // "extract_vec_elt_build_vec" |
910 | case 'r': // 1 string to match. |
911 | if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp" , 24) != 0) |
912 | break; |
913 | return 86; // "right_identity_neg_one_fp" |
914 | } |
915 | break; |
916 | case 26: // 4 strings to match. |
917 | switch (RuleIdentifier[0]) { |
918 | default: break; |
919 | case 'b': // 1 string to match. |
920 | if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef" , 25) != 0) |
921 | break; |
922 | return 60; // "binop_right_undef_to_undef" |
923 | case 'c': // 1 string to match. |
924 | if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs" , 25) != 0) |
925 | break; |
926 | return 178; // "commute_fp_constant_to_rhs" |
927 | case 'f': // 1 string to match. |
928 | if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift" , 25) != 0) |
929 | break; |
930 | return 140; // "funnel_shift_from_or_shift" |
931 | case 'r': // 1 string to match. |
932 | if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp" , 25) != 0) |
933 | break; |
934 | return 85; // "right_identity_neg_zero_fp" |
935 | } |
936 | break; |
937 | case 27: // 4 strings to match. |
938 | switch (RuleIdentifier[0]) { |
939 | default: break; |
940 | case 'c': // 1 string to match. |
941 | if (memcmp(RuleIdentifier.data()+1, "ommute_int_constant_to_rhs" , 26) != 0) |
942 | break; |
943 | return 177; // "commute_int_constant_to_rhs" |
944 | case 'd': // 1 string to match. |
945 | if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine" , 26) != 0) |
946 | break; |
947 | return 183; // "double_icmp_zero_or_combine" |
948 | case 'r': // 1 string to match. |
949 | if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality" , 26) != 0) |
950 | break; |
951 | return 175; // "redundant_binop_in_equality" |
952 | case 't': // 1 string to match. |
953 | if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold" , 26) != 0) |
954 | break; |
955 | return 82; // "trunc_lshr_buildvector_fold" |
956 | } |
957 | break; |
958 | case 28: // 4 strings to match. |
959 | switch (RuleIdentifier[0]) { |
960 | default: break; |
961 | case 'd': // 1 string to match. |
962 | if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine" , 27) != 0) |
963 | break; |
964 | return 182; // "double_icmp_zero_and_combine" |
965 | case 'o': // 1 string to match. |
966 | if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond" , 27) != 0) |
967 | break; |
968 | return 112; // "opt_brcond_by_inverting_cond" |
969 | case 'p': // 1 string to match. |
970 | if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask" , 27) != 0) |
971 | break; |
972 | return 64; // "propagate_undef_shuffle_mask" |
973 | case 's': // 1 string to match. |
974 | if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain" , 27) != 0) |
975 | break; |
976 | return 137; // "shift_of_shifted_logic_chain" |
977 | } |
978 | break; |
979 | case 29: // 3 strings to match. |
980 | switch (RuleIdentifier[0]) { |
981 | default: break; |
982 | case 'b': // 1 string to match. |
983 | if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and" , 28) != 0) |
984 | break; |
985 | return 151; // "bitfield_extract_from_shr_and" |
986 | case 'c': // 1 string to match. |
987 | if (memcmp(RuleIdentifier.data()+1, "ombine_extracted_vector_load" , 28) != 0) |
988 | break; |
989 | return 55; // "combine_extracted_vector_load" |
990 | case 'i': // 1 string to match. |
991 | if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits" , 28) != 0) |
992 | break; |
993 | return 107; // "icmp_to_true_false_known_bits" |
994 | } |
995 | break; |
996 | case 30: // 1 string to match. |
997 | if (memcmp(RuleIdentifier.data()+0, "freeze_of_non_undef_non_poison" , 30) != 0) |
998 | break; |
999 | return 48; // "freeze_of_non_undef_non_poison" |
1000 | case 31: // 2 strings to match. |
1001 | if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_" , 22) != 0) |
1002 | break; |
1003 | switch (RuleIdentifier[22]) { |
1004 | default: break; |
1005 | case 'e': // 1 string to match. |
1006 | if (memcmp(RuleIdentifier.data()+23, "lt_undef" , 8) != 0) |
1007 | break; |
1008 | return 16; // "insert_vector_element_elt_undef" |
1009 | case 'i': // 1 string to match. |
1010 | if (memcmp(RuleIdentifier.data()+23, "dx_undef" , 8) != 0) |
1011 | break; |
1012 | return 15; // "insert_vector_element_idx_undef" |
1013 | } |
1014 | break; |
1015 | case 32: // 4 strings to match. |
1016 | switch (RuleIdentifier[0]) { |
1017 | default: break; |
1018 | case 'b': // 1 string to match. |
1019 | if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg" , 31) != 0) |
1020 | break; |
1021 | return 148; // "bitfield_extract_from_sext_inreg" |
1022 | case 'c': // 2 strings to match. |
1023 | if (memcmp(RuleIdentifier.data()+1, "ombine_f" , 8) != 0) |
1024 | break; |
1025 | switch (RuleIdentifier[9]) { |
1026 | default: break; |
1027 | case 'a': // 1 string to match. |
1028 | if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma" , 22) != 0) |
1029 | break; |
1030 | return 164; // "combine_fadd_fmul_to_fmad_or_fma" |
1031 | case 's': // 1 string to match. |
1032 | if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma" , 22) != 0) |
1033 | break; |
1034 | return 168; // "combine_fsub_fmul_to_fmad_or_fma" |
1035 | } |
1036 | break; |
1037 | case 'e': // 1 string to match. |
1038 | if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const" , 31) != 0) |
1039 | break; |
1040 | return 19; // "extract_vector_element_not_const" |
1041 | } |
1042 | break; |
1043 | case 34: // 1 string to match. |
1044 | if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector" , 34) != 0) |
1045 | break; |
1046 | return 52; // "extract_all_elts_from_build_vector" |
1047 | case 36: // 11 strings to match. |
1048 | switch (RuleIdentifier[0]) { |
1049 | default: break; |
1050 | case 'c': // 2 strings to match. |
1051 | if (memcmp(RuleIdentifier.data()+1, "ombine_" , 7) != 0) |
1052 | break; |
1053 | switch (RuleIdentifier[8]) { |
1054 | default: break; |
1055 | case 'f': // 1 string to match. |
1056 | if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma" , 27) != 0) |
1057 | break; |
1058 | return 166; // "combine_fadd_fma_fmul_to_fmad_or_fma" |
1059 | case 'i': // 1 string to match. |
1060 | if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector" , 27) != 0) |
1061 | break; |
1062 | return 50; // "combine_insert_vec_elts_build_vector" |
1063 | } |
1064 | break; |
1065 | case 'e': // 7 strings to match. |
1066 | if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector" , 34) != 0) |
1067 | break; |
1068 | switch (RuleIdentifier[35]) { |
1069 | default: break; |
1070 | case '2': // 1 string to match. |
1071 | return 21; // "extract_vector_element_build_vector2" |
1072 | case '3': // 1 string to match. |
1073 | return 22; // "extract_vector_element_build_vector3" |
1074 | case '4': // 1 string to match. |
1075 | return 23; // "extract_vector_element_build_vector4" |
1076 | case '5': // 1 string to match. |
1077 | return 24; // "extract_vector_element_build_vector5" |
1078 | case '7': // 1 string to match. |
1079 | return 25; // "extract_vector_element_build_vector7" |
1080 | case '8': // 1 string to match. |
1081 | return 26; // "extract_vector_element_build_vector8" |
1082 | case '9': // 1 string to match. |
1083 | return 27; // "extract_vector_element_build_vector9" |
1084 | } |
1085 | break; |
1086 | case 'i': // 1 string to match. |
1087 | if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds" , 35) != 0) |
1088 | break; |
1089 | return 67; // "insert_extract_vec_elt_out_of_bounds" |
1090 | case 'm': // 1 string to match. |
1091 | if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index" , 35) != 0) |
1092 | break; |
1093 | return 14; // "match_extract_of_element_undef_index" |
1094 | } |
1095 | break; |
1096 | case 37: // 11 strings to match. |
1097 | switch (RuleIdentifier[0]) { |
1098 | default: break; |
1099 | case 'c': // 1 string to match. |
1100 | if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma" , 36) != 0) |
1101 | break; |
1102 | return 169; // "combine_fsub_fneg_fmul_to_fmad_or_fma" |
1103 | case 'e': // 8 strings to match. |
1104 | if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_" , 22) != 0) |
1105 | break; |
1106 | switch (RuleIdentifier[23]) { |
1107 | default: break; |
1108 | case 'b': // 7 strings to match. |
1109 | if (memcmp(RuleIdentifier.data()+24, "uild_vector1" , 12) != 0) |
1110 | break; |
1111 | switch (RuleIdentifier[36]) { |
1112 | default: break; |
1113 | case '0': // 1 string to match. |
1114 | return 28; // "extract_vector_element_build_vector10" |
1115 | case '1': // 1 string to match. |
1116 | return 29; // "extract_vector_element_build_vector11" |
1117 | case '2': // 1 string to match. |
1118 | return 30; // "extract_vector_element_build_vector12" |
1119 | case '3': // 1 string to match. |
1120 | return 31; // "extract_vector_element_build_vector13" |
1121 | case '4': // 1 string to match. |
1122 | return 32; // "extract_vector_element_build_vector14" |
1123 | case '5': // 1 string to match. |
1124 | return 33; // "extract_vector_element_build_vector15" |
1125 | case '6': // 1 string to match. |
1126 | return 34; // "extract_vector_element_build_vector16" |
1127 | } |
1128 | break; |
1129 | case 's': // 1 string to match. |
1130 | if (memcmp(RuleIdentifier.data()+24, "huffle_vector" , 13) != 0) |
1131 | break; |
1132 | return 42; // "extract_vector_element_shuffle_vector" |
1133 | } |
1134 | break; |
1135 | case 'h': // 1 string to match. |
1136 | if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands" , 36) != 0) |
1137 | break; |
1138 | return 89; // "hoist_logic_op_with_same_opcode_hands" |
1139 | case 'm': // 1 string to match. |
1140 | if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector" , 36) != 0) |
1141 | break; |
1142 | return 13; // "match_extract_of_element_undef_vector" |
1143 | } |
1144 | break; |
1145 | case 38: // 2 strings to match. |
1146 | if (memcmp(RuleIdentifier.data()+0, "combine_f" , 9) != 0) |
1147 | break; |
1148 | switch (RuleIdentifier[9]) { |
1149 | default: break; |
1150 | case 'a': // 1 string to match. |
1151 | if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma" , 28) != 0) |
1152 | break; |
1153 | return 165; // "combine_fadd_fpext_fmul_to_fmad_or_fma" |
1154 | case 's': // 1 string to match. |
1155 | if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma" , 28) != 0) |
1156 | break; |
1157 | return 170; // "combine_fsub_fpext_fmul_to_fmad_or_fma" |
1158 | } |
1159 | break; |
1160 | case 40: // 1 string to match. |
1161 | if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices" , 40) != 0) |
1162 | break; |
1163 | return 20; // "extract_vector_element_different_indices" |
1164 | case 42: // 8 strings to match. |
1165 | switch (RuleIdentifier[0]) { |
1166 | default: break; |
1167 | case 'c': // 1 string to match. |
1168 | if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma" , 41) != 0) |
1169 | break; |
1170 | return 167; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma" |
1171 | case 'e': // 7 strings to match. |
1172 | if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc" , 40) != 0) |
1173 | break; |
1174 | switch (RuleIdentifier[41]) { |
1175 | default: break; |
1176 | case '2': // 1 string to match. |
1177 | return 35; // "extract_vector_element_build_vector_trunc2" |
1178 | case '3': // 1 string to match. |
1179 | return 36; // "extract_vector_element_build_vector_trunc3" |
1180 | case '4': // 1 string to match. |
1181 | return 37; // "extract_vector_element_build_vector_trunc4" |
1182 | case '5': // 1 string to match. |
1183 | return 38; // "extract_vector_element_build_vector_trunc5" |
1184 | case '6': // 1 string to match. |
1185 | return 39; // "extract_vector_element_build_vector_trunc6" |
1186 | case '7': // 1 string to match. |
1187 | return 40; // "extract_vector_element_build_vector_trunc7" |
1188 | case '8': // 1 string to match. |
1189 | return 41; // "extract_vector_element_build_vector_trunc8" |
1190 | } |
1191 | break; |
1192 | } |
1193 | break; |
1194 | case 43: // 1 string to match. |
1195 | if (memcmp(RuleIdentifier.data()+0, "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma" , 43) != 0) |
1196 | break; |
1197 | return 171; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma" |
1198 | case 44: // 1 string to match. |
1199 | if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element" , 44) != 0) |
1200 | break; |
1201 | return 43; // "insert_vector_element_extract_vector_element" |
1202 | case 46: // 1 string to match. |
1203 | if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating" , 46) != 0) |
1204 | break; |
1205 | return 49; // "push_freeze_to_prevent_poison_from_propagating" |
1206 | } |
1207 | #endif // ifndef NDEBUG |
1208 | |
1209 | return std::nullopt; |
1210 | } |
1211 | static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) { |
1212 | std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-'); |
1213 | if (!RangePair.second.empty()) { |
1214 | const auto First = getRuleIdxForIdentifier(RangePair.first); |
1215 | const auto Last = getRuleIdxForIdentifier(RangePair.second); |
1216 | if (!First || !Last) |
1217 | return std::nullopt; |
1218 | if (First >= Last) |
1219 | report_fatal_error("Beginning of range should be before end of range" ); |
1220 | return {{*First, *Last + 1}}; |
1221 | } |
1222 | if (RangePair.first == "*" ) { |
1223 | return {{0, 199}}; |
1224 | } |
1225 | const auto I = getRuleIdxForIdentifier(RangePair.first); |
1226 | if (!I) |
1227 | return std::nullopt; |
1228 | return {{*I, *I + 1}}; |
1229 | } |
1230 | |
1231 | bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) { |
1232 | auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier); |
1233 | if (!MaybeRange) |
1234 | return false; |
1235 | for (auto I = MaybeRange->first; I < MaybeRange->second; ++I) |
1236 | DisabledRules.reset(I); |
1237 | return true; |
1238 | } |
1239 | |
1240 | bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) { |
1241 | auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier); |
1242 | if (!MaybeRange) |
1243 | return false; |
1244 | for (auto I = MaybeRange->first; I < MaybeRange->second; ++I) |
1245 | DisabledRules.set(I); |
1246 | return true; |
1247 | } |
1248 | |
1249 | static std::vector<std::string> AArch64PreLegalizerCombinerOption; |
1250 | static cl::list<std::string> AArch64PreLegalizerCombinerDisableOption( |
1251 | "aarch64prelegalizercombiner-disable-rule" , |
1252 | cl::desc("Disable one or more combiner rules temporarily in the AArch64PreLegalizerCombiner pass" ), |
1253 | cl::CommaSeparated, |
1254 | cl::Hidden, |
1255 | cl::cat(GICombinerOptionCategory), |
1256 | cl::callback([](const std::string &Str) { |
1257 | AArch64PreLegalizerCombinerOption.push_back(Str); |
1258 | })); |
1259 | static cl::list<std::string> AArch64PreLegalizerCombinerOnlyEnableOption( |
1260 | "aarch64prelegalizercombiner-only-enable-rule" , |
1261 | cl::desc("Disable all rules in the AArch64PreLegalizerCombiner pass then re-enable the specified ones" ), |
1262 | cl::Hidden, |
1263 | cl::cat(GICombinerOptionCategory), |
1264 | cl::callback([](const std::string &CommaSeparatedArg) { |
1265 | StringRef Str = CommaSeparatedArg; |
1266 | AArch64PreLegalizerCombinerOption.push_back("*" ); |
1267 | do { |
1268 | auto X = Str.split("," ); |
1269 | AArch64PreLegalizerCombinerOption.push_back(("!" + X.first).str()); |
1270 | Str = X.second; |
1271 | } while (!Str.empty()); |
1272 | })); |
1273 | |
1274 | |
1275 | bool AArch64PreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const { |
1276 | return !DisabledRules.test(RuleID); |
1277 | } |
1278 | bool AArch64PreLegalizerCombinerImplRuleConfig::parseCommandLineOption() { |
1279 | for (StringRef Identifier : AArch64PreLegalizerCombinerOption) { |
1280 | bool Enabled = Identifier.consume_front("!" ); |
1281 | if (Enabled && !setRuleEnabled(Identifier)) |
1282 | return false; |
1283 | if (!Enabled && !setRuleDisabled(Identifier)) |
1284 | return false; |
1285 | } |
1286 | return true; |
1287 | } |
1288 | |
1289 | #endif // ifdef GET_GICOMBINER_TYPES |
1290 | |
1291 | #ifdef GET_GICOMBINER_TYPES |
1292 | const unsigned MAX_SUBTARGET_PREDICATES = 1; |
1293 | using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>; |
1294 | #endif // ifdef GET_GICOMBINER_TYPES |
1295 | |
1296 | #ifdef GET_GICOMBINER_CLASS_MEMBERS |
1297 | PredicateBitset AvailableModuleFeatures; |
1298 | mutable PredicateBitset AvailableFunctionFeatures; |
1299 | PredicateBitset getAvailableFeatures() const { |
1300 | return AvailableModuleFeatures | AvailableFunctionFeatures; |
1301 | } |
1302 | PredicateBitset |
1303 | computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const; |
1304 | PredicateBitset |
1305 | computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, |
1306 | const MachineFunction *MF) const; |
1307 | void setupGeneratedPerFunctionState(MachineFunction &MF) override; |
1308 | #endif // ifdef GET_GICOMBINER_CLASS_MEMBERS |
1309 | #ifdef GET_GICOMBINER_CLASS_MEMBERS |
1310 | mutable MatcherState State; |
1311 | typedef ComplexRendererFns(AArch64PreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const; |
1312 | typedef void(AArch64PreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const; |
1313 | const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo; |
1314 | static AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[]; |
1315 | static AArch64PreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[]; |
1316 | bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override; |
1317 | bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override; |
1318 | bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override; |
1319 | const uint8_t *getMatchTable() const override; |
1320 | bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override; |
1321 | bool testSimplePredicate(unsigned PredicateID) const override; |
1322 | bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override; |
1323 | #endif // ifdef GET_GICOMBINER_CLASS_MEMBERS |
1324 | |
1325 | #ifdef GET_GICOMBINER_IMPL |
1326 | // LLT Objects. |
1327 | enum { |
1328 | GILLT_s1, |
1329 | }; |
1330 | const static size_t NumTypeObjects = 1; |
1331 | const static LLT TypeObjects[] = { |
1332 | LLT::scalar(1), |
1333 | }; |
1334 | |
1335 | // Bits for subtarget features that participate in instruction matching. |
1336 | enum SubtargetFeatureBits : uint8_t { |
1337 | Feature_HasDotProdBit = 0, |
1338 | }; |
1339 | |
1340 | PredicateBitset AArch64PreLegalizerCombinerImpl:: |
1341 | computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const { |
1342 | PredicateBitset Features{}; |
1343 | if (Subtarget->hasDotProd()) |
1344 | Features.set(Feature_HasDotProdBit); |
1345 | return Features; |
1346 | } |
1347 | |
1348 | void AArch64PreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) { |
1349 | AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF); |
1350 | } |
1351 | PredicateBitset AArch64PreLegalizerCombinerImpl:: |
1352 | computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const { |
1353 | PredicateBitset Features{}; |
1354 | return Features; |
1355 | } |
1356 | |
1357 | // Feature bitsets. |
1358 | enum { |
1359 | GIFBS_Invalid, |
1360 | GIFBS_HasDotProd, |
1361 | }; |
1362 | constexpr static PredicateBitset FeatureBitsets[] { |
1363 | {}, // GIFBS_Invalid |
1364 | {Feature_HasDotProdBit, }, |
1365 | }; |
1366 | |
1367 | // ComplexPattern predicates. |
1368 | enum { |
1369 | GICP_Invalid, |
1370 | }; |
1371 | // See constructor for table contents |
1372 | |
1373 | AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn |
1374 | AArch64PreLegalizerCombinerImpl::ComplexPredicateFns[] = { |
1375 | nullptr, // GICP_Invalid |
1376 | }; |
1377 | |
1378 | enum { |
1379 | GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1, |
1380 | GICXXPred_MI_Predicate_GICombiner1, |
1381 | GICXXPred_MI_Predicate_GICombiner2, |
1382 | GICXXPred_MI_Predicate_GICombiner3, |
1383 | GICXXPred_MI_Predicate_GICombiner4, |
1384 | GICXXPred_MI_Predicate_GICombiner5, |
1385 | GICXXPred_MI_Predicate_GICombiner6, |
1386 | GICXXPred_MI_Predicate_GICombiner7, |
1387 | GICXXPred_MI_Predicate_GICombiner8, |
1388 | }; |
1389 | bool AArch64PreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const { |
1390 | switch (PredicateID) { |
1391 | case GICXXPred_MI_Predicate_GICombiner0: { |
1392 | return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI); |
1393 | } |
1394 | case GICXXPred_MI_Predicate_GICombiner1: { |
1395 | return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI); |
1396 | } |
1397 | case GICXXPred_MI_Predicate_GICombiner2: { |
1398 | return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0); |
1399 | } |
1400 | case GICXXPred_MI_Predicate_GICombiner3: { |
1401 | return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0); |
1402 | } |
1403 | case GICXXPred_MI_Predicate_GICombiner4: { |
1404 | return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0); |
1405 | } |
1406 | case GICXXPred_MI_Predicate_GICombiner5: { |
1407 | return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR, |
1408 | {MRI.getType(State.MIs[2]->getOperand(1).getReg()), |
1409 | MRI.getType(State.MIs[1]->getOperand(2).getReg())}}); |
1410 | } |
1411 | case GICXXPred_MI_Predicate_GICombiner6: { |
1412 | return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL, |
1413 | {MRI.getType(State.MIs[2]->getOperand(1).getReg()), |
1414 | MRI.getType(State.MIs[1]->getOperand(2).getReg())}}); |
1415 | } |
1416 | case GICXXPred_MI_Predicate_GICombiner7: { |
1417 | return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ && |
1418 | !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() && |
1419 | (MRI.getType(State.MIs[1]->getOperand(2).getReg()) == |
1420 | MRI.getType(State.MIs[2]->getOperand(2).getReg())); |
1421 | } |
1422 | case GICXXPred_MI_Predicate_GICombiner8: { |
1423 | return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE && |
1424 | !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() && |
1425 | (MRI.getType(State.MIs[1]->getOperand(2).getReg()) == |
1426 | MRI.getType(State.MIs[2]->getOperand(2).getReg())); |
1427 | } |
1428 | } |
1429 | llvm_unreachable("Unknown predicate" ); |
1430 | return false; |
1431 | } |
1432 | bool AArch64PreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const { |
1433 | llvm_unreachable("Unknown predicate" ); |
1434 | return false; |
1435 | } |
1436 | bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const { |
1437 | llvm_unreachable("Unknown predicate" ); |
1438 | return false; |
1439 | } |
1440 | bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const { |
1441 | llvm_unreachable("Unknown predicate" ); |
1442 | return false; |
1443 | } |
1444 | enum { |
1445 | GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1, |
1446 | GICXXPred_Simple_IsRule1Enabled, |
1447 | GICXXPred_Simple_IsRule2Enabled, |
1448 | GICXXPred_Simple_IsRule3Enabled, |
1449 | GICXXPred_Simple_IsRule4Enabled, |
1450 | GICXXPred_Simple_IsRule5Enabled, |
1451 | GICXXPred_Simple_IsRule6Enabled, |
1452 | GICXXPred_Simple_IsRule7Enabled, |
1453 | GICXXPred_Simple_IsRule8Enabled, |
1454 | GICXXPred_Simple_IsRule9Enabled, |
1455 | GICXXPred_Simple_IsRule10Enabled, |
1456 | GICXXPred_Simple_IsRule11Enabled, |
1457 | GICXXPred_Simple_IsRule12Enabled, |
1458 | GICXXPred_Simple_IsRule13Enabled, |
1459 | GICXXPred_Simple_IsRule14Enabled, |
1460 | GICXXPred_Simple_IsRule15Enabled, |
1461 | GICXXPred_Simple_IsRule16Enabled, |
1462 | GICXXPred_Simple_IsRule17Enabled, |
1463 | GICXXPred_Simple_IsRule18Enabled, |
1464 | GICXXPred_Simple_IsRule19Enabled, |
1465 | GICXXPred_Simple_IsRule20Enabled, |
1466 | GICXXPred_Simple_IsRule21Enabled, |
1467 | GICXXPred_Simple_IsRule22Enabled, |
1468 | GICXXPred_Simple_IsRule23Enabled, |
1469 | GICXXPred_Simple_IsRule24Enabled, |
1470 | GICXXPred_Simple_IsRule25Enabled, |
1471 | GICXXPred_Simple_IsRule26Enabled, |
1472 | GICXXPred_Simple_IsRule27Enabled, |
1473 | GICXXPred_Simple_IsRule28Enabled, |
1474 | GICXXPred_Simple_IsRule29Enabled, |
1475 | GICXXPred_Simple_IsRule30Enabled, |
1476 | GICXXPred_Simple_IsRule31Enabled, |
1477 | GICXXPred_Simple_IsRule32Enabled, |
1478 | GICXXPred_Simple_IsRule33Enabled, |
1479 | GICXXPred_Simple_IsRule34Enabled, |
1480 | GICXXPred_Simple_IsRule35Enabled, |
1481 | GICXXPred_Simple_IsRule36Enabled, |
1482 | GICXXPred_Simple_IsRule37Enabled, |
1483 | GICXXPred_Simple_IsRule38Enabled, |
1484 | GICXXPred_Simple_IsRule39Enabled, |
1485 | GICXXPred_Simple_IsRule40Enabled, |
1486 | GICXXPred_Simple_IsRule41Enabled, |
1487 | GICXXPred_Simple_IsRule42Enabled, |
1488 | GICXXPred_Simple_IsRule43Enabled, |
1489 | GICXXPred_Simple_IsRule44Enabled, |
1490 | GICXXPred_Simple_IsRule45Enabled, |
1491 | GICXXPred_Simple_IsRule46Enabled, |
1492 | GICXXPred_Simple_IsRule47Enabled, |
1493 | GICXXPred_Simple_IsRule48Enabled, |
1494 | GICXXPred_Simple_IsRule49Enabled, |
1495 | GICXXPred_Simple_IsRule50Enabled, |
1496 | GICXXPred_Simple_IsRule51Enabled, |
1497 | GICXXPred_Simple_IsRule52Enabled, |
1498 | GICXXPred_Simple_IsRule53Enabled, |
1499 | GICXXPred_Simple_IsRule54Enabled, |
1500 | GICXXPred_Simple_IsRule55Enabled, |
1501 | GICXXPred_Simple_IsRule56Enabled, |
1502 | GICXXPred_Simple_IsRule57Enabled, |
1503 | GICXXPred_Simple_IsRule58Enabled, |
1504 | GICXXPred_Simple_IsRule59Enabled, |
1505 | GICXXPred_Simple_IsRule60Enabled, |
1506 | GICXXPred_Simple_IsRule61Enabled, |
1507 | GICXXPred_Simple_IsRule62Enabled, |
1508 | GICXXPred_Simple_IsRule63Enabled, |
1509 | GICXXPred_Simple_IsRule64Enabled, |
1510 | GICXXPred_Simple_IsRule65Enabled, |
1511 | GICXXPred_Simple_IsRule66Enabled, |
1512 | GICXXPred_Simple_IsRule67Enabled, |
1513 | GICXXPred_Simple_IsRule68Enabled, |
1514 | GICXXPred_Simple_IsRule69Enabled, |
1515 | GICXXPred_Simple_IsRule70Enabled, |
1516 | GICXXPred_Simple_IsRule71Enabled, |
1517 | GICXXPred_Simple_IsRule72Enabled, |
1518 | GICXXPred_Simple_IsRule73Enabled, |
1519 | GICXXPred_Simple_IsRule74Enabled, |
1520 | GICXXPred_Simple_IsRule75Enabled, |
1521 | GICXXPred_Simple_IsRule76Enabled, |
1522 | GICXXPred_Simple_IsRule77Enabled, |
1523 | GICXXPred_Simple_IsRule78Enabled, |
1524 | GICXXPred_Simple_IsRule79Enabled, |
1525 | GICXXPred_Simple_IsRule80Enabled, |
1526 | GICXXPred_Simple_IsRule81Enabled, |
1527 | GICXXPred_Simple_IsRule82Enabled, |
1528 | GICXXPred_Simple_IsRule83Enabled, |
1529 | GICXXPred_Simple_IsRule84Enabled, |
1530 | GICXXPred_Simple_IsRule85Enabled, |
1531 | GICXXPred_Simple_IsRule86Enabled, |
1532 | GICXXPred_Simple_IsRule87Enabled, |
1533 | GICXXPred_Simple_IsRule88Enabled, |
1534 | GICXXPred_Simple_IsRule89Enabled, |
1535 | GICXXPred_Simple_IsRule90Enabled, |
1536 | GICXXPred_Simple_IsRule91Enabled, |
1537 | GICXXPred_Simple_IsRule92Enabled, |
1538 | GICXXPred_Simple_IsRule93Enabled, |
1539 | GICXXPred_Simple_IsRule94Enabled, |
1540 | GICXXPred_Simple_IsRule95Enabled, |
1541 | GICXXPred_Simple_IsRule96Enabled, |
1542 | GICXXPred_Simple_IsRule97Enabled, |
1543 | GICXXPred_Simple_IsRule98Enabled, |
1544 | GICXXPred_Simple_IsRule99Enabled, |
1545 | GICXXPred_Simple_IsRule100Enabled, |
1546 | GICXXPred_Simple_IsRule101Enabled, |
1547 | GICXXPred_Simple_IsRule102Enabled, |
1548 | GICXXPred_Simple_IsRule103Enabled, |
1549 | GICXXPred_Simple_IsRule104Enabled, |
1550 | GICXXPred_Simple_IsRule105Enabled, |
1551 | GICXXPred_Simple_IsRule106Enabled, |
1552 | GICXXPred_Simple_IsRule107Enabled, |
1553 | GICXXPred_Simple_IsRule108Enabled, |
1554 | GICXXPred_Simple_IsRule109Enabled, |
1555 | GICXXPred_Simple_IsRule110Enabled, |
1556 | GICXXPred_Simple_IsRule111Enabled, |
1557 | GICXXPred_Simple_IsRule112Enabled, |
1558 | GICXXPred_Simple_IsRule113Enabled, |
1559 | GICXXPred_Simple_IsRule114Enabled, |
1560 | GICXXPred_Simple_IsRule115Enabled, |
1561 | GICXXPred_Simple_IsRule116Enabled, |
1562 | GICXXPred_Simple_IsRule117Enabled, |
1563 | GICXXPred_Simple_IsRule118Enabled, |
1564 | GICXXPred_Simple_IsRule119Enabled, |
1565 | GICXXPred_Simple_IsRule120Enabled, |
1566 | GICXXPred_Simple_IsRule121Enabled, |
1567 | GICXXPred_Simple_IsRule122Enabled, |
1568 | GICXXPred_Simple_IsRule123Enabled, |
1569 | GICXXPred_Simple_IsRule124Enabled, |
1570 | GICXXPred_Simple_IsRule125Enabled, |
1571 | GICXXPred_Simple_IsRule126Enabled, |
1572 | GICXXPred_Simple_IsRule127Enabled, |
1573 | GICXXPred_Simple_IsRule128Enabled, |
1574 | GICXXPred_Simple_IsRule129Enabled, |
1575 | GICXXPred_Simple_IsRule130Enabled, |
1576 | GICXXPred_Simple_IsRule131Enabled, |
1577 | GICXXPred_Simple_IsRule132Enabled, |
1578 | GICXXPred_Simple_IsRule133Enabled, |
1579 | GICXXPred_Simple_IsRule134Enabled, |
1580 | GICXXPred_Simple_IsRule135Enabled, |
1581 | GICXXPred_Simple_IsRule136Enabled, |
1582 | GICXXPred_Simple_IsRule137Enabled, |
1583 | GICXXPred_Simple_IsRule138Enabled, |
1584 | GICXXPred_Simple_IsRule139Enabled, |
1585 | GICXXPred_Simple_IsRule140Enabled, |
1586 | GICXXPred_Simple_IsRule141Enabled, |
1587 | GICXXPred_Simple_IsRule142Enabled, |
1588 | GICXXPred_Simple_IsRule143Enabled, |
1589 | GICXXPred_Simple_IsRule144Enabled, |
1590 | GICXXPred_Simple_IsRule145Enabled, |
1591 | GICXXPred_Simple_IsRule146Enabled, |
1592 | GICXXPred_Simple_IsRule147Enabled, |
1593 | GICXXPred_Simple_IsRule148Enabled, |
1594 | GICXXPred_Simple_IsRule149Enabled, |
1595 | GICXXPred_Simple_IsRule150Enabled, |
1596 | GICXXPred_Simple_IsRule151Enabled, |
1597 | GICXXPred_Simple_IsRule152Enabled, |
1598 | GICXXPred_Simple_IsRule153Enabled, |
1599 | GICXXPred_Simple_IsRule154Enabled, |
1600 | GICXXPred_Simple_IsRule155Enabled, |
1601 | GICXXPred_Simple_IsRule156Enabled, |
1602 | GICXXPred_Simple_IsRule157Enabled, |
1603 | GICXXPred_Simple_IsRule158Enabled, |
1604 | GICXXPred_Simple_IsRule159Enabled, |
1605 | GICXXPred_Simple_IsRule160Enabled, |
1606 | GICXXPred_Simple_IsRule161Enabled, |
1607 | GICXXPred_Simple_IsRule162Enabled, |
1608 | GICXXPred_Simple_IsRule163Enabled, |
1609 | GICXXPred_Simple_IsRule164Enabled, |
1610 | GICXXPred_Simple_IsRule165Enabled, |
1611 | GICXXPred_Simple_IsRule166Enabled, |
1612 | GICXXPred_Simple_IsRule167Enabled, |
1613 | GICXXPred_Simple_IsRule168Enabled, |
1614 | GICXXPred_Simple_IsRule169Enabled, |
1615 | GICXXPred_Simple_IsRule170Enabled, |
1616 | GICXXPred_Simple_IsRule171Enabled, |
1617 | GICXXPred_Simple_IsRule172Enabled, |
1618 | GICXXPred_Simple_IsRule173Enabled, |
1619 | GICXXPred_Simple_IsRule174Enabled, |
1620 | GICXXPred_Simple_IsRule175Enabled, |
1621 | GICXXPred_Simple_IsRule176Enabled, |
1622 | GICXXPred_Simple_IsRule177Enabled, |
1623 | GICXXPred_Simple_IsRule178Enabled, |
1624 | GICXXPred_Simple_IsRule179Enabled, |
1625 | GICXXPred_Simple_IsRule180Enabled, |
1626 | GICXXPred_Simple_IsRule181Enabled, |
1627 | GICXXPred_Simple_IsRule182Enabled, |
1628 | GICXXPred_Simple_IsRule183Enabled, |
1629 | GICXXPred_Simple_IsRule184Enabled, |
1630 | GICXXPred_Simple_IsRule185Enabled, |
1631 | GICXXPred_Simple_IsRule186Enabled, |
1632 | GICXXPred_Simple_IsRule187Enabled, |
1633 | GICXXPred_Simple_IsRule188Enabled, |
1634 | GICXXPred_Simple_IsRule189Enabled, |
1635 | GICXXPred_Simple_IsRule190Enabled, |
1636 | GICXXPred_Simple_IsRule191Enabled, |
1637 | GICXXPred_Simple_IsRule192Enabled, |
1638 | GICXXPred_Simple_IsRule193Enabled, |
1639 | GICXXPred_Simple_IsRule194Enabled, |
1640 | GICXXPred_Simple_IsRule195Enabled, |
1641 | GICXXPred_Simple_IsRule196Enabled, |
1642 | GICXXPred_Simple_IsRule197Enabled, |
1643 | GICXXPred_Simple_IsRule198Enabled, |
1644 | }; |
1645 | |
1646 | bool AArch64PreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const { |
1647 | return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1); |
1648 | } |
1649 | // Custom renderers. |
1650 | enum { |
1651 | GICR_Invalid, |
1652 | }; |
1653 | AArch64PreLegalizerCombinerImpl::CustomRendererFn |
1654 | AArch64PreLegalizerCombinerImpl::CustomRenderers[] = { |
1655 | nullptr, // GICR_Invalid |
1656 | }; |
1657 | |
1658 | bool AArch64PreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const { |
1659 | const TargetSubtargetInfo &ST = MF.getSubtarget(); |
1660 | const PredicateBitset AvailableFeatures = getAvailableFeatures(); |
1661 | B.setInstrAndDebugLoc(I); |
1662 | State.MIs.clear(); |
1663 | State.MIs.push_back(&I); |
1664 | if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) { |
1665 | return true; |
1666 | } |
1667 | |
1668 | return false; |
1669 | } |
1670 | |
1671 | enum { |
1672 | GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1, |
1673 | GICXXCustomAction_GICombiner1, |
1674 | GICXXCustomAction_GICombiner2, |
1675 | GICXXCustomAction_GICombiner3, |
1676 | GICXXCustomAction_GICombiner4, |
1677 | GICXXCustomAction_GICombiner5, |
1678 | GICXXCustomAction_GICombiner6, |
1679 | GICXXCustomAction_GICombiner7, |
1680 | GICXXCustomAction_GICombiner8, |
1681 | GICXXCustomAction_GICombiner9, |
1682 | GICXXCustomAction_GICombiner10, |
1683 | GICXXCustomAction_GICombiner11, |
1684 | GICXXCustomAction_GICombiner12, |
1685 | GICXXCustomAction_GICombiner13, |
1686 | GICXXCustomAction_GICombiner14, |
1687 | GICXXCustomAction_GICombiner15, |
1688 | GICXXCustomAction_GICombiner16, |
1689 | GICXXCustomAction_GICombiner17, |
1690 | GICXXCustomAction_GICombiner18, |
1691 | GICXXCustomAction_GICombiner19, |
1692 | GICXXCustomAction_GICombiner20, |
1693 | GICXXCustomAction_GICombiner21, |
1694 | GICXXCustomAction_GICombiner22, |
1695 | GICXXCustomAction_GICombiner23, |
1696 | GICXXCustomAction_GICombiner24, |
1697 | GICXXCustomAction_GICombiner25, |
1698 | GICXXCustomAction_GICombiner26, |
1699 | GICXXCustomAction_GICombiner27, |
1700 | GICXXCustomAction_GICombiner28, |
1701 | GICXXCustomAction_GICombiner29, |
1702 | GICXXCustomAction_GICombiner30, |
1703 | GICXXCustomAction_GICombiner31, |
1704 | GICXXCustomAction_GICombiner32, |
1705 | GICXXCustomAction_GICombiner33, |
1706 | GICXXCustomAction_GICombiner34, |
1707 | GICXXCustomAction_GICombiner35, |
1708 | GICXXCustomAction_GICombiner36, |
1709 | GICXXCustomAction_GICombiner37, |
1710 | GICXXCustomAction_GICombiner38, |
1711 | GICXXCustomAction_GICombiner39, |
1712 | GICXXCustomAction_GICombiner40, |
1713 | GICXXCustomAction_GICombiner41, |
1714 | GICXXCustomAction_GICombiner42, |
1715 | GICXXCustomAction_GICombiner43, |
1716 | GICXXCustomAction_GICombiner44, |
1717 | GICXXCustomAction_GICombiner45, |
1718 | GICXXCustomAction_GICombiner46, |
1719 | GICXXCustomAction_GICombiner47, |
1720 | GICXXCustomAction_GICombiner48, |
1721 | GICXXCustomAction_GICombiner49, |
1722 | GICXXCustomAction_GICombiner50, |
1723 | GICXXCustomAction_GICombiner51, |
1724 | GICXXCustomAction_GICombiner52, |
1725 | GICXXCustomAction_GICombiner53, |
1726 | GICXXCustomAction_GICombiner54, |
1727 | GICXXCustomAction_GICombiner55, |
1728 | GICXXCustomAction_GICombiner56, |
1729 | GICXXCustomAction_GICombiner57, |
1730 | GICXXCustomAction_GICombiner58, |
1731 | GICXXCustomAction_GICombiner59, |
1732 | GICXXCustomAction_GICombiner60, |
1733 | GICXXCustomAction_GICombiner61, |
1734 | GICXXCustomAction_GICombiner62, |
1735 | GICXXCustomAction_GICombiner63, |
1736 | GICXXCustomAction_GICombiner64, |
1737 | GICXXCustomAction_GICombiner65, |
1738 | GICXXCustomAction_GICombiner66, |
1739 | GICXXCustomAction_GICombiner67, |
1740 | GICXXCustomAction_GICombiner68, |
1741 | GICXXCustomAction_GICombiner69, |
1742 | GICXXCustomAction_GICombiner70, |
1743 | GICXXCustomAction_GICombiner71, |
1744 | GICXXCustomAction_GICombiner72, |
1745 | GICXXCustomAction_GICombiner73, |
1746 | GICXXCustomAction_GICombiner74, |
1747 | GICXXCustomAction_GICombiner75, |
1748 | GICXXCustomAction_GICombiner76, |
1749 | GICXXCustomAction_GICombiner77, |
1750 | GICXXCustomAction_GICombiner78, |
1751 | GICXXCustomAction_GICombiner79, |
1752 | GICXXCustomAction_GICombiner80, |
1753 | GICXXCustomAction_GICombiner81, |
1754 | GICXXCustomAction_GICombiner82, |
1755 | GICXXCustomAction_GICombiner83, |
1756 | GICXXCustomAction_GICombiner84, |
1757 | GICXXCustomAction_GICombiner85, |
1758 | GICXXCustomAction_GICombiner86, |
1759 | GICXXCustomAction_GICombiner87, |
1760 | GICXXCustomAction_GICombiner88, |
1761 | GICXXCustomAction_GICombiner89, |
1762 | GICXXCustomAction_GICombiner90, |
1763 | GICXXCustomAction_GICombiner91, |
1764 | GICXXCustomAction_GICombiner92, |
1765 | GICXXCustomAction_GICombiner93, |
1766 | GICXXCustomAction_GICombiner94, |
1767 | GICXXCustomAction_GICombiner95, |
1768 | GICXXCustomAction_GICombiner96, |
1769 | GICXXCustomAction_GICombiner97, |
1770 | GICXXCustomAction_GICombiner98, |
1771 | GICXXCustomAction_GICombiner99, |
1772 | GICXXCustomAction_GICombiner100, |
1773 | GICXXCustomAction_GICombiner101, |
1774 | GICXXCustomAction_GICombiner102, |
1775 | GICXXCustomAction_GICombiner103, |
1776 | GICXXCustomAction_GICombiner104, |
1777 | GICXXCustomAction_GICombiner105, |
1778 | GICXXCustomAction_GICombiner106, |
1779 | GICXXCustomAction_GICombiner107, |
1780 | GICXXCustomAction_GICombiner108, |
1781 | GICXXCustomAction_GICombiner109, |
1782 | GICXXCustomAction_GICombiner110, |
1783 | GICXXCustomAction_GICombiner111, |
1784 | GICXXCustomAction_GICombiner112, |
1785 | GICXXCustomAction_GICombiner113, |
1786 | GICXXCustomAction_GICombiner114, |
1787 | GICXXCustomAction_GICombiner115, |
1788 | GICXXCustomAction_GICombiner116, |
1789 | GICXXCustomAction_GICombiner117, |
1790 | GICXXCustomAction_GICombiner118, |
1791 | GICXXCustomAction_GICombiner119, |
1792 | GICXXCustomAction_GICombiner120, |
1793 | GICXXCustomAction_GICombiner121, |
1794 | GICXXCustomAction_GICombiner122, |
1795 | GICXXCustomAction_GICombiner123, |
1796 | GICXXCustomAction_GICombiner124, |
1797 | GICXXCustomAction_GICombiner125, |
1798 | GICXXCustomAction_GICombiner126, |
1799 | GICXXCustomAction_GICombiner127, |
1800 | GICXXCustomAction_GICombiner128, |
1801 | GICXXCustomAction_GICombiner129, |
1802 | GICXXCustomAction_GICombiner130, |
1803 | GICXXCustomAction_GICombiner131, |
1804 | GICXXCustomAction_GICombiner132, |
1805 | GICXXCustomAction_GICombiner133, |
1806 | GICXXCustomAction_GICombiner134, |
1807 | GICXXCustomAction_GICombiner135, |
1808 | }; |
1809 | bool AArch64PreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const { |
1810 | Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]); |
1811 | switch(ApplyID) { |
1812 | case GICXXCustomAction_GICombiner0:{ |
1813 | // Match Patterns |
1814 | if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) { |
1815 | return false; |
1816 | } |
1817 | // Apply Patterns |
1818 | Helper.applyCombineCopy(*State.MIs[0]); |
1819 | return true; |
1820 | } |
1821 | case GICXXCustomAction_GICombiner1:{ |
1822 | unsigned GIMatchData_matchinfo; |
1823 | // Match Patterns |
1824 | if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) { |
1825 | return false; |
1826 | } |
1827 | // Apply Patterns |
1828 | Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo); |
1829 | return true; |
1830 | } |
1831 | case GICXXCustomAction_GICombiner2:{ |
1832 | std::pair<Register, bool> GIMatchData_info; |
1833 | // Match Patterns |
1834 | if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) { |
1835 | return false; |
1836 | } |
1837 | // Apply Patterns |
1838 | Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info); |
1839 | return true; |
1840 | } |
1841 | case GICXXCustomAction_GICombiner3:{ |
1842 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1843 | // Match Patterns |
1844 | if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) { |
1845 | return false; |
1846 | } |
1847 | // Apply Patterns |
1848 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
1849 | return true; |
1850 | } |
1851 | case GICXXCustomAction_GICombiner4:{ |
1852 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1853 | // Match Patterns |
1854 | if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) { |
1855 | return false; |
1856 | } |
1857 | // Apply Patterns |
1858 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
1859 | return true; |
1860 | } |
1861 | case GICXXCustomAction_GICombiner5:{ |
1862 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1863 | // Match Patterns |
1864 | if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
1865 | return false; |
1866 | } |
1867 | // Apply Patterns |
1868 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
1869 | return true; |
1870 | } |
1871 | case GICXXCustomAction_GICombiner6:{ |
1872 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1873 | // Match Patterns |
1874 | if(![&](){return Helper.matchExtractVectorElementWithBuildVector(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
1875 | return false; |
1876 | } |
1877 | // Apply Patterns |
1878 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
1879 | return true; |
1880 | } |
1881 | case GICXXCustomAction_GICombiner7:{ |
1882 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1883 | // Match Patterns |
1884 | if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
1885 | return false; |
1886 | } |
1887 | // Apply Patterns |
1888 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
1889 | return true; |
1890 | } |
1891 | case GICXXCustomAction_GICombiner8:{ |
1892 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1893 | // Match Patterns |
1894 | if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
1895 | return false; |
1896 | } |
1897 | // Apply Patterns |
1898 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
1899 | return true; |
1900 | } |
1901 | case GICXXCustomAction_GICombiner9:{ |
1902 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1903 | // Match Patterns |
1904 | if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
1905 | return false; |
1906 | } |
1907 | // Apply Patterns |
1908 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
1909 | return true; |
1910 | } |
1911 | case GICXXCustomAction_GICombiner10:{ |
1912 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1913 | // Match Patterns |
1914 | if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
1915 | return false; |
1916 | } |
1917 | // Apply Patterns |
1918 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
1919 | return true; |
1920 | } |
1921 | case GICXXCustomAction_GICombiner11:{ |
1922 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1923 | // Match Patterns |
1924 | if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
1925 | return false; |
1926 | } |
1927 | // Apply Patterns |
1928 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
1929 | return true; |
1930 | } |
1931 | case GICXXCustomAction_GICombiner12:{ |
1932 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1933 | // Match Patterns |
1934 | if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
1935 | return false; |
1936 | } |
1937 | // Apply Patterns |
1938 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
1939 | return true; |
1940 | } |
1941 | case GICXXCustomAction_GICombiner13:{ |
1942 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1943 | // Match Patterns |
1944 | if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) { |
1945 | return false; |
1946 | } |
1947 | // Apply Patterns |
1948 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
1949 | return true; |
1950 | } |
1951 | case GICXXCustomAction_GICombiner14:{ |
1952 | SmallVector<Register, 4> GIMatchData_info; |
1953 | // Match Patterns |
1954 | if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) { |
1955 | return false; |
1956 | } |
1957 | // Apply Patterns |
1958 | Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info); |
1959 | return true; |
1960 | } |
1961 | case GICXXCustomAction_GICombiner15:{ |
1962 | Register GIMatchData_matchinfo; |
1963 | // Match Patterns |
1964 | if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) { |
1965 | return false; |
1966 | } |
1967 | // Apply Patterns |
1968 | Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo); |
1969 | return true; |
1970 | } |
1971 | case GICXXCustomAction_GICombiner16:{ |
1972 | SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo; |
1973 | // Match Patterns |
1974 | if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) { |
1975 | return false; |
1976 | } |
1977 | // Apply Patterns |
1978 | Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo); |
1979 | return true; |
1980 | } |
1981 | case GICXXCustomAction_GICombiner17:{ |
1982 | PreferredTuple GIMatchData_matchinfo; |
1983 | // Match Patterns |
1984 | if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) { |
1985 | return false; |
1986 | } |
1987 | // Apply Patterns |
1988 | Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo); |
1989 | return true; |
1990 | } |
1991 | case GICXXCustomAction_GICombiner18:{ |
1992 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
1993 | // Match Patterns |
1994 | if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) { |
1995 | return false; |
1996 | } |
1997 | // Apply Patterns |
1998 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
1999 | return true; |
2000 | } |
2001 | case GICXXCustomAction_GICombiner19:{ |
2002 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2003 | // Match Patterns |
2004 | if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2005 | return false; |
2006 | } |
2007 | // Apply Patterns |
2008 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
2009 | return true; |
2010 | } |
2011 | case GICXXCustomAction_GICombiner20:{ |
2012 | // Match Patterns |
2013 | if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) { |
2014 | return false; |
2015 | } |
2016 | // Apply Patterns |
2017 | Helper.replaceInstWithFConstant(*State.MIs[0], 0.0); |
2018 | return true; |
2019 | } |
2020 | case GICXXCustomAction_GICombiner21:{ |
2021 | // Match Patterns |
2022 | if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) { |
2023 | return false; |
2024 | } |
2025 | // Apply Patterns |
2026 | Helper.replaceInstWithConstant(*State.MIs[0], 0); |
2027 | return true; |
2028 | } |
2029 | case GICXXCustomAction_GICombiner22:{ |
2030 | // Match Patterns |
2031 | if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) { |
2032 | return false; |
2033 | } |
2034 | // Apply Patterns |
2035 | Helper.replaceInstWithConstant(*State.MIs[0], -1); |
2036 | return true; |
2037 | } |
2038 | case GICXXCustomAction_GICombiner23:{ |
2039 | // Match Patterns |
2040 | if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) { |
2041 | return false; |
2042 | } |
2043 | // Apply Patterns |
2044 | Helper.replaceInstWithConstant(*State.MIs[0], 0); |
2045 | return true; |
2046 | } |
2047 | case GICXXCustomAction_GICombiner24:{ |
2048 | // Match Patterns |
2049 | if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) { |
2050 | return false; |
2051 | } |
2052 | // Apply Patterns |
2053 | Helper.replaceInstWithUndef(*State.MIs[0]); |
2054 | return true; |
2055 | } |
2056 | case GICXXCustomAction_GICombiner25:{ |
2057 | // Match Patterns |
2058 | if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) { |
2059 | return false; |
2060 | } |
2061 | // Apply Patterns |
2062 | Helper.replaceInstWithUndef(*State.MIs[0]); |
2063 | return true; |
2064 | } |
2065 | case GICXXCustomAction_GICombiner26:{ |
2066 | // Match Patterns |
2067 | if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) { |
2068 | return false; |
2069 | } |
2070 | // Apply Patterns |
2071 | Helper.replaceInstWithUndef(*State.MIs[0]); |
2072 | return true; |
2073 | } |
2074 | case GICXXCustomAction_GICombiner27:{ |
2075 | // Match Patterns |
2076 | if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) { |
2077 | return false; |
2078 | } |
2079 | // Apply Patterns |
2080 | Helper.replaceInstWithUndef(*State.MIs[0]); |
2081 | return true; |
2082 | } |
2083 | case GICXXCustomAction_GICombiner28:{ |
2084 | // Match Patterns |
2085 | if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) { |
2086 | return false; |
2087 | } |
2088 | // Apply Patterns |
2089 | Helper.eraseInst(*State.MIs[0]); |
2090 | return true; |
2091 | } |
2092 | case GICXXCustomAction_GICombiner29:{ |
2093 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2094 | // Match Patterns |
2095 | if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) { |
2096 | return false; |
2097 | } |
2098 | // Apply Patterns |
2099 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2100 | return true; |
2101 | } |
2102 | case GICXXCustomAction_GICombiner30:{ |
2103 | // Match Patterns |
2104 | if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) { |
2105 | return false; |
2106 | } |
2107 | // Apply Patterns |
2108 | Helper.replaceInstWithUndef(*State.MIs[0]); |
2109 | return true; |
2110 | } |
2111 | case GICXXCustomAction_GICombiner31:{ |
2112 | // Match Patterns |
2113 | if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) { |
2114 | return false; |
2115 | } |
2116 | // Apply Patterns |
2117 | Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2); |
2118 | return true; |
2119 | } |
2120 | case GICXXCustomAction_GICombiner32:{ |
2121 | // Match Patterns |
2122 | if(![&](){return Helper.matchOperandIsZero(*State.MIs[0], 1);}()) { |
2123 | return false; |
2124 | } |
2125 | // Apply Patterns |
2126 | Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1); |
2127 | return true; |
2128 | } |
2129 | case GICXXCustomAction_GICombiner33:{ |
2130 | Register GIMatchData_info; |
2131 | // Match Patterns |
2132 | if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) { |
2133 | return false; |
2134 | } |
2135 | // Apply Patterns |
2136 | Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info); |
2137 | return true; |
2138 | } |
2139 | case GICXXCustomAction_GICombiner34:{ |
2140 | Register GIMatchData_info; |
2141 | // Match Patterns |
2142 | if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) { |
2143 | return false; |
2144 | } |
2145 | // Apply Patterns |
2146 | Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info); |
2147 | return true; |
2148 | } |
2149 | case GICXXCustomAction_GICombiner35:{ |
2150 | Register GIMatchData_matchinfo; |
2151 | // Match Patterns |
2152 | if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2153 | return false; |
2154 | } |
2155 | // Apply Patterns |
2156 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo); |
2157 | return true; |
2158 | } |
2159 | case GICXXCustomAction_GICombiner36:{ |
2160 | Register GIMatchData_matchinfo; |
2161 | // Match Patterns |
2162 | if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2163 | return false; |
2164 | } |
2165 | // Apply Patterns |
2166 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo); |
2167 | return true; |
2168 | } |
2169 | case GICXXCustomAction_GICombiner37:{ |
2170 | Register GIMatchData_matchinfo; |
2171 | // Match Patterns |
2172 | if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2173 | return false; |
2174 | } |
2175 | // Apply Patterns |
2176 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo); |
2177 | return true; |
2178 | } |
2179 | case GICXXCustomAction_GICombiner38:{ |
2180 | Register GIMatchData_matchinfo; |
2181 | // Match Patterns |
2182 | if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2183 | return false; |
2184 | } |
2185 | // Apply Patterns |
2186 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo); |
2187 | return true; |
2188 | } |
2189 | case GICXXCustomAction_GICombiner39:{ |
2190 | // Match Patterns |
2191 | if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) { |
2192 | return false; |
2193 | } |
2194 | // Apply Patterns |
2195 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg()); |
2196 | return true; |
2197 | } |
2198 | case GICXXCustomAction_GICombiner40:{ |
2199 | MachineInstr* GIMatchData_matchinfo; |
2200 | // Match Patterns |
2201 | if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2202 | return false; |
2203 | } |
2204 | // Apply Patterns |
2205 | Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo); |
2206 | return true; |
2207 | } |
2208 | case GICXXCustomAction_GICombiner41:{ |
2209 | std::tuple<Register, Register> GIMatchData_info; |
2210 | // Match Patterns |
2211 | if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) { |
2212 | return false; |
2213 | } |
2214 | // Apply Patterns |
2215 | Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info); |
2216 | return true; |
2217 | } |
2218 | case GICXXCustomAction_GICombiner42:{ |
2219 | InstructionStepsMatchInfo GIMatchData_info; |
2220 | // Match Patterns |
2221 | if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) { |
2222 | return false; |
2223 | } |
2224 | // Apply Patterns |
2225 | Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info); |
2226 | return true; |
2227 | } |
2228 | case GICXXCustomAction_GICombiner43:{ |
2229 | // Match Patterns |
2230 | if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0]);}()) { |
2231 | return false; |
2232 | } |
2233 | // Apply Patterns |
2234 | Helper.replaceInstWithUndef(*State.MIs[0]); |
2235 | return true; |
2236 | } |
2237 | case GICXXCustomAction_GICombiner44:{ |
2238 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2239 | // Match Patterns |
2240 | if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2241 | return false; |
2242 | } |
2243 | // Apply Patterns |
2244 | Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo); |
2245 | return true; |
2246 | } |
2247 | case GICXXCustomAction_GICombiner45:{ |
2248 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2249 | // Match Patterns |
2250 | if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2251 | return false; |
2252 | } |
2253 | // Apply Patterns |
2254 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
2255 | return true; |
2256 | } |
2257 | case GICXXCustomAction_GICombiner46:{ |
2258 | PtrAddChain GIMatchData_matchinfo; |
2259 | // Match Patterns |
2260 | if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2261 | return false; |
2262 | } |
2263 | // Apply Patterns |
2264 | Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo); |
2265 | return true; |
2266 | } |
2267 | case GICXXCustomAction_GICombiner47:{ |
2268 | std::tuple<Register, int64_t> GIMatchData_info; |
2269 | // Match Patterns |
2270 | if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) { |
2271 | return false; |
2272 | } |
2273 | // Apply Patterns |
2274 | Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info); |
2275 | return true; |
2276 | } |
2277 | case GICXXCustomAction_GICombiner48:{ |
2278 | std::tuple<Register, unsigned> GIMatchData_matchinfo; |
2279 | // Match Patterns |
2280 | if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2281 | return false; |
2282 | } |
2283 | // Apply Patterns |
2284 | Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo); |
2285 | return true; |
2286 | } |
2287 | case GICXXCustomAction_GICombiner49:{ |
2288 | RegisterImmPair GIMatchData_matchinfo; |
2289 | // Match Patterns |
2290 | if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2291 | return false; |
2292 | } |
2293 | // Apply Patterns |
2294 | Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo); |
2295 | return true; |
2296 | } |
2297 | case GICXXCustomAction_GICombiner50:{ |
2298 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2299 | // Match Patterns |
2300 | if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2301 | return false; |
2302 | } |
2303 | // Apply Patterns |
2304 | Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo); |
2305 | return true; |
2306 | } |
2307 | case GICXXCustomAction_GICombiner51:{ |
2308 | unsigned GIMatchData_matchinfo; |
2309 | // Match Patterns |
2310 | if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2311 | return false; |
2312 | } |
2313 | // Apply Patterns |
2314 | Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo); |
2315 | return true; |
2316 | } |
2317 | case GICXXCustomAction_GICombiner52:{ |
2318 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2319 | // Match Patterns |
2320 | if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) { |
2321 | return false; |
2322 | } |
2323 | // Apply Patterns |
2324 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info); |
2325 | return true; |
2326 | } |
2327 | case GICXXCustomAction_GICombiner53:{ |
2328 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2329 | // Match Patterns |
2330 | if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2331 | return false; |
2332 | } |
2333 | // Apply Patterns |
2334 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
2335 | return true; |
2336 | } |
2337 | case GICXXCustomAction_GICombiner54:{ |
2338 | Register GIMatchData_matchinfo; |
2339 | // Match Patterns |
2340 | if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2341 | return false; |
2342 | } |
2343 | // Apply Patterns |
2344 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo); |
2345 | return true; |
2346 | } |
2347 | case GICXXCustomAction_GICombiner55:{ |
2348 | // Match Patterns |
2349 | if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) { |
2350 | return false; |
2351 | } |
2352 | // Apply Patterns |
2353 | Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1); |
2354 | return true; |
2355 | } |
2356 | case GICXXCustomAction_GICombiner56:{ |
2357 | Register GIMatchData_matchinfo; |
2358 | // Match Patterns |
2359 | if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2360 | return false; |
2361 | } |
2362 | // Apply Patterns |
2363 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo); |
2364 | return true; |
2365 | } |
2366 | case GICXXCustomAction_GICombiner57:{ |
2367 | // Match Patterns |
2368 | if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);}()) { |
2369 | return false; |
2370 | } |
2371 | // Apply Patterns |
2372 | Helper.applySimplifyURemByPow2(*State.MIs[0]); |
2373 | return true; |
2374 | } |
2375 | case GICXXCustomAction_GICombiner58:{ |
2376 | Register GIMatchData_matchinfo; |
2377 | // Match Patterns |
2378 | if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2379 | return false; |
2380 | } |
2381 | // Apply Patterns |
2382 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo); |
2383 | return true; |
2384 | } |
2385 | case GICXXCustomAction_GICombiner59:{ |
2386 | int64_t GIMatchData_matchinfo; |
2387 | // Match Patterns |
2388 | if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2389 | return false; |
2390 | } |
2391 | // Apply Patterns |
2392 | Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo); |
2393 | return true; |
2394 | } |
2395 | case GICXXCustomAction_GICombiner60:{ |
2396 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2397 | // Match Patterns |
2398 | if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) { |
2399 | return false; |
2400 | } |
2401 | // Apply Patterns |
2402 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2403 | return true; |
2404 | } |
2405 | case GICXXCustomAction_GICombiner61:{ |
2406 | // Match Patterns |
2407 | if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits(); |
2408 | return Helper.getKnownBits()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(), |
2409 | APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) { |
2410 | return false; |
2411 | } |
2412 | // Apply Patterns |
2413 | Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]); |
2414 | Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm()); |
2415 | State.MIs[0]->eraseFromParent(); |
2416 | return true; |
2417 | } |
2418 | case GICXXCustomAction_GICombiner62:{ |
2419 | std::tuple<Register, unsigned> GIMatchData_matchinfo; |
2420 | // Match Patterns |
2421 | if(![&](){return Helper.matchCombineExtOfExt(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2422 | return false; |
2423 | } |
2424 | // Apply Patterns |
2425 | Helper.applyCombineExtOfExt(*State.MIs[0], GIMatchData_matchinfo); |
2426 | return true; |
2427 | } |
2428 | case GICXXCustomAction_GICombiner63:{ |
2429 | SmallVector<Register, 4> GIMatchData_info; |
2430 | // Match Patterns |
2431 | if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) { |
2432 | return false; |
2433 | } |
2434 | // Apply Patterns |
2435 | Helper.applyNotCmp(*State.MIs[0], GIMatchData_info); |
2436 | return true; |
2437 | } |
2438 | case GICXXCustomAction_GICombiner64:{ |
2439 | MachineInstr * GIMatchData_matchinfo; |
2440 | // Match Patterns |
2441 | if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2442 | return false; |
2443 | } |
2444 | // Apply Patterns |
2445 | Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo); |
2446 | return true; |
2447 | } |
2448 | case GICXXCustomAction_GICombiner65:{ |
2449 | SmallVector<Register, 8> GIMatchData_info; |
2450 | // Match Patterns |
2451 | if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) { |
2452 | return false; |
2453 | } |
2454 | // Apply Patterns |
2455 | Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info); |
2456 | return true; |
2457 | } |
2458 | case GICXXCustomAction_GICombiner66:{ |
2459 | SmallVector<APInt, 8> GIMatchData_info; |
2460 | // Match Patterns |
2461 | if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) { |
2462 | return false; |
2463 | } |
2464 | // Apply Patterns |
2465 | Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info); |
2466 | return true; |
2467 | } |
2468 | case GICXXCustomAction_GICombiner67:{ |
2469 | // Match Patterns |
2470 | if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) { |
2471 | return false; |
2472 | } |
2473 | // Apply Patterns |
2474 | Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]); |
2475 | return true; |
2476 | } |
2477 | case GICXXCustomAction_GICombiner68:{ |
2478 | // Match Patterns |
2479 | if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) { |
2480 | return false; |
2481 | } |
2482 | // Apply Patterns |
2483 | Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]); |
2484 | return true; |
2485 | } |
2486 | case GICXXCustomAction_GICombiner69:{ |
2487 | Register GIMatchData_matchinfo; |
2488 | // Match Patterns |
2489 | if(![&](){return Helper.matchCombineMergeUnmerge(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2490 | return false; |
2491 | } |
2492 | // Apply Patterns |
2493 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo); |
2494 | return true; |
2495 | } |
2496 | case GICXXCustomAction_GICombiner70:{ |
2497 | std::pair<Register, unsigned> GIMatchData_matchinfo; |
2498 | // Match Patterns |
2499 | if(![&](){return Helper.matchCombineTruncOfExt(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2500 | return false; |
2501 | } |
2502 | // Apply Patterns |
2503 | Helper.applyCombineTruncOfExt(*State.MIs[0], GIMatchData_matchinfo); |
2504 | return true; |
2505 | } |
2506 | case GICXXCustomAction_GICombiner71:{ |
2507 | std::pair<MachineInstr*, LLT> GIMatchData_matchinfo; |
2508 | // Match Patterns |
2509 | if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2510 | return false; |
2511 | } |
2512 | // Apply Patterns |
2513 | Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo); |
2514 | return true; |
2515 | } |
2516 | case GICXXCustomAction_GICombiner72:{ |
2517 | // Apply Patterns |
2518 | Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm()); |
2519 | return true; |
2520 | } |
2521 | case GICXXCustomAction_GICombiner73:{ |
2522 | // Apply Patterns |
2523 | Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0); |
2524 | return true; |
2525 | } |
2526 | case GICXXCustomAction_GICombiner74:{ |
2527 | APInt GIMatchData_info; |
2528 | // Match Patterns |
2529 | if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) { |
2530 | return false; |
2531 | } |
2532 | // Apply Patterns |
2533 | Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info); |
2534 | return true; |
2535 | } |
2536 | case GICXXCustomAction_GICombiner75:{ |
2537 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2538 | // Match Patterns |
2539 | if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) { |
2540 | return false; |
2541 | } |
2542 | // Apply Patterns |
2543 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2544 | return true; |
2545 | } |
2546 | case GICXXCustomAction_GICombiner76:{ |
2547 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2548 | // Match Patterns |
2549 | if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2550 | return false; |
2551 | } |
2552 | // Apply Patterns |
2553 | Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo); |
2554 | return true; |
2555 | } |
2556 | case GICXXCustomAction_GICombiner77:{ |
2557 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2558 | // Match Patterns |
2559 | if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2560 | return false; |
2561 | } |
2562 | // Apply Patterns |
2563 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
2564 | return true; |
2565 | } |
2566 | case GICXXCustomAction_GICombiner78:{ |
2567 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2568 | // Match Patterns |
2569 | if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2570 | return false; |
2571 | } |
2572 | // Apply Patterns |
2573 | Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo); |
2574 | return true; |
2575 | } |
2576 | case GICXXCustomAction_GICombiner79:{ |
2577 | unsigned GIMatchData_info; |
2578 | // Match Patterns |
2579 | if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) { |
2580 | return false; |
2581 | } |
2582 | // Apply Patterns |
2583 | Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info); |
2584 | return true; |
2585 | } |
2586 | case GICXXCustomAction_GICombiner80:{ |
2587 | // Match Patterns |
2588 | if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) { |
2589 | return false; |
2590 | } |
2591 | // Apply Patterns |
2592 | Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue()); |
2593 | return true; |
2594 | } |
2595 | case GICXXCustomAction_GICombiner81:{ |
2596 | std::pair<Register, Register> GIMatchData_matchinfo; |
2597 | // Match Patterns |
2598 | if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2599 | return false; |
2600 | } |
2601 | // Apply Patterns |
2602 | Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo); |
2603 | return true; |
2604 | } |
2605 | case GICXXCustomAction_GICombiner82:{ |
2606 | // Match Patterns |
2607 | if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) { |
2608 | return false; |
2609 | } |
2610 | // Apply Patterns |
2611 | Helper.applyPtrAddZero(*State.MIs[0]); |
2612 | return true; |
2613 | } |
2614 | case GICXXCustomAction_GICombiner83:{ |
2615 | RegisterImmPair GIMatchData_matchinfo; |
2616 | // Match Patterns |
2617 | if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2618 | return false; |
2619 | } |
2620 | // Apply Patterns |
2621 | Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo); |
2622 | return true; |
2623 | } |
2624 | case GICXXCustomAction_GICombiner84:{ |
2625 | ShiftOfShiftedLogic GIMatchData_matchinfo; |
2626 | // Match Patterns |
2627 | if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2628 | return false; |
2629 | } |
2630 | // Apply Patterns |
2631 | Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo); |
2632 | return true; |
2633 | } |
2634 | case GICXXCustomAction_GICombiner85:{ |
2635 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2636 | // Match Patterns |
2637 | if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) { |
2638 | return false; |
2639 | } |
2640 | // Apply Patterns |
2641 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2642 | return true; |
2643 | } |
2644 | case GICXXCustomAction_GICombiner86:{ |
2645 | MachineInstr * GIMatchData_matchinfo; |
2646 | // Match Patterns |
2647 | if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2648 | return false; |
2649 | } |
2650 | // Apply Patterns |
2651 | Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo); |
2652 | return true; |
2653 | } |
2654 | case GICXXCustomAction_GICombiner87:{ |
2655 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2656 | // Match Patterns |
2657 | if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], GIMatchData_info);}()) { |
2658 | return false; |
2659 | } |
2660 | // Apply Patterns |
2661 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2662 | return true; |
2663 | } |
2664 | case GICXXCustomAction_GICombiner88:{ |
2665 | // Match Patterns |
2666 | if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) { |
2667 | return false; |
2668 | } |
2669 | // Apply Patterns |
2670 | Helper.applyFunnelShiftToRotate(*State.MIs[0]); |
2671 | return true; |
2672 | } |
2673 | case GICXXCustomAction_GICombiner89:{ |
2674 | // Match Patterns |
2675 | if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) { |
2676 | return false; |
2677 | } |
2678 | // Apply Patterns |
2679 | Helper.applyFunnelShiftConstantModulo(*State.MIs[0]); |
2680 | return true; |
2681 | } |
2682 | case GICXXCustomAction_GICombiner90:{ |
2683 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2684 | // Match Patterns |
2685 | if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2686 | return false; |
2687 | } |
2688 | // Apply Patterns |
2689 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
2690 | return true; |
2691 | } |
2692 | case GICXXCustomAction_GICombiner91:{ |
2693 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2694 | // Match Patterns |
2695 | if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) { |
2696 | return false; |
2697 | } |
2698 | // Apply Patterns |
2699 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2700 | return true; |
2701 | } |
2702 | case GICXXCustomAction_GICombiner92:{ |
2703 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2704 | // Match Patterns |
2705 | if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) { |
2706 | return false; |
2707 | } |
2708 | // Apply Patterns |
2709 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2710 | return true; |
2711 | } |
2712 | case GICXXCustomAction_GICombiner93:{ |
2713 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2714 | // Match Patterns |
2715 | if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) { |
2716 | return false; |
2717 | } |
2718 | // Apply Patterns |
2719 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2720 | return true; |
2721 | } |
2722 | case GICXXCustomAction_GICombiner94:{ |
2723 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2724 | // Match Patterns |
2725 | if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) { |
2726 | return false; |
2727 | } |
2728 | // Apply Patterns |
2729 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2730 | return true; |
2731 | } |
2732 | case GICXXCustomAction_GICombiner95:{ |
2733 | APInt GIMatchData_matchinfo; |
2734 | // Match Patterns |
2735 | if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2736 | return false; |
2737 | } |
2738 | // Apply Patterns |
2739 | Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo); |
2740 | return true; |
2741 | } |
2742 | case GICXXCustomAction_GICombiner96:{ |
2743 | ConstantFP* GIMatchData_matchinfo; |
2744 | // Match Patterns |
2745 | if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2746 | return false; |
2747 | } |
2748 | // Apply Patterns |
2749 | Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo); |
2750 | return true; |
2751 | } |
2752 | case GICXXCustomAction_GICombiner97:{ |
2753 | ConstantFP* GIMatchData_matchinfo; |
2754 | // Match Patterns |
2755 | if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2756 | return false; |
2757 | } |
2758 | // Apply Patterns |
2759 | Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo); |
2760 | return true; |
2761 | } |
2762 | case GICXXCustomAction_GICombiner98:{ |
2763 | APInt GIMatchData_matchinfo; |
2764 | // Match Patterns |
2765 | if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2766 | return false; |
2767 | } |
2768 | // Apply Patterns |
2769 | Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo); |
2770 | return true; |
2771 | } |
2772 | case GICXXCustomAction_GICombiner99:{ |
2773 | // Match Patterns |
2774 | if(![&](){return Helper.matchUDivByConst(*State.MIs[0]);}()) { |
2775 | return false; |
2776 | } |
2777 | // Apply Patterns |
2778 | Helper.applyUDivByConst(*State.MIs[0]); |
2779 | return true; |
2780 | } |
2781 | case GICXXCustomAction_GICombiner100:{ |
2782 | // Match Patterns |
2783 | if(![&](){return Helper.matchSDivByConst(*State.MIs[0]);}()) { |
2784 | return false; |
2785 | } |
2786 | // Apply Patterns |
2787 | Helper.applySDivByConst(*State.MIs[0]); |
2788 | return true; |
2789 | } |
2790 | case GICXXCustomAction_GICombiner101:{ |
2791 | // Match Patterns |
2792 | if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) { |
2793 | return false; |
2794 | } |
2795 | // Apply Patterns |
2796 | Helper.applySDivByPow2(*State.MIs[0]); |
2797 | return true; |
2798 | } |
2799 | case GICXXCustomAction_GICombiner102:{ |
2800 | // Match Patterns |
2801 | if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) { |
2802 | return false; |
2803 | } |
2804 | // Apply Patterns |
2805 | Helper.applyUDivByPow2(*State.MIs[0]); |
2806 | return true; |
2807 | } |
2808 | case GICXXCustomAction_GICombiner103:{ |
2809 | // Match Patterns |
2810 | if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) { |
2811 | return false; |
2812 | } |
2813 | // Apply Patterns |
2814 | Helper.applyUMulHToLShr(*State.MIs[0]); |
2815 | return true; |
2816 | } |
2817 | case GICXXCustomAction_GICombiner104:{ |
2818 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2819 | // Match Patterns |
2820 | if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2821 | return false; |
2822 | } |
2823 | // Apply Patterns |
2824 | Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo); |
2825 | return true; |
2826 | } |
2827 | case GICXXCustomAction_GICombiner105:{ |
2828 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2829 | // Match Patterns |
2830 | if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) { |
2831 | return false; |
2832 | } |
2833 | // Apply Patterns |
2834 | Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info); |
2835 | return true; |
2836 | } |
2837 | case GICXXCustomAction_GICombiner106:{ |
2838 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2839 | // Match Patterns |
2840 | if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0], |
2841 | GIMatchData_info);}()) { |
2842 | return false; |
2843 | } |
2844 | // Apply Patterns |
2845 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2846 | return true; |
2847 | } |
2848 | case GICXXCustomAction_GICombiner107:{ |
2849 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2850 | // Match Patterns |
2851 | if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0], |
2852 | GIMatchData_info);}()) { |
2853 | return false; |
2854 | } |
2855 | // Apply Patterns |
2856 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2857 | return true; |
2858 | } |
2859 | case GICXXCustomAction_GICombiner108:{ |
2860 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2861 | // Match Patterns |
2862 | if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0], |
2863 | GIMatchData_info);}()) { |
2864 | return false; |
2865 | } |
2866 | // Apply Patterns |
2867 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2868 | return true; |
2869 | } |
2870 | case GICXXCustomAction_GICombiner109:{ |
2871 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2872 | // Match Patterns |
2873 | if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive( |
2874 | *State.MIs[0], GIMatchData_info);}()) { |
2875 | return false; |
2876 | } |
2877 | // Apply Patterns |
2878 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2879 | return true; |
2880 | } |
2881 | case GICXXCustomAction_GICombiner110:{ |
2882 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2883 | // Match Patterns |
2884 | if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0], |
2885 | GIMatchData_info);}()) { |
2886 | return false; |
2887 | } |
2888 | // Apply Patterns |
2889 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2890 | return true; |
2891 | } |
2892 | case GICXXCustomAction_GICombiner111:{ |
2893 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2894 | // Match Patterns |
2895 | if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0], |
2896 | GIMatchData_info);}()) { |
2897 | return false; |
2898 | } |
2899 | // Apply Patterns |
2900 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2901 | return true; |
2902 | } |
2903 | case GICXXCustomAction_GICombiner112:{ |
2904 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2905 | // Match Patterns |
2906 | if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0], |
2907 | GIMatchData_info);}()) { |
2908 | return false; |
2909 | } |
2910 | // Apply Patterns |
2911 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2912 | return true; |
2913 | } |
2914 | case GICXXCustomAction_GICombiner113:{ |
2915 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2916 | // Match Patterns |
2917 | if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA( |
2918 | *State.MIs[0], GIMatchData_info);}()) { |
2919 | return false; |
2920 | } |
2921 | // Apply Patterns |
2922 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2923 | return true; |
2924 | } |
2925 | case GICXXCustomAction_GICombiner114:{ |
2926 | unsigned GIMatchData_select_op_no; |
2927 | // Match Patterns |
2928 | if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) { |
2929 | return false; |
2930 | } |
2931 | // Apply Patterns |
2932 | Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no); |
2933 | return true; |
2934 | } |
2935 | case GICXXCustomAction_GICombiner115:{ |
2936 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2937 | // Match Patterns |
2938 | if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2939 | return false; |
2940 | } |
2941 | // Apply Patterns |
2942 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
2943 | return true; |
2944 | } |
2945 | case GICXXCustomAction_GICombiner116:{ |
2946 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2947 | // Match Patterns |
2948 | if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) { |
2949 | return false; |
2950 | } |
2951 | // Apply Patterns |
2952 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2953 | return true; |
2954 | } |
2955 | case GICXXCustomAction_GICombiner117:{ |
2956 | std::function<void(MachineIRBuilder &)> GIMatchData_info; |
2957 | // Match Patterns |
2958 | if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) { |
2959 | return false; |
2960 | } |
2961 | // Apply Patterns |
2962 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_info); |
2963 | return true; |
2964 | } |
2965 | case GICXXCustomAction_GICombiner118:{ |
2966 | Register GIMatchData_matchinfo; |
2967 | // Match Patterns |
2968 | if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2969 | return false; |
2970 | } |
2971 | // Apply Patterns |
2972 | Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo); |
2973 | return true; |
2974 | } |
2975 | case GICXXCustomAction_GICombiner119:{ |
2976 | // Match Patterns |
2977 | if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) { |
2978 | return false; |
2979 | } |
2980 | // Apply Patterns |
2981 | Helper.applyCommuteBinOpOperands(*State.MIs[0]); |
2982 | return true; |
2983 | } |
2984 | case GICXXCustomAction_GICombiner120:{ |
2985 | // Match Patterns |
2986 | if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) { |
2987 | return false; |
2988 | } |
2989 | // Apply Patterns |
2990 | Helper.applyCommuteBinOpOperands(*State.MIs[0]); |
2991 | return true; |
2992 | } |
2993 | case GICXXCustomAction_GICombiner121:{ |
2994 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
2995 | // Match Patterns |
2996 | if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) { |
2997 | return false; |
2998 | } |
2999 | // Apply Patterns |
3000 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
3001 | return true; |
3002 | } |
3003 | case GICXXCustomAction_GICombiner122:{ |
3004 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
3005 | // Match Patterns |
3006 | if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) { |
3007 | return false; |
3008 | } |
3009 | // Apply Patterns |
3010 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
3011 | return true; |
3012 | } |
3013 | case GICXXCustomAction_GICombiner123:{ |
3014 | SmallVector<Register> GIMatchData_matchinfo; |
3015 | // Match Patterns |
3016 | if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) { |
3017 | return false; |
3018 | } |
3019 | // Apply Patterns |
3020 | Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo); |
3021 | return true; |
3022 | } |
3023 | case GICXXCustomAction_GICombiner124:{ |
3024 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
3025 | // Match Patterns |
3026 | if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) { |
3027 | return false; |
3028 | } |
3029 | // Apply Patterns |
3030 | Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo); |
3031 | return true; |
3032 | } |
3033 | case GICXXCustomAction_GICombiner125:{ |
3034 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
3035 | // Match Patterns |
3036 | if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
3037 | return false; |
3038 | } |
3039 | // Apply Patterns |
3040 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
3041 | return true; |
3042 | } |
3043 | case GICXXCustomAction_GICombiner126:{ |
3044 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
3045 | // Match Patterns |
3046 | if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
3047 | return false; |
3048 | } |
3049 | // Apply Patterns |
3050 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
3051 | return true; |
3052 | } |
3053 | case GICXXCustomAction_GICombiner127:{ |
3054 | std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo; |
3055 | // Match Patterns |
3056 | if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) { |
3057 | return false; |
3058 | } |
3059 | // Apply Patterns |
3060 | Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo); |
3061 | return true; |
3062 | } |
3063 | case GICXXCustomAction_GICombiner128:{ |
3064 | SmallVector<Register> GIMatchData_matchinfo; |
3065 | // Match Patterns |
3066 | if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) { |
3067 | return false; |
3068 | } |
3069 | // Apply Patterns |
3070 | Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo); |
3071 | return true; |
3072 | } |
3073 | case GICXXCustomAction_GICombiner129:{ |
3074 | // Match Patterns |
3075 | if(![&](){return matchFConstantToConstant(*State.MIs[0], MRI);}()) { |
3076 | return false; |
3077 | } |
3078 | // Apply Patterns |
3079 | applyFConstantToConstant(*State.MIs[0]); |
3080 | return true; |
3081 | } |
3082 | case GICXXCustomAction_GICombiner130:{ |
3083 | Register GIMatchData_matchinfo; |
3084 | // Match Patterns |
3085 | if(![&](){return matchICmpRedundantTrunc(*State.MIs[0], MRI, Helper.getKnownBits(), GIMatchData_matchinfo);}()) { |
3086 | return false; |
3087 | } |
3088 | // Apply Patterns |
3089 | applyICmpRedundantTrunc(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo); |
3090 | return true; |
3091 | } |
3092 | case GICXXCustomAction_GICombiner131:{ |
3093 | std::pair<uint64_t, uint64_t> GIMatchData_matchinfo; |
3094 | // Match Patterns |
3095 | if(![&](){return matchFoldGlobalOffset(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) { |
3096 | return false; |
3097 | } |
3098 | // Apply Patterns |
3099 | applyFoldGlobalOffset(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo); |
3100 | return true; |
3101 | } |
3102 | case GICXXCustomAction_GICombiner132:{ |
3103 | // Match Patterns |
3104 | if(![&](){return Helper.matchShuffleToExtract(*State.MIs[0]);}()) { |
3105 | return false; |
3106 | } |
3107 | // Apply Patterns |
3108 | Helper.applyShuffleToExtract(*State.MIs[0]); |
3109 | return true; |
3110 | } |
3111 | case GICXXCustomAction_GICombiner133:{ |
3112 | std::tuple<Register, Register, bool> GIMatchData_matchinfo; |
3113 | // Match Patterns |
3114 | if(![&](){return matchExtAddvToUdotAddv(*State.MIs[0], MRI, STI, GIMatchData_matchinfo);}()) { |
3115 | return false; |
3116 | } |
3117 | // Apply Patterns |
3118 | applyExtAddvToUdotAddv(*State.MIs[0], MRI, B, Observer, STI, GIMatchData_matchinfo); |
3119 | return true; |
3120 | } |
3121 | case GICXXCustomAction_GICombiner134:{ |
3122 | std::pair<Register, bool> GIMatchData_matchinfo; |
3123 | // Match Patterns |
3124 | if(![&](){return matchExtUaddvToUaddlv(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) { |
3125 | return false; |
3126 | } |
3127 | // Apply Patterns |
3128 | applyExtUaddvToUaddlv(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo); |
3129 | return true; |
3130 | } |
3131 | case GICXXCustomAction_GICombiner135:{ |
3132 | // Match Patterns |
3133 | if(![&](){return matchPushAddSubExt(*State.MIs[0], MRI, State.MIs[0]->getOperand(0).getReg(), State.MIs[1]->getOperand(1).getReg(), State.MIs[2]->getOperand(1).getReg());}()) { |
3134 | return false; |
3135 | } |
3136 | // Apply Patterns |
3137 | applyPushAddSubExt(*State.MIs[0], MRI, B, State.MIs[1]->getOpcode() == TargetOpcode::G_SEXT, State.MIs[0]->getOperand(0).getReg(), State.MIs[1]->getOperand(1).getReg(), State.MIs[2]->getOperand(1).getReg()); |
3138 | return true; |
3139 | } |
3140 | } |
3141 | llvm_unreachable("Unknown Apply Action" ); |
3142 | } |
3143 | #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ |
3144 | #define GIMT_Encode2(Val) uint8_t(Val), uint8_t((uint16_t)Val >> 8) |
3145 | #define GIMT_Encode4(Val) uint8_t(Val), uint8_t((uint32_t)Val >> 8), uint8_t((uint32_t)Val >> 16), uint8_t((uint32_t)Val >> 24) |
3146 | #define GIMT_Encode8(Val) uint8_t(Val), uint8_t((uint64_t)Val >> 8), uint8_t((uint64_t)Val >> 16), uint8_t((uint64_t)Val >> 24), uint8_t((uint64_t)Val >> 32), uint8_t((uint64_t)Val >> 40), uint8_t((uint64_t)Val >> 48), uint8_t((uint64_t)Val >> 56) |
3147 | #else |
3148 | #define GIMT_Encode2(Val) uint8_t((uint16_t)Val >> 8), uint8_t(Val) |
3149 | #define GIMT_Encode4(Val) uint8_t((uint32_t)Val >> 24), uint8_t((uint32_t)Val >> 16), uint8_t((uint32_t)Val >> 8), uint8_t(Val) |
3150 | #define GIMT_Encode8(Val) uint8_t((uint64_t)Val >> 56), uint8_t((uint64_t)Val >> 48), uint8_t((uint64_t)Val >> 40), uint8_t((uint64_t)Val >> 32), uint8_t((uint64_t)Val >> 24), uint8_t((uint64_t)Val >> 16), uint8_t((uint64_t)Val >> 8), uint8_t(Val) |
3151 | #endif |
3152 | const uint8_t *AArch64PreLegalizerCombinerImpl::getMatchTable() const { |
3153 | constexpr static uint8_t MatchTable0[] = { |
3154 | GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(19), GIMT_Encode2(285), /*)*//*default:*//*Label 95*/ GIMT_Encode4(6445), |
3155 | /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1074), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3156 | /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1086), |
3157 | /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1664), |
3158 | /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1817), |
3159 | /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1983), |
3160 | /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(2045), |
3161 | /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(2118), |
3162 | /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(2152), GIMT_Encode4(0), GIMT_Encode4(0), |
3163 | /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(2208), |
3164 | /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(2489), |
3165 | /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(2734), GIMT_Encode4(0), |
3166 | /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(2835), GIMT_Encode4(0), |
3167 | /*TargetOpcode::G_GLOBAL_VALUE*//*Label 12*/ GIMT_Encode4(2847), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3168 | /*TargetOpcode::G_UNMERGE_VALUES*//*Label 13*/ GIMT_Encode4(2859), GIMT_Encode4(0), |
3169 | /*TargetOpcode::G_MERGE_VALUES*//*Label 14*/ GIMT_Encode4(2915), |
3170 | /*TargetOpcode::G_BUILD_VECTOR*//*Label 15*/ GIMT_Encode4(2927), |
3171 | /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 16*/ GIMT_Encode4(2950), |
3172 | /*TargetOpcode::G_CONCAT_VECTORS*//*Label 17*/ GIMT_Encode4(2962), |
3173 | /*TargetOpcode::G_PTRTOINT*//*Label 18*/ GIMT_Encode4(2974), |
3174 | /*TargetOpcode::G_INTTOPTR*//*Label 19*/ GIMT_Encode4(2996), |
3175 | /*TargetOpcode::G_BITCAST*//*Label 20*/ GIMT_Encode4(3008), |
3176 | /*TargetOpcode::G_FREEZE*//*Label 21*/ GIMT_Encode4(3030), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3177 | /*TargetOpcode::G_LOAD*//*Label 22*/ GIMT_Encode4(3094), |
3178 | /*TargetOpcode::G_SEXTLOAD*//*Label 23*/ GIMT_Encode4(3106), |
3179 | /*TargetOpcode::G_ZEXTLOAD*//*Label 24*/ GIMT_Encode4(3118), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3180 | /*TargetOpcode::G_STORE*//*Label 25*/ GIMT_Encode4(3130), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3181 | /*TargetOpcode::G_ANYEXT*//*Label 26*/ GIMT_Encode4(3142), |
3182 | /*TargetOpcode::G_TRUNC*//*Label 27*/ GIMT_Encode4(3176), GIMT_Encode4(0), |
3183 | /*TargetOpcode::G_FCONSTANT*//*Label 28*/ GIMT_Encode4(3232), GIMT_Encode4(0), GIMT_Encode4(0), |
3184 | /*TargetOpcode::G_SEXT*//*Label 29*/ GIMT_Encode4(3244), |
3185 | /*TargetOpcode::G_SEXT_INREG*//*Label 30*/ GIMT_Encode4(3294), |
3186 | /*TargetOpcode::G_ZEXT*//*Label 31*/ GIMT_Encode4(3339), |
3187 | /*TargetOpcode::G_SHL*//*Label 32*/ GIMT_Encode4(3417), |
3188 | /*TargetOpcode::G_LSHR*//*Label 33*/ GIMT_Encode4(3575), |
3189 | /*TargetOpcode::G_ASHR*//*Label 34*/ GIMT_Encode4(3687), |
3190 | /*TargetOpcode::G_FSHL*//*Label 35*/ GIMT_Encode4(3810), |
3191 | /*TargetOpcode::G_FSHR*//*Label 36*/ GIMT_Encode4(3853), |
3192 | /*TargetOpcode::G_ROTR*//*Label 37*/ GIMT_Encode4(3896), |
3193 | /*TargetOpcode::G_ROTL*//*Label 38*/ GIMT_Encode4(3920), |
3194 | /*TargetOpcode::G_ICMP*//*Label 39*/ GIMT_Encode4(3944), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3195 | /*TargetOpcode::G_SELECT*//*Label 40*/ GIMT_Encode4(3989), |
3196 | /*TargetOpcode::G_UADDO*//*Label 41*/ GIMT_Encode4(4084), |
3197 | /*TargetOpcode::G_UADDE*//*Label 42*/ GIMT_Encode4(4107), GIMT_Encode4(0), |
3198 | /*TargetOpcode::G_USUBE*//*Label 43*/ GIMT_Encode4(4119), |
3199 | /*TargetOpcode::G_SADDO*//*Label 44*/ GIMT_Encode4(4131), |
3200 | /*TargetOpcode::G_SADDE*//*Label 45*/ GIMT_Encode4(4154), GIMT_Encode4(0), |
3201 | /*TargetOpcode::G_SSUBE*//*Label 46*/ GIMT_Encode4(4166), |
3202 | /*TargetOpcode::G_UMULO*//*Label 47*/ GIMT_Encode4(4178), |
3203 | /*TargetOpcode::G_SMULO*//*Label 48*/ GIMT_Encode4(4212), |
3204 | /*TargetOpcode::G_UMULH*//*Label 49*/ GIMT_Encode4(4246), |
3205 | /*TargetOpcode::G_SMULH*//*Label 50*/ GIMT_Encode4(4269), |
3206 | /*TargetOpcode::G_UADDSAT*//*Label 51*/ GIMT_Encode4(4281), |
3207 | /*TargetOpcode::G_SADDSAT*//*Label 52*/ GIMT_Encode4(4293), GIMT_Encode4(0), GIMT_Encode4(0), |
3208 | /*TargetOpcode::G_USHLSAT*//*Label 53*/ GIMT_Encode4(4305), |
3209 | /*TargetOpcode::G_SSHLSAT*//*Label 54*/ GIMT_Encode4(4328), |
3210 | /*TargetOpcode::G_SMULFIX*//*Label 55*/ GIMT_Encode4(4351), |
3211 | /*TargetOpcode::G_UMULFIX*//*Label 56*/ GIMT_Encode4(4363), |
3212 | /*TargetOpcode::G_SMULFIXSAT*//*Label 57*/ GIMT_Encode4(4375), |
3213 | /*TargetOpcode::G_UMULFIXSAT*//*Label 58*/ GIMT_Encode4(4387), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3214 | /*TargetOpcode::G_FADD*//*Label 59*/ GIMT_Encode4(4399), |
3215 | /*TargetOpcode::G_FSUB*//*Label 60*/ GIMT_Encode4(4511), |
3216 | /*TargetOpcode::G_FMUL*//*Label 61*/ GIMT_Encode4(4600), |
3217 | /*TargetOpcode::G_FMA*//*Label 62*/ GIMT_Encode4(4688), |
3218 | /*TargetOpcode::G_FMAD*//*Label 63*/ GIMT_Encode4(4711), |
3219 | /*TargetOpcode::G_FDIV*//*Label 64*/ GIMT_Encode4(4734), |
3220 | /*TargetOpcode::G_FREM*//*Label 65*/ GIMT_Encode4(4768), GIMT_Encode4(0), |
3221 | /*TargetOpcode::G_FPOWI*//*Label 66*/ GIMT_Encode4(4780), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3222 | /*TargetOpcode::G_FLOG2*//*Label 67*/ GIMT_Encode4(4802), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3223 | /*TargetOpcode::G_FNEG*//*Label 68*/ GIMT_Encode4(4824), GIMT_Encode4(0), |
3224 | /*TargetOpcode::G_FPTRUNC*//*Label 69*/ GIMT_Encode4(4875), |
3225 | /*TargetOpcode::G_FPTOSI*//*Label 70*/ GIMT_Encode4(4918), |
3226 | /*TargetOpcode::G_FPTOUI*//*Label 71*/ GIMT_Encode4(4930), |
3227 | /*TargetOpcode::G_SITOFP*//*Label 72*/ GIMT_Encode4(4942), |
3228 | /*TargetOpcode::G_UITOFP*//*Label 73*/ GIMT_Encode4(4969), |
3229 | /*TargetOpcode::G_FABS*//*Label 74*/ GIMT_Encode4(4996), GIMT_Encode4(0), GIMT_Encode4(0), |
3230 | /*TargetOpcode::G_FCANONICALIZE*//*Label 75*/ GIMT_Encode4(5075), |
3231 | /*TargetOpcode::G_FMINNUM*//*Label 76*/ GIMT_Encode4(5105), |
3232 | /*TargetOpcode::G_FMAXNUM*//*Label 77*/ GIMT_Encode4(5139), |
3233 | /*TargetOpcode::G_FMINNUM_IEEE*//*Label 78*/ GIMT_Encode4(5173), |
3234 | /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 79*/ GIMT_Encode4(5185), |
3235 | /*TargetOpcode::G_FMINIMUM*//*Label 80*/ GIMT_Encode4(5197), |
3236 | /*TargetOpcode::G_FMAXIMUM*//*Label 81*/ GIMT_Encode4(5231), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3237 | /*TargetOpcode::G_PTR_ADD*//*Label 82*/ GIMT_Encode4(5265), GIMT_Encode4(0), |
3238 | /*TargetOpcode::G_SMIN*//*Label 83*/ GIMT_Encode4(5344), |
3239 | /*TargetOpcode::G_SMAX*//*Label 84*/ GIMT_Encode4(5367), |
3240 | /*TargetOpcode::G_UMIN*//*Label 85*/ GIMT_Encode4(5390), |
3241 | /*TargetOpcode::G_UMAX*//*Label 86*/ GIMT_Encode4(5413), |
3242 | /*TargetOpcode::G_ABS*//*Label 87*/ GIMT_Encode4(5436), GIMT_Encode4(0), GIMT_Encode4(0), |
3243 | /*TargetOpcode::G_BR*//*Label 88*/ GIMT_Encode4(5448), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3244 | /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 89*/ GIMT_Encode4(5460), |
3245 | /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 90*/ GIMT_Encode4(5590), |
3246 | /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 91*/ GIMT_Encode4(6263), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3247 | /*TargetOpcode::G_BITREVERSE*//*Label 92*/ GIMT_Encode4(6308), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3248 | /*TargetOpcode::G_FSQRT*//*Label 93*/ GIMT_Encode4(6397), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
3249 | /*TargetOpcode::G_VECREDUCE_ADD*//*Label 94*/ GIMT_Encode4(6419), |
3250 | // Label 0: @1074 |
3251 | GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1085), // Rule ID 8 // |
3252 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled), |
3253 | // MIs[0] d |
3254 | // No operand predicates |
3255 | // MIs[0] s |
3256 | // No operand predicates |
3257 | // Combiner Rule #8: copy_prop |
3258 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0), |
3259 | // Label 96: @1085 |
3260 | GIM_Reject, |
3261 | // Label 1: @1086 |
3262 | GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1097), // Rule ID 10 // |
3263 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled), |
3264 | // Combiner Rule #10: add_p2i_to_ptradd; wip_match_opcode 'G_ADD' |
3265 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2), |
3266 | // Label 97: @1097 |
3267 | GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1108), // Rule ID 72 // |
3268 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled), |
3269 | // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_ADD' |
3270 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25), |
3271 | // Label 98: @1108 |
3272 | GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1119), // Rule ID 119 // |
3273 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled), |
3274 | // Combiner Rule #88: simplify_add_to_sub; wip_match_opcode 'G_ADD' |
3275 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41), |
3276 | // Label 99: @1119 |
3277 | GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1130), // Rule ID 212 // |
3278 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled), |
3279 | // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_ADD' |
3280 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95), |
3281 | // Label 100: @1130 |
3282 | GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1141), // Rule ID 251 // |
3283 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
3284 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_ADD' |
3285 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
3286 | // Label 101: @1141 |
3287 | GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1152), // Rule ID 281 // |
3288 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
3289 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD' |
3290 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
3291 | // Label 102: @1152 |
3292 | GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1186), // Rule ID 0 // |
3293 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled), |
3294 | // MIs[0] root |
3295 | // No operand predicates |
3296 | // MIs[0] sub |
3297 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3298 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3299 | // MIs[1] Operand 1 |
3300 | GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0, |
3301 | // MIs[1] A |
3302 | // No operand predicates |
3303 | // MIs[0] B |
3304 | // No operand predicates |
3305 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
3306 | // Combiner Rule #0: ZeroMinusAPlusB |
3307 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB), |
3308 | GIR_RootToRootCopy, /*OpIdx*/0, // root |
3309 | GIR_RootToRootCopy, /*OpIdx*/2, // B |
3310 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A |
3311 | GIR_EraseRootFromParent_Done, |
3312 | // Label 103: @1186 |
3313 | GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1220), // Rule ID 3 // |
3314 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled), |
3315 | // MIs[0] root |
3316 | // No operand predicates |
3317 | // MIs[0] sub |
3318 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3319 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3320 | // MIs[1] B |
3321 | // No operand predicates |
3322 | // MIs[1] A |
3323 | // No operand predicates |
3324 | // MIs[0] A |
3325 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2, |
3326 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
3327 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
3328 | // Combiner Rule #3: BMinusAPlusA |
3329 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
3330 | GIR_EraseRootFromParent_Done, |
3331 | // Label 104: @1220 |
3332 | GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1254), // Rule ID 109 // |
3333 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled), |
3334 | // MIs[0] dst |
3335 | // No operand predicates |
3336 | // MIs[0] __add_sub_reg_match_0.tmp |
3337 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3338 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3339 | // MIs[1] src |
3340 | // No operand predicates |
3341 | // MIs[1] __add_sub_reg_match_0.x |
3342 | // No operand predicates |
3343 | // MIs[0] __add_sub_reg_match_0.x |
3344 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2, |
3345 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
3346 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
3347 | // Combiner Rule #79: add_sub_reg @ [__add_sub_reg_match_0[1]] |
3348 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
3349 | GIR_EraseRootFromParent_Done, |
3350 | // Label 105: @1254 |
3351 | GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1299), // Rule ID 5 // |
3352 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled), |
3353 | // MIs[0] root |
3354 | // No operand predicates |
3355 | // MIs[0] sub1 |
3356 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3357 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3358 | // MIs[1] A |
3359 | // No operand predicates |
3360 | // MIs[1] B |
3361 | // No operand predicates |
3362 | // MIs[0] sub2 |
3363 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
3364 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB), |
3365 | // MIs[2] B |
3366 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2, |
3367 | // MIs[2] C |
3368 | // No operand predicates |
3369 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3370 | // Combiner Rule #5: AMinusBPlusBMinusC |
3371 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB), |
3372 | GIR_RootToRootCopy, /*OpIdx*/0, // root |
3373 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A |
3374 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C |
3375 | GIR_EraseRootFromParent_Done, |
3376 | // Label 106: @1299 |
3377 | GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1344), // Rule ID 4 // |
3378 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled), |
3379 | // MIs[0] root |
3380 | // No operand predicates |
3381 | // MIs[0] sub1 |
3382 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3383 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3384 | // MIs[1] A |
3385 | // No operand predicates |
3386 | // MIs[1] B |
3387 | // No operand predicates |
3388 | // MIs[0] sub2 |
3389 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
3390 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB), |
3391 | // MIs[2] C |
3392 | // No operand predicates |
3393 | // MIs[2] A |
3394 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1, |
3395 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3396 | // Combiner Rule #4: AMinusBPlusCMinusA |
3397 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB), |
3398 | GIR_RootToRootCopy, /*OpIdx*/0, // root |
3399 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C |
3400 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B |
3401 | GIR_EraseRootFromParent_Done, |
3402 | // Label 107: @1344 |
3403 | GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1373), // Rule ID 330 // |
3404 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled), |
3405 | // MIs[0] dst |
3406 | // No operand predicates |
3407 | // MIs[0] ext1 |
3408 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3409 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT), |
3410 | // MIs[1] src1 |
3411 | // No operand predicates |
3412 | // MIs[0] ext2 |
3413 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
3414 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT), |
3415 | // MIs[2] src2 |
3416 | // No operand predicates |
3417 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3418 | // Combiner Rule #198: push_add_through_sext |
3419 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135), |
3420 | // Label 108: @1373 |
3421 | GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1408), // Rule ID 46 // |
3422 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled), |
3423 | GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap), |
3424 | // MIs[0] root |
3425 | // No operand predicates |
3426 | // MIs[0] left |
3427 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3428 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE), |
3429 | // MIs[1] imm1 |
3430 | // No operand predicates |
3431 | // MIs[0] right |
3432 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
3433 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE), |
3434 | // MIs[2] imm2 |
3435 | // No operand predicates |
3436 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3437 | // Combiner Rule #44: add_of_vscale |
3438 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9), |
3439 | // Label 109: @1408 |
3440 | GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1437), // Rule ID 328 // |
3441 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled), |
3442 | // MIs[0] dst |
3443 | // No operand predicates |
3444 | // MIs[0] ext1 |
3445 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3446 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT), |
3447 | // MIs[1] src1 |
3448 | // No operand predicates |
3449 | // MIs[0] ext2 |
3450 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
3451 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT), |
3452 | // MIs[2] src2 |
3453 | // No operand predicates |
3454 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3455 | // Combiner Rule #196: push_add_through_zext |
3456 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135), |
3457 | // Label 110: @1437 |
3458 | GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1471), // Rule ID 1 // |
3459 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled), |
3460 | // MIs[0] root |
3461 | // No operand predicates |
3462 | // MIs[0] A |
3463 | // No operand predicates |
3464 | // MIs[0] sub |
3465 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
3466 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3467 | // MIs[1] Operand 1 |
3468 | GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0, |
3469 | // MIs[1] B |
3470 | // No operand predicates |
3471 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
3472 | // Combiner Rule #1: APlusZeroMinusB |
3473 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB), |
3474 | GIR_RootToRootCopy, /*OpIdx*/0, // root |
3475 | GIR_RootToRootCopy, /*OpIdx*/1, // A |
3476 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B |
3477 | GIR_EraseRootFromParent_Done, |
3478 | // Label 111: @1471 |
3479 | GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1505), // Rule ID 2 // |
3480 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled), |
3481 | // MIs[0] root |
3482 | // No operand predicates |
3483 | // MIs[0] A |
3484 | // No operand predicates |
3485 | // MIs[0] sub |
3486 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
3487 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3488 | // MIs[1] B |
3489 | // No operand predicates |
3490 | // MIs[1] A |
3491 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1, |
3492 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
3493 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
3494 | // Combiner Rule #2: APlusBMinusB |
3495 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
3496 | GIR_EraseRootFromParent_Done, |
3497 | // Label 112: @1505 |
3498 | GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1539), // Rule ID 108 // |
3499 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled), |
3500 | // MIs[0] dst |
3501 | // No operand predicates |
3502 | // MIs[0] __add_sub_reg_match_0.x |
3503 | // No operand predicates |
3504 | // MIs[0] __add_sub_reg_match_0.tmp |
3505 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
3506 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3507 | // MIs[1] src |
3508 | // No operand predicates |
3509 | // MIs[1] __add_sub_reg_match_0.x |
3510 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1, |
3511 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
3512 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
3513 | // Combiner Rule #79: add_sub_reg @ [__add_sub_reg_match_0[0]] |
3514 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
3515 | GIR_EraseRootFromParent_Done, |
3516 | // Label 113: @1539 |
3517 | GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1584), // Rule ID 6 // |
3518 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled), |
3519 | // MIs[0] root |
3520 | // No operand predicates |
3521 | // MIs[0] A |
3522 | // No operand predicates |
3523 | // MIs[0] sub1 |
3524 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
3525 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3526 | // MIs[1] B |
3527 | // No operand predicates |
3528 | // MIs[1] add1 |
3529 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2] |
3530 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD), |
3531 | // MIs[2] A |
3532 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1, |
3533 | // MIs[2] C |
3534 | // No operand predicates |
3535 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3536 | // Combiner Rule #6: APlusBMinusAplusC |
3537 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB), |
3538 | GIR_RootToRootCopy, /*OpIdx*/0, // root |
3539 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B |
3540 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C |
3541 | GIR_EraseRootFromParent_Done, |
3542 | // Label 114: @1584 |
3543 | GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1629), // Rule ID 7 // |
3544 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled), |
3545 | // MIs[0] root |
3546 | // No operand predicates |
3547 | // MIs[0] A |
3548 | // No operand predicates |
3549 | // MIs[0] sub1 |
3550 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
3551 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
3552 | // MIs[1] B |
3553 | // No operand predicates |
3554 | // MIs[1] add1 |
3555 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2] |
3556 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD), |
3557 | // MIs[2] C |
3558 | // No operand predicates |
3559 | // MIs[2] A |
3560 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1, |
3561 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3562 | // Combiner Rule #7: APlusBMinusCPlusA |
3563 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB), |
3564 | GIR_RootToRootCopy, /*OpIdx*/0, // root |
3565 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B |
3566 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C |
3567 | GIR_EraseRootFromParent_Done, |
3568 | // Label 115: @1629 |
3569 | GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1652), // Rule ID 86 // |
3570 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
3571 | // MIs[0] dst |
3572 | // No operand predicates |
3573 | // MIs[0] lhs |
3574 | // No operand predicates |
3575 | // MIs[0] Operand 2 |
3576 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
3577 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
3578 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[1]] |
3579 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
3580 | GIR_EraseRootFromParent_Done, |
3581 | // Label 116: @1652 |
3582 | GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1663), // Rule ID 127 // |
3583 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled), |
3584 | // MIs[0] root |
3585 | // No operand predicates |
3586 | // MIs[0] src1 |
3587 | // No operand predicates |
3588 | // MIs[0] src2 |
3589 | // No operand predicates |
3590 | // Combiner Rule #92: reassoc_comm_binops |
3591 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45), |
3592 | // Label 117: @1663 |
3593 | GIM_Reject, |
3594 | // Label 2: @1664 |
3595 | GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1675), // Rule ID 75 // |
3596 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled), |
3597 | // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_SUB' |
3598 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25), |
3599 | // Label 118: @1675 |
3600 | GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1686), // Rule ID 213 // |
3601 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled), |
3602 | // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_SUB' |
3603 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95), |
3604 | // Label 119: @1686 |
3605 | GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1697), // Rule ID 252 // |
3606 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
3607 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SUB' |
3608 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
3609 | // Label 120: @1697 |
3610 | GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1708), // Rule ID 277 // |
3611 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled), |
3612 | // Combiner Rule #173: sub_add_reg; wip_match_opcode 'G_SUB' |
3613 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115), |
3614 | // Label 121: @1708 |
3615 | GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1737), // Rule ID 329 // |
3616 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled), |
3617 | // MIs[0] dst |
3618 | // No operand predicates |
3619 | // MIs[0] ext1 |
3620 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3621 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT), |
3622 | // MIs[1] src1 |
3623 | // No operand predicates |
3624 | // MIs[0] ext2 |
3625 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
3626 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT), |
3627 | // MIs[2] src2 |
3628 | // No operand predicates |
3629 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3630 | // Combiner Rule #197: push_sub_through_sext |
3631 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135), |
3632 | // Label 122: @1737 |
3633 | GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1766), // Rule ID 327 // |
3634 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled), |
3635 | // MIs[0] dst |
3636 | // No operand predicates |
3637 | // MIs[0] ext1 |
3638 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3639 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT), |
3640 | // MIs[1] src1 |
3641 | // No operand predicates |
3642 | // MIs[0] ext2 |
3643 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
3644 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT), |
3645 | // MIs[2] src2 |
3646 | // No operand predicates |
3647 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3648 | // Combiner Rule #195: push_sub_through_zext |
3649 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135), |
3650 | // Label 123: @1766 |
3651 | GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1793), // Rule ID 49 // |
3652 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled), |
3653 | GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap), |
3654 | // MIs[0] root |
3655 | // No operand predicates |
3656 | // MIs[0] x |
3657 | // No operand predicates |
3658 | // MIs[0] right |
3659 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
3660 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE), |
3661 | // MIs[1] imm |
3662 | // No operand predicates |
3663 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
3664 | // Combiner Rule #47: sub_of_vscale |
3665 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12), |
3666 | // Label 124: @1793 |
3667 | GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1816), // Rule ID 85 // |
3668 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
3669 | // MIs[0] dst |
3670 | // No operand predicates |
3671 | // MIs[0] lhs |
3672 | // No operand predicates |
3673 | // MIs[0] Operand 2 |
3674 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
3675 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
3676 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[0]] |
3677 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
3678 | GIR_EraseRootFromParent_Done, |
3679 | // Label 125: @1816 |
3680 | GIM_Reject, |
3681 | // Label 3: @1817 |
3682 | GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1828), // Rule ID 63 // |
3683 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled), |
3684 | // Combiner Rule #57: undef_to_int_zero; wip_match_opcode 'G_MUL' |
3685 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21), |
3686 | // Label 126: @1828 |
3687 | GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1839), // Rule ID 214 // |
3688 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled), |
3689 | // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_MUL' |
3690 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95), |
3691 | // Label 127: @1839 |
3692 | GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1850), // Rule ID 282 // |
3693 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
3694 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL' |
3695 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
3696 | // Label 128: @1850 |
3697 | GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1890), // Rule ID 11 // |
3698 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled), |
3699 | // MIs[0] dst |
3700 | GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/uint8_t(-1), |
3701 | // MIs[0] x |
3702 | // No operand predicates |
3703 | // MIs[0] Operand 2 |
3704 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, uint8_t(-1), |
3705 | GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/uint8_t(-1), |
3706 | GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0), |
3707 | // Combiner Rule #11: mul_by_neg_one |
3708 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB), |
3709 | GIR_RootToRootCopy, /*OpIdx*/0, // dst |
3710 | GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0, |
3711 | GIR_RootToRootCopy, /*OpIdx*/1, // x |
3712 | GIR_EraseRootFromParent_Done, |
3713 | // Label 129: @1890 |
3714 | GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1925), // Rule ID 47 // |
3715 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled), |
3716 | GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap), |
3717 | // MIs[0] root |
3718 | // No operand predicates |
3719 | // MIs[0] left |
3720 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3721 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE), |
3722 | // MIs[1] scale |
3723 | // No operand predicates |
3724 | // MIs[0] x |
3725 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
3726 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT), |
3727 | // MIs[2] imm1 |
3728 | // No operand predicates |
3729 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3730 | // Combiner Rule #45: mul_of_vscale |
3731 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10), |
3732 | // Label 130: @1925 |
3733 | GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1948), // Rule ID 101 // |
3734 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled), |
3735 | // MIs[0] dst |
3736 | // No operand predicates |
3737 | // MIs[0] lhs |
3738 | // No operand predicates |
3739 | // MIs[0] zero |
3740 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
3741 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2, |
3742 | // Combiner Rule #72: binop_right_to_zero |
3743 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2, |
3744 | GIR_EraseRootFromParent_Done, |
3745 | // Label 131: @1948 |
3746 | GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1971), // Rule ID 106 // |
3747 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled), |
3748 | // MIs[0] dst |
3749 | // No operand predicates |
3750 | // MIs[0] x |
3751 | // No operand predicates |
3752 | // MIs[0] Operand 2 |
3753 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1, |
3754 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
3755 | // Combiner Rule #77: right_identity_one_int |
3756 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
3757 | GIR_EraseRootFromParent_Done, |
3758 | // Label 132: @1971 |
3759 | GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1982), // Rule ID 9 // |
3760 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled), |
3761 | // MIs[0] d |
3762 | // No operand predicates |
3763 | // MIs[0] op1 |
3764 | // No operand predicates |
3765 | // MIs[0] op2 |
3766 | // No operand predicates |
3767 | // Combiner Rule #9: mul_to_shl |
3768 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1), |
3769 | // Label 133: @1982 |
3770 | GIM_Reject, |
3771 | // Label 4: @1983 |
3772 | GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1994), // Rule ID 97 // |
3773 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled), |
3774 | // Combiner Rule #71: binop_left_to_zero; wip_match_opcode 'G_SDIV' |
3775 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32), |
3776 | // Label 134: @1994 |
3777 | GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2005), // Rule ID 192 // |
3778 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled), |
3779 | // Combiner Rule #139: div_rem_to_divrem; wip_match_opcode 'G_SDIV' |
3780 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86), |
3781 | // Label 135: @2005 |
3782 | GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2016), // Rule ID 232 // |
3783 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled), |
3784 | // Combiner Rule #158: sdiv_by_const; wip_match_opcode 'G_SDIV' |
3785 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100), |
3786 | // Label 136: @2016 |
3787 | GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2027), // Rule ID 257 // |
3788 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
3789 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SDIV' |
3790 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
3791 | // Label 137: @2027 |
3792 | GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2044), // Rule ID 233 // |
3793 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled), |
3794 | GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact), |
3795 | // MIs[0] dst |
3796 | // No operand predicates |
3797 | // MIs[0] x |
3798 | // No operand predicates |
3799 | // MIs[0] y |
3800 | // No operand predicates |
3801 | // Combiner Rule #159: sdiv_by_pow2 |
3802 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101), |
3803 | // Label 138: @2044 |
3804 | GIM_Reject, |
3805 | // Label 5: @2045 |
3806 | GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2056), // Rule ID 66 // |
3807 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled), |
3808 | // Combiner Rule #59: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV' |
3809 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23), |
3810 | // Label 139: @2056 |
3811 | GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2067), // Rule ID 98 // |
3812 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled), |
3813 | // Combiner Rule #71: binop_left_to_zero; wip_match_opcode 'G_UDIV' |
3814 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32), |
3815 | // Label 140: @2067 |
3816 | GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2078), // Rule ID 193 // |
3817 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled), |
3818 | // Combiner Rule #139: div_rem_to_divrem; wip_match_opcode 'G_UDIV' |
3819 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86), |
3820 | // Label 141: @2078 |
3821 | GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2089), // Rule ID 231 // |
3822 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled), |
3823 | // Combiner Rule #157: udiv_by_const; wip_match_opcode 'G_UDIV' |
3824 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99), |
3825 | // Label 142: @2089 |
3826 | GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2100), // Rule ID 259 // |
3827 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
3828 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_UDIV' |
3829 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
3830 | // Label 143: @2100 |
3831 | GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2117), // Rule ID 234 // |
3832 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled), |
3833 | GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact), |
3834 | // MIs[0] dst |
3835 | // No operand predicates |
3836 | // MIs[0] x |
3837 | // No operand predicates |
3838 | // MIs[0] y |
3839 | // No operand predicates |
3840 | // Combiner Rule #160: udiv_by_pow2 |
3841 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102), |
3842 | // Label 144: @2117 |
3843 | GIM_Reject, |
3844 | // Label 6: @2118 |
3845 | GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2129), // Rule ID 99 // |
3846 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled), |
3847 | // Combiner Rule #71: binop_left_to_zero; wip_match_opcode 'G_SREM' |
3848 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32), |
3849 | // Label 145: @2129 |
3850 | GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2140), // Rule ID 194 // |
3851 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled), |
3852 | // Combiner Rule #139: div_rem_to_divrem; wip_match_opcode 'G_SREM' |
3853 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86), |
3854 | // Label 146: @2140 |
3855 | GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2151), // Rule ID 258 // |
3856 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
3857 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SREM' |
3858 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
3859 | // Label 147: @2151 |
3860 | GIM_Reject, |
3861 | // Label 7: @2152 |
3862 | GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2163), // Rule ID 67 // |
3863 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled), |
3864 | // Combiner Rule #59: binop_left_undef_to_zero; wip_match_opcode 'G_UREM' |
3865 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23), |
3866 | // Label 148: @2163 |
3867 | GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2174), // Rule ID 100 // |
3868 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled), |
3869 | // Combiner Rule #71: binop_left_to_zero; wip_match_opcode 'G_UREM' |
3870 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32), |
3871 | // Label 149: @2174 |
3872 | GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2185), // Rule ID 140 // |
3873 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled), |
3874 | // Combiner Rule #105: urem_pow2_to_mask; wip_match_opcode 'G_UREM' |
3875 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57), |
3876 | // Label 150: @2185 |
3877 | GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2196), // Rule ID 195 // |
3878 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled), |
3879 | // Combiner Rule #139: div_rem_to_divrem; wip_match_opcode 'G_UREM' |
3880 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86), |
3881 | // Label 151: @2196 |
3882 | GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2207), // Rule ID 260 // |
3883 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
3884 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_UREM' |
3885 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
3886 | // Label 152: @2207 |
3887 | GIM_Reject, |
3888 | // Label 8: @2208 |
3889 | GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2219), // Rule ID 58 // |
3890 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled), |
3891 | // Combiner Rule #54: load_and_mask; wip_match_opcode 'G_AND' |
3892 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18), |
3893 | // Label 153: @2219 |
3894 | GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2230), // Rule ID 62 // |
3895 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled), |
3896 | // Combiner Rule #57: undef_to_int_zero; wip_match_opcode 'G_AND' |
3897 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21), |
3898 | // Label 154: @2230 |
3899 | GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2241), // Rule ID 120 // |
3900 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled), |
3901 | // Combiner Rule #89: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND' |
3902 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42), |
3903 | // Label 155: @2241 |
3904 | GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2252), // Rule ID 132 // |
3905 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled), |
3906 | // Combiner Rule #97: narrow_binop_feeding_and; wip_match_opcode 'G_AND' |
3907 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50), |
3908 | // Label 156: @2252 |
3909 | GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2263), // Rule ID 137 // |
3910 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled), |
3911 | // Combiner Rule #102: redundant_and; wip_match_opcode 'G_AND' |
3912 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54), |
3913 | // Label 157: @2263 |
3914 | GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2274), // Rule ID 165 // |
3915 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled), |
3916 | // Combiner Rule #128: overlapping_and; wip_match_opcode 'G_AND' |
3917 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75), |
3918 | // Label 158: @2274 |
3919 | GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2285), // Rule ID 215 // |
3920 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled), |
3921 | // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_AND' |
3922 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95), |
3923 | // Label 159: @2285 |
3924 | GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2296), // Rule ID 242 // |
3925 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled), |
3926 | // Combiner Rule #163: and_or_disjoint_mask; wip_match_opcode 'G_AND' |
3927 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105), |
3928 | // Label 160: @2296 |
3929 | GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2307), // Rule ID 254 // |
3930 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
3931 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_AND' |
3932 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
3933 | // Label 161: @2307 |
3934 | GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2318), // Rule ID 283 // |
3935 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
3936 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_AND' |
3937 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
3938 | // Label 162: @2318 |
3939 | GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2329), // Rule ID 310 // |
3940 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled), |
3941 | // Combiner Rule #179: match_ands; wip_match_opcode 'G_AND' |
3942 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121), |
3943 | // Label 163: @2329 |
3944 | GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2427), // Rule ID 313 // |
3945 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled), |
3946 | // MIs[0] root |
3947 | // No operand predicates |
3948 | // MIs[0] d1 |
3949 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3950 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP), |
3951 | // MIs[1] p |
3952 | // No operand predicates |
3953 | // MIs[1] s1 |
3954 | GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/uint8_t(-1), |
3955 | // MIs[1] Operand 3 |
3956 | GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0, |
3957 | // MIs[0] d2 |
3958 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
3959 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP), |
3960 | // MIs[2] p |
3961 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1, |
3962 | // MIs[2] s2 |
3963 | // No operand predicates |
3964 | // MIs[2] Operand 3 |
3965 | GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0, |
3966 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7), |
3967 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
3968 | GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/uint8_t(-1), |
3969 | GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0), |
3970 | GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/uint8_t(-1), |
3971 | // Combiner Rule #182: double_icmp_zero_and_combine |
3972 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR), |
3973 | GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define), |
3974 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1 |
3975 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2 |
3976 | GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP), |
3977 | GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root |
3978 | GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p |
3979 | GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0, |
3980 | GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1, |
3981 | GIR_EraseRootFromParent_Done, |
3982 | // Label 164: @2427 |
3983 | GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2464), // Rule ID 207 // |
3984 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled), |
3985 | // MIs[0] root |
3986 | // No operand predicates |
3987 | // MIs[0] shift |
3988 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
3989 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR), |
3990 | // MIs[1] x |
3991 | // No operand predicates |
3992 | // MIs[1] lsb |
3993 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2] |
3994 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT), |
3995 | // MIs[2] imm1 |
3996 | // No operand predicates |
3997 | // MIs[0] mask |
3998 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3] |
3999 | GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT), |
4000 | // MIs[3] imm2 |
4001 | // No operand predicates |
4002 | GIM_CheckIsSafeToFold, /*NumInsns*/3, |
4003 | // Combiner Rule #149: bitfield_extract_from_and |
4004 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92), |
4005 | // Label 165: @2464 |
4006 | GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2488), // Rule ID 95 // |
4007 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled), |
4008 | // MIs[0] dst |
4009 | // No operand predicates |
4010 | // MIs[0] src |
4011 | // No operand predicates |
4012 | // MIs[0] src |
4013 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1, |
4014 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4015 | // Combiner Rule #70: binop_same_val @ [__binop_same_val_match_0[0]] |
4016 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4017 | GIR_EraseRootFromParent_Done, |
4018 | // Label 166: @2488 |
4019 | GIM_Reject, |
4020 | // Label 9: @2489 |
4021 | GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2500), // Rule ID 64 // |
4022 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled), |
4023 | // Combiner Rule #58: undef_to_negative_one; wip_match_opcode 'G_OR' |
4024 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22), |
4025 | // Label 167: @2500 |
4026 | GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2511), // Rule ID 121 // |
4027 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled), |
4028 | // Combiner Rule #89: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR' |
4029 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42), |
4030 | // Label 168: @2511 |
4031 | GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2522), // Rule ID 139 // |
4032 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled), |
4033 | // Combiner Rule #104: redundant_or; wip_match_opcode 'G_OR' |
4034 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56), |
4035 | // Label 169: @2522 |
4036 | GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2533), // Rule ID 191 // |
4037 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled), |
4038 | // Combiner Rule #138: load_or_combine; wip_match_opcode 'G_OR' |
4039 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85), |
4040 | // Label 170: @2533 |
4041 | GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2544), // Rule ID 196 // |
4042 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled), |
4043 | // Combiner Rule #140: funnel_shift_from_or_shift; wip_match_opcode 'G_OR' |
4044 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87), |
4045 | // Label 171: @2544 |
4046 | GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2555), // Rule ID 216 // |
4047 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled), |
4048 | // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_OR' |
4049 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95), |
4050 | // Label 172: @2555 |
4051 | GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2566), // Rule ID 255 // |
4052 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
4053 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_OR' |
4054 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
4055 | // Label 173: @2566 |
4056 | GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2577), // Rule ID 284 // |
4057 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4058 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_OR' |
4059 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4060 | // Label 174: @2577 |
4061 | GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2588), // Rule ID 311 // |
4062 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled), |
4063 | // Combiner Rule #180: match_ors; wip_match_opcode 'G_OR' |
4064 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122), |
4065 | // Label 175: @2588 |
4066 | GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2686), // Rule ID 314 // |
4067 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled), |
4068 | // MIs[0] root |
4069 | // No operand predicates |
4070 | // MIs[0] d1 |
4071 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
4072 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP), |
4073 | // MIs[1] p |
4074 | // No operand predicates |
4075 | // MIs[1] s1 |
4076 | GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/uint8_t(-1), |
4077 | // MIs[1] Operand 3 |
4078 | GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0, |
4079 | // MIs[0] d2 |
4080 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
4081 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP), |
4082 | // MIs[2] p |
4083 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1, |
4084 | // MIs[2] s2 |
4085 | // No operand predicates |
4086 | // MIs[2] Operand 3 |
4087 | GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0, |
4088 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8), |
4089 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
4090 | GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/uint8_t(-1), |
4091 | GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0), |
4092 | GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/uint8_t(-1), |
4093 | // Combiner Rule #183: double_icmp_zero_or_combine |
4094 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR), |
4095 | GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define), |
4096 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1 |
4097 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2 |
4098 | GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP), |
4099 | GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root |
4100 | GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p |
4101 | GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0, |
4102 | GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1, |
4103 | GIR_EraseRootFromParent_Done, |
4104 | // Label 176: @2686 |
4105 | GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2710), // Rule ID 96 // |
4106 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled), |
4107 | // MIs[0] dst |
4108 | // No operand predicates |
4109 | // MIs[0] src |
4110 | // No operand predicates |
4111 | // MIs[0] src |
4112 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1, |
4113 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4114 | // Combiner Rule #70: binop_same_val @ [__binop_same_val_match_0[1]] |
4115 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4116 | GIR_EraseRootFromParent_Done, |
4117 | // Label 177: @2710 |
4118 | GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(2733), // Rule ID 87 // |
4119 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
4120 | // MIs[0] dst |
4121 | // No operand predicates |
4122 | // MIs[0] lhs |
4123 | // No operand predicates |
4124 | // MIs[0] Operand 2 |
4125 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
4126 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4127 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[2]] |
4128 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4129 | GIR_EraseRootFromParent_Done, |
4130 | // Label 178: @2733 |
4131 | GIM_Reject, |
4132 | // Label 10: @2734 |
4133 | GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(2745), // Rule ID 76 // |
4134 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled), |
4135 | // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_XOR' |
4136 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25), |
4137 | // Label 179: @2745 |
4138 | GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(2756), // Rule ID 122 // |
4139 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled), |
4140 | // Combiner Rule #89: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR' |
4141 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42), |
4142 | // Label 180: @2756 |
4143 | GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(2767), // Rule ID 148 // |
4144 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled), |
4145 | // Combiner Rule #111: not_cmp_fold; wip_match_opcode 'G_XOR' |
4146 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63), |
4147 | // Label 181: @2767 |
4148 | GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(2778), // Rule ID 179 // |
4149 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled), |
4150 | // Combiner Rule #134: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR' |
4151 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81), |
4152 | // Label 182: @2778 |
4153 | GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(2789), // Rule ID 217 // |
4154 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled), |
4155 | // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_XOR' |
4156 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95), |
4157 | // Label 183: @2789 |
4158 | GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(2800), // Rule ID 256 // |
4159 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
4160 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_XOR' |
4161 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
4162 | // Label 184: @2800 |
4163 | GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(2811), // Rule ID 285 // |
4164 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4165 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR' |
4166 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4167 | // Label 185: @2811 |
4168 | GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(2834), // Rule ID 88 // |
4169 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
4170 | // MIs[0] dst |
4171 | // No operand predicates |
4172 | // MIs[0] lhs |
4173 | // No operand predicates |
4174 | // MIs[0] Operand 2 |
4175 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
4176 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4177 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[3]] |
4178 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4179 | GIR_EraseRootFromParent_Done, |
4180 | // Label 186: @2834 |
4181 | GIM_Reject, |
4182 | // Label 11: @2835 |
4183 | GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(2846), // Rule ID 118 // |
4184 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled), |
4185 | // Combiner Rule #87: extend_through_phis; wip_match_opcode 'G_PHI' |
4186 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40), |
4187 | // Label 187: @2846 |
4188 | GIM_Reject, |
4189 | // Label 12: @2847 |
4190 | GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(2858), // Rule ID 323 // |
4191 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled), |
4192 | // Combiner Rule #191: fold_global_offset; wip_match_opcode 'G_GLOBAL_VALUE' |
4193 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131), |
4194 | // Label 188: @2858 |
4195 | GIM_Reject, |
4196 | // Label 13: @2859 |
4197 | GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(2870), // Rule ID 81 // |
4198 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled), |
4199 | // Combiner Rule #66: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES' |
4200 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29), |
4201 | // Label 189: @2870 |
4202 | GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(2881), // Rule ID 150 // |
4203 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled), |
4204 | // Combiner Rule #113: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES' |
4205 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65), |
4206 | // Label 190: @2881 |
4207 | GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(2892), // Rule ID 151 // |
4208 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled), |
4209 | // Combiner Rule #114: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES' |
4210 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66), |
4211 | // Label 191: @2892 |
4212 | GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(2903), // Rule ID 152 // |
4213 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled), |
4214 | // Combiner Rule #115: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES' |
4215 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67), |
4216 | // Label 192: @2903 |
4217 | GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(2914), // Rule ID 153 // |
4218 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled), |
4219 | // Combiner Rule #116: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES' |
4220 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68), |
4221 | // Label 193: @2914 |
4222 | GIM_Reject, |
4223 | // Label 14: @2915 |
4224 | GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(2926), // Rule ID 154 // |
4225 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled), |
4226 | // Combiner Rule #117: merge_unmerge; wip_match_opcode 'G_MERGE_VALUES' |
4227 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69), |
4228 | // Label 194: @2926 |
4229 | GIM_Reject, |
4230 | // Label 15: @2927 |
4231 | GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(2938), // Rule ID 54 // |
4232 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled), |
4233 | // Combiner Rule #52: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR' |
4234 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16), |
4235 | // Label 195: @2938 |
4236 | GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(2949), // Rule ID 111 // |
4237 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled), |
4238 | // Combiner Rule #80: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR' |
4239 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36), |
4240 | // Label 196: @2949 |
4241 | GIM_Reject, |
4242 | // Label 16: @2950 |
4243 | GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(2961), // Rule ID 110 // |
4244 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled), |
4245 | // Combiner Rule #80: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC' |
4246 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36), |
4247 | // Label 197: @2961 |
4248 | GIM_Reject, |
4249 | // Label 17: @2962 |
4250 | GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(2973), // Rule ID 312 // |
4251 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled), |
4252 | // Combiner Rule #181: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS' |
4253 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123), |
4254 | // Label 198: @2973 |
4255 | GIM_Reject, |
4256 | // Label 18: @2974 |
4257 | GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(2995), // Rule ID 103 // |
4258 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled), |
4259 | // MIs[0] dst |
4260 | // No operand predicates |
4261 | // MIs[0] t |
4262 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
4263 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR), |
4264 | // MIs[1] ptr |
4265 | // No operand predicates |
4266 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
4267 | // Combiner Rule #74: i2p_to_p2i |
4268 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34), |
4269 | // Label 199: @2995 |
4270 | GIM_Reject, |
4271 | // Label 19: @2996 |
4272 | GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3007), // Rule ID 102 // |
4273 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled), |
4274 | // Combiner Rule #73: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR' |
4275 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33), |
4276 | // Label 200: @3007 |
4277 | GIM_Reject, |
4278 | // Label 20: @3008 |
4279 | GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3029), // Rule ID 114 // |
4280 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled), |
4281 | // MIs[0] dst |
4282 | // No operand predicates |
4283 | // MIs[0] src1 |
4284 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
4285 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST), |
4286 | // MIs[1] src0 |
4287 | // No operand predicates |
4288 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
4289 | // Combiner Rule #83: bitcast_bitcast_fold |
4290 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39), |
4291 | // Label 201: @3029 |
4292 | GIM_Reject, |
4293 | // Label 21: @3030 |
4294 | GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3059), // Rule ID 12 // |
4295 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled), |
4296 | // MIs[0] dst |
4297 | // No operand predicates |
4298 | // MIs[0] src |
4299 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
4300 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE), |
4301 | // MIs[1] __idempotent_prop_match_0.x |
4302 | // No operand predicates |
4303 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4304 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
4305 | // Combiner Rule #12: idempotent_prop @ [__idempotent_prop_match_0[0]] |
4306 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4307 | GIR_EraseRootFromParent_Done, |
4308 | // Label 202: @3059 |
4309 | GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3082), // Rule ID 50 // |
4310 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled), |
4311 | // MIs[0] root |
4312 | // No operand predicates |
4313 | // MIs[0] src |
4314 | // No operand predicates |
4315 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1), |
4316 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4317 | // Combiner Rule #48: freeze_of_non_undef_non_poison |
4318 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4319 | GIR_EraseRootFromParent_Done, |
4320 | // Label 203: @3082 |
4321 | GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3093), // Rule ID 51 // |
4322 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled), |
4323 | // MIs[0] dst |
4324 | // No operand predicates |
4325 | // MIs[0] src |
4326 | // No operand predicates |
4327 | // Combiner Rule #49: push_freeze_to_prevent_poison_from_propagating |
4328 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13), |
4329 | // Label 204: @3093 |
4330 | GIM_Reject, |
4331 | // Label 22: @3094 |
4332 | GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3105), // Rule ID 55 // |
4333 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled), |
4334 | // Combiner Rule #53: extending_loads; wip_match_opcode 'G_LOAD' |
4335 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17), |
4336 | // Label 205: @3105 |
4337 | GIM_Reject, |
4338 | // Label 23: @3106 |
4339 | GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3117), // Rule ID 56 // |
4340 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled), |
4341 | // Combiner Rule #53: extending_loads; wip_match_opcode 'G_SEXTLOAD' |
4342 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17), |
4343 | // Label 206: @3117 |
4344 | GIM_Reject, |
4345 | // Label 24: @3118 |
4346 | GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3129), // Rule ID 57 // |
4347 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled), |
4348 | // Combiner Rule #53: extending_loads; wip_match_opcode 'G_ZEXTLOAD' |
4349 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17), |
4350 | // Label 207: @3129 |
4351 | GIM_Reject, |
4352 | // Label 25: @3130 |
4353 | GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3141), // Rule ID 80 // |
4354 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled), |
4355 | // Combiner Rule #65: erase_undef_store; wip_match_opcode 'G_STORE' |
4356 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28), |
4357 | // Label 208: @3141 |
4358 | GIM_Reject, |
4359 | // Label 26: @3142 |
4360 | GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3153), // Rule ID 104 // |
4361 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled), |
4362 | // Combiner Rule #75: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT' |
4363 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35), |
4364 | // Label 209: @3153 |
4365 | GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3164), // Rule ID 145 // |
4366 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled), |
4367 | // Combiner Rule #110: ext_ext_fold; wip_match_opcode 'G_ANYEXT' |
4368 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62), |
4369 | // Label 210: @3164 |
4370 | GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3175), // Rule ID 229 // |
4371 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled), |
4372 | // Combiner Rule #155: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT' |
4373 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98), |
4374 | // Label 211: @3175 |
4375 | GIM_Reject, |
4376 | // Label 27: @3176 |
4377 | GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3187), // Rule ID 77 // |
4378 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled), |
4379 | // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_TRUNC' |
4380 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25), |
4381 | // Label 212: @3187 |
4382 | GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3198), // Rule ID 112 // |
4383 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled), |
4384 | // Combiner Rule #81: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC' |
4385 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37), |
4386 | // Label 213: @3198 |
4387 | GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3209), // Rule ID 113 // |
4388 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled), |
4389 | // Combiner Rule #82: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC' |
4390 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38), |
4391 | // Label 214: @3209 |
4392 | GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3220), // Rule ID 155 // |
4393 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled), |
4394 | // Combiner Rule #118: trunc_ext_fold; wip_match_opcode 'G_TRUNC' |
4395 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70), |
4396 | // Label 215: @3220 |
4397 | GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3231), // Rule ID 156 // |
4398 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled), |
4399 | // Combiner Rule #119: trunc_shift; wip_match_opcode 'G_TRUNC' |
4400 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71), |
4401 | // Label 216: @3231 |
4402 | GIM_Reject, |
4403 | // Label 28: @3232 |
4404 | GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3243), // Rule ID 321 // |
4405 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled), |
4406 | // Combiner Rule #189: fconstant_to_constant; wip_match_opcode 'G_FCONSTANT' |
4407 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129), |
4408 | // Label 217: @3243 |
4409 | GIM_Reject, |
4410 | // Label 29: @3244 |
4411 | GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3255), // Rule ID 146 // |
4412 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled), |
4413 | // Combiner Rule #110: ext_ext_fold; wip_match_opcode 'G_SEXT' |
4414 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62), |
4415 | // Label 218: @3255 |
4416 | GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3266), // Rule ID 228 // |
4417 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled), |
4418 | // Combiner Rule #155: constant_fold_cast_op; wip_match_opcode 'G_SEXT' |
4419 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98), |
4420 | // Label 219: @3266 |
4421 | GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3293), // Rule ID 317 // |
4422 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled), |
4423 | // MIs[0] root |
4424 | // No operand predicates |
4425 | // MIs[0] src |
4426 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
4427 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC), |
4428 | GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoSWrap), |
4429 | // MIs[1] x |
4430 | // No operand predicates |
4431 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
4432 | // Combiner Rule #185: sext_trunc |
4433 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125), |
4434 | // Label 220: @3293 |
4435 | GIM_Reject, |
4436 | // Label 30: @3294 |
4437 | GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3305), // Rule ID 130 // |
4438 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled), |
4439 | // Combiner Rule #95: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG' |
4440 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48), |
4441 | // Label 221: @3305 |
4442 | GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3316), // Rule ID 138 // |
4443 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled), |
4444 | // Combiner Rule #103: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG' |
4445 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55), |
4446 | // Label 222: @3316 |
4447 | GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(3327), // Rule ID 206 // |
4448 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled), |
4449 | // Combiner Rule #148: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG' |
4450 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91), |
4451 | // Label 223: @3327 |
4452 | GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(3338), // Rule ID 144 // |
4453 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled), |
4454 | // MIs[0] dst |
4455 | // No operand predicates |
4456 | // MIs[0] src |
4457 | // No operand predicates |
4458 | // MIs[0] imm |
4459 | // No operand predicates |
4460 | // Combiner Rule #109: sext_inreg_to_zext_inreg |
4461 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61), |
4462 | // Label 224: @3338 |
4463 | GIM_Reject, |
4464 | // Label 31: @3339 |
4465 | GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(3350), // Rule ID 141 // |
4466 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled), |
4467 | // Combiner Rule #106: zext_trunc_fold; wip_match_opcode 'G_ZEXT' |
4468 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58), |
4469 | // Label 225: @3350 |
4470 | GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(3361), // Rule ID 147 // |
4471 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled), |
4472 | // Combiner Rule #110: ext_ext_fold; wip_match_opcode 'G_ZEXT' |
4473 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62), |
4474 | // Label 226: @3361 |
4475 | GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(3372), // Rule ID 227 // |
4476 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled), |
4477 | // Combiner Rule #155: constant_fold_cast_op; wip_match_opcode 'G_ZEXT' |
4478 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98), |
4479 | // Label 227: @3372 |
4480 | GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(3399), // Rule ID 318 // |
4481 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled), |
4482 | // MIs[0] root |
4483 | // No operand predicates |
4484 | // MIs[0] src |
4485 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
4486 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC), |
4487 | GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap), |
4488 | // MIs[1] x |
4489 | // No operand predicates |
4490 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
4491 | // Combiner Rule #186: zext_trunc |
4492 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126), |
4493 | // Label 228: @3399 |
4494 | GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(3416), // Rule ID 319 // |
4495 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled), |
4496 | GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg), |
4497 | // MIs[0] root |
4498 | // No operand predicates |
4499 | // MIs[0] x |
4500 | // No operand predicates |
4501 | // Combiner Rule #187: nneg_zext |
4502 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127), |
4503 | // Label 229: @3416 |
4504 | GIM_Reject, |
4505 | // Label 32: @3417 |
4506 | GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(3428), // Rule ID 65 // |
4507 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled), |
4508 | // Combiner Rule #59: binop_left_undef_to_zero; wip_match_opcode 'G_SHL' |
4509 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23), |
4510 | // Label 230: @3428 |
4511 | GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(3439), // Rule ID 68 // |
4512 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled), |
4513 | // Combiner Rule #60: binop_right_undef_to_undef; wip_match_opcode 'G_SHL' |
4514 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24), |
4515 | // Label 231: @3439 |
4516 | GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(3450), // Rule ID 123 // |
4517 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled), |
4518 | // Combiner Rule #90: shifts_too_big; wip_match_opcode 'G_SHL' |
4519 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43), |
4520 | // Label 232: @3450 |
4521 | GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(3461), // Rule ID 181 // |
4522 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled), |
4523 | // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_SHL' |
4524 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83), |
4525 | // Label 233: @3461 |
4526 | GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(3472), // Rule ID 186 // |
4527 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled), |
4528 | // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL' |
4529 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84), |
4530 | // Label 234: @3472 |
4531 | GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(3483), // Rule ID 205 // |
4532 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled), |
4533 | // Combiner Rule #147: commute_shift; wip_match_opcode 'G_SHL' |
4534 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90), |
4535 | // Label 235: @3483 |
4536 | GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(3494), // Rule ID 218 // |
4537 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled), |
4538 | // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_SHL' |
4539 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95), |
4540 | // Label 236: @3494 |
4541 | GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(3505), // Rule ID 263 // |
4542 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
4543 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SHL' |
4544 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
4545 | // Label 237: @3505 |
4546 | GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(3540), // Rule ID 48 // |
4547 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled), |
4548 | GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap), |
4549 | // MIs[0] root |
4550 | // No operand predicates |
4551 | // MIs[0] left |
4552 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
4553 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE), |
4554 | // MIs[1] imm |
4555 | // No operand predicates |
4556 | // MIs[0] x |
4557 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2] |
4558 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT), |
4559 | // MIs[2] imm1 |
4560 | // No operand predicates |
4561 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
4562 | // Combiner Rule #46: shl_of_vscale |
4563 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11), |
4564 | // Label 238: @3540 |
4565 | GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(3563), // Rule ID 89 // |
4566 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
4567 | // MIs[0] dst |
4568 | // No operand predicates |
4569 | // MIs[0] lhs |
4570 | // No operand predicates |
4571 | // MIs[0] Operand 2 |
4572 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
4573 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4574 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[4]] |
4575 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4576 | GIR_EraseRootFromParent_Done, |
4577 | // Label 239: @3563 |
4578 | GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(3574), // Rule ID 131 // |
4579 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled), |
4580 | // MIs[0] dst |
4581 | // No operand predicates |
4582 | // MIs[0] src0 |
4583 | // No operand predicates |
4584 | // MIs[0] src1 |
4585 | // No operand predicates |
4586 | // Combiner Rule #96: reduce_shl_of_extend |
4587 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49), |
4588 | // Label 240: @3574 |
4589 | GIM_Reject, |
4590 | // Label 33: @3575 |
4591 | GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(3586), // Rule ID 70 // |
4592 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled), |
4593 | // Combiner Rule #60: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR' |
4594 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24), |
4595 | // Label 241: @3586 |
4596 | GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(3597), // Rule ID 125 // |
4597 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled), |
4598 | // Combiner Rule #90: shifts_too_big; wip_match_opcode 'G_LSHR' |
4599 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43), |
4600 | // Label 242: @3597 |
4601 | GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(3608), // Rule ID 183 // |
4602 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled), |
4603 | // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_LSHR' |
4604 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83), |
4605 | // Label 243: @3608 |
4606 | GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(3619), // Rule ID 188 // |
4607 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled), |
4608 | // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR' |
4609 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84), |
4610 | // Label 244: @3619 |
4611 | GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(3630), // Rule ID 209 // |
4612 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled), |
4613 | // Combiner Rule #150: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR' |
4614 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93), |
4615 | // Label 245: @3630 |
4616 | GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(3641), // Rule ID 211 // |
4617 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled), |
4618 | // Combiner Rule #151: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR' |
4619 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94), |
4620 | // Label 246: @3641 |
4621 | GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(3652), // Rule ID 219 // |
4622 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled), |
4623 | // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_LSHR' |
4624 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95), |
4625 | // Label 247: @3652 |
4626 | GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(3663), // Rule ID 261 // |
4627 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
4628 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_LSHR' |
4629 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
4630 | // Label 248: @3663 |
4631 | GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(3686), // Rule ID 91 // |
4632 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
4633 | // MIs[0] dst |
4634 | // No operand predicates |
4635 | // MIs[0] lhs |
4636 | // No operand predicates |
4637 | // MIs[0] Operand 2 |
4638 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
4639 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4640 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[6]] |
4641 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4642 | GIR_EraseRootFromParent_Done, |
4643 | // Label 249: @3686 |
4644 | GIM_Reject, |
4645 | // Label 34: @3687 |
4646 | GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(3698), // Rule ID 69 // |
4647 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled), |
4648 | // Combiner Rule #60: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR' |
4649 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24), |
4650 | // Label 250: @3698 |
4651 | GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(3709), // Rule ID 124 // |
4652 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled), |
4653 | // Combiner Rule #90: shifts_too_big; wip_match_opcode 'G_ASHR' |
4654 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43), |
4655 | // Label 251: @3709 |
4656 | GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(3720), // Rule ID 129 // |
4657 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled), |
4658 | // Combiner Rule #94: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR' |
4659 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47), |
4660 | // Label 252: @3720 |
4661 | GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(3731), // Rule ID 182 // |
4662 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled), |
4663 | // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_ASHR' |
4664 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83), |
4665 | // Label 253: @3731 |
4666 | GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(3742), // Rule ID 187 // |
4667 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled), |
4668 | // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR' |
4669 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84), |
4670 | // Label 254: @3742 |
4671 | GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(3753), // Rule ID 208 // |
4672 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled), |
4673 | // Combiner Rule #150: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR' |
4674 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93), |
4675 | // Label 255: @3753 |
4676 | GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(3764), // Rule ID 210 // |
4677 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled), |
4678 | // Combiner Rule #151: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR' |
4679 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94), |
4680 | // Label 256: @3764 |
4681 | GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(3775), // Rule ID 220 // |
4682 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled), |
4683 | // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_ASHR' |
4684 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95), |
4685 | // Label 257: @3775 |
4686 | GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(3786), // Rule ID 262 // |
4687 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
4688 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_ASHR' |
4689 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
4690 | // Label 258: @3786 |
4691 | GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(3809), // Rule ID 90 // |
4692 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
4693 | // MIs[0] dst |
4694 | // No operand predicates |
4695 | // MIs[0] lhs |
4696 | // No operand predicates |
4697 | // MIs[0] Operand 2 |
4698 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
4699 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4700 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[5]] |
4701 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4702 | GIR_EraseRootFromParent_Done, |
4703 | // Label 259: @3809 |
4704 | GIM_Reject, |
4705 | // Label 35: @3810 |
4706 | GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(3821), // Rule ID 197 // |
4707 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled), |
4708 | // Combiner Rule #141: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL' |
4709 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88), |
4710 | // Label 260: @3821 |
4711 | GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(3832), // Rule ID 201 // |
4712 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled), |
4713 | // Combiner Rule #144: funnel_shift_overshift; wip_match_opcode 'G_FSHL' |
4714 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89), |
4715 | // Label 261: @3832 |
4716 | GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(3852), // Rule ID 200 // |
4717 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled), |
4718 | // MIs[0] x |
4719 | // No operand predicates |
4720 | // MIs[0] y |
4721 | // No operand predicates |
4722 | // MIs[0] z |
4723 | // No operand predicates |
4724 | // MIs[0] Operand 3 |
4725 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0, |
4726 | // Combiner Rule #143: funnel_shift_left_zero |
4727 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY), |
4728 | GIR_RootToRootCopy, /*OpIdx*/0, // x |
4729 | GIR_RootToRootCopy, /*OpIdx*/1, // y |
4730 | GIR_EraseRootFromParent_Done, |
4731 | // Label 262: @3852 |
4732 | GIM_Reject, |
4733 | // Label 36: @3853 |
4734 | GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(3864), // Rule ID 198 // |
4735 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled), |
4736 | // Combiner Rule #141: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR' |
4737 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88), |
4738 | // Label 263: @3864 |
4739 | GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(3875), // Rule ID 202 // |
4740 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled), |
4741 | // Combiner Rule #144: funnel_shift_overshift; wip_match_opcode 'G_FSHR' |
4742 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89), |
4743 | // Label 264: @3875 |
4744 | GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(3895), // Rule ID 199 // |
4745 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled), |
4746 | // MIs[0] x |
4747 | // No operand predicates |
4748 | // MIs[0] y |
4749 | // No operand predicates |
4750 | // MIs[0] z |
4751 | // No operand predicates |
4752 | // MIs[0] Operand 3 |
4753 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0, |
4754 | // Combiner Rule #142: funnel_shift_right_zero |
4755 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY), |
4756 | GIR_RootToRootCopy, /*OpIdx*/0, // x |
4757 | GIR_RootToRootCopy, /*OpIdx*/2, // z |
4758 | GIR_EraseRootFromParent_Done, |
4759 | // Label 265: @3895 |
4760 | GIM_Reject, |
4761 | // Label 37: @3896 |
4762 | GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(3919), // Rule ID 94 // |
4763 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
4764 | // MIs[0] dst |
4765 | // No operand predicates |
4766 | // MIs[0] lhs |
4767 | // No operand predicates |
4768 | // MIs[0] Operand 2 |
4769 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
4770 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4771 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[9]] |
4772 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4773 | GIR_EraseRootFromParent_Done, |
4774 | // Label 266: @3919 |
4775 | GIM_Reject, |
4776 | // Label 38: @3920 |
4777 | GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(3943), // Rule ID 93 // |
4778 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
4779 | // MIs[0] dst |
4780 | // No operand predicates |
4781 | // MIs[0] lhs |
4782 | // No operand predicates |
4783 | // MIs[0] Operand 2 |
4784 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
4785 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4786 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[8]] |
4787 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
4788 | GIR_EraseRootFromParent_Done, |
4789 | // Label 267: @3943 |
4790 | GIM_Reject, |
4791 | // Label 39: @3944 |
4792 | GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(3955), // Rule ID 142 // |
4793 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled), |
4794 | // Combiner Rule #107: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP' |
4795 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59), |
4796 | // Label 268: @3955 |
4797 | GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(3966), // Rule ID 143 // |
4798 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled), |
4799 | // Combiner Rule #108: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP' |
4800 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60), |
4801 | // Label 269: @3966 |
4802 | GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(3977), // Rule ID 279 // |
4803 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled), |
4804 | // Combiner Rule #175: redundant_binop_in_equality; wip_match_opcode 'G_ICMP' |
4805 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117), |
4806 | // Label 270: @3977 |
4807 | GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(3988), // Rule ID 322 // |
4808 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled), |
4809 | // Combiner Rule #190: icmp_redundant_trunc; wip_match_opcode 'G_ICMP' |
4810 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130), |
4811 | // Label 271: @3988 |
4812 | GIM_Reject, |
4813 | // Label 40: @3989 |
4814 | GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4000), // Rule ID 84 // |
4815 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled), |
4816 | // Combiner Rule #68: select_same_val; wip_match_opcode 'G_SELECT' |
4817 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31), |
4818 | // Label 272: @4000 |
4819 | GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4011), // Rule ID 134 // |
4820 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled), |
4821 | // Combiner Rule #99: select_constant_cmp; wip_match_opcode 'G_SELECT' |
4822 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51), |
4823 | // Label 273: @4011 |
4824 | GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4022), // Rule ID 136 // |
4825 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled), |
4826 | // Combiner Rule #101: match_selects; wip_match_opcode 'G_SELECT' |
4827 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53), |
4828 | // Label 274: @4022 |
4829 | GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4033), // Rule ID 278 // |
4830 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled), |
4831 | // Combiner Rule #174: select_to_minmax; wip_match_opcode 'G_SELECT' |
4832 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116), |
4833 | // Label 275: @4033 |
4834 | GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(4054), // Rule ID 135 // |
4835 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled), |
4836 | // MIs[0] root |
4837 | // No operand predicates |
4838 | // MIs[0] tst |
4839 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
4840 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP), |
4841 | // MIs[1] tst1 |
4842 | // No operand predicates |
4843 | // MIs[1] a |
4844 | // No operand predicates |
4845 | // MIs[1] b |
4846 | // No operand predicates |
4847 | // MIs[0] x |
4848 | // No operand predicates |
4849 | // MIs[0] y |
4850 | // No operand predicates |
4851 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
4852 | // Combiner Rule #100: select_to_iminmax |
4853 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52), |
4854 | // Label 276: @4054 |
4855 | GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(4083), // Rule ID 133 // |
4856 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled), |
4857 | // MIs[0] dst |
4858 | // No operand predicates |
4859 | // MIs[0] undef |
4860 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
4861 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF), |
4862 | // MIs[0] x |
4863 | // No operand predicates |
4864 | // MIs[0] y |
4865 | // No operand predicates |
4866 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3, |
4867 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
4868 | // Combiner Rule #98: select_undef_cmp |
4869 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3, |
4870 | GIR_EraseRootFromParent_Done, |
4871 | // Label 277: @4083 |
4872 | GIM_Reject, |
4873 | // Label 41: @4084 |
4874 | GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4095), // Rule ID 290 // |
4875 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4876 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO' |
4877 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4878 | // Label 278: @4095 |
4879 | GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(4106), // Rule ID 316 // |
4880 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled), |
4881 | // Combiner Rule #184: match_addos; wip_match_opcode 'G_UADDO' |
4882 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124), |
4883 | // Label 279: @4106 |
4884 | GIM_Reject, |
4885 | // Label 42: @4107 |
4886 | GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(4118), // Rule ID 170 // |
4887 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled), |
4888 | // Combiner Rule #131: adde_to_addo; wip_match_opcode 'G_UADDE' |
4889 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78), |
4890 | // Label 280: @4118 |
4891 | GIM_Reject, |
4892 | // Label 43: @4119 |
4893 | GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(4130), // Rule ID 172 // |
4894 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled), |
4895 | // Combiner Rule #131: adde_to_addo; wip_match_opcode 'G_USUBE' |
4896 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78), |
4897 | // Label 281: @4130 |
4898 | GIM_Reject, |
4899 | // Label 44: @4131 |
4900 | GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(4142), // Rule ID 291 // |
4901 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4902 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO' |
4903 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4904 | // Label 282: @4142 |
4905 | GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(4153), // Rule ID 315 // |
4906 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled), |
4907 | // Combiner Rule #184: match_addos; wip_match_opcode 'G_SADDO' |
4908 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124), |
4909 | // Label 283: @4153 |
4910 | GIM_Reject, |
4911 | // Label 45: @4154 |
4912 | GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(4165), // Rule ID 171 // |
4913 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled), |
4914 | // Combiner Rule #131: adde_to_addo; wip_match_opcode 'G_SADDE' |
4915 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78), |
4916 | // Label 284: @4165 |
4917 | GIM_Reject, |
4918 | // Label 46: @4166 |
4919 | GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(4177), // Rule ID 173 // |
4920 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled), |
4921 | // Combiner Rule #131: adde_to_addo; wip_match_opcode 'G_SSUBE' |
4922 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78), |
4923 | // Label 285: @4177 |
4924 | GIM_Reject, |
4925 | // Label 47: @4178 |
4926 | GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(4189), // Rule ID 166 // |
4927 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled), |
4928 | // Combiner Rule #129: mulo_by_2; wip_match_opcode 'G_UMULO' |
4929 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76), |
4930 | // Label 286: @4189 |
4931 | GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(4200), // Rule ID 168 // |
4932 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled), |
4933 | // Combiner Rule #130: mulo_by_0; wip_match_opcode 'G_UMULO' |
4934 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77), |
4935 | // Label 287: @4200 |
4936 | GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(4211), // Rule ID 292 // |
4937 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4938 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO' |
4939 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4940 | // Label 288: @4211 |
4941 | GIM_Reject, |
4942 | // Label 48: @4212 |
4943 | GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(4223), // Rule ID 167 // |
4944 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled), |
4945 | // Combiner Rule #129: mulo_by_2; wip_match_opcode 'G_SMULO' |
4946 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76), |
4947 | // Label 289: @4223 |
4948 | GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(4234), // Rule ID 169 // |
4949 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled), |
4950 | // Combiner Rule #130: mulo_by_0; wip_match_opcode 'G_SMULO' |
4951 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77), |
4952 | // Label 290: @4234 |
4953 | GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(4245), // Rule ID 293 // |
4954 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4955 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO' |
4956 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4957 | // Label 291: @4245 |
4958 | GIM_Reject, |
4959 | // Label 49: @4246 |
4960 | GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(4257), // Rule ID 235 // |
4961 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled), |
4962 | // Combiner Rule #161: mulh_to_lshr; wip_match_opcode 'G_UMULH' |
4963 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103), |
4964 | // Label 292: @4257 |
4965 | GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(4268), // Rule ID 294 // |
4966 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4967 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH' |
4968 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4969 | // Label 293: @4268 |
4970 | GIM_Reject, |
4971 | // Label 50: @4269 |
4972 | GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(4280), // Rule ID 295 // |
4973 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4974 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH' |
4975 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4976 | // Label 294: @4280 |
4977 | GIM_Reject, |
4978 | // Label 51: @4281 |
4979 | GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(4292), // Rule ID 296 // |
4980 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4981 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT' |
4982 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4983 | // Label 295: @4292 |
4984 | GIM_Reject, |
4985 | // Label 52: @4293 |
4986 | GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(4304), // Rule ID 297 // |
4987 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
4988 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT' |
4989 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
4990 | // Label 296: @4304 |
4991 | GIM_Reject, |
4992 | // Label 53: @4305 |
4993 | GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(4316), // Rule ID 185 // |
4994 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled), |
4995 | // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_USHLSAT' |
4996 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83), |
4997 | // Label 297: @4316 |
4998 | GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(4327), // Rule ID 189 // |
4999 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled), |
5000 | // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT' |
5001 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84), |
5002 | // Label 298: @4327 |
5003 | GIM_Reject, |
5004 | // Label 54: @4328 |
5005 | GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(4339), // Rule ID 184 // |
5006 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled), |
5007 | // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_SSHLSAT' |
5008 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83), |
5009 | // Label 299: @4339 |
5010 | GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(4350), // Rule ID 190 // |
5011 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled), |
5012 | // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT' |
5013 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84), |
5014 | // Label 300: @4350 |
5015 | GIM_Reject, |
5016 | // Label 55: @4351 |
5017 | GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(4362), // Rule ID 298 // |
5018 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
5019 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX' |
5020 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
5021 | // Label 301: @4362 |
5022 | GIM_Reject, |
5023 | // Label 56: @4363 |
5024 | GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(4374), // Rule ID 299 // |
5025 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
5026 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX' |
5027 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
5028 | // Label 302: @4374 |
5029 | GIM_Reject, |
5030 | // Label 57: @4375 |
5031 | GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(4386), // Rule ID 300 // |
5032 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
5033 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT' |
5034 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
5035 | // Label 303: @4386 |
5036 | GIM_Reject, |
5037 | // Label 58: @4387 |
5038 | GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(4398), // Rule ID 301 // |
5039 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
5040 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT' |
5041 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
5042 | // Label 304: @4398 |
5043 | GIM_Reject, |
5044 | // Label 59: @4399 |
5045 | GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(4410), // Rule ID 221 // |
5046 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled), |
5047 | // Combiner Rule #153: constant_fold_fp_binop; wip_match_opcode 'G_FADD' |
5048 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96), |
5049 | // Label 305: @4410 |
5050 | GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(4421), // Rule ID 236 // |
5051 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled), |
5052 | // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FADD' |
5053 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104), |
5054 | // Label 306: @4421 |
5055 | GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(4432), // Rule ID 243 // |
5056 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled), |
5057 | // Combiner Rule #164: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD' |
5058 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106), |
5059 | // Label 307: @4432 |
5060 | GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(4443), // Rule ID 244 // |
5061 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled), |
5062 | // Combiner Rule #165: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD' |
5063 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107), |
5064 | // Label 308: @4443 |
5065 | GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(4454), // Rule ID 245 // |
5066 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled), |
5067 | // Combiner Rule #166: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD' |
5068 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108), |
5069 | // Label 309: @4454 |
5070 | GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(4465), // Rule ID 246 // |
5071 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled), |
5072 | // Combiner Rule #167: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD' |
5073 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109), |
5074 | // Label 310: @4465 |
5075 | GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(4476), // Rule ID 269 // |
5076 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5077 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FADD' |
5078 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5079 | // Label 311: @4476 |
5080 | GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(4487), // Rule ID 302 // |
5081 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled), |
5082 | // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD' |
5083 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120), |
5084 | // Label 312: @4487 |
5085 | GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(4510), // Rule ID 116 // |
5086 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled), |
5087 | // MIs[0] dst |
5088 | // No operand predicates |
5089 | // MIs[0] x |
5090 | // No operand predicates |
5091 | // MIs[0] y |
5092 | // No operand predicates |
5093 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3), |
5094 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5095 | // Combiner Rule #85: right_identity_neg_zero_fp |
5096 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5097 | GIR_EraseRootFromParent_Done, |
5098 | // Label 313: @4510 |
5099 | GIM_Reject, |
5100 | // Label 60: @4511 |
5101 | GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(4522), // Rule ID 222 // |
5102 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled), |
5103 | // Combiner Rule #153: constant_fold_fp_binop; wip_match_opcode 'G_FSUB' |
5104 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96), |
5105 | // Label 314: @4522 |
5106 | GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(4533), // Rule ID 237 // |
5107 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled), |
5108 | // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FSUB' |
5109 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104), |
5110 | // Label 315: @4533 |
5111 | GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(4544), // Rule ID 247 // |
5112 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled), |
5113 | // Combiner Rule #168: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB' |
5114 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110), |
5115 | // Label 316: @4544 |
5116 | GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(4555), // Rule ID 248 // |
5117 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled), |
5118 | // Combiner Rule #169: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB' |
5119 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111), |
5120 | // Label 317: @4555 |
5121 | GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(4566), // Rule ID 249 // |
5122 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled), |
5123 | // Combiner Rule #170: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB' |
5124 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112), |
5125 | // Label 318: @4566 |
5126 | GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(4577), // Rule ID 250 // |
5127 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled), |
5128 | // Combiner Rule #171: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB' |
5129 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113), |
5130 | // Label 319: @4577 |
5131 | GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(4588), // Rule ID 270 // |
5132 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5133 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FSUB' |
5134 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5135 | // Label 320: @4588 |
5136 | GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(4599), // Rule ID 280 // |
5137 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled), |
5138 | // Combiner Rule #176: fsub_to_fneg; wip_match_opcode 'G_FSUB' |
5139 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118), |
5140 | // Label 321: @4599 |
5141 | GIM_Reject, |
5142 | // Label 61: @4600 |
5143 | GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(4611), // Rule ID 223 // |
5144 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled), |
5145 | // Combiner Rule #153: constant_fold_fp_binop; wip_match_opcode 'G_FMUL' |
5146 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96), |
5147 | // Label 322: @4611 |
5148 | GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(4622), // Rule ID 238 // |
5149 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled), |
5150 | // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FMUL' |
5151 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104), |
5152 | // Label 323: @4622 |
5153 | GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(4633), // Rule ID 268 // |
5154 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5155 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMUL' |
5156 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5157 | // Label 324: @4633 |
5158 | GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(4644), // Rule ID 303 // |
5159 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled), |
5160 | // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL' |
5161 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120), |
5162 | // Label 325: @4644 |
5163 | GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(4667), // Rule ID 107 // |
5164 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled), |
5165 | // MIs[0] dst |
5166 | // No operand predicates |
5167 | // MIs[0] x |
5168 | // No operand predicates |
5169 | // MIs[0] y |
5170 | // No operand predicates |
5171 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2), |
5172 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5173 | // Combiner Rule #78: right_identity_one_fp |
5174 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5175 | GIR_EraseRootFromParent_Done, |
5176 | // Label 326: @4667 |
5177 | GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(4687), // Rule ID 117 // |
5178 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled), |
5179 | // MIs[0] dst |
5180 | // No operand predicates |
5181 | // MIs[0] x |
5182 | // No operand predicates |
5183 | // MIs[0] y |
5184 | // No operand predicates |
5185 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4), |
5186 | // Combiner Rule #86: right_identity_neg_one_fp |
5187 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG), |
5188 | GIR_RootToRootCopy, /*OpIdx*/0, // dst |
5189 | GIR_RootToRootCopy, /*OpIdx*/1, // x |
5190 | GIR_EraseRootFromParent_Done, |
5191 | // Label 327: @4687 |
5192 | GIM_Reject, |
5193 | // Label 62: @4688 |
5194 | GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(4699), // Rule ID 226 // |
5195 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled), |
5196 | // Combiner Rule #154: constant_fold_fma; wip_match_opcode 'G_FMA' |
5197 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97), |
5198 | // Label 328: @4699 |
5199 | GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(4710), // Rule ID 241 // |
5200 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled), |
5201 | // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FMA' |
5202 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104), |
5203 | // Label 329: @4710 |
5204 | GIM_Reject, |
5205 | // Label 63: @4711 |
5206 | GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(4722), // Rule ID 225 // |
5207 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled), |
5208 | // Combiner Rule #154: constant_fold_fma; wip_match_opcode 'G_FMAD' |
5209 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97), |
5210 | // Label 330: @4722 |
5211 | GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(4733), // Rule ID 240 // |
5212 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled), |
5213 | // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FMAD' |
5214 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104), |
5215 | // Label 331: @4733 |
5216 | GIM_Reject, |
5217 | // Label 64: @4734 |
5218 | GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(4745), // Rule ID 224 // |
5219 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled), |
5220 | // Combiner Rule #153: constant_fold_fp_binop; wip_match_opcode 'G_FDIV' |
5221 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96), |
5222 | // Label 332: @4745 |
5223 | GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(4756), // Rule ID 239 // |
5224 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled), |
5225 | // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FDIV' |
5226 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104), |
5227 | // Label 333: @4756 |
5228 | GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(4767), // Rule ID 271 // |
5229 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5230 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FDIV' |
5231 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5232 | // Label 334: @4767 |
5233 | GIM_Reject, |
5234 | // Label 65: @4768 |
5235 | GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(4779), // Rule ID 272 // |
5236 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5237 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FREM' |
5238 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5239 | // Label 335: @4779 |
5240 | GIM_Reject, |
5241 | // Label 66: @4780 |
5242 | GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(4801), // Rule ID 178 // |
5243 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled), |
5244 | // MIs[0] dst |
5245 | // No operand predicates |
5246 | // MIs[0] float |
5247 | // No operand predicates |
5248 | // MIs[0] int |
5249 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
5250 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT), |
5251 | // MIs[1] imm |
5252 | // No operand predicates |
5253 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5254 | // Combiner Rule #133: expand_const_fpowi |
5255 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80), |
5256 | // Label 336: @4801 |
5257 | GIM_Reject, |
5258 | // Label 67: @4802 |
5259 | GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(4823), // Rule ID 160 // |
5260 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled), |
5261 | // MIs[0] dst |
5262 | // No operand predicates |
5263 | // MIs[0] src0 |
5264 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5265 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT), |
5266 | // MIs[1] cst |
5267 | // No operand predicates |
5268 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5269 | // Combiner Rule #123: constant_fold_flog2 |
5270 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72), |
5271 | // Label 337: @4823 |
5272 | GIM_Reject, |
5273 | // Label 68: @4824 |
5274 | GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(4845), // Rule ID 157 // |
5275 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled), |
5276 | // MIs[0] dst |
5277 | // No operand predicates |
5278 | // MIs[0] src0 |
5279 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5280 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT), |
5281 | // MIs[1] cst |
5282 | // No operand predicates |
5283 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5284 | // Combiner Rule #120: constant_fold_fneg |
5285 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72), |
5286 | // Label 338: @4845 |
5287 | GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(4874), // Rule ID 105 // |
5288 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled), |
5289 | // MIs[0] dst |
5290 | // No operand predicates |
5291 | // MIs[0] t |
5292 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5293 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG), |
5294 | // MIs[1] src |
5295 | // No operand predicates |
5296 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
5297 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5298 | // Combiner Rule #76: fneg_fneg_fold |
5299 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
5300 | GIR_EraseRootFromParent_Done, |
5301 | // Label 339: @4874 |
5302 | GIM_Reject, |
5303 | // Label 69: @4875 |
5304 | GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(4896), // Rule ID 161 // |
5305 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled), |
5306 | // MIs[0] dst |
5307 | // No operand predicates |
5308 | // MIs[0] src0 |
5309 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5310 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT), |
5311 | // MIs[1] cst |
5312 | // No operand predicates |
5313 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5314 | // Combiner Rule #124: constant_fold_fptrunc |
5315 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72), |
5316 | // Label 340: @4896 |
5317 | GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(4917), // Rule ID 115 // |
5318 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled), |
5319 | // MIs[0] dst |
5320 | // No operand predicates |
5321 | // MIs[0] src1 |
5322 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5323 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT), |
5324 | // MIs[1] src0 |
5325 | // No operand predicates |
5326 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5327 | // Combiner Rule #84: fptrunc_fpext_fold |
5328 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39), |
5329 | // Label 341: @4917 |
5330 | GIM_Reject, |
5331 | // Label 70: @4918 |
5332 | GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(4929), // Rule ID 73 // |
5333 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled), |
5334 | // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_FPTOSI' |
5335 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25), |
5336 | // Label 342: @4929 |
5337 | GIM_Reject, |
5338 | // Label 71: @4930 |
5339 | GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(4941), // Rule ID 74 // |
5340 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled), |
5341 | // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_FPTOUI' |
5342 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25), |
5343 | // Label 343: @4941 |
5344 | GIM_Reject, |
5345 | // Label 72: @4942 |
5346 | GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(4953), // Rule ID 61 // |
5347 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled), |
5348 | // Combiner Rule #56: undef_to_fp_zero; wip_match_opcode 'G_SITOFP' |
5349 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20), |
5350 | // Label 344: @4953 |
5351 | GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(4968), // Rule ID 162 // |
5352 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled), |
5353 | // MIs[0] dst |
5354 | // No operand predicates |
5355 | // MIs[0] Operand 1 |
5356 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0, |
5357 | // Combiner Rule #125: itof_const_zero_fold_si |
5358 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73), |
5359 | // Label 345: @4968 |
5360 | GIM_Reject, |
5361 | // Label 73: @4969 |
5362 | GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(4980), // Rule ID 60 // |
5363 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled), |
5364 | // Combiner Rule #56: undef_to_fp_zero; wip_match_opcode 'G_UITOFP' |
5365 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20), |
5366 | // Label 346: @4980 |
5367 | GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(4995), // Rule ID 163 // |
5368 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled), |
5369 | // MIs[0] dst |
5370 | // No operand predicates |
5371 | // MIs[0] Operand 1 |
5372 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0, |
5373 | // Combiner Rule #126: itof_const_zero_fold_ui |
5374 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73), |
5375 | // Label 347: @4995 |
5376 | GIM_Reject, |
5377 | // Label 74: @4996 |
5378 | GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(5025), // Rule ID 13 // |
5379 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled), |
5380 | // MIs[0] dst |
5381 | // No operand predicates |
5382 | // MIs[0] src |
5383 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5384 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS), |
5385 | // MIs[1] __idempotent_prop_match_0.x |
5386 | // No operand predicates |
5387 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5388 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5389 | // Combiner Rule #12: idempotent_prop @ [__idempotent_prop_match_0[1]] |
5390 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5391 | GIR_EraseRootFromParent_Done, |
5392 | // Label 348: @5025 |
5393 | GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(5046), // Rule ID 158 // |
5394 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled), |
5395 | // MIs[0] dst |
5396 | // No operand predicates |
5397 | // MIs[0] src0 |
5398 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5399 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT), |
5400 | // MIs[1] cst |
5401 | // No operand predicates |
5402 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5403 | // Combiner Rule #121: constant_fold_fabs |
5404 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72), |
5405 | // Label 349: @5046 |
5406 | GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(5074), // Rule ID 230 // |
5407 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled), |
5408 | // MIs[0] dst |
5409 | // No operand predicates |
5410 | // MIs[0] tmp |
5411 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5412 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG), |
5413 | // MIs[1] x |
5414 | // No operand predicates |
5415 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5416 | // Combiner Rule #156: fabs_fneg_fold |
5417 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS), |
5418 | GIR_RootToRootCopy, /*OpIdx*/0, // dst |
5419 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x |
5420 | GIR_EraseRootFromParent_Done, |
5421 | // Label 350: @5074 |
5422 | GIM_Reject, |
5423 | // Label 75: @5075 |
5424 | GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(5104), // Rule ID 14 // |
5425 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled), |
5426 | // MIs[0] dst |
5427 | // No operand predicates |
5428 | // MIs[0] src |
5429 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5430 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE), |
5431 | // MIs[1] __idempotent_prop_match_0.x |
5432 | // No operand predicates |
5433 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5434 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5435 | // Combiner Rule #12: idempotent_prop @ [__idempotent_prop_match_0[2]] |
5436 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5437 | GIR_EraseRootFromParent_Done, |
5438 | // Label 351: @5104 |
5439 | GIM_Reject, |
5440 | // Label 76: @5105 |
5441 | GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(5116), // Rule ID 174 // |
5442 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled), |
5443 | // Combiner Rule #132: combine_minmax_nan; wip_match_opcode 'G_FMINNUM' |
5444 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79), |
5445 | // Label 352: @5116 |
5446 | GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(5127), // Rule ID 273 // |
5447 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5448 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMINNUM' |
5449 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5450 | // Label 353: @5127 |
5451 | GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(5138), // Rule ID 304 // |
5452 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled), |
5453 | // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM' |
5454 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120), |
5455 | // Label 354: @5138 |
5456 | GIM_Reject, |
5457 | // Label 77: @5139 |
5458 | GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(5150), // Rule ID 175 // |
5459 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled), |
5460 | // Combiner Rule #132: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM' |
5461 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79), |
5462 | // Label 355: @5150 |
5463 | GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(5161), // Rule ID 274 // |
5464 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5465 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM' |
5466 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5467 | // Label 356: @5161 |
5468 | GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(5172), // Rule ID 305 // |
5469 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled), |
5470 | // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM' |
5471 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120), |
5472 | // Label 357: @5172 |
5473 | GIM_Reject, |
5474 | // Label 78: @5173 |
5475 | GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(5184), // Rule ID 306 // |
5476 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled), |
5477 | // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE' |
5478 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120), |
5479 | // Label 358: @5184 |
5480 | GIM_Reject, |
5481 | // Label 79: @5185 |
5482 | GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(5196), // Rule ID 307 // |
5483 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled), |
5484 | // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE' |
5485 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120), |
5486 | // Label 359: @5196 |
5487 | GIM_Reject, |
5488 | // Label 80: @5197 |
5489 | GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(5208), // Rule ID 176 // |
5490 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled), |
5491 | // Combiner Rule #132: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM' |
5492 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79), |
5493 | // Label 360: @5208 |
5494 | GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(5219), // Rule ID 275 // |
5495 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5496 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM' |
5497 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5498 | // Label 361: @5219 |
5499 | GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(5230), // Rule ID 308 // |
5500 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled), |
5501 | // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM' |
5502 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120), |
5503 | // Label 362: @5230 |
5504 | GIM_Reject, |
5505 | // Label 81: @5231 |
5506 | GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(5242), // Rule ID 177 // |
5507 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled), |
5508 | // Combiner Rule #132: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM' |
5509 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79), |
5510 | // Label 363: @5242 |
5511 | GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(5253), // Rule ID 276 // |
5512 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5513 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM' |
5514 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5515 | // Label 364: @5253 |
5516 | GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(5264), // Rule ID 309 // |
5517 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled), |
5518 | // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM' |
5519 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120), |
5520 | // Label 365: @5264 |
5521 | GIM_Reject, |
5522 | // Label 82: @5265 |
5523 | GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(5276), // Rule ID 126 // |
5524 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled), |
5525 | // Combiner Rule #91: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD' |
5526 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44), |
5527 | // Label 366: @5276 |
5528 | GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(5287), // Rule ID 128 // |
5529 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled), |
5530 | // Combiner Rule #93: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD' |
5531 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46), |
5532 | // Label 367: @5287 |
5533 | GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(5298), // Rule ID 164 // |
5534 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled), |
5535 | // Combiner Rule #127: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD' |
5536 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74), |
5537 | // Label 368: @5298 |
5538 | GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(5309), // Rule ID 180 // |
5539 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled), |
5540 | // Combiner Rule #135: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD' |
5541 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82), |
5542 | // Label 369: @5309 |
5543 | GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(5320), // Rule ID 253 // |
5544 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5545 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD' |
5546 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5547 | // Label 370: @5320 |
5548 | GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(5343), // Rule ID 92 // |
5549 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled), |
5550 | // MIs[0] dst |
5551 | // No operand predicates |
5552 | // MIs[0] lhs |
5553 | // No operand predicates |
5554 | // MIs[0] Operand 2 |
5555 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
5556 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5557 | // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[7]] |
5558 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5559 | GIR_EraseRootFromParent_Done, |
5560 | // Label 371: @5343 |
5561 | GIM_Reject, |
5562 | // Label 83: @5344 |
5563 | GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(5355), // Rule ID 264 // |
5564 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5565 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SMIN' |
5566 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5567 | // Label 372: @5355 |
5568 | GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(5366), // Rule ID 286 // |
5569 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
5570 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN' |
5571 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
5572 | // Label 373: @5366 |
5573 | GIM_Reject, |
5574 | // Label 84: @5367 |
5575 | GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(5378), // Rule ID 265 // |
5576 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5577 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SMAX' |
5578 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5579 | // Label 374: @5378 |
5580 | GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(5389), // Rule ID 287 // |
5581 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
5582 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX' |
5583 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
5584 | // Label 375: @5389 |
5585 | GIM_Reject, |
5586 | // Label 85: @5390 |
5587 | GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(5401), // Rule ID 266 // |
5588 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5589 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_UMIN' |
5590 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5591 | // Label 376: @5401 |
5592 | GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(5412), // Rule ID 288 // |
5593 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
5594 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN' |
5595 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
5596 | // Label 377: @5412 |
5597 | GIM_Reject, |
5598 | // Label 86: @5413 |
5599 | GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(5424), // Rule ID 267 // |
5600 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled), |
5601 | // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_UMAX' |
5602 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114), |
5603 | // Label 378: @5424 |
5604 | GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(5435), // Rule ID 289 // |
5605 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled), |
5606 | // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX' |
5607 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119), |
5608 | // Label 379: @5435 |
5609 | GIM_Reject, |
5610 | // Label 87: @5436 |
5611 | GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(5447), // Rule ID 71 // |
5612 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled), |
5613 | // Combiner Rule #61: unary_undef_to_zero; wip_match_opcode 'G_ABS' |
5614 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23), |
5615 | // Label 380: @5447 |
5616 | GIM_Reject, |
5617 | // Label 88: @5448 |
5618 | GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(5459), // Rule ID 149 // |
5619 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled), |
5620 | // Combiner Rule #112: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR' |
5621 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64), |
5622 | // Label 381: @5459 |
5623 | GIM_Reject, |
5624 | // Label 89: @5460 |
5625 | GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(5471), // Rule ID 20 // |
5626 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled), |
5627 | // Combiner Rule #18: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT' |
5628 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4), |
5629 | // Label 382: @5471 |
5630 | GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(5482), // Rule ID 52 // |
5631 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled), |
5632 | // Combiner Rule #50: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT' |
5633 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14), |
5634 | // Label 383: @5482 |
5635 | GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(5493), // Rule ID 82 // |
5636 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled), |
5637 | // Combiner Rule #67: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT' |
5638 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30), |
5639 | // Label 384: @5493 |
5640 | GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(5532), // Rule ID 45 // |
5641 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled), |
5642 | // MIs[0] root |
5643 | // No operand predicates |
5644 | // MIs[0] src |
5645 | // No operand predicates |
5646 | // MIs[0] elt |
5647 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
5648 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT), |
5649 | // MIs[1] src |
5650 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1, |
5651 | // MIs[1] idx |
5652 | // No operand predicates |
5653 | // MIs[0] idx |
5654 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2, |
5655 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5656 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5657 | // Combiner Rule #43: insert_vector_element_extract_vector_element |
5658 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5659 | GIR_EraseRootFromParent_Done, |
5660 | // Label 385: @5532 |
5661 | GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(5565), // Rule ID 18 // |
5662 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled), |
5663 | // MIs[0] root |
5664 | // No operand predicates |
5665 | // MIs[0] src |
5666 | // No operand predicates |
5667 | // MIs[0] elt |
5668 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
5669 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF), |
5670 | // MIs[0] idx |
5671 | // No operand predicates |
5672 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0), |
5673 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5674 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5675 | // Combiner Rule #16: insert_vector_element_elt_undef |
5676 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
5677 | GIR_EraseRootFromParent_Done, |
5678 | // Label 386: @5565 |
5679 | GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(5589), // Rule ID 17 // |
5680 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled), |
5681 | // MIs[0] root |
5682 | // No operand predicates |
5683 | // MIs[0] src |
5684 | // No operand predicates |
5685 | // MIs[0] elt |
5686 | // No operand predicates |
5687 | // MIs[0] idx |
5688 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1] |
5689 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF), |
5690 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5691 | // Combiner Rule #15: insert_vector_element_idx_undef |
5692 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF), |
5693 | GIR_RootToRootCopy, /*OpIdx*/0, // root |
5694 | GIR_EraseRootFromParent_Done, |
5695 | // Label 387: @5589 |
5696 | GIM_Reject, |
5697 | // Label 90: @5590 |
5698 | GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(5601), // Rule ID 19 // |
5699 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled), |
5700 | // Combiner Rule #17: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT' |
5701 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3), |
5702 | // Label 388: @5601 |
5703 | GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(5612), // Rule ID 53 // |
5704 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled), |
5705 | // Combiner Rule #51: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT' |
5706 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15), |
5707 | // Label 389: @5612 |
5708 | GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(5623), // Rule ID 59 // |
5709 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled), |
5710 | // Combiner Rule #55: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT' |
5711 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19), |
5712 | // Label 390: @5623 |
5713 | GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(5634), // Rule ID 83 // |
5714 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled), |
5715 | // Combiner Rule #67: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT' |
5716 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30), |
5717 | // Label 391: @5634 |
5718 | GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(5658), // Rule ID 36 // |
5719 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled), |
5720 | // MIs[0] root |
5721 | // No operand predicates |
5722 | // MIs[0] src |
5723 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5724 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
5725 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/17, |
5726 | // MIs[1] x |
5727 | // No operand predicates |
5728 | // MIs[1] y |
5729 | // No operand predicates |
5730 | // MIs[1] z |
5731 | // No operand predicates |
5732 | // MIs[1] a |
5733 | // No operand predicates |
5734 | // MIs[1] b |
5735 | // No operand predicates |
5736 | // MIs[1] c |
5737 | // No operand predicates |
5738 | // MIs[1] d |
5739 | // No operand predicates |
5740 | // MIs[1] e |
5741 | // No operand predicates |
5742 | // MIs[1] f |
5743 | // No operand predicates |
5744 | // MIs[1] g |
5745 | // No operand predicates |
5746 | // MIs[1] h |
5747 | // No operand predicates |
5748 | // MIs[1] i |
5749 | // No operand predicates |
5750 | // MIs[1] j |
5751 | // No operand predicates |
5752 | // MIs[1] k |
5753 | // No operand predicates |
5754 | // MIs[1] l |
5755 | // No operand predicates |
5756 | // MIs[1] m |
5757 | // No operand predicates |
5758 | // MIs[0] idx |
5759 | // No operand predicates |
5760 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5761 | // Combiner Rule #34: extract_vector_element_build_vector16 |
5762 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
5763 | // Label 392: @5658 |
5764 | GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(5682), // Rule ID 35 // |
5765 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled), |
5766 | // MIs[0] root |
5767 | // No operand predicates |
5768 | // MIs[0] src |
5769 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5770 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
5771 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/16, |
5772 | // MIs[1] x |
5773 | // No operand predicates |
5774 | // MIs[1] y |
5775 | // No operand predicates |
5776 | // MIs[1] z |
5777 | // No operand predicates |
5778 | // MIs[1] a |
5779 | // No operand predicates |
5780 | // MIs[1] b |
5781 | // No operand predicates |
5782 | // MIs[1] c |
5783 | // No operand predicates |
5784 | // MIs[1] d |
5785 | // No operand predicates |
5786 | // MIs[1] e |
5787 | // No operand predicates |
5788 | // MIs[1] f |
5789 | // No operand predicates |
5790 | // MIs[1] g |
5791 | // No operand predicates |
5792 | // MIs[1] h |
5793 | // No operand predicates |
5794 | // MIs[1] i |
5795 | // No operand predicates |
5796 | // MIs[1] j |
5797 | // No operand predicates |
5798 | // MIs[1] k |
5799 | // No operand predicates |
5800 | // MIs[1] l |
5801 | // No operand predicates |
5802 | // MIs[0] idx |
5803 | // No operand predicates |
5804 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5805 | // Combiner Rule #33: extract_vector_element_build_vector15 |
5806 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
5807 | // Label 393: @5682 |
5808 | GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(5706), // Rule ID 34 // |
5809 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled), |
5810 | // MIs[0] root |
5811 | // No operand predicates |
5812 | // MIs[0] src |
5813 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5814 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
5815 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/15, |
5816 | // MIs[1] x |
5817 | // No operand predicates |
5818 | // MIs[1] y |
5819 | // No operand predicates |
5820 | // MIs[1] z |
5821 | // No operand predicates |
5822 | // MIs[1] a |
5823 | // No operand predicates |
5824 | // MIs[1] b |
5825 | // No operand predicates |
5826 | // MIs[1] c |
5827 | // No operand predicates |
5828 | // MIs[1] d |
5829 | // No operand predicates |
5830 | // MIs[1] e |
5831 | // No operand predicates |
5832 | // MIs[1] f |
5833 | // No operand predicates |
5834 | // MIs[1] g |
5835 | // No operand predicates |
5836 | // MIs[1] h |
5837 | // No operand predicates |
5838 | // MIs[1] i |
5839 | // No operand predicates |
5840 | // MIs[1] j |
5841 | // No operand predicates |
5842 | // MIs[1] k |
5843 | // No operand predicates |
5844 | // MIs[0] idx |
5845 | // No operand predicates |
5846 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5847 | // Combiner Rule #32: extract_vector_element_build_vector14 |
5848 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
5849 | // Label 394: @5706 |
5850 | GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(5730), // Rule ID 33 // |
5851 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled), |
5852 | // MIs[0] root |
5853 | // No operand predicates |
5854 | // MIs[0] src |
5855 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5856 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
5857 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/14, |
5858 | // MIs[1] x |
5859 | // No operand predicates |
5860 | // MIs[1] y |
5861 | // No operand predicates |
5862 | // MIs[1] z |
5863 | // No operand predicates |
5864 | // MIs[1] a |
5865 | // No operand predicates |
5866 | // MIs[1] b |
5867 | // No operand predicates |
5868 | // MIs[1] c |
5869 | // No operand predicates |
5870 | // MIs[1] d |
5871 | // No operand predicates |
5872 | // MIs[1] e |
5873 | // No operand predicates |
5874 | // MIs[1] f |
5875 | // No operand predicates |
5876 | // MIs[1] g |
5877 | // No operand predicates |
5878 | // MIs[1] h |
5879 | // No operand predicates |
5880 | // MIs[1] i |
5881 | // No operand predicates |
5882 | // MIs[1] j |
5883 | // No operand predicates |
5884 | // MIs[0] idx |
5885 | // No operand predicates |
5886 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5887 | // Combiner Rule #31: extract_vector_element_build_vector13 |
5888 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
5889 | // Label 395: @5730 |
5890 | GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(5754), // Rule ID 32 // |
5891 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled), |
5892 | // MIs[0] root |
5893 | // No operand predicates |
5894 | // MIs[0] src |
5895 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5896 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
5897 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/13, |
5898 | // MIs[1] x |
5899 | // No operand predicates |
5900 | // MIs[1] y |
5901 | // No operand predicates |
5902 | // MIs[1] z |
5903 | // No operand predicates |
5904 | // MIs[1] a |
5905 | // No operand predicates |
5906 | // MIs[1] b |
5907 | // No operand predicates |
5908 | // MIs[1] c |
5909 | // No operand predicates |
5910 | // MIs[1] d |
5911 | // No operand predicates |
5912 | // MIs[1] e |
5913 | // No operand predicates |
5914 | // MIs[1] f |
5915 | // No operand predicates |
5916 | // MIs[1] g |
5917 | // No operand predicates |
5918 | // MIs[1] h |
5919 | // No operand predicates |
5920 | // MIs[1] i |
5921 | // No operand predicates |
5922 | // MIs[0] idx |
5923 | // No operand predicates |
5924 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5925 | // Combiner Rule #30: extract_vector_element_build_vector12 |
5926 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
5927 | // Label 396: @5754 |
5928 | GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(5778), // Rule ID 31 // |
5929 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled), |
5930 | // MIs[0] root |
5931 | // No operand predicates |
5932 | // MIs[0] src |
5933 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5934 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
5935 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/12, |
5936 | // MIs[1] x |
5937 | // No operand predicates |
5938 | // MIs[1] y |
5939 | // No operand predicates |
5940 | // MIs[1] z |
5941 | // No operand predicates |
5942 | // MIs[1] a |
5943 | // No operand predicates |
5944 | // MIs[1] b |
5945 | // No operand predicates |
5946 | // MIs[1] c |
5947 | // No operand predicates |
5948 | // MIs[1] d |
5949 | // No operand predicates |
5950 | // MIs[1] e |
5951 | // No operand predicates |
5952 | // MIs[1] f |
5953 | // No operand predicates |
5954 | // MIs[1] g |
5955 | // No operand predicates |
5956 | // MIs[1] h |
5957 | // No operand predicates |
5958 | // MIs[0] idx |
5959 | // No operand predicates |
5960 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5961 | // Combiner Rule #29: extract_vector_element_build_vector11 |
5962 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
5963 | // Label 397: @5778 |
5964 | GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(5802), // Rule ID 30 // |
5965 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled), |
5966 | // MIs[0] root |
5967 | // No operand predicates |
5968 | // MIs[0] src |
5969 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
5970 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
5971 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/11, |
5972 | // MIs[1] x |
5973 | // No operand predicates |
5974 | // MIs[1] y |
5975 | // No operand predicates |
5976 | // MIs[1] z |
5977 | // No operand predicates |
5978 | // MIs[1] a |
5979 | // No operand predicates |
5980 | // MIs[1] b |
5981 | // No operand predicates |
5982 | // MIs[1] c |
5983 | // No operand predicates |
5984 | // MIs[1] d |
5985 | // No operand predicates |
5986 | // MIs[1] e |
5987 | // No operand predicates |
5988 | // MIs[1] f |
5989 | // No operand predicates |
5990 | // MIs[1] g |
5991 | // No operand predicates |
5992 | // MIs[0] idx |
5993 | // No operand predicates |
5994 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
5995 | // Combiner Rule #28: extract_vector_element_build_vector10 |
5996 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
5997 | // Label 398: @5802 |
5998 | GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(5826), // Rule ID 29 // |
5999 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
6000 | // MIs[0] root |
6001 | // No operand predicates |
6002 | // MIs[0] src |
6003 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6004 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
6005 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/10, |
6006 | // MIs[1] x |
6007 | // No operand predicates |
6008 | // MIs[1] y |
6009 | // No operand predicates |
6010 | // MIs[1] z |
6011 | // No operand predicates |
6012 | // MIs[1] a |
6013 | // No operand predicates |
6014 | // MIs[1] b |
6015 | // No operand predicates |
6016 | // MIs[1] c |
6017 | // No operand predicates |
6018 | // MIs[1] d |
6019 | // No operand predicates |
6020 | // MIs[1] e |
6021 | // No operand predicates |
6022 | // MIs[1] f |
6023 | // No operand predicates |
6024 | // MIs[0] idx |
6025 | // No operand predicates |
6026 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6027 | // Combiner Rule #27: extract_vector_element_build_vector9 |
6028 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
6029 | // Label 399: @5826 |
6030 | GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(5850), // Rule ID 28 // |
6031 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled), |
6032 | // MIs[0] root |
6033 | // No operand predicates |
6034 | // MIs[0] src |
6035 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6036 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
6037 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/9, |
6038 | // MIs[1] x |
6039 | // No operand predicates |
6040 | // MIs[1] y |
6041 | // No operand predicates |
6042 | // MIs[1] z |
6043 | // No operand predicates |
6044 | // MIs[1] a |
6045 | // No operand predicates |
6046 | // MIs[1] b |
6047 | // No operand predicates |
6048 | // MIs[1] c |
6049 | // No operand predicates |
6050 | // MIs[1] d |
6051 | // No operand predicates |
6052 | // MIs[1] e |
6053 | // No operand predicates |
6054 | // MIs[0] idx |
6055 | // No operand predicates |
6056 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6057 | // Combiner Rule #26: extract_vector_element_build_vector8 |
6058 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
6059 | // Label 400: @5850 |
6060 | GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(5874), // Rule ID 43 // |
6061 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled), |
6062 | // MIs[0] root |
6063 | // No operand predicates |
6064 | // MIs[0] src |
6065 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6066 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC), |
6067 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/9, |
6068 | // MIs[1] x |
6069 | // No operand predicates |
6070 | // MIs[1] y |
6071 | // No operand predicates |
6072 | // MIs[1] z |
6073 | // No operand predicates |
6074 | // MIs[1] a |
6075 | // No operand predicates |
6076 | // MIs[1] b |
6077 | // No operand predicates |
6078 | // MIs[1] c |
6079 | // No operand predicates |
6080 | // MIs[1] d |
6081 | // No operand predicates |
6082 | // MIs[1] e |
6083 | // No operand predicates |
6084 | // MIs[0] idx |
6085 | // No operand predicates |
6086 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6087 | // Combiner Rule #41: extract_vector_element_build_vector_trunc8 |
6088 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7), |
6089 | // Label 401: @5874 |
6090 | GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(5898), // Rule ID 27 // |
6091 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled), |
6092 | // MIs[0] root |
6093 | // No operand predicates |
6094 | // MIs[0] src |
6095 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6096 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
6097 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/8, |
6098 | // MIs[1] x |
6099 | // No operand predicates |
6100 | // MIs[1] y |
6101 | // No operand predicates |
6102 | // MIs[1] z |
6103 | // No operand predicates |
6104 | // MIs[1] a |
6105 | // No operand predicates |
6106 | // MIs[1] b |
6107 | // No operand predicates |
6108 | // MIs[1] c |
6109 | // No operand predicates |
6110 | // MIs[1] d |
6111 | // No operand predicates |
6112 | // MIs[0] idx |
6113 | // No operand predicates |
6114 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6115 | // Combiner Rule #25: extract_vector_element_build_vector7 |
6116 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
6117 | // Label 402: @5898 |
6118 | GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(5922), // Rule ID 42 // |
6119 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled), |
6120 | // MIs[0] root |
6121 | // No operand predicates |
6122 | // MIs[0] src |
6123 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6124 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC), |
6125 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/8, |
6126 | // MIs[1] x |
6127 | // No operand predicates |
6128 | // MIs[1] y |
6129 | // No operand predicates |
6130 | // MIs[1] z |
6131 | // No operand predicates |
6132 | // MIs[1] a |
6133 | // No operand predicates |
6134 | // MIs[1] b |
6135 | // No operand predicates |
6136 | // MIs[1] c |
6137 | // No operand predicates |
6138 | // MIs[1] d |
6139 | // No operand predicates |
6140 | // MIs[0] idx |
6141 | // No operand predicates |
6142 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6143 | // Combiner Rule #40: extract_vector_element_build_vector_trunc7 |
6144 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7), |
6145 | // Label 403: @5922 |
6146 | GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(5946), // Rule ID 41 // |
6147 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled), |
6148 | // MIs[0] root |
6149 | // No operand predicates |
6150 | // MIs[0] src |
6151 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6152 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC), |
6153 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/7, |
6154 | // MIs[1] x |
6155 | // No operand predicates |
6156 | // MIs[1] y |
6157 | // No operand predicates |
6158 | // MIs[1] z |
6159 | // No operand predicates |
6160 | // MIs[1] a |
6161 | // No operand predicates |
6162 | // MIs[1] b |
6163 | // No operand predicates |
6164 | // MIs[1] c |
6165 | // No operand predicates |
6166 | // MIs[0] idx |
6167 | // No operand predicates |
6168 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6169 | // Combiner Rule #39: extract_vector_element_build_vector_trunc6 |
6170 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7), |
6171 | // Label 404: @5946 |
6172 | GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(5970), // Rule ID 26 // |
6173 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
6174 | // MIs[0] root |
6175 | // No operand predicates |
6176 | // MIs[0] src |
6177 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6178 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
6179 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/6, |
6180 | // MIs[1] x |
6181 | // No operand predicates |
6182 | // MIs[1] y |
6183 | // No operand predicates |
6184 | // MIs[1] z |
6185 | // No operand predicates |
6186 | // MIs[1] a |
6187 | // No operand predicates |
6188 | // MIs[1] b |
6189 | // No operand predicates |
6190 | // MIs[0] idx |
6191 | // No operand predicates |
6192 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6193 | // Combiner Rule #24: extract_vector_element_build_vector5 |
6194 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
6195 | // Label 405: @5970 |
6196 | GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(5994), // Rule ID 40 // |
6197 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled), |
6198 | // MIs[0] root |
6199 | // No operand predicates |
6200 | // MIs[0] src |
6201 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6202 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC), |
6203 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/6, |
6204 | // MIs[1] x |
6205 | // No operand predicates |
6206 | // MIs[1] y |
6207 | // No operand predicates |
6208 | // MIs[1] z |
6209 | // No operand predicates |
6210 | // MIs[1] a |
6211 | // No operand predicates |
6212 | // MIs[1] b |
6213 | // No operand predicates |
6214 | // MIs[0] idx |
6215 | // No operand predicates |
6216 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6217 | // Combiner Rule #38: extract_vector_element_build_vector_trunc5 |
6218 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7), |
6219 | // Label 406: @5994 |
6220 | GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(6018), // Rule ID 25 // |
6221 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled), |
6222 | // MIs[0] root |
6223 | // No operand predicates |
6224 | // MIs[0] src |
6225 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6226 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
6227 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/5, |
6228 | // MIs[1] x |
6229 | // No operand predicates |
6230 | // MIs[1] y |
6231 | // No operand predicates |
6232 | // MIs[1] z |
6233 | // No operand predicates |
6234 | // MIs[1] a |
6235 | // No operand predicates |
6236 | // MIs[0] idx |
6237 | // No operand predicates |
6238 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6239 | // Combiner Rule #23: extract_vector_element_build_vector4 |
6240 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
6241 | // Label 407: @6018 |
6242 | GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(6042), // Rule ID 39 // |
6243 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled), |
6244 | // MIs[0] root |
6245 | // No operand predicates |
6246 | // MIs[0] src |
6247 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6248 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC), |
6249 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/5, |
6250 | // MIs[1] x |
6251 | // No operand predicates |
6252 | // MIs[1] y |
6253 | // No operand predicates |
6254 | // MIs[1] z |
6255 | // No operand predicates |
6256 | // MIs[1] a |
6257 | // No operand predicates |
6258 | // MIs[0] idx |
6259 | // No operand predicates |
6260 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6261 | // Combiner Rule #37: extract_vector_element_build_vector_trunc4 |
6262 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7), |
6263 | // Label 408: @6042 |
6264 | GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(6066), // Rule ID 24 // |
6265 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled), |
6266 | // MIs[0] root |
6267 | // No operand predicates |
6268 | // MIs[0] src |
6269 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6270 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
6271 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/4, |
6272 | // MIs[1] x |
6273 | // No operand predicates |
6274 | // MIs[1] y |
6275 | // No operand predicates |
6276 | // MIs[1] z |
6277 | // No operand predicates |
6278 | // MIs[0] idx |
6279 | // No operand predicates |
6280 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6281 | // Combiner Rule #22: extract_vector_element_build_vector3 |
6282 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
6283 | // Label 409: @6066 |
6284 | GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(6090), // Rule ID 38 // |
6285 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled), |
6286 | // MIs[0] root |
6287 | // No operand predicates |
6288 | // MIs[0] src |
6289 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6290 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC), |
6291 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/4, |
6292 | // MIs[1] x |
6293 | // No operand predicates |
6294 | // MIs[1] y |
6295 | // No operand predicates |
6296 | // MIs[1] z |
6297 | // No operand predicates |
6298 | // MIs[0] idx |
6299 | // No operand predicates |
6300 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6301 | // Combiner Rule #36: extract_vector_element_build_vector_trunc3 |
6302 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7), |
6303 | // Label 410: @6090 |
6304 | GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(6124), // Rule ID 21 // |
6305 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled), |
6306 | // MIs[0] root |
6307 | // No operand predicates |
6308 | // MIs[0] src |
6309 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6310 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT), |
6311 | // MIs[1] x |
6312 | // No operand predicates |
6313 | // MIs[1] value |
6314 | // No operand predicates |
6315 | // MIs[1] idx |
6316 | // No operand predicates |
6317 | // MIs[0] idx |
6318 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3, |
6319 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2, |
6320 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6321 | // Combiner Rule #19: extract_vector_element_not_const |
6322 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2, |
6323 | GIR_EraseRootFromParent_Done, |
6324 | // Label 411: @6124 |
6325 | GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(6145), // Rule ID 22 // |
6326 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled), |
6327 | // MIs[0] root |
6328 | // No operand predicates |
6329 | // MIs[0] src |
6330 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6331 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT), |
6332 | // MIs[1] x |
6333 | // No operand predicates |
6334 | // MIs[1] value |
6335 | // No operand predicates |
6336 | // MIs[1] idx2 |
6337 | // No operand predicates |
6338 | // MIs[0] idx1 |
6339 | // No operand predicates |
6340 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6341 | // Combiner Rule #20: extract_vector_element_different_indices |
6342 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5), |
6343 | // Label 412: @6145 |
6344 | GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(6166), // Rule ID 44 // |
6345 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled), |
6346 | // MIs[0] root |
6347 | // No operand predicates |
6348 | // MIs[0] src |
6349 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6350 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR), |
6351 | // MIs[1] src1 |
6352 | // No operand predicates |
6353 | // MIs[1] src2 |
6354 | // No operand predicates |
6355 | // MIs[1] mask |
6356 | // No operand predicates |
6357 | // MIs[0] idx |
6358 | // No operand predicates |
6359 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6360 | // Combiner Rule #42: extract_vector_element_shuffle_vector |
6361 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8), |
6362 | // Label 413: @6166 |
6363 | GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(6190), // Rule ID 23 // |
6364 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled), |
6365 | // MIs[0] root |
6366 | // No operand predicates |
6367 | // MIs[0] src |
6368 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6369 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR), |
6370 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/3, |
6371 | // MIs[1] x |
6372 | // No operand predicates |
6373 | // MIs[1] y |
6374 | // No operand predicates |
6375 | // MIs[0] idx |
6376 | // No operand predicates |
6377 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6378 | // Combiner Rule #21: extract_vector_element_build_vector2 |
6379 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6), |
6380 | // Label 414: @6190 |
6381 | GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(6214), // Rule ID 37 // |
6382 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled), |
6383 | // MIs[0] root |
6384 | // No operand predicates |
6385 | // MIs[0] src |
6386 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6387 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC), |
6388 | GIM_CheckNumOperands, /*MI*/1, /*Expected*/3, |
6389 | // MIs[1] x |
6390 | // No operand predicates |
6391 | // MIs[1] y |
6392 | // No operand predicates |
6393 | // MIs[0] idx |
6394 | // No operand predicates |
6395 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6396 | // Combiner Rule #35: extract_vector_element_build_vector_trunc2 |
6397 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7), |
6398 | // Label 415: @6214 |
6399 | GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(6238), // Rule ID 15 // |
6400 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled), |
6401 | // MIs[0] root |
6402 | // No operand predicates |
6403 | // MIs[0] vector |
6404 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6405 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF), |
6406 | // MIs[0] idx |
6407 | // No operand predicates |
6408 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6409 | // Combiner Rule #13: match_extract_of_element_undef_vector |
6410 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF), |
6411 | GIR_RootToRootCopy, /*OpIdx*/0, // root |
6412 | GIR_EraseRootFromParent_Done, |
6413 | // Label 416: @6238 |
6414 | GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(6262), // Rule ID 16 // |
6415 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled), |
6416 | // MIs[0] root |
6417 | // No operand predicates |
6418 | // MIs[0] vector |
6419 | // No operand predicates |
6420 | // MIs[0] idx |
6421 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
6422 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF), |
6423 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6424 | // Combiner Rule #14: match_extract_of_element_undef_index |
6425 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF), |
6426 | GIR_RootToRootCopy, /*OpIdx*/0, // root |
6427 | GIR_EraseRootFromParent_Done, |
6428 | // Label 417: @6262 |
6429 | GIM_Reject, |
6430 | // Label 91: @6263 |
6431 | GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(6274), // Rule ID 78 // |
6432 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled), |
6433 | // Combiner Rule #63: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR' |
6434 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26), |
6435 | // Label 418: @6274 |
6436 | GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(6285), // Rule ID 79 // |
6437 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled), |
6438 | // Combiner Rule #64: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR' |
6439 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27), |
6440 | // Label 419: @6285 |
6441 | GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(6296), // Rule ID 320 // |
6442 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled), |
6443 | // Combiner Rule #188: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR' |
6444 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128), |
6445 | // Label 420: @6296 |
6446 | GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(6307), // Rule ID 324 // |
6447 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled), |
6448 | // Combiner Rule #192: shuffle_to_extract; wip_match_opcode 'G_SHUFFLE_VECTOR' |
6449 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132), |
6450 | // Label 421: @6307 |
6451 | GIM_Reject, |
6452 | // Label 92: @6308 |
6453 | GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(6352), // Rule ID 204 // |
6454 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled), |
6455 | // MIs[0] d |
6456 | // No operand predicates |
6457 | // MIs[0] src |
6458 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6459 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR), |
6460 | // MIs[1] rev |
6461 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2] |
6462 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE), |
6463 | // MIs[2] val |
6464 | // No operand predicates |
6465 | // MIs[1] amt |
6466 | // No operand predicates |
6467 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6), |
6468 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
6469 | // Combiner Rule #146: bitreverse_lshr |
6470 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL), |
6471 | GIR_RootToRootCopy, /*OpIdx*/0, // d |
6472 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val |
6473 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt |
6474 | GIR_EraseRootFromParent_Done, |
6475 | // Label 422: @6352 |
6476 | GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(6396), // Rule ID 203 // |
6477 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled), |
6478 | // MIs[0] d |
6479 | // No operand predicates |
6480 | // MIs[0] src |
6481 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6482 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL), |
6483 | // MIs[1] rev |
6484 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2] |
6485 | GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE), |
6486 | // MIs[2] val |
6487 | // No operand predicates |
6488 | // MIs[1] amt |
6489 | // No operand predicates |
6490 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5), |
6491 | GIM_CheckIsSafeToFold, /*NumInsns*/2, |
6492 | // Combiner Rule #145: bitreverse_shl |
6493 | GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR), |
6494 | GIR_RootToRootCopy, /*OpIdx*/0, // d |
6495 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val |
6496 | GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt |
6497 | GIR_EraseRootFromParent_Done, |
6498 | // Label 423: @6396 |
6499 | GIM_Reject, |
6500 | // Label 93: @6397 |
6501 | GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(6418), // Rule ID 159 // |
6502 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled), |
6503 | // MIs[0] dst |
6504 | // No operand predicates |
6505 | // MIs[0] src0 |
6506 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
6507 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT), |
6508 | // MIs[1] cst |
6509 | // No operand predicates |
6510 | GIM_CheckIsSafeToFold, /*NumInsns*/1, |
6511 | // Combiner Rule #122: constant_fold_fsqrt |
6512 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72), |
6513 | // Label 424: @6418 |
6514 | GIM_Reject, |
6515 | // Label 94: @6419 |
6516 | GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(6433), // Rule ID 325 // |
6517 | GIM_CheckFeatures, GIMT_Encode2(GIFBS_HasDotProd), |
6518 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled), |
6519 | // Combiner Rule #193: ext_addv_to_udot_addv; wip_match_opcode 'G_VECREDUCE_ADD' |
6520 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133), |
6521 | // Label 425: @6433 |
6522 | GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(6444), // Rule ID 326 // |
6523 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled), |
6524 | // Combiner Rule #194: ext_uaddv_to_uaddlv; wip_match_opcode 'G_VECREDUCE_ADD' |
6525 | GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134), |
6526 | // Label 426: @6444 |
6527 | GIM_Reject, |
6528 | // Label 95: @6445 |
6529 | GIM_Reject, |
6530 | }; // Size: 6446 bytes |
6531 | return MatchTable0; |
6532 | } |
6533 | #undef GIMT_Encode2 |
6534 | #undef GIMT_Encode4 |
6535 | #undef GIMT_Encode8 |
6536 | |
6537 | #endif // ifdef GET_GICOMBINER_IMPL |
6538 | |
6539 | #ifdef GET_GICOMBINER_CONSTRUCTOR_INITS |
6540 | AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)), |
6541 | AvailableFunctionFeatures() |
6542 | #endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS |
6543 | #ifdef GET_GICOMBINER_CONSTRUCTOR_INITS |
6544 | , State(0), |
6545 | ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers) |
6546 | #endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS |
6547 | |
6548 | |