/src/build/lib/Target/AArch64/AArch64GenPostLegalizeGICombiner.inc
Line | Count | Source (jump to first uncovered line) |
1 | | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
2 | | |* *| |
3 | | |* AArch64PostLegalizerCombinerImpl 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 AArch64PostLegalizerCombinerImplRuleConfig { |
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 | 0 | static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) { |
27 | 0 | uint64_t I; |
28 | | // getAtInteger(...) returns false on success |
29 | 0 | bool Parsed = !RuleIdentifier.getAsInteger(0, I); |
30 | 0 | if (Parsed) |
31 | 0 | return I; |
32 | | |
33 | 0 | #ifndef NDEBUG |
34 | 0 | switch (RuleIdentifier.size()) { |
35 | 0 | default: break; |
36 | 0 | case 9: // 3 strings to match. |
37 | 0 | switch (RuleIdentifier[0]) { |
38 | 0 | default: break; |
39 | 0 | case 'c': // 1 string to match. |
40 | 0 | if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0) |
41 | 0 | break; |
42 | 0 | return 0; // "copy_prop" |
43 | 0 | case 'm': // 1 string to match. |
44 | 0 | if (memcmp(RuleIdentifier.data()+1, "ul_const", 8) != 0) |
45 | 0 | break; |
46 | 0 | return 11; // "mul_const" |
47 | 0 | case 'o': // 1 string to match. |
48 | 0 | if (memcmp(RuleIdentifier.data()+1, "r_to_bsp", 8) != 0) |
49 | 0 | break; |
50 | 0 | return 60; // "or_to_bsp" |
51 | 0 | } |
52 | 0 | break; |
53 | 0 | case 10: // 2 strings to match. |
54 | 0 | switch (RuleIdentifier[0]) { |
55 | 0 | default: break; |
56 | 0 | case 'i': // 1 string to match. |
57 | 0 | if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0) |
58 | 0 | break; |
59 | 0 | return 32; // "i2p_to_p2i" |
60 | 0 | case 'p': // 1 string to match. |
61 | 0 | if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0) |
62 | 0 | break; |
63 | 0 | return 31; // "p2i_to_i2p" |
64 | 0 | } |
65 | 0 | break; |
66 | 0 | case 11: // 1 string to match. |
67 | 0 | if (memcmp(RuleIdentifier.data()+0, "add_sub_reg", 11) != 0) |
68 | 0 | break; |
69 | 0 | return 37; // "add_sub_reg" |
70 | 0 | case 12: // 1 string to match. |
71 | 0 | if (memcmp(RuleIdentifier.data()+0, "redundant_or", 12) != 0) |
72 | 0 | break; |
73 | 0 | return 10; // "redundant_or" |
74 | 0 | case 13: // 5 strings to match. |
75 | 0 | switch (RuleIdentifier[0]) { |
76 | 0 | default: break; |
77 | 0 | case 'l': // 1 string to match. |
78 | 0 | if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0) |
79 | 0 | break; |
80 | 0 | return 2; // "load_and_mask" |
81 | 0 | case 'm': // 2 strings to match. |
82 | 0 | switch (RuleIdentifier[1]) { |
83 | 0 | default: break; |
84 | 0 | case 'a': // 1 string to match. |
85 | 0 | if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0) |
86 | 0 | break; |
87 | 0 | return 22; // "match_selects" |
88 | 0 | case 'e': // 1 string to match. |
89 | 0 | if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0) |
90 | 0 | break; |
91 | 0 | return 19; // "merge_unmerge" |
92 | 0 | } |
93 | 0 | break; |
94 | 0 | case 'r': // 1 string to match. |
95 | 0 | if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0) |
96 | 0 | break; |
97 | 0 | return 7; // "redundant_and" |
98 | 0 | case 'u': // 1 string to match. |
99 | 0 | if (memcmp(RuleIdentifier.data()+1, "nmerge_undef", 12) != 0) |
100 | 0 | break; |
101 | 0 | return 57; // "unmerge_undef" |
102 | 0 | } |
103 | 0 | break; |
104 | 0 | case 14: // 2 strings to match. |
105 | 0 | switch (RuleIdentifier[0]) { |
106 | 0 | default: break; |
107 | 0 | case 'b': // 1 string to match. |
108 | 0 | if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0) |
109 | 0 | break; |
110 | 0 | return 28; // "binop_same_val" |
111 | 0 | case 'f': // 1 string to match. |
112 | 0 | if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0) |
113 | 0 | break; |
114 | 0 | return 34; // "fneg_fneg_fold" |
115 | 0 | } |
116 | 0 | break; |
117 | 0 | case 15: // 3 strings to match. |
118 | 0 | switch (RuleIdentifier[0]) { |
119 | 0 | default: break; |
120 | 0 | case 'e': // 1 string to match. |
121 | 0 | if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0) |
122 | 0 | break; |
123 | 0 | return 1; // "extending_loads" |
124 | 0 | case 'o': // 1 string to match. |
125 | 0 | if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0) |
126 | 0 | break; |
127 | 0 | return 45; // "overlapping_and" |
128 | 0 | case 's': // 1 string to match. |
129 | 0 | if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0) |
130 | 0 | break; |
131 | 0 | return 26; // "select_same_val" |
132 | 0 | } |
133 | 0 | break; |
134 | 0 | case 16: // 3 strings to match. |
135 | 0 | switch (RuleIdentifier[0]) { |
136 | 0 | default: break; |
137 | 0 | case 's': // 2 strings to match. |
138 | 0 | if (memcmp(RuleIdentifier.data()+1, "elect_", 6) != 0) |
139 | 0 | break; |
140 | 0 | switch (RuleIdentifier[7]) { |
141 | 0 | default: break; |
142 | 0 | case 't': // 1 string to match. |
143 | 0 | if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0) |
144 | 0 | break; |
145 | 0 | return 59; // "select_to_minmax" |
146 | 0 | case 'u': // 1 string to match. |
147 | 0 | if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0) |
148 | 0 | break; |
149 | 0 | return 20; // "select_undef_cmp" |
150 | 0 | } |
151 | 0 | break; |
152 | 0 | case 'u': // 1 string to match. |
153 | 0 | if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0) |
154 | 0 | break; |
155 | 0 | return 47; // "undef_to_fp_zero" |
156 | 0 | } |
157 | 0 | break; |
158 | 0 | case 17: // 3 strings to match. |
159 | 0 | switch (RuleIdentifier[0]) { |
160 | 0 | default: break; |
161 | 0 | case 'a': // 1 string to match. |
162 | 0 | if (memcmp(RuleIdentifier.data()+1, "nyext_trunc_fold", 16) != 0) |
163 | 0 | break; |
164 | 0 | return 33; // "anyext_trunc_fold" |
165 | 0 | case 'e': // 1 string to match. |
166 | 0 | if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0) |
167 | 0 | break; |
168 | 0 | return 56; // "erase_undef_store" |
169 | 0 | case 'u': // 1 string to match. |
170 | 0 | if (memcmp(RuleIdentifier.data()+1, "ndef_to_int_zero", 16) != 0) |
171 | 0 | break; |
172 | 0 | return 48; // "undef_to_int_zero" |
173 | 0 | } |
174 | 0 | break; |
175 | 0 | case 18: // 3 strings to match. |
176 | 0 | switch (RuleIdentifier[0]) { |
177 | 0 | default: break; |
178 | 0 | case 'b': // 1 string to match. |
179 | 0 | if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0) |
180 | 0 | break; |
181 | 0 | return 29; // "binop_left_to_zero" |
182 | 0 | case 'f': // 2 strings to match. |
183 | 0 | switch (RuleIdentifier[1]) { |
184 | 0 | default: break; |
185 | 0 | case 'o': // 1 string to match. |
186 | 0 | if (memcmp(RuleIdentifier.data()+2, "ld_merge_to_zext", 16) != 0) |
187 | 0 | break; |
188 | 0 | return 23; // "fold_merge_to_zext" |
189 | 0 | case 'p': // 1 string to match. |
190 | 0 | if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0) |
191 | 0 | break; |
192 | 0 | return 42; // "fptrunc_fpext_fold" |
193 | 0 | } |
194 | 0 | break; |
195 | 0 | } |
196 | 0 | break; |
197 | 0 | case 19: // 8 strings to match. |
198 | 0 | switch (RuleIdentifier[0]) { |
199 | 0 | default: break; |
200 | 0 | case 'b': // 1 string to match. |
201 | 0 | if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0) |
202 | 0 | break; |
203 | 0 | return 30; // "binop_right_to_zero" |
204 | 0 | case 'c': // 1 string to match. |
205 | 0 | if (memcmp(RuleIdentifier.data()+1, "onstant_fold_binop", 18) != 0) |
206 | 0 | break; |
207 | 0 | return 24; // "constant_fold_binop" |
208 | 0 | case 'p': // 1 string to match. |
209 | 0 | if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0) |
210 | 0 | break; |
211 | 0 | return 44; // "ptr_add_immed_chain" |
212 | 0 | case 'r': // 2 strings to match. |
213 | 0 | switch (RuleIdentifier[1]) { |
214 | 0 | default: break; |
215 | 0 | case 'i': // 1 string to match. |
216 | 0 | if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0) |
217 | 0 | break; |
218 | 0 | return 27; // "right_identity_zero" |
219 | 0 | case 'o': // 1 string to match. |
220 | 0 | if (memcmp(RuleIdentifier.data()+2, "tate_out_of_range", 17) != 0) |
221 | 0 | break; |
222 | 0 | return 17; // "rotate_out_of_range" |
223 | 0 | } |
224 | 0 | break; |
225 | 0 | case 's': // 2 strings to match. |
226 | 0 | if (RuleIdentifier[1] != 'e') |
227 | 0 | break; |
228 | 0 | switch (RuleIdentifier[2]) { |
229 | 0 | default: break; |
230 | 0 | case 'l': // 1 string to match. |
231 | 0 | if (memcmp(RuleIdentifier.data()+3, "ect_constant_cmp", 16) != 0) |
232 | 0 | break; |
233 | 0 | return 21; // "select_constant_cmp" |
234 | 0 | case 'x': // 1 string to match. |
235 | 0 | if (memcmp(RuleIdentifier.data()+3, "t_trunc_sextload", 16) != 0) |
236 | 0 | break; |
237 | 0 | return 4; // "sext_trunc_sextload" |
238 | 0 | } |
239 | 0 | break; |
240 | 0 | case 'u': // 1 string to match. |
241 | 0 | if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0) |
242 | 0 | break; |
243 | 0 | return 52; // "unary_undef_to_zero" |
244 | 0 | } |
245 | 0 | break; |
246 | 0 | case 20: // 3 strings to match. |
247 | 0 | switch (RuleIdentifier[0]) { |
248 | 0 | default: break; |
249 | 0 | case 'b': // 1 string to match. |
250 | 0 | if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0) |
251 | 0 | break; |
252 | 0 | return 41; // "bitcast_bitcast_fold" |
253 | 0 | case 'r': // 1 string to match. |
254 | 0 | if (memcmp(RuleIdentifier.data()+1, "edundant_sext_inreg", 19) != 0) |
255 | 0 | break; |
256 | 0 | return 12; // "redundant_sext_inreg" |
257 | 0 | case 's': // 1 string to match. |
258 | 0 | if (memcmp(RuleIdentifier.data()+1, "plit_store_zero_128", 19) != 0) |
259 | 0 | break; |
260 | 0 | return 46; // "split_store_zero_128" |
261 | 0 | } |
262 | 0 | break; |
263 | 0 | case 21: // 3 strings to match. |
264 | 0 | switch (RuleIdentifier[0]) { |
265 | 0 | default: break; |
266 | 0 | case 'm': // 1 string to match. |
267 | 0 | if (memcmp(RuleIdentifier.data()+1, "utate_anyext_to_zext", 20) != 0) |
268 | 0 | break; |
269 | 0 | return 5; // "mutate_anyext_to_zext" |
270 | 0 | case 'r': // 1 string to match. |
271 | 0 | if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0) |
272 | 0 | break; |
273 | 0 | return 36; // "right_identity_one_fp" |
274 | 0 | case 'u': // 1 string to match. |
275 | 0 | if (memcmp(RuleIdentifier.data()+1, "ndef_to_negative_one", 20) != 0) |
276 | 0 | break; |
277 | 0 | return 49; // "undef_to_negative_one" |
278 | 0 | } |
279 | 0 | break; |
280 | 0 | case 22: // 4 strings to match. |
281 | 0 | switch (RuleIdentifier[0]) { |
282 | 0 | default: break; |
283 | 0 | case 'c': // 1 string to match. |
284 | 0 | if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fp_binop", 21) != 0) |
285 | 0 | break; |
286 | 0 | return 25; // "constant_fold_fp_binop" |
287 | 0 | case 'p': // 1 string to match. |
288 | 0 | if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0) |
289 | 0 | break; |
290 | 0 | return 53; // "propagate_undef_any_op" |
291 | 0 | case 'r': // 1 string to match. |
292 | 0 | if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0) |
293 | 0 | break; |
294 | 0 | return 35; // "right_identity_one_int" |
295 | 0 | case 't': // 1 string to match. |
296 | 0 | if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0) |
297 | 0 | break; |
298 | 0 | return 39; // "trunc_buildvector_fold" |
299 | 0 | } |
300 | 0 | break; |
301 | 0 | case 23: // 1 string to match. |
302 | 0 | if (memcmp(RuleIdentifier.data()+0, "propagate_undef_all_ops", 23) != 0) |
303 | 0 | break; |
304 | 0 | return 54; // "propagate_undef_all_ops" |
305 | 0 | case 24: // 2 strings to match. |
306 | 0 | switch (RuleIdentifier[0]) { |
307 | 0 | default: break; |
308 | 0 | case 'b': // 1 string to match. |
309 | 0 | if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0) |
310 | 0 | break; |
311 | 0 | return 50; // "binop_left_undef_to_zero" |
312 | 0 | case 'x': // 1 string to match. |
313 | 0 | if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0) |
314 | 0 | break; |
315 | 0 | return 8; // "xor_of_and_with_same_reg" |
316 | 0 | } |
317 | 0 | break; |
318 | 0 | case 25: // 3 strings to match. |
319 | 0 | if (RuleIdentifier[0] != 'b') |
320 | 0 | break; |
321 | 0 | switch (RuleIdentifier[1]) { |
322 | 0 | default: break; |
323 | 0 | case 'i': // 2 strings to match. |
324 | 0 | if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0) |
325 | 0 | break; |
326 | 0 | switch (RuleIdentifier[22]) { |
327 | 0 | default: break; |
328 | 0 | case 'a': // 1 string to match. |
329 | 0 | if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0) |
330 | 0 | break; |
331 | 0 | return 14; // "bitfield_extract_from_and" |
332 | 0 | case 's': // 1 string to match. |
333 | 0 | if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0) |
334 | 0 | break; |
335 | 0 | return 15; // "bitfield_extract_from_shr" |
336 | 0 | } |
337 | 0 | break; |
338 | 0 | case 'u': // 1 string to match. |
339 | 0 | if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0) |
340 | 0 | break; |
341 | 0 | return 38; // "buildvector_identity_fold" |
342 | 0 | } |
343 | 0 | break; |
344 | 0 | case 26: // 4 strings to match. |
345 | 0 | switch (RuleIdentifier[0]) { |
346 | 0 | default: break; |
347 | 0 | case 'b': // 1 string to match. |
348 | 0 | if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0) |
349 | 0 | break; |
350 | 0 | return 51; // "binop_right_undef_to_undef" |
351 | 0 | case 'c': // 1 string to match. |
352 | 0 | if (memcmp(RuleIdentifier.data()+1, "ombine_indexed_load_store", 25) != 0) |
353 | 0 | break; |
354 | 0 | return 3; // "combine_indexed_load_store" |
355 | 0 | case 'e': // 1 string to match. |
356 | 0 | if (memcmp(RuleIdentifier.data()+1, "xtractvecelt_pairwise_add", 25) != 0) |
357 | 0 | break; |
358 | 0 | return 9; // "extractvecelt_pairwise_add" |
359 | 0 | case 'r': // 1 string to match. |
360 | 0 | if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0) |
361 | 0 | break; |
362 | 0 | return 43; // "right_identity_neg_zero_fp" |
363 | 0 | } |
364 | 0 | break; |
365 | 0 | case 27: // 1 string to match. |
366 | 0 | if (memcmp(RuleIdentifier.data()+0, "trunc_lshr_buildvector_fold", 27) != 0) |
367 | 0 | break; |
368 | 0 | return 40; // "trunc_lshr_buildvector_fold" |
369 | 0 | case 28: // 1 string to match. |
370 | 0 | if (memcmp(RuleIdentifier.data()+0, "propagate_undef_shuffle_mask", 28) != 0) |
371 | 0 | break; |
372 | 0 | return 55; // "propagate_undef_shuffle_mask" |
373 | 0 | case 29: // 2 strings to match. |
374 | 0 | switch (RuleIdentifier[0]) { |
375 | 0 | default: break; |
376 | 0 | case 'b': // 1 string to match. |
377 | 0 | if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0) |
378 | 0 | break; |
379 | 0 | return 16; // "bitfield_extract_from_shr_and" |
380 | 0 | case 'i': // 1 string to match. |
381 | 0 | if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0) |
382 | 0 | break; |
383 | 0 | return 18; // "icmp_to_true_false_known_bits" |
384 | 0 | } |
385 | 0 | break; |
386 | 0 | case 32: // 1 string to match. |
387 | 0 | if (memcmp(RuleIdentifier.data()+0, "bitfield_extract_from_sext_inreg", 32) != 0) |
388 | 0 | break; |
389 | 0 | return 13; // "bitfield_extract_from_sext_inreg" |
390 | 0 | case 36: // 1 string to match. |
391 | 0 | if (memcmp(RuleIdentifier.data()+0, "insert_extract_vec_elt_out_of_bounds", 36) != 0) |
392 | 0 | break; |
393 | 0 | return 58; // "insert_extract_vec_elt_out_of_bounds" |
394 | 0 | case 37: // 1 string to match. |
395 | 0 | if (memcmp(RuleIdentifier.data()+0, "hoist_logic_op_with_same_opcode_hands", 37) != 0) |
396 | 0 | break; |
397 | 0 | return 6; // "hoist_logic_op_with_same_opcode_hands" |
398 | 0 | } |
399 | 0 | #endif // ifndef NDEBUG |
400 | | |
401 | 0 | return std::nullopt; |
402 | 0 | } |
403 | 0 | static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) { |
404 | 0 | std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-'); |
405 | 0 | if (!RangePair.second.empty()) { |
406 | 0 | const auto First = getRuleIdxForIdentifier(RangePair.first); |
407 | 0 | const auto Last = getRuleIdxForIdentifier(RangePair.second); |
408 | 0 | if (!First || !Last) |
409 | 0 | return std::nullopt; |
410 | 0 | if (First >= Last) |
411 | 0 | report_fatal_error("Beginning of range should be before end of range"); |
412 | 0 | return {{*First, *Last + 1}}; |
413 | 0 | } |
414 | 0 | if (RangePair.first == "*") { |
415 | 0 | return {{0, 61}}; |
416 | 0 | } |
417 | 0 | const auto I = getRuleIdxForIdentifier(RangePair.first); |
418 | 0 | if (!I) |
419 | 0 | return std::nullopt; |
420 | 0 | return {{*I, *I + 1}}; |
421 | 0 | } |
422 | | |
423 | 0 | bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) { |
424 | 0 | auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier); |
425 | 0 | if (!MaybeRange) |
426 | 0 | return false; |
427 | 0 | for (auto I = MaybeRange->first; I < MaybeRange->second; ++I) |
428 | 0 | DisabledRules.reset(I); |
429 | 0 | return true; |
430 | 0 | } |
431 | | |
432 | 0 | bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) { |
433 | 0 | auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier); |
434 | 0 | if (!MaybeRange) |
435 | 0 | return false; |
436 | 0 | for (auto I = MaybeRange->first; I < MaybeRange->second; ++I) |
437 | 0 | DisabledRules.set(I); |
438 | 0 | return true; |
439 | 0 | } |
440 | | |
441 | | static std::vector<std::string> AArch64PostLegalizerCombinerOption; |
442 | | static cl::list<std::string> AArch64PostLegalizerCombinerDisableOption( |
443 | | "aarch64postlegalizercombiner-disable-rule", |
444 | | cl::desc("Disable one or more combiner rules temporarily in the AArch64PostLegalizerCombiner pass"), |
445 | | cl::CommaSeparated, |
446 | | cl::Hidden, |
447 | | cl::cat(GICombinerOptionCategory), |
448 | 0 | cl::callback([](const std::string &Str) { |
449 | 0 | AArch64PostLegalizerCombinerOption.push_back(Str); |
450 | 0 | })); |
451 | | static cl::list<std::string> AArch64PostLegalizerCombinerOnlyEnableOption( |
452 | | "aarch64postlegalizercombiner-only-enable-rule", |
453 | | cl::desc("Disable all rules in the AArch64PostLegalizerCombiner pass then re-enable the specified ones"), |
454 | | cl::Hidden, |
455 | | cl::cat(GICombinerOptionCategory), |
456 | 0 | cl::callback([](const std::string &CommaSeparatedArg) { |
457 | 0 | StringRef Str = CommaSeparatedArg; |
458 | 0 | AArch64PostLegalizerCombinerOption.push_back("*"); |
459 | 0 | do { |
460 | 0 | auto X = Str.split(","); |
461 | 0 | AArch64PostLegalizerCombinerOption.push_back(("!" + X.first).str()); |
462 | 0 | Str = X.second; |
463 | 0 | } while (!Str.empty()); |
464 | 0 | })); |
465 | | |
466 | | |
467 | 0 | bool AArch64PostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const { |
468 | 0 | return !DisabledRules.test(RuleID); |
469 | 0 | } |
470 | 0 | bool AArch64PostLegalizerCombinerImplRuleConfig::parseCommandLineOption() { |
471 | 0 | for (StringRef Identifier : AArch64PostLegalizerCombinerOption) { |
472 | 0 | bool Enabled = Identifier.consume_front("!"); |
473 | 0 | if (Enabled && !setRuleEnabled(Identifier)) |
474 | 0 | return false; |
475 | 0 | if (!Enabled && !setRuleDisabled(Identifier)) |
476 | 0 | return false; |
477 | 0 | } |
478 | 0 | return true; |
479 | 0 | } |
480 | | |
481 | | #endif // ifdef GET_GICOMBINER_TYPES |
482 | | |
483 | | #ifdef GET_GICOMBINER_TYPES |
484 | | const unsigned MAX_SUBTARGET_PREDICATES = 0; |
485 | | using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>; |
486 | | #endif // ifdef GET_GICOMBINER_TYPES |
487 | | |
488 | | #ifdef GET_GICOMBINER_CLASS_MEMBERS |
489 | | PredicateBitset AvailableModuleFeatures; |
490 | | mutable PredicateBitset AvailableFunctionFeatures; |
491 | 0 | PredicateBitset getAvailableFeatures() const { |
492 | 0 | return AvailableModuleFeatures | AvailableFunctionFeatures; |
493 | 0 | } |
494 | | PredicateBitset |
495 | | computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const; |
496 | | PredicateBitset |
497 | | computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, |
498 | | const MachineFunction *MF) const; |
499 | | void setupGeneratedPerFunctionState(MachineFunction &MF) override; |
500 | | #endif // ifdef GET_GICOMBINER_CLASS_MEMBERS |
501 | | #ifdef GET_GICOMBINER_CLASS_MEMBERS |
502 | | mutable MatcherState State; |
503 | | typedef ComplexRendererFns(AArch64PostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const; |
504 | | typedef void(AArch64PostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const; |
505 | | const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo; |
506 | | static AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[]; |
507 | | static AArch64PostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[]; |
508 | | bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override; |
509 | | bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override; |
510 | | bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override; |
511 | | const uint8_t *getMatchTable() const override; |
512 | | bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override; |
513 | | bool testSimplePredicate(unsigned PredicateID) const override; |
514 | | void runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override; |
515 | | struct MatchInfosTy { |
516 | | std::tuple<unsigned, LLT, Register> MDInfo6; |
517 | | unsigned MDInfo9; |
518 | | ConstantFP* MDInfo11; |
519 | | InstructionStepsMatchInfo MDInfo3; |
520 | | IndexedLoadStoreMatchInfo MDInfo2; |
521 | | std::function<void(MachineIRBuilder&, Register)> MDInfo7; |
522 | | PreferredTuple MDInfo0; |
523 | | std::tuple<Register, Register, Register> MDInfo13; |
524 | | Register MDInfo4; |
525 | | std::function<void(MachineIRBuilder &)> MDInfo1; |
526 | | int64_t MDInfo8; |
527 | | APInt MDInfo10; |
528 | | std::pair<Register, Register> MDInfo5; |
529 | | PtrAddChain MDInfo12; |
530 | | }; |
531 | | mutable MatchInfosTy MatchInfos; |
532 | | |
533 | | #endif // ifdef GET_GICOMBINER_CLASS_MEMBERS |
534 | | |
535 | | #ifdef GET_GICOMBINER_IMPL |
536 | | // LLT Objects. |
537 | | enum { |
538 | | GILLT_s1, |
539 | | }; |
540 | | const static size_t NumTypeObjects = 1; |
541 | | const static LLT TypeObjects[] = { |
542 | | LLT::scalar(1), |
543 | | }; |
544 | | |
545 | | // Bits for subtarget features that participate in instruction matching. |
546 | | enum SubtargetFeatureBits : uint8_t { |
547 | | }; |
548 | | |
549 | | PredicateBitset AArch64PostLegalizerCombinerImpl:: |
550 | 0 | computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const { |
551 | 0 | PredicateBitset Features; |
552 | 0 | return Features; |
553 | 0 | } |
554 | | |
555 | 0 | void AArch64PostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) { |
556 | 0 | AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF); |
557 | 0 | } |
558 | | PredicateBitset AArch64PostLegalizerCombinerImpl:: |
559 | 0 | computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const { |
560 | 0 | PredicateBitset Features; |
561 | 0 | return Features; |
562 | 0 | } |
563 | | |
564 | | // Feature bitsets. |
565 | | enum { |
566 | | GIFBS_Invalid, |
567 | | }; |
568 | | constexpr static PredicateBitset FeatureBitsets[] { |
569 | | {}, // GIFBS_Invalid |
570 | | }; |
571 | | |
572 | | // ComplexPattern predicates. |
573 | | enum { |
574 | | GICP_Invalid, |
575 | | }; |
576 | | // See constructor for table contents |
577 | | |
578 | | AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn |
579 | | AArch64PostLegalizerCombinerImpl::ComplexPredicateFns[] = { |
580 | | nullptr, // GICP_Invalid |
581 | | }; |
582 | | |
583 | | enum { |
584 | | GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1, |
585 | | GICXXPred_MI_Predicate_GICombiner1, |
586 | | GICXXPred_MI_Predicate_GICombiner2, |
587 | | GICXXPred_MI_Predicate_GICombiner3, |
588 | | GICXXPred_MI_Predicate_GICombiner4, |
589 | | GICXXPred_MI_Predicate_GICombiner5, |
590 | | GICXXPred_MI_Predicate_GICombiner6, |
591 | | GICXXPred_MI_Predicate_GICombiner7, |
592 | | GICXXPred_MI_Predicate_GICombiner8, |
593 | | GICXXPred_MI_Predicate_GICombiner9, |
594 | | GICXXPred_MI_Predicate_GICombiner10, |
595 | | GICXXPred_MI_Predicate_GICombiner11, |
596 | | GICXXPred_MI_Predicate_GICombiner12, |
597 | | GICXXPred_MI_Predicate_GICombiner13, |
598 | | GICXXPred_MI_Predicate_GICombiner14, |
599 | | GICXXPred_MI_Predicate_GICombiner15, |
600 | | GICXXPred_MI_Predicate_GICombiner16, |
601 | | GICXXPred_MI_Predicate_GICombiner17, |
602 | | GICXXPred_MI_Predicate_GICombiner18, |
603 | | GICXXPred_MI_Predicate_GICombiner19, |
604 | | GICXXPred_MI_Predicate_GICombiner20, |
605 | | GICXXPred_MI_Predicate_GICombiner21, |
606 | | GICXXPred_MI_Predicate_GICombiner22, |
607 | | GICXXPred_MI_Predicate_GICombiner23, |
608 | | GICXXPred_MI_Predicate_GICombiner24, |
609 | | GICXXPred_MI_Predicate_GICombiner25, |
610 | | GICXXPred_MI_Predicate_GICombiner26, |
611 | | GICXXPred_MI_Predicate_GICombiner27, |
612 | | GICXXPred_MI_Predicate_GICombiner28, |
613 | | GICXXPred_MI_Predicate_GICombiner29, |
614 | | GICXXPred_MI_Predicate_GICombiner30, |
615 | | GICXXPred_MI_Predicate_GICombiner31, |
616 | | GICXXPred_MI_Predicate_GICombiner32, |
617 | | GICXXPred_MI_Predicate_GICombiner33, |
618 | | GICXXPred_MI_Predicate_GICombiner34, |
619 | | GICXXPred_MI_Predicate_GICombiner35, |
620 | | GICXXPred_MI_Predicate_GICombiner36, |
621 | | GICXXPred_MI_Predicate_GICombiner37, |
622 | | GICXXPred_MI_Predicate_GICombiner38, |
623 | | GICXXPred_MI_Predicate_GICombiner39, |
624 | | GICXXPred_MI_Predicate_GICombiner40, |
625 | | GICXXPred_MI_Predicate_GICombiner41, |
626 | | GICXXPred_MI_Predicate_GICombiner42, |
627 | | GICXXPred_MI_Predicate_GICombiner43, |
628 | | GICXXPred_MI_Predicate_GICombiner44, |
629 | | GICXXPred_MI_Predicate_GICombiner45, |
630 | | GICXXPred_MI_Predicate_GICombiner46, |
631 | | GICXXPred_MI_Predicate_GICombiner47, |
632 | | GICXXPred_MI_Predicate_GICombiner48, |
633 | | }; |
634 | 0 | bool AArch64PostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const { |
635 | 0 | switch (PredicateID) { |
636 | 0 | case GICXXPred_MI_Predicate_GICombiner0: { |
637 | 0 | return Helper.matchCombineCopy(*State.MIs[0]); |
638 | 0 | } |
639 | 0 | case GICXXPred_MI_Predicate_GICombiner1: { |
640 | 0 | return Helper.matchCombineExtendingLoads(*State.MIs[0], MatchInfos.MDInfo0); |
641 | 0 | } |
642 | 0 | case GICXXPred_MI_Predicate_GICombiner2: { |
643 | 0 | return Helper.matchCombineLoadWithAndMask(*State.MIs[0], MatchInfos.MDInfo1); |
644 | 0 | } |
645 | 0 | case GICXXPred_MI_Predicate_GICombiner3: { |
646 | 0 | return Helper.matchCombineIndexedLoadStore(*State.MIs[0], MatchInfos.MDInfo2); |
647 | 0 | } |
648 | 0 | case GICXXPred_MI_Predicate_GICombiner4: { |
649 | 0 | return Helper.matchSextTruncSextLoad(*State.MIs[0]); |
650 | 0 | } |
651 | 0 | case GICXXPred_MI_Predicate_GICombiner5: { |
652 | 0 | return matchMutateAnyExtToZExt(*State.MIs[0], MRI); |
653 | 0 | } |
654 | 0 | case GICXXPred_MI_Predicate_GICombiner6: { |
655 | 0 | return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], MatchInfos.MDInfo3); |
656 | 0 | } |
657 | 0 | case GICXXPred_MI_Predicate_GICombiner7: { |
658 | 0 | return Helper.matchRedundantAnd(*State.MIs[0], MatchInfos.MDInfo4); |
659 | 0 | } |
660 | 0 | case GICXXPred_MI_Predicate_GICombiner8: { |
661 | 0 | return Helper.matchXorOfAndWithSameReg(*State.MIs[0], MatchInfos.MDInfo5); |
662 | 0 | } |
663 | 0 | case GICXXPred_MI_Predicate_GICombiner9: { |
664 | 0 | return matchExtractVecEltPairwiseAdd(*State.MIs[0], MRI, MatchInfos.MDInfo6); |
665 | 0 | } |
666 | 0 | case GICXXPred_MI_Predicate_GICombiner10: { |
667 | 0 | return Helper.matchRedundantOr(*State.MIs[0], MatchInfos.MDInfo4); |
668 | 0 | } |
669 | 0 | case GICXXPred_MI_Predicate_GICombiner11: { |
670 | 0 | return matchAArch64MulConstCombine(*State.MIs[0], MRI, MatchInfos.MDInfo7); |
671 | 0 | } |
672 | 0 | case GICXXPred_MI_Predicate_GICombiner12: { |
673 | 0 | return Helper.matchRedundantSExtInReg(*State.MIs[0]); |
674 | 0 | } |
675 | 0 | case GICXXPred_MI_Predicate_GICombiner13: { |
676 | 0 | return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], MatchInfos.MDInfo1); |
677 | 0 | } |
678 | 0 | case GICXXPred_MI_Predicate_GICombiner14: { |
679 | 0 | return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], MatchInfos.MDInfo1); |
680 | 0 | } |
681 | 0 | case GICXXPred_MI_Predicate_GICombiner15: { |
682 | 0 | return Helper.matchBitfieldExtractFromShr(*State.MIs[0], MatchInfos.MDInfo1); |
683 | 0 | } |
684 | 0 | case GICXXPred_MI_Predicate_GICombiner16: { |
685 | 0 | return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], MatchInfos.MDInfo1); |
686 | 0 | } |
687 | 0 | case GICXXPred_MI_Predicate_GICombiner17: { |
688 | 0 | return Helper.matchRotateOutOfRange(*State.MIs[0]); |
689 | 0 | } |
690 | 0 | case GICXXPred_MI_Predicate_GICombiner18: { |
691 | 0 | return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], MatchInfos.MDInfo8); |
692 | 0 | } |
693 | 0 | case GICXXPred_MI_Predicate_GICombiner19: { |
694 | 0 | return Helper.matchCombineMergeUnmerge(*State.MIs[0], MatchInfos.MDInfo4); |
695 | 0 | } |
696 | 0 | case GICXXPred_MI_Predicate_GICombiner20: { |
697 | 0 | return Helper.matchConstantSelectCmp(*State.MIs[0], MatchInfos.MDInfo9); |
698 | 0 | } |
699 | 0 | case GICXXPred_MI_Predicate_GICombiner21: { |
700 | 0 | return Helper.matchSelect(*State.MIs[0], MatchInfos.MDInfo1); |
701 | 0 | } |
702 | 0 | case GICXXPred_MI_Predicate_GICombiner22: { |
703 | 0 | return matchFoldMergeToZext(*State.MIs[0], MRI); |
704 | 0 | } |
705 | 0 | case GICXXPred_MI_Predicate_GICombiner23: { |
706 | 0 | return Helper.matchConstantFoldBinOp(*State.MIs[0], MatchInfos.MDInfo10); |
707 | 0 | } |
708 | 0 | case GICXXPred_MI_Predicate_GICombiner24: { |
709 | 0 | return Helper.matchConstantFoldFPBinOp(*State.MIs[0], MatchInfos.MDInfo11); |
710 | 0 | } |
711 | 0 | case GICXXPred_MI_Predicate_GICombiner25: { |
712 | 0 | return Helper.matchSelectSameVal(*State.MIs[0]); |
713 | 0 | } |
714 | 0 | case GICXXPred_MI_Predicate_GICombiner26: { |
715 | 0 | return Helper.matchOperandIsZero(*State.MIs[0], 1); |
716 | 0 | } |
717 | 0 | case GICXXPred_MI_Predicate_GICombiner27: { |
718 | 0 | return Helper.matchCombineI2PToP2I(*State.MIs[0], MatchInfos.MDInfo4); |
719 | 0 | } |
720 | 0 | case GICXXPred_MI_Predicate_GICombiner28: { |
721 | 0 | MatchInfos.MDInfo4 = State.MIs[1]->getOperand(1).getReg(); return true; |
722 | 0 | llvm_unreachable("GICombiner28 should have returned"); |
723 | 0 | } |
724 | 0 | case GICXXPred_MI_Predicate_GICombiner29: { |
725 | 0 | return Helper.matchCombineAnyExtTrunc(*State.MIs[0], MatchInfos.MDInfo4); |
726 | 0 | } |
727 | 0 | case GICXXPred_MI_Predicate_GICombiner30: { |
728 | 0 | return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0); |
729 | 0 | } |
730 | 0 | case GICXXPred_MI_Predicate_GICombiner31: { |
731 | 0 | return Helper.matchBuildVectorIdentityFold(*State.MIs[0], MatchInfos.MDInfo4); |
732 | 0 | } |
733 | 0 | case GICXXPred_MI_Predicate_GICombiner32: { |
734 | 0 | return Helper.matchTruncBuildVectorFold(*State.MIs[0], MatchInfos.MDInfo4); |
735 | 0 | } |
736 | 0 | case GICXXPred_MI_Predicate_GICombiner33: { |
737 | 0 | return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], MatchInfos.MDInfo4); |
738 | 0 | } |
739 | 0 | case GICXXPred_MI_Predicate_GICombiner34: { |
740 | 0 | return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()); |
741 | 0 | } |
742 | 0 | case GICXXPred_MI_Predicate_GICombiner35: { |
743 | 0 | return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0); |
744 | 0 | } |
745 | 0 | case GICXXPred_MI_Predicate_GICombiner36: { |
746 | 0 | return Helper.matchPtrAddImmedChain(*State.MIs[0], MatchInfos.MDInfo12); |
747 | 0 | } |
748 | 0 | case GICXXPred_MI_Predicate_GICombiner37: { |
749 | 0 | return Helper.matchOverlappingAnd(*State.MIs[0], MatchInfos.MDInfo1); |
750 | 0 | } |
751 | 0 | case GICXXPred_MI_Predicate_GICombiner38: { |
752 | 0 | return matchSplitStoreZero128(*State.MIs[0], MRI); |
753 | 0 | } |
754 | 0 | case GICXXPred_MI_Predicate_GICombiner39: { |
755 | 0 | return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]); |
756 | 0 | } |
757 | 0 | case GICXXPred_MI_Predicate_GICombiner40: { |
758 | 0 | return Helper.matchOperandIsUndef(*State.MIs[0], 1); |
759 | 0 | } |
760 | 0 | case GICXXPred_MI_Predicate_GICombiner41: { |
761 | 0 | return Helper.matchOperandIsUndef(*State.MIs[0], 2); |
762 | 0 | } |
763 | 0 | case GICXXPred_MI_Predicate_GICombiner42: { |
764 | 0 | return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]); |
765 | 0 | } |
766 | 0 | case GICXXPred_MI_Predicate_GICombiner43: { |
767 | 0 | return Helper.matchUndefShuffleVectorMask(*State.MIs[0]); |
768 | 0 | } |
769 | 0 | case GICXXPred_MI_Predicate_GICombiner44: { |
770 | 0 | return Helper.matchUndefStore(*State.MIs[0]); |
771 | 0 | } |
772 | 0 | case GICXXPred_MI_Predicate_GICombiner45: { |
773 | 0 | return Helper.matchCombineUnmergeUndef(*State.MIs[0], MatchInfos.MDInfo1); |
774 | 0 | } |
775 | 0 | case GICXXPred_MI_Predicate_GICombiner46: { |
776 | 0 | return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]); |
777 | 0 | } |
778 | 0 | case GICXXPred_MI_Predicate_GICombiner47: { |
779 | 0 | return Helper.matchSimplifySelectToMinMax(*State.MIs[0], MatchInfos.MDInfo1); |
780 | 0 | } |
781 | 0 | case GICXXPred_MI_Predicate_GICombiner48: { |
782 | 0 | return matchOrToBSP(*State.MIs[0], MRI, MatchInfos.MDInfo13); |
783 | 0 | } |
784 | 0 | } |
785 | 0 | llvm_unreachable("Unknown predicate"); |
786 | 0 | return false; |
787 | 0 | } |
788 | 0 | bool AArch64PostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const { |
789 | 0 | llvm_unreachable("Unknown predicate"); |
790 | 0 | return false; |
791 | 0 | } |
792 | 0 | bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const { |
793 | 0 | llvm_unreachable("Unknown predicate"); |
794 | 0 | return false; |
795 | 0 | } |
796 | 0 | bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const { |
797 | 0 | llvm_unreachable("Unknown predicate"); |
798 | 0 | return false; |
799 | 0 | } |
800 | | enum { |
801 | | GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1, |
802 | | GICXXPred_Simple_IsRule1Enabled, |
803 | | GICXXPred_Simple_IsRule2Enabled, |
804 | | GICXXPred_Simple_IsRule3Enabled, |
805 | | GICXXPred_Simple_IsRule4Enabled, |
806 | | GICXXPred_Simple_IsRule5Enabled, |
807 | | GICXXPred_Simple_IsRule6Enabled, |
808 | | GICXXPred_Simple_IsRule7Enabled, |
809 | | GICXXPred_Simple_IsRule8Enabled, |
810 | | GICXXPred_Simple_IsRule9Enabled, |
811 | | GICXXPred_Simple_IsRule10Enabled, |
812 | | GICXXPred_Simple_IsRule11Enabled, |
813 | | GICXXPred_Simple_IsRule12Enabled, |
814 | | GICXXPred_Simple_IsRule13Enabled, |
815 | | GICXXPred_Simple_IsRule14Enabled, |
816 | | GICXXPred_Simple_IsRule15Enabled, |
817 | | GICXXPred_Simple_IsRule16Enabled, |
818 | | GICXXPred_Simple_IsRule17Enabled, |
819 | | GICXXPred_Simple_IsRule18Enabled, |
820 | | GICXXPred_Simple_IsRule19Enabled, |
821 | | GICXXPred_Simple_IsRule20Enabled, |
822 | | GICXXPred_Simple_IsRule21Enabled, |
823 | | GICXXPred_Simple_IsRule22Enabled, |
824 | | GICXXPred_Simple_IsRule23Enabled, |
825 | | GICXXPred_Simple_IsRule24Enabled, |
826 | | GICXXPred_Simple_IsRule25Enabled, |
827 | | GICXXPred_Simple_IsRule26Enabled, |
828 | | GICXXPred_Simple_IsRule27Enabled, |
829 | | GICXXPred_Simple_IsRule28Enabled, |
830 | | GICXXPred_Simple_IsRule29Enabled, |
831 | | GICXXPred_Simple_IsRule30Enabled, |
832 | | GICXXPred_Simple_IsRule31Enabled, |
833 | | GICXXPred_Simple_IsRule32Enabled, |
834 | | GICXXPred_Simple_IsRule33Enabled, |
835 | | GICXXPred_Simple_IsRule34Enabled, |
836 | | GICXXPred_Simple_IsRule35Enabled, |
837 | | GICXXPred_Simple_IsRule36Enabled, |
838 | | GICXXPred_Simple_IsRule37Enabled, |
839 | | GICXXPred_Simple_IsRule38Enabled, |
840 | | GICXXPred_Simple_IsRule39Enabled, |
841 | | GICXXPred_Simple_IsRule40Enabled, |
842 | | GICXXPred_Simple_IsRule41Enabled, |
843 | | GICXXPred_Simple_IsRule42Enabled, |
844 | | GICXXPred_Simple_IsRule43Enabled, |
845 | | GICXXPred_Simple_IsRule44Enabled, |
846 | | GICXXPred_Simple_IsRule45Enabled, |
847 | | GICXXPred_Simple_IsRule46Enabled, |
848 | | GICXXPred_Simple_IsRule47Enabled, |
849 | | GICXXPred_Simple_IsRule48Enabled, |
850 | | GICXXPred_Simple_IsRule49Enabled, |
851 | | GICXXPred_Simple_IsRule50Enabled, |
852 | | GICXXPred_Simple_IsRule51Enabled, |
853 | | GICXXPred_Simple_IsRule52Enabled, |
854 | | GICXXPred_Simple_IsRule53Enabled, |
855 | | GICXXPred_Simple_IsRule54Enabled, |
856 | | GICXXPred_Simple_IsRule55Enabled, |
857 | | GICXXPred_Simple_IsRule56Enabled, |
858 | | GICXXPred_Simple_IsRule57Enabled, |
859 | | GICXXPred_Simple_IsRule58Enabled, |
860 | | GICXXPred_Simple_IsRule59Enabled, |
861 | | GICXXPred_Simple_IsRule60Enabled, |
862 | | }; |
863 | | |
864 | 0 | bool AArch64PostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const { |
865 | 0 | return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1); |
866 | 0 | } |
867 | | // Custom renderers. |
868 | | enum { |
869 | | GICR_Invalid, |
870 | | }; |
871 | | AArch64PostLegalizerCombinerImpl::CustomRendererFn |
872 | | AArch64PostLegalizerCombinerImpl::CustomRenderers[] = { |
873 | | nullptr, // GICR_Invalid |
874 | | }; |
875 | | |
876 | 0 | bool AArch64PostLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const { |
877 | 0 | const TargetSubtargetInfo &ST = MF.getSubtarget(); |
878 | 0 | const PredicateBitset AvailableFeatures = getAvailableFeatures(); |
879 | 0 | B.setInstrAndDebugLoc(I); |
880 | 0 | State.MIs.clear(); |
881 | 0 | State.MIs.push_back(&I); |
882 | 0 | MatchInfos = MatchInfosTy(); |
883 | |
|
884 | 0 | if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) { |
885 | 0 | return true; |
886 | 0 | } |
887 | | |
888 | 0 | return false; |
889 | 0 | } |
890 | | |
891 | | enum { |
892 | | GICXXCustomAction_CombineApplyGICombiner0 = GICXXCustomAction_Invalid + 1, |
893 | | GICXXCustomAction_CombineApplyGICombiner1, |
894 | | GICXXCustomAction_CombineApplyGICombiner2, |
895 | | GICXXCustomAction_CombineApplyGICombiner3, |
896 | | GICXXCustomAction_CombineApplyGICombiner4, |
897 | | GICXXCustomAction_CombineApplyGICombiner5, |
898 | | GICXXCustomAction_CombineApplyGICombiner6, |
899 | | GICXXCustomAction_CombineApplyGICombiner7, |
900 | | GICXXCustomAction_CombineApplyGICombiner8, |
901 | | GICXXCustomAction_CombineApplyGICombiner9, |
902 | | GICXXCustomAction_CombineApplyGICombiner10, |
903 | | GICXXCustomAction_CombineApplyGICombiner11, |
904 | | GICXXCustomAction_CombineApplyGICombiner12, |
905 | | GICXXCustomAction_CombineApplyGICombiner13, |
906 | | GICXXCustomAction_CombineApplyGICombiner14, |
907 | | GICXXCustomAction_CombineApplyGICombiner15, |
908 | | GICXXCustomAction_CombineApplyGICombiner16, |
909 | | GICXXCustomAction_CombineApplyGICombiner17, |
910 | | GICXXCustomAction_CombineApplyGICombiner18, |
911 | | GICXXCustomAction_CombineApplyGICombiner19, |
912 | | GICXXCustomAction_CombineApplyGICombiner20, |
913 | | GICXXCustomAction_CombineApplyGICombiner21, |
914 | | GICXXCustomAction_CombineApplyGICombiner22, |
915 | | GICXXCustomAction_CombineApplyGICombiner23, |
916 | | GICXXCustomAction_CombineApplyGICombiner24, |
917 | | GICXXCustomAction_CombineApplyGICombiner25, |
918 | | GICXXCustomAction_CombineApplyGICombiner26, |
919 | | GICXXCustomAction_CombineApplyGICombiner27, |
920 | | GICXXCustomAction_CombineApplyGICombiner28, |
921 | | GICXXCustomAction_CombineApplyGICombiner29, |
922 | | }; |
923 | 0 | void AArch64PostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const { |
924 | 0 | switch(ApplyID) { |
925 | 0 | case GICXXCustomAction_CombineApplyGICombiner0:{ |
926 | 0 | Helper.applyCombineCopy(*State.MIs[0]); |
927 | 0 | return; |
928 | 0 | } |
929 | 0 | case GICXXCustomAction_CombineApplyGICombiner1:{ |
930 | 0 | Helper.applyCombineExtendingLoads(*State.MIs[0], MatchInfos.MDInfo0); |
931 | 0 | return; |
932 | 0 | } |
933 | 0 | case GICXXCustomAction_CombineApplyGICombiner2:{ |
934 | 0 | Helper.applyBuildFn(*State.MIs[0], MatchInfos.MDInfo1); |
935 | 0 | return; |
936 | 0 | } |
937 | 0 | case GICXXCustomAction_CombineApplyGICombiner3:{ |
938 | 0 | Helper.applyCombineIndexedLoadStore(*State.MIs[0], MatchInfos.MDInfo2); |
939 | 0 | return; |
940 | 0 | } |
941 | 0 | case GICXXCustomAction_CombineApplyGICombiner4:{ |
942 | 0 | Helper.applySextTruncSextLoad(*State.MIs[0]); |
943 | 0 | return; |
944 | 0 | } |
945 | 0 | case GICXXCustomAction_CombineApplyGICombiner5:{ |
946 | 0 | applyMutateAnyExtToZExt(*State.MIs[0], MRI, B, Observer); |
947 | 0 | return; |
948 | 0 | } |
949 | 0 | case GICXXCustomAction_CombineApplyGICombiner6:{ |
950 | 0 | Helper.applyBuildInstructionSteps(*State.MIs[0], MatchInfos.MDInfo3); |
951 | 0 | return; |
952 | 0 | } |
953 | 0 | case GICXXCustomAction_CombineApplyGICombiner7:{ |
954 | 0 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], MatchInfos.MDInfo4); |
955 | 0 | return; |
956 | 0 | } |
957 | 0 | case GICXXCustomAction_CombineApplyGICombiner8:{ |
958 | 0 | Helper.applyXorOfAndWithSameReg(*State.MIs[0], MatchInfos.MDInfo5); |
959 | 0 | return; |
960 | 0 | } |
961 | 0 | case GICXXCustomAction_CombineApplyGICombiner9:{ |
962 | 0 | applyExtractVecEltPairwiseAdd(*State.MIs[0], MRI, B, MatchInfos.MDInfo6); |
963 | 0 | return; |
964 | 0 | } |
965 | 0 | case GICXXCustomAction_CombineApplyGICombiner10:{ |
966 | 0 | applyAArch64MulConstCombine(*State.MIs[0], MRI, B, MatchInfos.MDInfo7); |
967 | 0 | return; |
968 | 0 | } |
969 | 0 | case GICXXCustomAction_CombineApplyGICombiner11:{ |
970 | 0 | Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1); |
971 | 0 | return; |
972 | 0 | } |
973 | 0 | case GICXXCustomAction_CombineApplyGICombiner12:{ |
974 | 0 | Helper.applyRotateOutOfRange(*State.MIs[0]); |
975 | 0 | return; |
976 | 0 | } |
977 | 0 | case GICXXCustomAction_CombineApplyGICombiner13:{ |
978 | 0 | Helper.replaceInstWithConstant(*State.MIs[0], MatchInfos.MDInfo8); |
979 | 0 | return; |
980 | 0 | } |
981 | 0 | case GICXXCustomAction_CombineApplyGICombiner14:{ |
982 | 0 | Helper.replaceSingleDefInstWithOperand(*State.MIs[0], MatchInfos.MDInfo9); |
983 | 0 | return; |
984 | 0 | } |
985 | 0 | case GICXXCustomAction_CombineApplyGICombiner15:{ |
986 | 0 | applyFoldMergeToZext(*State.MIs[0], MRI, B, Observer); |
987 | 0 | return; |
988 | 0 | } |
989 | 0 | case GICXXCustomAction_CombineApplyGICombiner16:{ |
990 | 0 | Helper.replaceInstWithConstant(*State.MIs[0], MatchInfos.MDInfo10); |
991 | 0 | return; |
992 | 0 | } |
993 | 0 | case GICXXCustomAction_CombineApplyGICombiner17:{ |
994 | 0 | Helper.replaceInstWithFConstant(*State.MIs[0], MatchInfos.MDInfo11); |
995 | 0 | return; |
996 | 0 | } |
997 | 0 | case GICXXCustomAction_CombineApplyGICombiner18:{ |
998 | 0 | Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2); |
999 | 0 | return; |
1000 | 0 | } |
1001 | 0 | case GICXXCustomAction_CombineApplyGICombiner19:{ |
1002 | 0 | Helper.applyCombineI2PToP2I(*State.MIs[0], MatchInfos.MDInfo4); |
1003 | 0 | return; |
1004 | 0 | } |
1005 | 0 | case GICXXCustomAction_CombineApplyGICombiner20:{ |
1006 | 0 | Helper.applyCombineP2IToI2P(*State.MIs[0], MatchInfos.MDInfo4); |
1007 | 0 | return; |
1008 | 0 | } |
1009 | 0 | case GICXXCustomAction_CombineApplyGICombiner21:{ |
1010 | 0 | Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg()); |
1011 | 0 | return; |
1012 | 0 | } |
1013 | 0 | case GICXXCustomAction_CombineApplyGICombiner22:{ |
1014 | 0 | Helper.applyPtrAddImmedChain(*State.MIs[0], MatchInfos.MDInfo12); |
1015 | 0 | return; |
1016 | 0 | } |
1017 | 0 | case GICXXCustomAction_CombineApplyGICombiner23:{ |
1018 | 0 | applySplitStoreZero128(*State.MIs[0], MRI, B, Observer); |
1019 | 0 | return; |
1020 | 0 | } |
1021 | 0 | case GICXXCustomAction_CombineApplyGICombiner24:{ |
1022 | 0 | Helper.replaceInstWithFConstant(*State.MIs[0], 0.0); |
1023 | 0 | return; |
1024 | 0 | } |
1025 | 0 | case GICXXCustomAction_CombineApplyGICombiner25:{ |
1026 | 0 | Helper.replaceInstWithConstant(*State.MIs[0], 0); |
1027 | 0 | return; |
1028 | 0 | } |
1029 | 0 | case GICXXCustomAction_CombineApplyGICombiner26:{ |
1030 | 0 | Helper.replaceInstWithConstant(*State.MIs[0], -1); |
1031 | 0 | return; |
1032 | 0 | } |
1033 | 0 | case GICXXCustomAction_CombineApplyGICombiner27:{ |
1034 | 0 | Helper.replaceInstWithUndef(*State.MIs[0]); |
1035 | 0 | return; |
1036 | 0 | } |
1037 | 0 | case GICXXCustomAction_CombineApplyGICombiner28:{ |
1038 | 0 | Helper.eraseInst(*State.MIs[0]); |
1039 | 0 | return; |
1040 | 0 | } |
1041 | 0 | case GICXXCustomAction_CombineApplyGICombiner29:{ |
1042 | 0 | applyOrToBSP(*State.MIs[0], MRI, B, MatchInfos.MDInfo13); |
1043 | 0 | return; |
1044 | 0 | } |
1045 | 0 | } |
1046 | 0 | llvm_unreachable("Unknown Apply Action"); |
1047 | 0 | } |
1048 | | #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ |
1049 | 0 | #define GIMT_Encode2(Val) uint8_t(Val), uint8_t((uint16_t)Val >> 8) |
1050 | 0 | #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) |
1051 | | #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) |
1052 | | #else |
1053 | | #define GIMT_Encode2(Val) uint8_t((uint16_t)Val >> 8), uint8_t(Val) |
1054 | | #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) |
1055 | | #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) |
1056 | | #endif |
1057 | 0 | const uint8_t *AArch64PostLegalizerCombinerImpl::getMatchTable() const { |
1058 | 0 | constexpr static uint8_t MatchTable0[] = { |
1059 | 0 | GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(19), GIMT_Encode2(217), /*)*//*default:*//*Label 47*/ GIMT_Encode4(2839), |
1060 | 0 | /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(802), 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), |
1061 | 0 | /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(819), |
1062 | 0 | /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(949), |
1063 | 0 | /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1007), |
1064 | 0 | /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1106), |
1065 | 0 | /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(1123), |
1066 | 0 | /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(1156), |
1067 | 0 | /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(1173), GIMT_Encode4(0), GIMT_Encode4(0), |
1068 | 0 | /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(1206), |
1069 | 0 | /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(1345), |
1070 | 0 | /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(1477), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
1071 | 0 | /*TargetOpcode::G_UNMERGE_VALUES*//*Label 11*/ GIMT_Encode4(1567), GIMT_Encode4(0), |
1072 | 0 | /*TargetOpcode::G_MERGE_VALUES*//*Label 12*/ GIMT_Encode4(1584), |
1073 | 0 | /*TargetOpcode::G_BUILD_VECTOR*//*Label 13*/ GIMT_Encode4(1617), |
1074 | 0 | /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 14*/ GIMT_Encode4(1634), GIMT_Encode4(0), |
1075 | 0 | /*TargetOpcode::G_PTRTOINT*//*Label 15*/ GIMT_Encode4(1651), |
1076 | 0 | /*TargetOpcode::G_INTTOPTR*//*Label 16*/ GIMT_Encode4(1678), |
1077 | 0 | /*TargetOpcode::G_BITCAST*//*Label 17*/ GIMT_Encode4(1695), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
1078 | 0 | /*TargetOpcode::G_LOAD*//*Label 18*/ GIMT_Encode4(1722), |
1079 | 0 | /*TargetOpcode::G_SEXTLOAD*//*Label 19*/ GIMT_Encode4(1755), |
1080 | 0 | /*TargetOpcode::G_ZEXTLOAD*//*Label 20*/ GIMT_Encode4(1788), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
1081 | 0 | /*TargetOpcode::G_STORE*//*Label 21*/ GIMT_Encode4(1821), 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), |
1082 | 0 | /*TargetOpcode::G_ANYEXT*//*Label 22*/ GIMT_Encode4(1870), |
1083 | 0 | /*TargetOpcode::G_TRUNC*//*Label 23*/ GIMT_Encode4(1903), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
1084 | 0 | /*TargetOpcode::G_SEXT_INREG*//*Label 24*/ GIMT_Encode4(1952), GIMT_Encode4(0), |
1085 | 0 | /*TargetOpcode::G_SHL*//*Label 25*/ GIMT_Encode4(2001), |
1086 | 0 | /*TargetOpcode::G_LSHR*//*Label 26*/ GIMT_Encode4(2075), |
1087 | 0 | /*TargetOpcode::G_ASHR*//*Label 27*/ GIMT_Encode4(2165), GIMT_Encode4(0), GIMT_Encode4(0), |
1088 | 0 | /*TargetOpcode::G_ROTR*//*Label 28*/ GIMT_Encode4(2255), |
1089 | 0 | /*TargetOpcode::G_ROTL*//*Label 29*/ GIMT_Encode4(2297), |
1090 | 0 | /*TargetOpcode::G_ICMP*//*Label 30*/ GIMT_Encode4(2339), GIMT_Encode4(0), |
1091 | 0 | /*TargetOpcode::G_SELECT*//*Label 31*/ GIMT_Encode4(2356), 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), |
1092 | 0 | /*TargetOpcode::G_FADD*//*Label 32*/ GIMT_Encode4(2452), |
1093 | 0 | /*TargetOpcode::G_FSUB*//*Label 33*/ GIMT_Encode4(2494), |
1094 | 0 | /*TargetOpcode::G_FMUL*//*Label 34*/ GIMT_Encode4(2511), GIMT_Encode4(0), GIMT_Encode4(0), |
1095 | 0 | /*TargetOpcode::G_FDIV*//*Label 35*/ GIMT_Encode4(2553), 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), |
1096 | 0 | /*TargetOpcode::G_FNEG*//*Label 36*/ GIMT_Encode4(2570), GIMT_Encode4(0), |
1097 | 0 | /*TargetOpcode::G_FPTRUNC*//*Label 37*/ GIMT_Encode4(2602), |
1098 | 0 | /*TargetOpcode::G_FPTOSI*//*Label 38*/ GIMT_Encode4(2629), |
1099 | 0 | /*TargetOpcode::G_FPTOUI*//*Label 39*/ GIMT_Encode4(2646), |
1100 | 0 | /*TargetOpcode::G_SITOFP*//*Label 40*/ GIMT_Encode4(2663), |
1101 | 0 | /*TargetOpcode::G_UITOFP*//*Label 41*/ GIMT_Encode4(2680), 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), |
1102 | 0 | /*TargetOpcode::G_PTR_ADD*//*Label 42*/ GIMT_Encode4(2697), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
1103 | 0 | /*TargetOpcode::G_ABS*//*Label 43*/ GIMT_Encode4(2739), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), |
1104 | 0 | /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 44*/ GIMT_Encode4(2756), |
1105 | 0 | /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 45*/ GIMT_Encode4(2773), |
1106 | 0 | /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 46*/ GIMT_Encode4(2806), |
1107 | | // Label 0: @802 |
1108 | 0 | GIM_Try, /*On fail goto*//*Label 48*/ GIMT_Encode4(818), // Rule ID 0 // |
1109 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled), |
1110 | | // MIs[0] d |
1111 | | // No operand predicates |
1112 | | // MIs[0] s |
1113 | | // No operand predicates |
1114 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0), |
1115 | | // Combiner Rule #0: copy_prop |
1116 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner0), |
1117 | 0 | GIR_Done, |
1118 | | // Label 48: @818 |
1119 | 0 | GIM_Reject, |
1120 | | // Label 1: @819 |
1121 | 0 | GIM_Try, /*On fail goto*//*Label 49*/ GIMT_Encode4(835), // Rule ID 34 // |
1122 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
1123 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23), |
1124 | | // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_ADD' |
1125 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16), |
1126 | 0 | GIR_Done, |
1127 | | // Label 49: @835 |
1128 | 0 | GIM_Try, /*On fail goto*//*Label 50*/ GIMT_Encode4(851), // Rule ID 95 // |
1129 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled), |
1130 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
1131 | | // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_ADD' |
1132 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
1133 | 0 | GIR_Done, |
1134 | | // Label 50: @851 |
1135 | 0 | GIM_Try, /*On fail goto*//*Label 51*/ GIMT_Encode4(887), // Rule ID 72 // |
1136 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled), |
1137 | | // MIs[0] dst |
1138 | | // No operand predicates |
1139 | | // MIs[0] __add_sub_reg_match_0.tmp |
1140 | 0 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
1141 | 0 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
1142 | | // MIs[1] src |
1143 | | // No operand predicates |
1144 | | // MIs[1] __add_sub_reg_match_0.x |
1145 | | // No operand predicates |
1146 | | // MIs[0] __add_sub_reg_match_0.x |
1147 | 0 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2, |
1148 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
1149 | 0 | GIM_CheckIsSafeToFold, /*InsnID*/1, |
1150 | | // Combiner Rule #37: add_sub_reg @ [__add_sub_reg_match_0[1]] |
1151 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
1152 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1153 | 0 | GIR_Done, |
1154 | | // Label 51: @887 |
1155 | 0 | GIM_Try, /*On fail goto*//*Label 52*/ GIMT_Encode4(923), // Rule ID 71 // |
1156 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled), |
1157 | | // MIs[0] dst |
1158 | | // No operand predicates |
1159 | | // MIs[0] __add_sub_reg_match_0.x |
1160 | | // No operand predicates |
1161 | | // MIs[0] __add_sub_reg_match_0.tmp |
1162 | 0 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1] |
1163 | 0 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB), |
1164 | | // MIs[1] src |
1165 | | // No operand predicates |
1166 | | // MIs[1] __add_sub_reg_match_0.x |
1167 | 0 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1, |
1168 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
1169 | 0 | GIM_CheckIsSafeToFold, /*InsnID*/1, |
1170 | | // Combiner Rule #37: add_sub_reg @ [__add_sub_reg_match_0[0]] |
1171 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
1172 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1173 | 0 | GIR_Done, |
1174 | | // Label 52: @923 |
1175 | 0 | GIM_Try, /*On fail goto*//*Label 53*/ GIMT_Encode4(948), // Rule ID 49 // |
1176 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
1177 | | // MIs[0] dst |
1178 | | // No operand predicates |
1179 | | // MIs[0] lhs |
1180 | | // No operand predicates |
1181 | | // MIs[0] Operand 2 |
1182 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1183 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1184 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[1]] |
1185 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1186 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1187 | 0 | GIR_Done, |
1188 | | // Label 53: @948 |
1189 | 0 | GIM_Reject, |
1190 | | // Label 2: @949 |
1191 | 0 | GIM_Try, /*On fail goto*//*Label 54*/ GIMT_Encode4(965), // Rule ID 35 // |
1192 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
1193 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23), |
1194 | | // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_SUB' |
1195 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16), |
1196 | 0 | GIR_Done, |
1197 | | // Label 54: @965 |
1198 | 0 | GIM_Try, /*On fail goto*//*Label 55*/ GIMT_Encode4(981), // Rule ID 98 // |
1199 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled), |
1200 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
1201 | | // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_SUB' |
1202 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
1203 | 0 | GIR_Done, |
1204 | | // Label 55: @981 |
1205 | 0 | GIM_Try, /*On fail goto*//*Label 56*/ GIMT_Encode4(1006), // Rule ID 48 // |
1206 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
1207 | | // MIs[0] dst |
1208 | | // No operand predicates |
1209 | | // MIs[0] lhs |
1210 | | // No operand predicates |
1211 | | // MIs[0] Operand 2 |
1212 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1213 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1214 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[0]] |
1215 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1216 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1217 | 0 | GIR_Done, |
1218 | | // Label 56: @1006 |
1219 | 0 | GIM_Reject, |
1220 | | // Label 3: @1007 |
1221 | 0 | GIM_Try, /*On fail goto*//*Label 57*/ GIMT_Encode4(1023), // Rule ID 18 // |
1222 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled), |
1223 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11), |
1224 | | // Combiner Rule #11: mul_const; wip_match_opcode 'G_MUL' |
1225 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner10), |
1226 | 0 | GIR_Done, |
1227 | | // Label 57: @1023 |
1228 | 0 | GIM_Try, /*On fail goto*//*Label 58*/ GIMT_Encode4(1039), // Rule ID 36 // |
1229 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
1230 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23), |
1231 | | // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_MUL' |
1232 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16), |
1233 | 0 | GIR_Done, |
1234 | | // Label 58: @1039 |
1235 | 0 | GIM_Try, /*On fail goto*//*Label 59*/ GIMT_Encode4(1055), // Rule ID 86 // |
1236 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled), |
1237 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
1238 | | // Combiner Rule #48: undef_to_int_zero; wip_match_opcode 'G_MUL' |
1239 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25), |
1240 | 0 | GIR_Done, |
1241 | | // Label 59: @1055 |
1242 | 0 | GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(1080), // Rule ID 64 // |
1243 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled), |
1244 | | // MIs[0] dst |
1245 | | // No operand predicates |
1246 | | // MIs[0] lhs |
1247 | | // No operand predicates |
1248 | | // MIs[0] zero |
1249 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1250 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2, |
1251 | | // Combiner Rule #30: binop_right_to_zero |
1252 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2, |
1253 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1254 | 0 | GIR_Done, |
1255 | | // Label 60: @1080 |
1256 | 0 | GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(1105), // Rule ID 69 // |
1257 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled), |
1258 | | // MIs[0] dst |
1259 | | // No operand predicates |
1260 | | // MIs[0] x |
1261 | | // No operand predicates |
1262 | | // MIs[0] Operand 2 |
1263 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1, |
1264 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1265 | | // Combiner Rule #35: right_identity_one_int |
1266 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1267 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1268 | 0 | GIR_Done, |
1269 | | // Label 61: @1105 |
1270 | 0 | GIM_Reject, |
1271 | | // Label 4: @1106 |
1272 | 0 | GIM_Try, /*On fail goto*//*Label 62*/ GIMT_Encode4(1122), // Rule ID 60 // |
1273 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled), |
1274 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26), |
1275 | | // Combiner Rule #29: binop_left_to_zero; wip_match_opcode 'G_SDIV' |
1276 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11), |
1277 | 0 | GIR_Done, |
1278 | | // Label 62: @1122 |
1279 | 0 | GIM_Reject, |
1280 | | // Label 5: @1123 |
1281 | 0 | GIM_Try, /*On fail goto*//*Label 63*/ GIMT_Encode4(1139), // Rule ID 61 // |
1282 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled), |
1283 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26), |
1284 | | // Combiner Rule #29: binop_left_to_zero; wip_match_opcode 'G_UDIV' |
1285 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11), |
1286 | 0 | GIR_Done, |
1287 | | // Label 63: @1139 |
1288 | 0 | GIM_Try, /*On fail goto*//*Label 64*/ GIMT_Encode4(1155), // Rule ID 89 // |
1289 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled), |
1290 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40), |
1291 | | // Combiner Rule #50: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV' |
1292 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25), |
1293 | 0 | GIR_Done, |
1294 | | // Label 64: @1155 |
1295 | 0 | GIM_Reject, |
1296 | | // Label 6: @1156 |
1297 | 0 | GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1172), // Rule ID 62 // |
1298 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled), |
1299 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26), |
1300 | | // Combiner Rule #29: binop_left_to_zero; wip_match_opcode 'G_SREM' |
1301 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11), |
1302 | 0 | GIR_Done, |
1303 | | // Label 65: @1172 |
1304 | 0 | GIM_Reject, |
1305 | | // Label 7: @1173 |
1306 | 0 | GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1189), // Rule ID 63 // |
1307 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled), |
1308 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26), |
1309 | | // Combiner Rule #29: binop_left_to_zero; wip_match_opcode 'G_UREM' |
1310 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11), |
1311 | 0 | GIR_Done, |
1312 | | // Label 66: @1189 |
1313 | 0 | GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1205), // Rule ID 90 // |
1314 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled), |
1315 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40), |
1316 | | // Combiner Rule #50: binop_left_undef_to_zero; wip_match_opcode 'G_UREM' |
1317 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25), |
1318 | 0 | GIR_Done, |
1319 | | // Label 67: @1205 |
1320 | 0 | GIM_Reject, |
1321 | | // Label 8: @1206 |
1322 | 0 | GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1222), // Rule ID 4 // |
1323 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled), |
1324 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2), |
1325 | | // Combiner Rule #2: load_and_mask; wip_match_opcode 'G_AND' |
1326 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1327 | 0 | GIR_Done, |
1328 | | // Label 68: @1222 |
1329 | 0 | GIM_Try, /*On fail goto*//*Label 69*/ GIMT_Encode4(1238), // Rule ID 11 // |
1330 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled), |
1331 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6), |
1332 | | // Combiner Rule #6: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND' |
1333 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner6), |
1334 | 0 | GIR_Done, |
1335 | | // Label 69: @1238 |
1336 | 0 | GIM_Try, /*On fail goto*//*Label 70*/ GIMT_Encode4(1254), // Rule ID 14 // |
1337 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled), |
1338 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7), |
1339 | | // Combiner Rule #7: redundant_and; wip_match_opcode 'G_AND' |
1340 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7), |
1341 | 0 | GIR_Done, |
1342 | | // Label 70: @1254 |
1343 | 0 | GIM_Try, /*On fail goto*//*Label 71*/ GIMT_Encode4(1270), // Rule ID 21 // |
1344 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled), |
1345 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14), |
1346 | | // Combiner Rule #14: bitfield_extract_from_and; wip_match_opcode 'G_AND' |
1347 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1348 | 0 | GIR_Done, |
1349 | | // Label 71: @1270 |
1350 | 0 | GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1286), // Rule ID 37 // |
1351 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
1352 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23), |
1353 | | // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_AND' |
1354 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16), |
1355 | 0 | GIR_Done, |
1356 | | // Label 72: @1286 |
1357 | 0 | GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1302), // Rule ID 81 // |
1358 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled), |
1359 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner37), |
1360 | | // Combiner Rule #45: overlapping_and; wip_match_opcode 'G_AND' |
1361 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1362 | 0 | GIR_Done, |
1363 | | // Label 73: @1302 |
1364 | 0 | GIM_Try, /*On fail goto*//*Label 74*/ GIMT_Encode4(1318), // Rule ID 85 // |
1365 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled), |
1366 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
1367 | | // Combiner Rule #48: undef_to_int_zero; wip_match_opcode 'G_AND' |
1368 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25), |
1369 | 0 | GIR_Done, |
1370 | | // Label 74: @1318 |
1371 | 0 | GIM_Try, /*On fail goto*//*Label 75*/ GIMT_Encode4(1344), // Rule ID 58 // |
1372 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled), |
1373 | | // MIs[0] dst |
1374 | | // No operand predicates |
1375 | | // MIs[0] src |
1376 | | // No operand predicates |
1377 | | // MIs[0] src |
1378 | 0 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1, |
1379 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1380 | | // Combiner Rule #28: binop_same_val @ [__binop_same_val_match_0[0]] |
1381 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1382 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1383 | 0 | GIR_Done, |
1384 | | // Label 75: @1344 |
1385 | 0 | GIM_Reject, |
1386 | | // Label 9: @1345 |
1387 | 0 | GIM_Try, /*On fail goto*//*Label 76*/ GIMT_Encode4(1361), // Rule ID 12 // |
1388 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled), |
1389 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6), |
1390 | | // Combiner Rule #6: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR' |
1391 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner6), |
1392 | 0 | GIR_Done, |
1393 | | // Label 76: @1361 |
1394 | 0 | GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1377), // Rule ID 17 // |
1395 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled), |
1396 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10), |
1397 | | // Combiner Rule #10: redundant_or; wip_match_opcode 'G_OR' |
1398 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7), |
1399 | 0 | GIR_Done, |
1400 | | // Label 77: @1377 |
1401 | 0 | GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1393), // Rule ID 38 // |
1402 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
1403 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23), |
1404 | | // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_OR' |
1405 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16), |
1406 | 0 | GIR_Done, |
1407 | | // Label 78: @1393 |
1408 | 0 | GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1409), // Rule ID 87 // |
1409 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled), |
1410 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
1411 | | // Combiner Rule #49: undef_to_negative_one; wip_match_opcode 'G_OR' |
1412 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner26), |
1413 | 0 | GIR_Done, |
1414 | | // Label 79: @1409 |
1415 | 0 | GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1425), // Rule ID 108 // |
1416 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled), |
1417 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48), |
1418 | | // Combiner Rule #60: or_to_bsp; wip_match_opcode 'G_OR' |
1419 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner29), |
1420 | 0 | GIR_Done, |
1421 | | // Label 80: @1425 |
1422 | 0 | GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1451), // Rule ID 59 // |
1423 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled), |
1424 | | // MIs[0] dst |
1425 | | // No operand predicates |
1426 | | // MIs[0] src |
1427 | | // No operand predicates |
1428 | | // MIs[0] src |
1429 | 0 | GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1, |
1430 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1431 | | // Combiner Rule #28: binop_same_val @ [__binop_same_val_match_0[1]] |
1432 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1433 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1434 | 0 | GIR_Done, |
1435 | | // Label 81: @1451 |
1436 | 0 | GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1476), // Rule ID 50 // |
1437 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
1438 | | // MIs[0] dst |
1439 | | // No operand predicates |
1440 | | // MIs[0] lhs |
1441 | | // No operand predicates |
1442 | | // MIs[0] Operand 2 |
1443 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1444 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1445 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[2]] |
1446 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1447 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1448 | 0 | GIR_Done, |
1449 | | // Label 82: @1476 |
1450 | 0 | GIM_Reject, |
1451 | | // Label 10: @1477 |
1452 | 0 | GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1493), // Rule ID 13 // |
1453 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled), |
1454 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6), |
1455 | | // Combiner Rule #6: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR' |
1456 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner6), |
1457 | 0 | GIR_Done, |
1458 | | // Label 83: @1493 |
1459 | 0 | GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1509), // Rule ID 15 // |
1460 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled), |
1461 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8), |
1462 | | // Combiner Rule #8: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR' |
1463 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner8), |
1464 | 0 | GIR_Done, |
1465 | | // Label 84: @1509 |
1466 | 0 | GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1525), // Rule ID 39 // |
1467 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
1468 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23), |
1469 | | // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_XOR' |
1470 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16), |
1471 | 0 | GIR_Done, |
1472 | | // Label 85: @1525 |
1473 | 0 | GIM_Try, /*On fail goto*//*Label 86*/ GIMT_Encode4(1541), // Rule ID 99 // |
1474 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled), |
1475 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
1476 | | // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_XOR' |
1477 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
1478 | 0 | GIR_Done, |
1479 | | // Label 86: @1541 |
1480 | 0 | GIM_Try, /*On fail goto*//*Label 87*/ GIMT_Encode4(1566), // Rule ID 51 // |
1481 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
1482 | | // MIs[0] dst |
1483 | | // No operand predicates |
1484 | | // MIs[0] lhs |
1485 | | // No operand predicates |
1486 | | // MIs[0] Operand 2 |
1487 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1488 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1489 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[3]] |
1490 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1491 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1492 | 0 | GIR_Done, |
1493 | | // Label 87: @1566 |
1494 | 0 | GIM_Reject, |
1495 | | // Label 11: @1567 |
1496 | 0 | GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(1583), // Rule ID 104 // |
1497 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled), |
1498 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner45), |
1499 | | // Combiner Rule #57: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES' |
1500 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1501 | 0 | GIR_Done, |
1502 | | // Label 88: @1583 |
1503 | 0 | GIM_Reject, |
1504 | | // Label 12: @1584 |
1505 | 0 | GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(1600), // Rule ID 29 // |
1506 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled), |
1507 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19), |
1508 | | // Combiner Rule #19: merge_unmerge; wip_match_opcode 'G_MERGE_VALUES' |
1509 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7), |
1510 | 0 | GIR_Done, |
1511 | | // Label 89: @1600 |
1512 | 0 | GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1616), // Rule ID 33 // |
1513 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled), |
1514 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22), |
1515 | | // Combiner Rule #23: fold_merge_to_zext; wip_match_opcode 'G_MERGE_VALUES' |
1516 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner15), |
1517 | 0 | GIR_Done, |
1518 | | // Label 90: @1616 |
1519 | 0 | GIM_Reject, |
1520 | | // Label 13: @1617 |
1521 | 0 | GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(1633), // Rule ID 74 // |
1522 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled), |
1523 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31), |
1524 | | // Combiner Rule #38: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR' |
1525 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7), |
1526 | 0 | GIR_Done, |
1527 | | // Label 91: @1633 |
1528 | 0 | GIM_Reject, |
1529 | | // Label 14: @1634 |
1530 | 0 | GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1650), // Rule ID 73 // |
1531 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled), |
1532 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31), |
1533 | | // Combiner Rule #38: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC' |
1534 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7), |
1535 | 0 | GIR_Done, |
1536 | | // Label 92: @1650 |
1537 | 0 | GIM_Reject, |
1538 | | // Label 15: @1651 |
1539 | 0 | GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1677), // Rule ID 66 // |
1540 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled), |
1541 | | // MIs[0] dst |
1542 | | // No operand predicates |
1543 | | // MIs[0] t |
1544 | 0 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
1545 | 0 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR), |
1546 | | // MIs[1] ptr |
1547 | | // No operand predicates |
1548 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28), |
1549 | 0 | GIM_CheckIsSafeToFold, /*InsnID*/1, |
1550 | | // Combiner Rule #32: i2p_to_p2i |
1551 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner20), |
1552 | 0 | GIR_Done, |
1553 | | // Label 93: @1677 |
1554 | 0 | GIM_Reject, |
1555 | | // Label 16: @1678 |
1556 | 0 | GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1694), // Rule ID 65 // |
1557 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled), |
1558 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27), |
1559 | | // Combiner Rule #31: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR' |
1560 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner19), |
1561 | 0 | GIR_Done, |
1562 | | // Label 94: @1694 |
1563 | 0 | GIM_Reject, |
1564 | | // Label 17: @1695 |
1565 | 0 | GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1721), // Rule ID 77 // |
1566 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled), |
1567 | | // MIs[0] dst |
1568 | | // No operand predicates |
1569 | | // MIs[0] src1 |
1570 | 0 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
1571 | 0 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST), |
1572 | | // MIs[1] src0 |
1573 | | // No operand predicates |
1574 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner34), |
1575 | 0 | GIM_CheckIsSafeToFold, /*InsnID*/1, |
1576 | | // Combiner Rule #41: bitcast_bitcast_fold |
1577 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner21), |
1578 | 0 | GIR_Done, |
1579 | | // Label 95: @1721 |
1580 | 0 | GIM_Reject, |
1581 | | // Label 18: @1722 |
1582 | 0 | GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1738), // Rule ID 1 // |
1583 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled), |
1584 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1), |
1585 | | // Combiner Rule #1: extending_loads; wip_match_opcode 'G_LOAD' |
1586 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner1), |
1587 | 0 | GIR_Done, |
1588 | | // Label 96: @1738 |
1589 | 0 | GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1754), // Rule ID 5 // |
1590 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled), |
1591 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3), |
1592 | | // Combiner Rule #3: combine_indexed_load_store; wip_match_opcode 'G_LOAD' |
1593 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner3), |
1594 | 0 | GIR_Done, |
1595 | | // Label 97: @1754 |
1596 | 0 | GIM_Reject, |
1597 | | // Label 19: @1755 |
1598 | 0 | GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1771), // Rule ID 2 // |
1599 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled), |
1600 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1), |
1601 | | // Combiner Rule #1: extending_loads; wip_match_opcode 'G_SEXTLOAD' |
1602 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner1), |
1603 | 0 | GIR_Done, |
1604 | | // Label 98: @1771 |
1605 | 0 | GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1787), // Rule ID 6 // |
1606 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled), |
1607 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3), |
1608 | | // Combiner Rule #3: combine_indexed_load_store; wip_match_opcode 'G_SEXTLOAD' |
1609 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner3), |
1610 | 0 | GIR_Done, |
1611 | | // Label 99: @1787 |
1612 | 0 | GIM_Reject, |
1613 | | // Label 20: @1788 |
1614 | 0 | GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1804), // Rule ID 3 // |
1615 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled), |
1616 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1), |
1617 | | // Combiner Rule #1: extending_loads; wip_match_opcode 'G_ZEXTLOAD' |
1618 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner1), |
1619 | 0 | GIR_Done, |
1620 | | // Label 100: @1804 |
1621 | 0 | GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1820), // Rule ID 7 // |
1622 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled), |
1623 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3), |
1624 | | // Combiner Rule #3: combine_indexed_load_store; wip_match_opcode 'G_ZEXTLOAD' |
1625 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner3), |
1626 | 0 | GIR_Done, |
1627 | | // Label 101: @1820 |
1628 | 0 | GIM_Reject, |
1629 | | // Label 21: @1821 |
1630 | 0 | GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1837), // Rule ID 8 // |
1631 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled), |
1632 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3), |
1633 | | // Combiner Rule #3: combine_indexed_load_store; wip_match_opcode 'G_STORE' |
1634 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner3), |
1635 | 0 | GIR_Done, |
1636 | | // Label 102: @1837 |
1637 | 0 | GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1853), // Rule ID 82 // |
1638 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled), |
1639 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner38), |
1640 | | // Combiner Rule #46: split_store_zero_128; wip_match_opcode 'G_STORE' |
1641 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner23), |
1642 | 0 | GIR_Done, |
1643 | | // Label 103: @1853 |
1644 | 0 | GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1869), // Rule ID 103 // |
1645 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled), |
1646 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner44), |
1647 | | // Combiner Rule #56: erase_undef_store; wip_match_opcode 'G_STORE' |
1648 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner28), |
1649 | 0 | GIR_Done, |
1650 | | // Label 104: @1869 |
1651 | 0 | GIM_Reject, |
1652 | | // Label 22: @1870 |
1653 | 0 | GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1886), // Rule ID 10 // |
1654 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled), |
1655 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5), |
1656 | | // Combiner Rule #5: mutate_anyext_to_zext; wip_match_opcode 'G_ANYEXT' |
1657 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner5), |
1658 | 0 | GIR_Done, |
1659 | | // Label 105: @1886 |
1660 | 0 | GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1902), // Rule ID 67 // |
1661 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled), |
1662 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner29), |
1663 | | // Combiner Rule #33: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT' |
1664 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7), |
1665 | 0 | GIR_Done, |
1666 | | // Label 106: @1902 |
1667 | 0 | GIM_Reject, |
1668 | | // Label 23: @1903 |
1669 | 0 | GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1919), // Rule ID 75 // |
1670 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled), |
1671 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32), |
1672 | | // Combiner Rule #39: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC' |
1673 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7), |
1674 | 0 | GIR_Done, |
1675 | | // Label 107: @1919 |
1676 | 0 | GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1935), // Rule ID 76 // |
1677 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled), |
1678 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner33), |
1679 | | // Combiner Rule #40: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC' |
1680 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7), |
1681 | 0 | GIR_Done, |
1682 | | // Label 108: @1935 |
1683 | 0 | GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1951), // Rule ID 100 // |
1684 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled), |
1685 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
1686 | | // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_TRUNC' |
1687 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
1688 | 0 | GIR_Done, |
1689 | | // Label 109: @1951 |
1690 | 0 | GIM_Reject, |
1691 | | // Label 24: @1952 |
1692 | 0 | GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1968), // Rule ID 9 // |
1693 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled), |
1694 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4), |
1695 | | // Combiner Rule #4: sext_trunc_sextload; wip_match_opcode 'G_SEXT_INREG' |
1696 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner4), |
1697 | 0 | GIR_Done, |
1698 | | // Label 110: @1968 |
1699 | 0 | GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1984), // Rule ID 19 // |
1700 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled), |
1701 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12), |
1702 | | // Combiner Rule #12: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG' |
1703 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11), |
1704 | 0 | GIR_Done, |
1705 | | // Label 111: @1984 |
1706 | 0 | GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(2000), // Rule ID 20 // |
1707 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled), |
1708 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13), |
1709 | | // Combiner Rule #13: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG' |
1710 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1711 | 0 | GIR_Done, |
1712 | | // Label 112: @2000 |
1713 | 0 | GIM_Reject, |
1714 | | // Label 25: @2001 |
1715 | 0 | GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(2017), // Rule ID 40 // |
1716 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
1717 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23), |
1718 | | // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_SHL' |
1719 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16), |
1720 | 0 | GIR_Done, |
1721 | | // Label 113: @2017 |
1722 | 0 | GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(2033), // Rule ID 88 // |
1723 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled), |
1724 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40), |
1725 | | // Combiner Rule #50: binop_left_undef_to_zero; wip_match_opcode 'G_SHL' |
1726 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25), |
1727 | 0 | GIR_Done, |
1728 | | // Label 114: @2033 |
1729 | 0 | GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(2049), // Rule ID 91 // |
1730 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled), |
1731 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner41), |
1732 | | // Combiner Rule #51: binop_right_undef_to_undef; wip_match_opcode 'G_SHL' |
1733 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
1734 | 0 | GIR_Done, |
1735 | | // Label 115: @2049 |
1736 | 0 | GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(2074), // Rule ID 52 // |
1737 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
1738 | | // MIs[0] dst |
1739 | | // No operand predicates |
1740 | | // MIs[0] lhs |
1741 | | // No operand predicates |
1742 | | // MIs[0] Operand 2 |
1743 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1744 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1745 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[4]] |
1746 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1747 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1748 | 0 | GIR_Done, |
1749 | | // Label 116: @2074 |
1750 | 0 | GIM_Reject, |
1751 | | // Label 26: @2075 |
1752 | 0 | GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(2091), // Rule ID 23 // |
1753 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled), |
1754 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15), |
1755 | | // Combiner Rule #15: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR' |
1756 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1757 | 0 | GIR_Done, |
1758 | | // Label 117: @2091 |
1759 | 0 | GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(2107), // Rule ID 25 // |
1760 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled), |
1761 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16), |
1762 | | // Combiner Rule #16: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR' |
1763 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1764 | 0 | GIR_Done, |
1765 | | // Label 118: @2107 |
1766 | 0 | GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(2123), // Rule ID 41 // |
1767 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
1768 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23), |
1769 | | // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_LSHR' |
1770 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16), |
1771 | 0 | GIR_Done, |
1772 | | // Label 119: @2123 |
1773 | 0 | GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(2139), // Rule ID 93 // |
1774 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled), |
1775 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner41), |
1776 | | // Combiner Rule #51: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR' |
1777 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
1778 | 0 | GIR_Done, |
1779 | | // Label 120: @2139 |
1780 | 0 | GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(2164), // Rule ID 54 // |
1781 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
1782 | | // MIs[0] dst |
1783 | | // No operand predicates |
1784 | | // MIs[0] lhs |
1785 | | // No operand predicates |
1786 | | // MIs[0] Operand 2 |
1787 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1788 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1789 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[6]] |
1790 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1791 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1792 | 0 | GIR_Done, |
1793 | | // Label 121: @2164 |
1794 | 0 | GIM_Reject, |
1795 | | // Label 27: @2165 |
1796 | 0 | GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(2181), // Rule ID 22 // |
1797 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled), |
1798 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15), |
1799 | | // Combiner Rule #15: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR' |
1800 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1801 | 0 | GIR_Done, |
1802 | | // Label 122: @2181 |
1803 | 0 | GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(2197), // Rule ID 24 // |
1804 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled), |
1805 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16), |
1806 | | // Combiner Rule #16: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR' |
1807 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1808 | 0 | GIR_Done, |
1809 | | // Label 123: @2197 |
1810 | 0 | GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(2213), // Rule ID 42 // |
1811 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled), |
1812 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23), |
1813 | | // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_ASHR' |
1814 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16), |
1815 | 0 | GIR_Done, |
1816 | | // Label 124: @2213 |
1817 | 0 | GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(2229), // Rule ID 92 // |
1818 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled), |
1819 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner41), |
1820 | | // Combiner Rule #51: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR' |
1821 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
1822 | 0 | GIR_Done, |
1823 | | // Label 125: @2229 |
1824 | 0 | GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(2254), // Rule ID 53 // |
1825 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
1826 | | // MIs[0] dst |
1827 | | // No operand predicates |
1828 | | // MIs[0] lhs |
1829 | | // No operand predicates |
1830 | | // MIs[0] Operand 2 |
1831 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1832 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1833 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[5]] |
1834 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1835 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1836 | 0 | GIR_Done, |
1837 | | // Label 126: @2254 |
1838 | 0 | GIM_Reject, |
1839 | | // Label 28: @2255 |
1840 | 0 | GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(2271), // Rule ID 26 // |
1841 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled), |
1842 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17), |
1843 | | // Combiner Rule #17: rotate_out_of_range; wip_match_opcode 'G_ROTR' |
1844 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner12), |
1845 | 0 | GIR_Done, |
1846 | | // Label 127: @2271 |
1847 | 0 | GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(2296), // Rule ID 57 // |
1848 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
1849 | | // MIs[0] dst |
1850 | | // No operand predicates |
1851 | | // MIs[0] lhs |
1852 | | // No operand predicates |
1853 | | // MIs[0] Operand 2 |
1854 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1855 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1856 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[9]] |
1857 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1858 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1859 | 0 | GIR_Done, |
1860 | | // Label 128: @2296 |
1861 | 0 | GIM_Reject, |
1862 | | // Label 29: @2297 |
1863 | 0 | GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(2313), // Rule ID 27 // |
1864 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled), |
1865 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17), |
1866 | | // Combiner Rule #17: rotate_out_of_range; wip_match_opcode 'G_ROTL' |
1867 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner12), |
1868 | 0 | GIR_Done, |
1869 | | // Label 129: @2313 |
1870 | 0 | GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(2338), // Rule ID 56 // |
1871 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
1872 | | // MIs[0] dst |
1873 | | // No operand predicates |
1874 | | // MIs[0] lhs |
1875 | | // No operand predicates |
1876 | | // MIs[0] Operand 2 |
1877 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
1878 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1879 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[8]] |
1880 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1881 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1882 | 0 | GIR_Done, |
1883 | | // Label 130: @2338 |
1884 | 0 | GIM_Reject, |
1885 | | // Label 30: @2339 |
1886 | 0 | GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(2355), // Rule ID 28 // |
1887 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled), |
1888 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18), |
1889 | | // Combiner Rule #18: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP' |
1890 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner13), |
1891 | 0 | GIR_Done, |
1892 | | // Label 131: @2355 |
1893 | 0 | GIM_Reject, |
1894 | | // Label 31: @2356 |
1895 | 0 | GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(2372), // Rule ID 31 // |
1896 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled), |
1897 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20), |
1898 | | // Combiner Rule #21: select_constant_cmp; wip_match_opcode 'G_SELECT' |
1899 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner14), |
1900 | 0 | GIR_Done, |
1901 | | // Label 132: @2372 |
1902 | 0 | GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(2388), // Rule ID 32 // |
1903 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled), |
1904 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21), |
1905 | | // Combiner Rule #22: match_selects; wip_match_opcode 'G_SELECT' |
1906 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1907 | 0 | GIR_Done, |
1908 | | // Label 133: @2388 |
1909 | 0 | GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(2404), // Rule ID 47 // |
1910 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled), |
1911 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25), |
1912 | | // Combiner Rule #26: select_same_val; wip_match_opcode 'G_SELECT' |
1913 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner18), |
1914 | 0 | GIR_Done, |
1915 | | // Label 134: @2404 |
1916 | 0 | GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2420), // Rule ID 107 // |
1917 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled), |
1918 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner47), |
1919 | | // Combiner Rule #59: select_to_minmax; wip_match_opcode 'G_SELECT' |
1920 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2), |
1921 | 0 | GIR_Done, |
1922 | | // Label 135: @2420 |
1923 | 0 | GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2451), // Rule ID 30 // |
1924 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled), |
1925 | | // MIs[0] dst |
1926 | | // No operand predicates |
1927 | | // MIs[0] undef |
1928 | 0 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
1929 | 0 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF), |
1930 | | // MIs[0] x |
1931 | | // No operand predicates |
1932 | | // MIs[0] y |
1933 | | // No operand predicates |
1934 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3, |
1935 | 0 | GIM_CheckIsSafeToFold, /*InsnID*/1, |
1936 | | // Combiner Rule #20: select_undef_cmp |
1937 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3, |
1938 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1939 | 0 | GIR_Done, |
1940 | | // Label 136: @2451 |
1941 | 0 | GIM_Reject, |
1942 | | // Label 32: @2452 |
1943 | 0 | GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2468), // Rule ID 43 // |
1944 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled), |
1945 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24), |
1946 | | // Combiner Rule #25: constant_fold_fp_binop; wip_match_opcode 'G_FADD' |
1947 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17), |
1948 | 0 | GIR_Done, |
1949 | | // Label 137: @2468 |
1950 | 0 | GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2493), // Rule ID 79 // |
1951 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled), |
1952 | | // MIs[0] dst |
1953 | | // No operand predicates |
1954 | | // MIs[0] x |
1955 | | // No operand predicates |
1956 | | // MIs[0] y |
1957 | | // No operand predicates |
1958 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner35), |
1959 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1960 | | // Combiner Rule #43: right_identity_neg_zero_fp |
1961 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1962 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1963 | 0 | GIR_Done, |
1964 | | // Label 138: @2493 |
1965 | 0 | GIM_Reject, |
1966 | | // Label 33: @2494 |
1967 | 0 | GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2510), // Rule ID 44 // |
1968 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled), |
1969 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24), |
1970 | | // Combiner Rule #25: constant_fold_fp_binop; wip_match_opcode 'G_FSUB' |
1971 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17), |
1972 | 0 | GIR_Done, |
1973 | | // Label 139: @2510 |
1974 | 0 | GIM_Reject, |
1975 | | // Label 34: @2511 |
1976 | 0 | GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2527), // Rule ID 45 // |
1977 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled), |
1978 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24), |
1979 | | // Combiner Rule #25: constant_fold_fp_binop; wip_match_opcode 'G_FMUL' |
1980 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17), |
1981 | 0 | GIR_Done, |
1982 | | // Label 140: @2527 |
1983 | 0 | GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2552), // Rule ID 70 // |
1984 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled), |
1985 | | // MIs[0] dst |
1986 | | // No operand predicates |
1987 | | // MIs[0] x |
1988 | | // No operand predicates |
1989 | | // MIs[0] y |
1990 | | // No operand predicates |
1991 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30), |
1992 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1993 | | // Combiner Rule #36: right_identity_one_fp |
1994 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
1995 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
1996 | 0 | GIR_Done, |
1997 | | // Label 141: @2552 |
1998 | 0 | GIM_Reject, |
1999 | | // Label 35: @2553 |
2000 | 0 | GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2569), // Rule ID 46 // |
2001 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled), |
2002 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24), |
2003 | | // Combiner Rule #25: constant_fold_fp_binop; wip_match_opcode 'G_FDIV' |
2004 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17), |
2005 | 0 | GIR_Done, |
2006 | | // Label 142: @2569 |
2007 | 0 | GIM_Reject, |
2008 | | // Label 36: @2570 |
2009 | 0 | GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2601), // Rule ID 68 // |
2010 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled), |
2011 | | // MIs[0] dst |
2012 | | // No operand predicates |
2013 | | // MIs[0] t |
2014 | 0 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
2015 | 0 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG), |
2016 | | // MIs[1] src |
2017 | | // No operand predicates |
2018 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
2019 | 0 | GIM_CheckIsSafeToFold, /*InsnID*/1, |
2020 | | // Combiner Rule #34: fneg_fneg_fold |
2021 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1, |
2022 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
2023 | 0 | GIR_Done, |
2024 | | // Label 143: @2601 |
2025 | 0 | GIM_Reject, |
2026 | | // Label 37: @2602 |
2027 | 0 | GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2628), // Rule ID 78 // |
2028 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled), |
2029 | | // MIs[0] dst |
2030 | | // No operand predicates |
2031 | | // MIs[0] src1 |
2032 | 0 | GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1] |
2033 | 0 | GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT), |
2034 | | // MIs[1] src0 |
2035 | | // No operand predicates |
2036 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner34), |
2037 | 0 | GIM_CheckIsSafeToFold, /*InsnID*/1, |
2038 | | // Combiner Rule #42: fptrunc_fpext_fold |
2039 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner21), |
2040 | 0 | GIR_Done, |
2041 | | // Label 144: @2628 |
2042 | 0 | GIM_Reject, |
2043 | | // Label 38: @2629 |
2044 | 0 | GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2645), // Rule ID 96 // |
2045 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled), |
2046 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
2047 | | // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_FPTOSI' |
2048 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
2049 | 0 | GIR_Done, |
2050 | | // Label 145: @2645 |
2051 | 0 | GIM_Reject, |
2052 | | // Label 39: @2646 |
2053 | 0 | GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2662), // Rule ID 97 // |
2054 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled), |
2055 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
2056 | | // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_FPTOUI' |
2057 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
2058 | 0 | GIR_Done, |
2059 | | // Label 146: @2662 |
2060 | 0 | GIM_Reject, |
2061 | | // Label 40: @2663 |
2062 | 0 | GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2679), // Rule ID 84 // |
2063 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled), |
2064 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
2065 | | // Combiner Rule #47: undef_to_fp_zero; wip_match_opcode 'G_SITOFP' |
2066 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner24), |
2067 | 0 | GIR_Done, |
2068 | | // Label 147: @2679 |
2069 | 0 | GIM_Reject, |
2070 | | // Label 41: @2680 |
2071 | 0 | GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2696), // Rule ID 83 // |
2072 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled), |
2073 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39), |
2074 | | // Combiner Rule #47: undef_to_fp_zero; wip_match_opcode 'G_UITOFP' |
2075 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner24), |
2076 | 0 | GIR_Done, |
2077 | | // Label 148: @2696 |
2078 | 0 | GIM_Reject, |
2079 | | // Label 42: @2697 |
2080 | 0 | GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2713), // Rule ID 80 // |
2081 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled), |
2082 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner36), |
2083 | | // Combiner Rule #44: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD' |
2084 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22), |
2085 | 0 | GIR_Done, |
2086 | | // Label 149: @2713 |
2087 | 0 | GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2738), // Rule ID 55 // |
2088 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled), |
2089 | | // MIs[0] dst |
2090 | | // No operand predicates |
2091 | | // MIs[0] lhs |
2092 | | // No operand predicates |
2093 | | // MIs[0] Operand 2 |
2094 | 0 | GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0, |
2095 | 0 | GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
2096 | | // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[7]] |
2097 | 0 | GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1, |
2098 | 0 | GIR_EraseFromParent, /*InsnID*/0, |
2099 | 0 | GIR_Done, |
2100 | | // Label 150: @2738 |
2101 | 0 | GIM_Reject, |
2102 | | // Label 43: @2739 |
2103 | 0 | GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2755), // Rule ID 94 // |
2104 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled), |
2105 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40), |
2106 | | // Combiner Rule #52: unary_undef_to_zero; wip_match_opcode 'G_ABS' |
2107 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25), |
2108 | 0 | GIR_Done, |
2109 | | // Label 151: @2755 |
2110 | 0 | GIM_Reject, |
2111 | | // Label 44: @2756 |
2112 | 0 | GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2772), // Rule ID 105 // |
2113 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled), |
2114 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner46), |
2115 | | // Combiner Rule #58: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT' |
2116 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
2117 | 0 | GIR_Done, |
2118 | | // Label 152: @2772 |
2119 | 0 | GIM_Reject, |
2120 | | // Label 45: @2773 |
2121 | 0 | GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2789), // Rule ID 16 // |
2122 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled), |
2123 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9), |
2124 | | // Combiner Rule #9: extractvecelt_pairwise_add; wip_match_opcode 'G_EXTRACT_VECTOR_ELT' |
2125 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner9), |
2126 | 0 | GIR_Done, |
2127 | | // Label 153: @2789 |
2128 | 0 | GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2805), // Rule ID 106 // |
2129 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled), |
2130 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner46), |
2131 | | // Combiner Rule #58: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT' |
2132 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
2133 | 0 | GIR_Done, |
2134 | | // Label 154: @2805 |
2135 | 0 | GIM_Reject, |
2136 | | // Label 46: @2806 |
2137 | 0 | GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2822), // Rule ID 101 // |
2138 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled), |
2139 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner42), |
2140 | | // Combiner Rule #54: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR' |
2141 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
2142 | 0 | GIR_Done, |
2143 | | // Label 155: @2822 |
2144 | 0 | GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2838), // Rule ID 102 // |
2145 | 0 | GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled), |
2146 | 0 | GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner43), |
2147 | | // Combiner Rule #55: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR' |
2148 | 0 | GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27), |
2149 | 0 | GIR_Done, |
2150 | | // Label 156: @2838 |
2151 | 0 | GIM_Reject, |
2152 | | // Label 47: @2839 |
2153 | 0 | GIM_Reject, |
2154 | 0 | }; // Size: 2840 bytes |
2155 | 0 | return MatchTable0; |
2156 | 0 | } |
2157 | | #undef GIMT_Encode2 |
2158 | | #undef GIMT_Encode4 |
2159 | | #undef GIMT_Encode8 |
2160 | | |
2161 | | #endif // ifdef GET_GICOMBINER_IMPL |
2162 | | |
2163 | | #ifdef GET_GICOMBINER_CONSTRUCTOR_INITS |
2164 | | AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)), |
2165 | | AvailableFunctionFeatures() |
2166 | | #endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS |
2167 | | #ifdef GET_GICOMBINER_CONSTRUCTOR_INITS |
2168 | | , State(0), |
2169 | | ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers) |
2170 | | #endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS |
2171 | | |