1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* AMDGPURegBankCombinerImpl 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"
11namespace llvm {
12extern cl::OptionCategory GICombinerOptionCategory;
13} // end namespace llvm
14#endif // ifdef GET_GICOMBINER_DEPS
15
16#ifdef GET_GICOMBINER_TYPES
17struct AMDGPURegBankCombinerImplRuleConfig {
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
26static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
27 uint64_t I;
28 // getAtInteger(...) returns false on success
29 bool Parsed = !RuleIdentifier.getAsInteger(Radix: 0, Result&: I);
30 if (Parsed)
31 return I;
32
33#ifndef NDEBUG
34 switch (RuleIdentifier.size()) {
35 default: break;
36 case 10: // 3 strings to match.
37 switch (RuleIdentifier[0]) {
38 default: break;
39 case 'i': // 1 string to match.
40 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
41 break;
42 return 15; // "i2p_to_p2i"
43 case 'p': // 1 string to match.
44 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
45 break;
46 return 14; // "p2i_to_i2p"
47 case 's': // 1 string to match.
48 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
49 break;
50 return 41; // "sext_trunc"
51 }
52 break;
53 case 11: // 2 strings to match.
54 switch (RuleIdentifier[0]) {
55 default: break;
56 case 'a': // 1 string to match.
57 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
58 break;
59 return 20; // "add_sub_reg"
60 case 'u': // 1 string to match.
61 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
62 break;
63 return 1; // "unmerge_cst"
64 }
65 break;
66 case 12: // 2 strings to match.
67 switch (RuleIdentifier[0]) {
68 default: break;
69 case 's': // 1 string to match.
70 if (memcmp(RuleIdentifier.data()+1, "ext_of_sext", 11) != 0)
71 break;
72 return 35; // "sext_of_sext"
73 case 'z': // 1 string to match.
74 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
75 break;
76 return 33; // "zext_of_zext"
77 }
78 break;
79 case 13: // 3 strings to match.
80 switch (RuleIdentifier[0]) {
81 default: break;
82 case 'r': // 1 string to match.
83 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
84 break;
85 return 28; // "redundant_and"
86 case 'u': // 2 strings to match.
87 if (memcmp(RuleIdentifier.data()+1, "nmerge_", 7) != 0)
88 break;
89 switch (RuleIdentifier[8]) {
90 default: break;
91 case 'm': // 1 string to match.
92 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
93 break;
94 return 0; // "unmerge_merge"
95 case 'u': // 1 string to match.
96 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
97 break;
98 return 2; // "unmerge_undef"
99 }
100 break;
101 }
102 break;
103 case 14: // 6 strings to match.
104 switch (RuleIdentifier[0]) {
105 default: break;
106 case 'a': // 2 strings to match.
107 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
108 break;
109 switch (RuleIdentifier[10]) {
110 default: break;
111 case 's': // 1 string to match.
112 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
113 break;
114 return 39; // "anyext_of_sext"
115 case 'z': // 1 string to match.
116 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
117 break;
118 return 38; // "anyext_of_zext"
119 }
120 break;
121 case 'b': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
123 break;
124 return 11; // "binop_same_val"
125 case 'f': // 1 string to match.
126 if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0)
127 break;
128 return 17; // "fneg_fneg_fold"
129 case 's': // 1 string to match.
130 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
131 break;
132 return 36; // "sext_of_anyext"
133 case 'z': // 1 string to match.
134 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
135 break;
136 return 34; // "zext_of_anyext"
137 }
138 break;
139 case 15: // 2 strings to match.
140 switch (RuleIdentifier[0]) {
141 default: break;
142 case 's': // 1 string to match.
143 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
144 break;
145 return 9; // "select_same_val"
146 case 'z': // 1 string to match.
147 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
148 break;
149 return 3; // "zext_trunc_fold"
150 }
151 break;
152 case 16: // 3 strings to match.
153 switch (RuleIdentifier[0]) {
154 default: break;
155 case 'a': // 1 string to match.
156 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
157 break;
158 return 37; // "anyext_of_anyext"
159 case 't': // 2 strings to match.
160 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
161 break;
162 switch (RuleIdentifier[12]) {
163 default: break;
164 case 's': // 1 string to match.
165 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
166 break;
167 return 31; // "truncate_of_sext"
168 case 'z': // 1 string to match.
169 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
170 break;
171 return 30; // "truncate_of_zext"
172 }
173 break;
174 }
175 break;
176 case 17: // 2 strings to match.
177 switch (RuleIdentifier[0]) {
178 default: break;
179 case 'a': // 1 string to match.
180 if (memcmp(RuleIdentifier.data()+1, "nyext_trunc_fold", 16) != 0)
181 break;
182 return 16; // "anyext_trunc_fold"
183 case 'f': // 1 string to match.
184 if (memcmp(RuleIdentifier.data()+1, "p_minmax_to_med3", 16) != 0)
185 break;
186 return 7; // "fp_minmax_to_med3"
187 }
188 break;
189 case 18: // 5 strings to match.
190 switch (RuleIdentifier[0]) {
191 default: break;
192 case 'b': // 1 string to match.
193 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
194 break;
195 return 12; // "binop_left_to_zero"
196 case 'f': // 2 strings to match.
197 if (RuleIdentifier[1] != 'p')
198 break;
199 switch (RuleIdentifier[2]) {
200 default: break;
201 case '_': // 1 string to match.
202 if (memcmp(RuleIdentifier.data()+3, "minmax_to_clamp", 15) != 0)
203 break;
204 return 6; // "fp_minmax_to_clamp"
205 case 't': // 1 string to match.
206 if (memcmp(RuleIdentifier.data()+3, "runc_fpext_fold", 15) != 0)
207 break;
208 return 25; // "fptrunc_fpext_fold"
209 }
210 break;
211 case 'i': // 1 string to match.
212 if (memcmp(RuleIdentifier.data()+1, "nt_minmax_to_med3", 17) != 0)
213 break;
214 return 4; // "int_minmax_to_med3"
215 case 't': // 1 string to match.
216 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
217 break;
218 return 32; // "truncate_of_anyext"
219 }
220 break;
221 case 19: // 3 strings to match.
222 switch (RuleIdentifier[0]) {
223 default: break;
224 case 'b': // 1 string to match.
225 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
226 break;
227 return 13; // "binop_right_to_zero"
228 case 'p': // 1 string to match.
229 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
230 break;
231 return 5; // "ptr_add_immed_chain"
232 case 'r': // 1 string to match.
233 if (memcmp(RuleIdentifier.data()+1, "ight_identity_zero", 18) != 0)
234 break;
235 return 10; // "right_identity_zero"
236 }
237 break;
238 case 20: // 1 string to match.
239 if (memcmp(RuleIdentifier.data()+0, "bitcast_bitcast_fold", 20) != 0)
240 break;
241 return 24; // "bitcast_bitcast_fold"
242 case 21: // 3 strings to match.
243 switch (RuleIdentifier[0]) {
244 default: break;
245 case 'c': // 2 strings to match.
246 switch (RuleIdentifier[1]) {
247 default: break;
248 case 'a': // 1 string to match.
249 if (memcmp(RuleIdentifier.data()+2, "nonicalize_zext_shl", 19) != 0)
250 break;
251 return 44; // "canonicalize_zext_shl"
252 case 'o': // 1 string to match.
253 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_cast_op", 19) != 0)
254 break;
255 return 29; // "constant_fold_cast_op"
256 }
257 break;
258 case 'r': // 1 string to match.
259 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
260 break;
261 return 19; // "right_identity_one_fp"
262 }
263 break;
264 case 22: // 4 strings to match.
265 switch (RuleIdentifier[0]) {
266 default: break;
267 case 'c': // 2 strings to match.
268 if (memcmp(RuleIdentifier.data()+1, "anonicalize_zext_", 17) != 0)
269 break;
270 switch (RuleIdentifier[18]) {
271 default: break;
272 case 'a': // 1 string to match.
273 if (memcmp(RuleIdentifier.data()+19, "shr", 3) != 0)
274 break;
275 return 43; // "canonicalize_zext_ashr"
276 case 'l': // 1 string to match.
277 if (memcmp(RuleIdentifier.data()+19, "shr", 3) != 0)
278 break;
279 return 42; // "canonicalize_zext_lshr"
280 }
281 break;
282 case 'r': // 1 string to match.
283 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
284 break;
285 return 18; // "right_identity_one_int"
286 case 't': // 1 string to match.
287 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
288 break;
289 return 22; // "trunc_buildvector_fold"
290 }
291 break;
292 case 24: // 2 strings to match.
293 switch (RuleIdentifier[0]) {
294 default: break;
295 case 'f': // 1 string to match.
296 if (memcmp(RuleIdentifier.data()+1, "med3_intrinsic_to_clamp", 23) != 0)
297 break;
298 return 8; // "fmed3_intrinsic_to_clamp"
299 case 's': // 1 string to match.
300 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_of_sext_inreg", 23) != 0)
301 break;
302 return 40; // "sext_inreg_of_sext_inreg"
303 }
304 break;
305 case 25: // 2 strings to match.
306 switch (RuleIdentifier[0]) {
307 default: break;
308 case 'b': // 1 string to match.
309 if (memcmp(RuleIdentifier.data()+1, "uildvector_identity_fold", 24) != 0)
310 break;
311 return 21; // "buildvector_identity_fold"
312 case 'r': // 1 string to match.
313 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
314 break;
315 return 27; // "right_identity_neg_one_fp"
316 }
317 break;
318 case 26: // 1 string to match.
319 if (memcmp(RuleIdentifier.data()+0, "right_identity_neg_zero_fp", 26) != 0)
320 break;
321 return 26; // "right_identity_neg_zero_fp"
322 case 27: // 1 string to match.
323 if (memcmp(RuleIdentifier.data()+0, "trunc_lshr_buildvector_fold", 27) != 0)
324 break;
325 return 23; // "trunc_lshr_buildvector_fold"
326 }
327#endif // ifndef NDEBUG
328
329 return std::nullopt;
330}
331static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
332 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split(Separator: '-');
333 if (!RangePair.second.empty()) {
334 const auto First = getRuleIdxForIdentifier(RuleIdentifier: RangePair.first);
335 const auto Last = getRuleIdxForIdentifier(RuleIdentifier: RangePair.second);
336 if (!First || !Last)
337 return std::nullopt;
338 if (First >= Last)
339 report_fatal_error(reason: "Beginning of range should be before end of range");
340 return {{*First, *Last + 1}};
341 }
342 if (RangePair.first == "*") {
343 return {{0, 45}};
344 }
345 const auto I = getRuleIdxForIdentifier(RuleIdentifier: RangePair.first);
346 if (!I)
347 return std::nullopt;
348 return {{*I, *I + 1}};
349}
350
351bool AMDGPURegBankCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
352 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
353 if (!MaybeRange)
354 return false;
355 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
356 DisabledRules.reset(Idx: I);
357 return true;
358}
359
360bool AMDGPURegBankCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
361 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
362 if (!MaybeRange)
363 return false;
364 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
365 DisabledRules.set(I);
366 return true;
367}
368
369static std::vector<std::string> AMDGPURegBankCombinerOption;
370static cl::list<std::string> AMDGPURegBankCombinerDisableOption(
371 "amdgpuregbankcombiner-disable-rule",
372 cl::desc("Disable one or more combiner rules temporarily in the AMDGPURegBankCombiner pass"),
373 cl::CommaSeparated,
374 cl::Hidden,
375 cl::cat(GICombinerOptionCategory),
376 cl::callback(CB: [](const std::string &Str) {
377 AMDGPURegBankCombinerOption.push_back(x: Str);
378 }));
379static cl::list<std::string> AMDGPURegBankCombinerOnlyEnableOption(
380 "amdgpuregbankcombiner-only-enable-rule",
381 cl::desc("Disable all rules in the AMDGPURegBankCombiner pass then re-enable the specified ones"),
382 cl::Hidden,
383 cl::cat(GICombinerOptionCategory),
384 cl::callback(CB: [](const std::string &CommaSeparatedArg) {
385 StringRef Str = CommaSeparatedArg;
386 AMDGPURegBankCombinerOption.push_back(x: "*");
387 do {
388 auto X = Str.split(Separator: ",");
389 AMDGPURegBankCombinerOption.push_back(x: ("!" + X.first).str());
390 Str = X.second;
391 } while (!Str.empty());
392 }));
393
394
395bool AMDGPURegBankCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
396 return !DisabledRules.test(Idx: RuleID);
397}
398bool AMDGPURegBankCombinerImplRuleConfig::parseCommandLineOption() {
399 for (StringRef Identifier : AMDGPURegBankCombinerOption) {
400 bool Enabled = Identifier.consume_front(Prefix: "!");
401 if (Enabled && !setRuleEnabled(Identifier))
402 return false;
403 if (!Enabled && !setRuleDisabled(Identifier))
404 return false;
405 }
406 return true;
407}
408
409#endif // ifdef GET_GICOMBINER_TYPES
410
411#ifdef GET_GICOMBINER_TYPES
412const unsigned MAX_SUBTARGET_PREDICATES = 0;
413using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
414#endif // ifdef GET_GICOMBINER_TYPES
415
416#ifdef GET_GICOMBINER_CLASS_MEMBERS
417PredicateBitset AvailableModuleFeatures;
418mutable PredicateBitset AvailableFunctionFeatures;
419PredicateBitset getAvailableFeatures() const {
420 return AvailableModuleFeatures | AvailableFunctionFeatures;
421}
422PredicateBitset
423computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const;
424PredicateBitset
425computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget,
426 const MachineFunction *MF) const;
427void setupGeneratedPerFunctionState(MachineFunction &MF) override;
428#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
429#ifdef GET_GICOMBINER_CLASS_MEMBERS
430 mutable MatcherState State;
431 typedef ComplexRendererFns(AMDGPURegBankCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
432 typedef void(AMDGPURegBankCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
433 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
434 static AMDGPURegBankCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
435 static AMDGPURegBankCombinerImpl::CustomRendererFn CustomRenderers[];
436 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
437 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
438 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
439 const uint8_t *getMatchTable() const override;
440 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
441 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
442 bool testSimplePredicate(unsigned PredicateID) const override;
443 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
444#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
445
446#ifdef GET_GICOMBINER_IMPL
447// LLT Objects.
448enum {
449 GILLT_s1,
450};
451const static size_t NumTypeObjects = 1;
452const static LLT TypeObjects[] = {
453 LLT::scalar(1),
454};
455
456// Bits for subtarget features that participate in instruction matching.
457enum SubtargetFeatureBits : uint8_t {
458};
459
460PredicateBitset AMDGPURegBankCombinerImpl::
461computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const {
462 PredicateBitset Features{};
463 return Features;
464}
465
466void AMDGPURegBankCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
467 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AMDGPUSubtarget *)&MF.getSubtarget(), &MF);
468}
469PredicateBitset AMDGPURegBankCombinerImpl::
470computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget, const MachineFunction *MF) const {
471 PredicateBitset Features{};
472 return Features;
473}
474
475// Feature bitsets.
476enum {
477 GIFBS_Invalid,
478};
479constexpr static PredicateBitset FeatureBitsets[] {
480 {}, // GIFBS_Invalid
481};
482
483// ComplexPattern predicates.
484enum {
485 GICP_Invalid,
486};
487// See constructor for table contents
488
489AMDGPURegBankCombinerImpl::ComplexMatcherMemFn
490AMDGPURegBankCombinerImpl::ComplexPredicateFns[] = {
491 nullptr, // GICP_Invalid
492};
493
494enum {
495 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
496 GICXXPred_MI_Predicate_GICombiner1,
497 GICXXPred_MI_Predicate_GICombiner2,
498};
499bool AMDGPURegBankCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
500 switch (PredicateID) {
501 case GICXXPred_MI_Predicate_GICombiner0: {
502 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
503 }
504 case GICXXPred_MI_Predicate_GICombiner1: {
505 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
506 }
507 case GICXXPred_MI_Predicate_GICombiner2: {
508 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
509 }
510 }
511 llvm_unreachable("Unknown predicate");
512 return false;
513}
514bool AMDGPURegBankCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
515 llvm_unreachable("Unknown predicate");
516 return false;
517}
518bool AMDGPURegBankCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
519 llvm_unreachable("Unknown predicate");
520 return false;
521}
522bool AMDGPURegBankCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
523 llvm_unreachable("Unknown predicate");
524 return false;
525}
526bool AMDGPURegBankCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
527 llvm_unreachable("Unknown predicate");
528 return false;
529}
530enum {
531 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
532 GICXXPred_Simple_IsRule1Enabled,
533 GICXXPred_Simple_IsRule2Enabled,
534 GICXXPred_Simple_IsRule3Enabled,
535 GICXXPred_Simple_IsRule4Enabled,
536 GICXXPred_Simple_IsRule5Enabled,
537 GICXXPred_Simple_IsRule6Enabled,
538 GICXXPred_Simple_IsRule7Enabled,
539 GICXXPred_Simple_IsRule8Enabled,
540 GICXXPred_Simple_IsRule9Enabled,
541 GICXXPred_Simple_IsRule10Enabled,
542 GICXXPred_Simple_IsRule11Enabled,
543 GICXXPred_Simple_IsRule12Enabled,
544 GICXXPred_Simple_IsRule13Enabled,
545 GICXXPred_Simple_IsRule14Enabled,
546 GICXXPred_Simple_IsRule15Enabled,
547 GICXXPred_Simple_IsRule16Enabled,
548 GICXXPred_Simple_IsRule17Enabled,
549 GICXXPred_Simple_IsRule18Enabled,
550 GICXXPred_Simple_IsRule19Enabled,
551 GICXXPred_Simple_IsRule20Enabled,
552 GICXXPred_Simple_IsRule21Enabled,
553 GICXXPred_Simple_IsRule22Enabled,
554 GICXXPred_Simple_IsRule23Enabled,
555 GICXXPred_Simple_IsRule24Enabled,
556 GICXXPred_Simple_IsRule25Enabled,
557 GICXXPred_Simple_IsRule26Enabled,
558 GICXXPred_Simple_IsRule27Enabled,
559 GICXXPred_Simple_IsRule28Enabled,
560 GICXXPred_Simple_IsRule29Enabled,
561 GICXXPred_Simple_IsRule30Enabled,
562 GICXXPred_Simple_IsRule31Enabled,
563 GICXXPred_Simple_IsRule32Enabled,
564 GICXXPred_Simple_IsRule33Enabled,
565 GICXXPred_Simple_IsRule34Enabled,
566 GICXXPred_Simple_IsRule35Enabled,
567 GICXXPred_Simple_IsRule36Enabled,
568 GICXXPred_Simple_IsRule37Enabled,
569 GICXXPred_Simple_IsRule38Enabled,
570 GICXXPred_Simple_IsRule39Enabled,
571 GICXXPred_Simple_IsRule40Enabled,
572 GICXXPred_Simple_IsRule41Enabled,
573 GICXXPred_Simple_IsRule42Enabled,
574 GICXXPred_Simple_IsRule43Enabled,
575 GICXXPred_Simple_IsRule44Enabled,
576};
577
578bool AMDGPURegBankCombinerImpl::testSimplePredicate(unsigned Predicate) const {
579 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
580}
581// Custom renderers.
582enum {
583 GICR_Invalid,
584};
585AMDGPURegBankCombinerImpl::CustomRendererFn
586AMDGPURegBankCombinerImpl::CustomRenderers[] = {
587 nullptr, // GICR_Invalid
588};
589
590bool AMDGPURegBankCombinerImpl::tryCombineAll(MachineInstr &I) const {
591 const TargetSubtargetInfo &ST = MF.getSubtarget();
592 const PredicateBitset AvailableFeatures = getAvailableFeatures();
593 B.setInstrAndDebugLoc(I);
594 State.MIs.clear();
595 State.MIs.push_back(&I);
596 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
597 return true;
598 }
599
600 return false;
601}
602
603enum {
604 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
605 GICXXCustomAction_GICombiner1,
606 GICXXCustomAction_GICombiner2,
607 GICXXCustomAction_GICombiner3,
608 GICXXCustomAction_GICombiner4,
609 GICXXCustomAction_GICombiner5,
610 GICXXCustomAction_GICombiner6,
611 GICXXCustomAction_GICombiner7,
612 GICXXCustomAction_GICombiner8,
613 GICXXCustomAction_GICombiner9,
614 GICXXCustomAction_GICombiner10,
615 GICXXCustomAction_GICombiner11,
616 GICXXCustomAction_GICombiner12,
617 GICXXCustomAction_GICombiner13,
618 GICXXCustomAction_GICombiner14,
619 GICXXCustomAction_GICombiner15,
620 GICXXCustomAction_GICombiner16,
621 GICXXCustomAction_GICombiner17,
622 GICXXCustomAction_GICombiner18,
623 GICXXCustomAction_GICombiner19,
624 GICXXCustomAction_GICombiner20,
625 GICXXCustomAction_GICombiner21,
626 GICXXCustomAction_GICombiner22,
627 GICXXCustomAction_GICombiner23,
628 GICXXCustomAction_GICombiner24,
629};
630bool AMDGPURegBankCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
631 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
632 switch(ApplyID) {
633 case GICXXCustomAction_GICombiner0:{
634 SmallVector<Register> GIMatchData_info;
635 // Match Patterns
636 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
637 return false;
638 }
639 // Apply Patterns
640 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
641 return true;
642 }
643 case GICXXCustomAction_GICombiner1:{
644 SmallVector<APInt, 8> GIMatchData_info;
645 // Match Patterns
646 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
647 return false;
648 }
649 // Apply Patterns
650 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
651 return true;
652 }
653 case GICXXCustomAction_GICombiner2:{
654 std::function<void(MachineIRBuilder &)> GIMatchData_info;
655 // Match Patterns
656 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
657 return false;
658 }
659 // Apply Patterns
660 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
661 return true;
662 }
663 case GICXXCustomAction_GICombiner3:{
664 Register GIMatchData_matchinfo;
665 // Match Patterns
666 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
667 return false;
668 }
669 // Apply Patterns
670 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
671 return true;
672 }
673 case GICXXCustomAction_GICombiner4:{
674 Med3MatchInfo GIMatchData_matchinfo;
675 // Match Patterns
676 if(![&](){return matchIntMinMaxToMed3(*State.MIs[0], GIMatchData_matchinfo);}()) {
677 return false;
678 }
679 // Apply Patterns
680 applyMed3(*State.MIs[0], GIMatchData_matchinfo);
681 return true;
682 }
683 case GICXXCustomAction_GICombiner5:{
684 PtrAddChain GIMatchData_matchinfo;
685 // Match Patterns
686 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
687 return false;
688 }
689 // Apply Patterns
690 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
691 return true;
692 }
693 case GICXXCustomAction_GICombiner6:{
694 Register GIMatchData_matchinfo;
695 // Match Patterns
696 if(![&](){return matchFPMinMaxToClamp(*State.MIs[0], GIMatchData_matchinfo);}()) {
697 return false;
698 }
699 // Apply Patterns
700 applyClamp(*State.MIs[0], GIMatchData_matchinfo);
701 return true;
702 }
703 case GICXXCustomAction_GICombiner7:{
704 Med3MatchInfo GIMatchData_matchinfo;
705 // Match Patterns
706 if(![&](){return matchFPMinMaxToMed3(*State.MIs[0], GIMatchData_matchinfo);}()) {
707 return false;
708 }
709 // Apply Patterns
710 applyMed3(*State.MIs[0], GIMatchData_matchinfo);
711 return true;
712 }
713 case GICXXCustomAction_GICombiner8:{
714 Register GIMatchData_matchinfo;
715 // Match Patterns
716 if(![&](){return matchFPMed3ToClamp(*State.MIs[0], GIMatchData_matchinfo);}()) {
717 return false;
718 }
719 // Apply Patterns
720 applyClamp(*State.MIs[0], GIMatchData_matchinfo);
721 return true;
722 }
723 case GICXXCustomAction_GICombiner9:{
724 // Match Patterns
725 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
726 return false;
727 }
728 // Apply Patterns
729 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
730 return true;
731 }
732 case GICXXCustomAction_GICombiner10:{
733 // Match Patterns
734 if(![&](){return Helper.matchOperandIsZero(*State.MIs[0], 1);}()) {
735 return false;
736 }
737 // Apply Patterns
738 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
739 return true;
740 }
741 case GICXXCustomAction_GICombiner11:{
742 Register GIMatchData_info;
743 // Match Patterns
744 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
745 return false;
746 }
747 // Apply Patterns
748 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
749 return true;
750 }
751 case GICXXCustomAction_GICombiner12:{
752 Register GIMatchData_info;
753 // Match Patterns
754 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
755 return false;
756 }
757 // Apply Patterns
758 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
759 return true;
760 }
761 case GICXXCustomAction_GICombiner13:{
762 Register GIMatchData_matchinfo;
763 // Match Patterns
764 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
765 return false;
766 }
767 // Apply Patterns
768 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
769 return true;
770 }
771 case GICXXCustomAction_GICombiner14:{
772 Register GIMatchData_matchinfo;
773 // Match Patterns
774 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
775 return false;
776 }
777 // Apply Patterns
778 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
779 return true;
780 }
781 case GICXXCustomAction_GICombiner15:{
782 Register GIMatchData_matchinfo;
783 // Match Patterns
784 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
785 return false;
786 }
787 // Apply Patterns
788 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
789 return true;
790 }
791 case GICXXCustomAction_GICombiner16:{
792 Register GIMatchData_matchinfo;
793 // Match Patterns
794 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
795 return false;
796 }
797 // Apply Patterns
798 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
799 return true;
800 }
801 case GICXXCustomAction_GICombiner17:{
802 // Match Patterns
803 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
804 return false;
805 }
806 // Apply Patterns
807 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
808 return true;
809 }
810 case GICXXCustomAction_GICombiner18:{
811 Register GIMatchData_matchinfo;
812 // Match Patterns
813 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
814 return false;
815 }
816 // Apply Patterns
817 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
818 return true;
819 }
820 case GICXXCustomAction_GICombiner19:{
821 APInt GIMatchData_matchinfo;
822 // Match Patterns
823 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
824 return false;
825 }
826 // Apply Patterns
827 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
828 return true;
829 }
830 case GICXXCustomAction_GICombiner20:{
831 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
832 // Match Patterns
833 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
834 return false;
835 }
836 // Apply Patterns
837 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
838 return true;
839 }
840 case GICXXCustomAction_GICombiner21:{
841 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
842 // Match Patterns
843 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
844 return false;
845 }
846 // Apply Patterns
847 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
848 return true;
849 }
850 case GICXXCustomAction_GICombiner22:{
851 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
852 // Match Patterns
853 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
854 return false;
855 }
856 // Apply Patterns
857 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
858 return true;
859 }
860 case GICXXCustomAction_GICombiner23:{
861 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
862 // Match Patterns
863 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
864 return false;
865 }
866 // Apply Patterns
867 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
868 return true;
869 }
870 case GICXXCustomAction_GICombiner24:{
871 // Apply Patterns
872 applyCanonicalizeZextShiftAmt(*State.MIs[0], *State.MIs[1]);
873 return true;
874 }
875 }
876 llvm_unreachable("Unknown Apply Action");
877}
878#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
879#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((uint16_t)Val >> 8)
880#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)
881#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)
882#else
883#define GIMT_Encode2(Val) uint8_t((uint16_t)Val >> 8), uint8_t(Val)
884#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)
885#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)
886#endif
887const uint8_t *AMDGPURegBankCombinerImpl::getMatchTable() const {
888 constexpr static uint8_t MatchTable0[] = {
889 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(53), GIMT_Encode2(3682), /*)*//*default:*//*Label 41*/ GIMT_Encode4(15828),
890 /* 10 */ /*TargetOpcode::G_ADD*//*Label 0*/ GIMT_Encode4(14526),
891 /* 14 */ /*TargetOpcode::G_SUB*//*Label 1*/ GIMT_Encode4(14618),
892 /* 18 */ /*TargetOpcode::G_MUL*//*Label 2*/ GIMT_Encode4(14642),
893 /* 22 */ /*TargetOpcode::G_SDIV*//*Label 3*/ GIMT_Encode4(14689),
894 /* 26 */ /*TargetOpcode::G_UDIV*//*Label 4*/ GIMT_Encode4(14701),
895 /* 30 */ /*TargetOpcode::G_SREM*//*Label 5*/ GIMT_Encode4(14713),
896 /* 34 */ /*TargetOpcode::G_UREM*//*Label 6*/ GIMT_Encode4(14725), GIMT_Encode4(0), GIMT_Encode4(0),
897 /* 46 */ /*TargetOpcode::G_AND*//*Label 7*/ GIMT_Encode4(14737),
898 /* 50 */ /*TargetOpcode::G_OR*//*Label 8*/ GIMT_Encode4(14773),
899 /* 54 */ /*TargetOpcode::G_XOR*//*Label 9*/ GIMT_Encode4(14821), 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),
900 /* 94 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 10*/ GIMT_Encode4(14845), GIMT_Encode4(0), GIMT_Encode4(0),
901 /* 106 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 11*/ GIMT_Encode4(14879),
902 /* 110 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 12*/ GIMT_Encode4(14891), GIMT_Encode4(0),
903 /* 118 */ /*TargetOpcode::G_PTRTOINT*//*Label 13*/ GIMT_Encode4(14903),
904 /* 122 */ /*TargetOpcode::G_INTTOPTR*//*Label 14*/ GIMT_Encode4(14925),
905 /* 126 */ /*TargetOpcode::G_BITCAST*//*Label 15*/ GIMT_Encode4(14937), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), 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),
906 /* 330 */ /*TargetOpcode::G_ANYEXT*//*Label 16*/ GIMT_Encode4(14959),
907 /* 334 */ /*TargetOpcode::G_TRUNC*//*Label 17*/ GIMT_Encode4(15045), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
908 /* 354 */ /*TargetOpcode::G_SEXT*//*Label 18*/ GIMT_Encode4(15131),
909 /* 358 */ /*TargetOpcode::G_SEXT_INREG*//*Label 19*/ GIMT_Encode4(15206),
910 /* 362 */ /*TargetOpcode::G_ZEXT*//*Label 20*/ GIMT_Encode4(15228),
911 /* 366 */ /*TargetOpcode::G_SHL*//*Label 21*/ GIMT_Encode4(15293),
912 /* 370 */ /*TargetOpcode::G_LSHR*//*Label 22*/ GIMT_Encode4(15349),
913 /* 374 */ /*TargetOpcode::G_ASHR*//*Label 23*/ GIMT_Encode4(15405), GIMT_Encode4(0), GIMT_Encode4(0),
914 /* 386 */ /*TargetOpcode::G_ROTR*//*Label 24*/ GIMT_Encode4(15461),
915 /* 390 */ /*TargetOpcode::G_ROTL*//*Label 25*/ GIMT_Encode4(15485), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
916 /* 410 */ /*TargetOpcode::G_SELECT*//*Label 26*/ GIMT_Encode4(15509), 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),
917 /* 518 */ /*TargetOpcode::G_FADD*//*Label 27*/ GIMT_Encode4(15521), GIMT_Encode4(0),
918 /* 526 */ /*TargetOpcode::G_FMUL*//*Label 28*/ GIMT_Encode4(15545), 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),
919 /* 586 */ /*TargetOpcode::G_FNEG*//*Label 29*/ GIMT_Encode4(15589), GIMT_Encode4(0),
920 /* 594 */ /*TargetOpcode::G_FPTRUNC*//*Label 30*/ GIMT_Encode4(15619), 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),
921 /* 638 */ /*TargetOpcode::G_FMINNUM*//*Label 31*/ GIMT_Encode4(15641),
922 /* 642 */ /*TargetOpcode::G_FMAXNUM*//*Label 32*/ GIMT_Encode4(15664),
923 /* 646 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 33*/ GIMT_Encode4(15687),
924 /* 650 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 34*/ GIMT_Encode4(15710), 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),
925 /* 694 */ /*TargetOpcode::G_PTR_ADD*//*Label 35*/ GIMT_Encode4(15733), GIMT_Encode4(0),
926 /* 702 */ /*TargetOpcode::G_SMIN*//*Label 36*/ GIMT_Encode4(15768),
927 /* 706 */ /*TargetOpcode::G_SMAX*//*Label 37*/ GIMT_Encode4(15780),
928 /* 710 */ /*TargetOpcode::G_UMIN*//*Label 38*/ GIMT_Encode4(15792),
929 /* 714 */ /*TargetOpcode::G_UMAX*//*Label 39*/ GIMT_Encode4(15804), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), 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),
930 /* 14522 */ /*AMDGPU::G_AMDGPU_FMED3*//*Label 40*/ GIMT_Encode4(15816),
931 /* 14526 */ // Label 0: @14526
932 /* 14526 */ GIM_Try, /*On fail goto*//*Label 42*/ GIMT_Encode4(14560), // Rule ID 46 //
933 /* 14531 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
934 /* 14534 */ // MIs[0] dst
935 /* 14534 */ // No operand predicates
936 /* 14534 */ // MIs[0] __add_sub_reg_match_0.tmp
937 /* 14534 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
938 /* 14538 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
939 /* 14542 */ // MIs[1] src
940 /* 14542 */ // No operand predicates
941 /* 14542 */ // MIs[1] __add_sub_reg_match_0.x
942 /* 14542 */ // No operand predicates
943 /* 14542 */ // MIs[0] __add_sub_reg_match_0.x
944 /* 14542 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
945 /* 14547 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
946 /* 14552 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
947 /* 14554 */ // Combiner Rule #20: add_sub_reg @ [__add_sub_reg_match_0[1]]
948 /* 14554 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
949 /* 14559 */ GIR_EraseRootFromParent_Done,
950 /* 14560 */ // Label 42: @14560
951 /* 14560 */ GIM_Try, /*On fail goto*//*Label 43*/ GIMT_Encode4(14594), // Rule ID 45 //
952 /* 14565 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
953 /* 14568 */ // MIs[0] dst
954 /* 14568 */ // No operand predicates
955 /* 14568 */ // MIs[0] __add_sub_reg_match_0.x
956 /* 14568 */ // No operand predicates
957 /* 14568 */ // MIs[0] __add_sub_reg_match_0.tmp
958 /* 14568 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
959 /* 14572 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
960 /* 14576 */ // MIs[1] src
961 /* 14576 */ // No operand predicates
962 /* 14576 */ // MIs[1] __add_sub_reg_match_0.x
963 /* 14576 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
964 /* 14581 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
965 /* 14586 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
966 /* 14588 */ // Combiner Rule #20: add_sub_reg @ [__add_sub_reg_match_0[0]]
967 /* 14588 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
968 /* 14593 */ GIR_EraseRootFromParent_Done,
969 /* 14594 */ // Label 43: @14594
970 /* 14594 */ GIM_Try, /*On fail goto*//*Label 44*/ GIMT_Encode4(14617), // Rule ID 20 //
971 /* 14599 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
972 /* 14602 */ // MIs[0] dst
973 /* 14602 */ // No operand predicates
974 /* 14602 */ // MIs[0] lhs
975 /* 14602 */ // No operand predicates
976 /* 14602 */ // MIs[0] Operand 2
977 /* 14602 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
978 /* 14606 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
979 /* 14611 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[1]]
980 /* 14611 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
981 /* 14616 */ GIR_EraseRootFromParent_Done,
982 /* 14617 */ // Label 44: @14617
983 /* 14617 */ GIM_Reject,
984 /* 14618 */ // Label 1: @14618
985 /* 14618 */ GIM_Try, /*On fail goto*//*Label 45*/ GIMT_Encode4(14641), // Rule ID 19 //
986 /* 14623 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
987 /* 14626 */ // MIs[0] dst
988 /* 14626 */ // No operand predicates
989 /* 14626 */ // MIs[0] lhs
990 /* 14626 */ // No operand predicates
991 /* 14626 */ // MIs[0] Operand 2
992 /* 14626 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
993 /* 14630 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
994 /* 14635 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[0]]
995 /* 14635 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
996 /* 14640 */ GIR_EraseRootFromParent_Done,
997 /* 14641 */ // Label 45: @14641
998 /* 14641 */ GIM_Reject,
999 /* 14642 */ // Label 2: @14642
1000 /* 14642 */ GIM_Try, /*On fail goto*//*Label 46*/ GIMT_Encode4(14665), // Rule ID 38 //
1001 /* 14647 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
1002 /* 14650 */ // MIs[0] dst
1003 /* 14650 */ // No operand predicates
1004 /* 14650 */ // MIs[0] lhs
1005 /* 14650 */ // No operand predicates
1006 /* 14650 */ // MIs[0] zero
1007 /* 14650 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1008 /* 14654 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1009 /* 14659 */ // Combiner Rule #13: binop_right_to_zero
1010 /* 14659 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1011 /* 14664 */ GIR_EraseRootFromParent_Done,
1012 /* 14665 */ // Label 46: @14665
1013 /* 14665 */ GIM_Try, /*On fail goto*//*Label 47*/ GIMT_Encode4(14688), // Rule ID 43 //
1014 /* 14670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
1015 /* 14673 */ // MIs[0] dst
1016 /* 14673 */ // No operand predicates
1017 /* 14673 */ // MIs[0] x
1018 /* 14673 */ // No operand predicates
1019 /* 14673 */ // MIs[0] Operand 2
1020 /* 14673 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
1021 /* 14677 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1022 /* 14682 */ // Combiner Rule #18: right_identity_one_int
1023 /* 14682 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1024 /* 14687 */ GIR_EraseRootFromParent_Done,
1025 /* 14688 */ // Label 47: @14688
1026 /* 14688 */ GIM_Reject,
1027 /* 14689 */ // Label 3: @14689
1028 /* 14689 */ GIM_Try, /*On fail goto*//*Label 48*/ GIMT_Encode4(14700), // Rule ID 34 //
1029 /* 14694 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1030 /* 14697 */ // Combiner Rule #12: binop_left_to_zero; wip_match_opcode 'G_SDIV'
1031 /* 14697 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1032 /* 14700 */ // Label 48: @14700
1033 /* 14700 */ GIM_Reject,
1034 /* 14701 */ // Label 4: @14701
1035 /* 14701 */ GIM_Try, /*On fail goto*//*Label 49*/ GIMT_Encode4(14712), // Rule ID 35 //
1036 /* 14706 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1037 /* 14709 */ // Combiner Rule #12: binop_left_to_zero; wip_match_opcode 'G_UDIV'
1038 /* 14709 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1039 /* 14712 */ // Label 49: @14712
1040 /* 14712 */ GIM_Reject,
1041 /* 14713 */ // Label 5: @14713
1042 /* 14713 */ GIM_Try, /*On fail goto*//*Label 50*/ GIMT_Encode4(14724), // Rule ID 36 //
1043 /* 14718 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1044 /* 14721 */ // Combiner Rule #12: binop_left_to_zero; wip_match_opcode 'G_SREM'
1045 /* 14721 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1046 /* 14724 */ // Label 50: @14724
1047 /* 14724 */ GIM_Reject,
1048 /* 14725 */ // Label 6: @14725
1049 /* 14725 */ GIM_Try, /*On fail goto*//*Label 51*/ GIMT_Encode4(14736), // Rule ID 37 //
1050 /* 14730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1051 /* 14733 */ // Combiner Rule #12: binop_left_to_zero; wip_match_opcode 'G_UREM'
1052 /* 14733 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1053 /* 14736 */ // Label 51: @14736
1054 /* 14736 */ GIM_Reject,
1055 /* 14737 */ // Label 7: @14737
1056 /* 14737 */ GIM_Try, /*On fail goto*//*Label 52*/ GIMT_Encode4(14748), // Rule ID 55 //
1057 /* 14742 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
1058 /* 14745 */ // Combiner Rule #28: redundant_and; wip_match_opcode 'G_AND'
1059 /* 14745 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
1060 /* 14748 */ // Label 52: @14748
1061 /* 14748 */ GIM_Try, /*On fail goto*//*Label 53*/ GIMT_Encode4(14772), // Rule ID 29 //
1062 /* 14753 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
1063 /* 14756 */ // MIs[0] dst
1064 /* 14756 */ // No operand predicates
1065 /* 14756 */ // MIs[0] src
1066 /* 14756 */ // No operand predicates
1067 /* 14756 */ // MIs[0] src
1068 /* 14756 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1069 /* 14761 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1070 /* 14766 */ // Combiner Rule #11: binop_same_val @ [__binop_same_val_match_0[0]]
1071 /* 14766 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1072 /* 14771 */ GIR_EraseRootFromParent_Done,
1073 /* 14772 */ // Label 53: @14772
1074 /* 14772 */ GIM_Reject,
1075 /* 14773 */ // Label 8: @14773
1076 /* 14773 */ GIM_Try, /*On fail goto*//*Label 54*/ GIMT_Encode4(14797), // Rule ID 30 //
1077 /* 14778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
1078 /* 14781 */ // MIs[0] dst
1079 /* 14781 */ // No operand predicates
1080 /* 14781 */ // MIs[0] src
1081 /* 14781 */ // No operand predicates
1082 /* 14781 */ // MIs[0] src
1083 /* 14781 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1084 /* 14786 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1085 /* 14791 */ // Combiner Rule #11: binop_same_val @ [__binop_same_val_match_0[1]]
1086 /* 14791 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1087 /* 14796 */ GIR_EraseRootFromParent_Done,
1088 /* 14797 */ // Label 54: @14797
1089 /* 14797 */ GIM_Try, /*On fail goto*//*Label 55*/ GIMT_Encode4(14820), // Rule ID 21 //
1090 /* 14802 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1091 /* 14805 */ // MIs[0] dst
1092 /* 14805 */ // No operand predicates
1093 /* 14805 */ // MIs[0] lhs
1094 /* 14805 */ // No operand predicates
1095 /* 14805 */ // MIs[0] Operand 2
1096 /* 14805 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1097 /* 14809 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1098 /* 14814 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[2]]
1099 /* 14814 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1100 /* 14819 */ GIR_EraseRootFromParent_Done,
1101 /* 14820 */ // Label 55: @14820
1102 /* 14820 */ GIM_Reject,
1103 /* 14821 */ // Label 9: @14821
1104 /* 14821 */ GIM_Try, /*On fail goto*//*Label 56*/ GIMT_Encode4(14844), // Rule ID 22 //
1105 /* 14826 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1106 /* 14829 */ // MIs[0] dst
1107 /* 14829 */ // No operand predicates
1108 /* 14829 */ // MIs[0] lhs
1109 /* 14829 */ // No operand predicates
1110 /* 14829 */ // MIs[0] Operand 2
1111 /* 14829 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1112 /* 14833 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1113 /* 14838 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[3]]
1114 /* 14838 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1115 /* 14843 */ GIR_EraseRootFromParent_Done,
1116 /* 14844 */ // Label 56: @14844
1117 /* 14844 */ GIM_Reject,
1118 /* 14845 */ // Label 10: @14845
1119 /* 14845 */ GIM_Try, /*On fail goto*//*Label 57*/ GIMT_Encode4(14856), // Rule ID 0 //
1120 /* 14850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
1121 /* 14853 */ // Combiner Rule #0: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
1122 /* 14853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
1123 /* 14856 */ // Label 57: @14856
1124 /* 14856 */ GIM_Try, /*On fail goto*//*Label 58*/ GIMT_Encode4(14867), // Rule ID 1 //
1125 /* 14861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1126 /* 14864 */ // Combiner Rule #1: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
1127 /* 14864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1128 /* 14867 */ // Label 58: @14867
1129 /* 14867 */ GIM_Try, /*On fail goto*//*Label 59*/ GIMT_Encode4(14878), // Rule ID 2 //
1130 /* 14872 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
1131 /* 14875 */ // Combiner Rule #2: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
1132 /* 14875 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
1133 /* 14878 */ // Label 59: @14878
1134 /* 14878 */ GIM_Reject,
1135 /* 14879 */ // Label 11: @14879
1136 /* 14879 */ GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(14890), // Rule ID 48 //
1137 /* 14884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
1138 /* 14887 */ // Combiner Rule #21: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
1139 /* 14887 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1140 /* 14890 */ // Label 60: @14890
1141 /* 14890 */ GIM_Reject,
1142 /* 14891 */ // Label 12: @14891
1143 /* 14891 */ GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(14902), // Rule ID 47 //
1144 /* 14896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
1145 /* 14899 */ // Combiner Rule #21: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
1146 /* 14899 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1147 /* 14902 */ // Label 61: @14902
1148 /* 14902 */ GIM_Reject,
1149 /* 14903 */ // Label 13: @14903
1150 /* 14903 */ GIM_Try, /*On fail goto*//*Label 62*/ GIMT_Encode4(14924), // Rule ID 40 //
1151 /* 14908 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
1152 /* 14911 */ // MIs[0] dst
1153 /* 14911 */ // No operand predicates
1154 /* 14911 */ // MIs[0] t
1155 /* 14911 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1156 /* 14915 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
1157 /* 14919 */ // MIs[1] ptr
1158 /* 14919 */ // No operand predicates
1159 /* 14919 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1160 /* 14921 */ // Combiner Rule #15: i2p_to_p2i
1161 /* 14921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
1162 /* 14924 */ // Label 62: @14924
1163 /* 14924 */ GIM_Reject,
1164 /* 14925 */ // Label 14: @14925
1165 /* 14925 */ GIM_Try, /*On fail goto*//*Label 63*/ GIMT_Encode4(14936), // Rule ID 39 //
1166 /* 14930 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
1167 /* 14933 */ // Combiner Rule #14: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
1168 /* 14933 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
1169 /* 14936 */ // Label 63: @14936
1170 /* 14936 */ GIM_Reject,
1171 /* 14937 */ // Label 15: @14937
1172 /* 14937 */ GIM_Try, /*On fail goto*//*Label 64*/ GIMT_Encode4(14958), // Rule ID 51 //
1173 /* 14942 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1174 /* 14945 */ // MIs[0] dst
1175 /* 14945 */ // No operand predicates
1176 /* 14945 */ // MIs[0] src1
1177 /* 14945 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1178 /* 14949 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
1179 /* 14953 */ // MIs[1] src0
1180 /* 14953 */ // No operand predicates
1181 /* 14953 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1182 /* 14955 */ // Combiner Rule #24: bitcast_bitcast_fold
1183 /* 14955 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
1184 /* 14958 */ // Label 64: @14958
1185 /* 14958 */ GIM_Reject,
1186 /* 14959 */ // Label 16: @14959
1187 /* 14959 */ GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(14970), // Rule ID 41 //
1188 /* 14964 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
1189 /* 14967 */ // Combiner Rule #16: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
1190 /* 14967 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1191 /* 14970 */ // Label 65: @14970
1192 /* 14970 */ GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(14981), // Rule ID 58 //
1193 /* 14975 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1194 /* 14978 */ // Combiner Rule #29: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
1195 /* 14978 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
1196 /* 14981 */ // Label 66: @14981
1197 /* 14981 */ GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(15002), // Rule ID 66 //
1198 /* 14986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
1199 /* 14989 */ // MIs[0] root
1200 /* 14989 */ // No operand predicates
1201 /* 14989 */ // MIs[0] second
1202 /* 14989 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1203 /* 14993 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
1204 /* 14997 */ // MIs[1] src
1205 /* 14997 */ // No operand predicates
1206 /* 14997 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1207 /* 14999 */ // Combiner Rule #37: anyext_of_anyext
1208 /* 14999 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
1209 /* 15002 */ // Label 67: @15002
1210 /* 15002 */ GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(15023), // Rule ID 68 //
1211 /* 15007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
1212 /* 15010 */ // MIs[0] root
1213 /* 15010 */ // No operand predicates
1214 /* 15010 */ // MIs[0] second
1215 /* 15010 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1216 /* 15014 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
1217 /* 15018 */ // MIs[1] src
1218 /* 15018 */ // No operand predicates
1219 /* 15018 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1220 /* 15020 */ // Combiner Rule #39: anyext_of_sext
1221 /* 15020 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
1222 /* 15023 */ // Label 68: @15023
1223 /* 15023 */ GIM_Try, /*On fail goto*//*Label 69*/ GIMT_Encode4(15044), // Rule ID 67 //
1224 /* 15028 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
1225 /* 15031 */ // MIs[0] root
1226 /* 15031 */ // No operand predicates
1227 /* 15031 */ // MIs[0] second
1228 /* 15031 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1229 /* 15035 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
1230 /* 15039 */ // MIs[1] src
1231 /* 15039 */ // No operand predicates
1232 /* 15039 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1233 /* 15041 */ // Combiner Rule #38: anyext_of_zext
1234 /* 15041 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
1235 /* 15044 */ // Label 69: @15044
1236 /* 15044 */ GIM_Reject,
1237 /* 15045 */ // Label 17: @15045
1238 /* 15045 */ GIM_Try, /*On fail goto*//*Label 70*/ GIMT_Encode4(15056), // Rule ID 49 //
1239 /* 15050 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
1240 /* 15053 */ // Combiner Rule #22: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
1241 /* 15053 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
1242 /* 15056 */ // Label 70: @15056
1243 /* 15056 */ GIM_Try, /*On fail goto*//*Label 71*/ GIMT_Encode4(15067), // Rule ID 50 //
1244 /* 15061 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
1245 /* 15064 */ // Combiner Rule #23: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
1246 /* 15064 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
1247 /* 15067 */ // Label 71: @15067
1248 /* 15067 */ GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(15088), // Rule ID 61 //
1249 /* 15072 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
1250 /* 15075 */ // MIs[0] root
1251 /* 15075 */ // No operand predicates
1252 /* 15075 */ // MIs[0] ext
1253 /* 15075 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1254 /* 15079 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
1255 /* 15083 */ // MIs[1] src
1256 /* 15083 */ // No operand predicates
1257 /* 15083 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1258 /* 15085 */ // Combiner Rule #32: truncate_of_anyext
1259 /* 15085 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
1260 /* 15088 */ // Label 72: @15088
1261 /* 15088 */ GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(15109), // Rule ID 60 //
1262 /* 15093 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
1263 /* 15096 */ // MIs[0] root
1264 /* 15096 */ // No operand predicates
1265 /* 15096 */ // MIs[0] ext
1266 /* 15096 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1267 /* 15100 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
1268 /* 15104 */ // MIs[1] src
1269 /* 15104 */ // No operand predicates
1270 /* 15104 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1271 /* 15106 */ // Combiner Rule #31: truncate_of_sext
1272 /* 15106 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
1273 /* 15109 */ // Label 73: @15109
1274 /* 15109 */ GIM_Try, /*On fail goto*//*Label 74*/ GIMT_Encode4(15130), // Rule ID 59 //
1275 /* 15114 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
1276 /* 15117 */ // MIs[0] root
1277 /* 15117 */ // No operand predicates
1278 /* 15117 */ // MIs[0] ext
1279 /* 15117 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1280 /* 15121 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
1281 /* 15125 */ // MIs[1] src
1282 /* 15125 */ // No operand predicates
1283 /* 15125 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1284 /* 15127 */ // Combiner Rule #30: truncate_of_zext
1285 /* 15127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
1286 /* 15130 */ // Label 74: @15130
1287 /* 15130 */ GIM_Reject,
1288 /* 15131 */ // Label 18: @15131
1289 /* 15131 */ GIM_Try, /*On fail goto*//*Label 75*/ GIMT_Encode4(15142), // Rule ID 57 //
1290 /* 15136 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1291 /* 15139 */ // Combiner Rule #29: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
1292 /* 15139 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
1293 /* 15142 */ // Label 75: @15142
1294 /* 15142 */ GIM_Try, /*On fail goto*//*Label 76*/ GIMT_Encode4(15163), // Rule ID 65 //
1295 /* 15147 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
1296 /* 15150 */ // MIs[0] root
1297 /* 15150 */ // No operand predicates
1298 /* 15150 */ // MIs[0] second
1299 /* 15150 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1300 /* 15154 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
1301 /* 15158 */ // MIs[1] src
1302 /* 15158 */ // No operand predicates
1303 /* 15158 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1304 /* 15160 */ // Combiner Rule #36: sext_of_anyext
1305 /* 15160 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
1306 /* 15163 */ // Label 76: @15163
1307 /* 15163 */ GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(15184), // Rule ID 64 //
1308 /* 15168 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
1309 /* 15171 */ // MIs[0] root
1310 /* 15171 */ // No operand predicates
1311 /* 15171 */ // MIs[0] second
1312 /* 15171 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1313 /* 15175 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
1314 /* 15179 */ // MIs[1] src
1315 /* 15179 */ // No operand predicates
1316 /* 15179 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1317 /* 15181 */ // Combiner Rule #35: sext_of_sext
1318 /* 15181 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
1319 /* 15184 */ // Label 77: @15184
1320 /* 15184 */ GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(15205), // Rule ID 70 //
1321 /* 15189 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
1322 /* 15192 */ // MIs[0] root
1323 /* 15192 */ // No operand predicates
1324 /* 15192 */ // MIs[0] src
1325 /* 15192 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1326 /* 15196 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
1327 /* 15200 */ // MIs[1] x
1328 /* 15200 */ // No operand predicates
1329 /* 15200 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1330 /* 15202 */ // Combiner Rule #41: sext_trunc
1331 /* 15202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
1332 /* 15205 */ // Label 78: @15205
1333 /* 15205 */ GIM_Reject,
1334 /* 15206 */ // Label 19: @15206
1335 /* 15206 */ GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(15227), // Rule ID 69 //
1336 /* 15211 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
1337 /* 15214 */ // MIs[0] dst
1338 /* 15214 */ // No operand predicates
1339 /* 15214 */ // MIs[0] x
1340 /* 15214 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1341 /* 15218 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
1342 /* 15222 */ // MIs[1] src
1343 /* 15222 */ // No operand predicates
1344 /* 15222 */ // MIs[1] a
1345 /* 15222 */ // No operand predicates
1346 /* 15222 */ // MIs[0] b
1347 /* 15222 */ // No operand predicates
1348 /* 15222 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1349 /* 15224 */ // Combiner Rule #40: sext_inreg_of_sext_inreg
1350 /* 15224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
1351 /* 15227 */ // Label 79: @15227
1352 /* 15227 */ GIM_Reject,
1353 /* 15228 */ // Label 20: @15228
1354 /* 15228 */ GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(15239), // Rule ID 3 //
1355 /* 15233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1356 /* 15236 */ // Combiner Rule #3: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
1357 /* 15236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
1358 /* 15239 */ // Label 80: @15239
1359 /* 15239 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(15250), // Rule ID 56 //
1360 /* 15244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1361 /* 15247 */ // Combiner Rule #29: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
1362 /* 15247 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
1363 /* 15250 */ // Label 81: @15250
1364 /* 15250 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(15271), // Rule ID 63 //
1365 /* 15255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
1366 /* 15258 */ // MIs[0] root
1367 /* 15258 */ // No operand predicates
1368 /* 15258 */ // MIs[0] second
1369 /* 15258 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1370 /* 15262 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
1371 /* 15266 */ // MIs[1] src
1372 /* 15266 */ // No operand predicates
1373 /* 15266 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1374 /* 15268 */ // Combiner Rule #34: zext_of_anyext
1375 /* 15268 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
1376 /* 15271 */ // Label 82: @15271
1377 /* 15271 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(15292), // Rule ID 62 //
1378 /* 15276 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
1379 /* 15279 */ // MIs[0] root
1380 /* 15279 */ // No operand predicates
1381 /* 15279 */ // MIs[0] second
1382 /* 15279 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1383 /* 15283 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
1384 /* 15287 */ // MIs[1] src
1385 /* 15287 */ // No operand predicates
1386 /* 15287 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1387 /* 15289 */ // Combiner Rule #33: zext_of_zext
1388 /* 15289 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
1389 /* 15292 */ // Label 83: @15292
1390 /* 15292 */ GIM_Reject,
1391 /* 15293 */ // Label 21: @15293
1392 /* 15293 */ GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(15304), // Rule ID 31 //
1393 /* 15298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1394 /* 15301 */ // Combiner Rule #12: binop_left_to_zero; wip_match_opcode 'G_SHL'
1395 /* 15301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1396 /* 15304 */ // Label 84: @15304
1397 /* 15304 */ GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(15325), // Rule ID 73 //
1398 /* 15309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
1399 /* 15312 */ // MIs[0] dst
1400 /* 15312 */ // No operand predicates
1401 /* 15312 */ // MIs[0] src
1402 /* 15312 */ // No operand predicates
1403 /* 15312 */ // MIs[0] amt
1404 /* 15312 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
1405 /* 15316 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
1406 /* 15320 */ // MIs[1] amtsrc
1407 /* 15320 */ // No operand predicates
1408 /* 15320 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1409 /* 15322 */ // Combiner Rule #44: canonicalize_zext_shl
1410 /* 15322 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
1411 /* 15325 */ // Label 85: @15325
1412 /* 15325 */ GIM_Try, /*On fail goto*//*Label 86*/ GIMT_Encode4(15348), // Rule ID 23 //
1413 /* 15330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1414 /* 15333 */ // MIs[0] dst
1415 /* 15333 */ // No operand predicates
1416 /* 15333 */ // MIs[0] lhs
1417 /* 15333 */ // No operand predicates
1418 /* 15333 */ // MIs[0] Operand 2
1419 /* 15333 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1420 /* 15337 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1421 /* 15342 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[4]]
1422 /* 15342 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1423 /* 15347 */ GIR_EraseRootFromParent_Done,
1424 /* 15348 */ // Label 86: @15348
1425 /* 15348 */ GIM_Reject,
1426 /* 15349 */ // Label 22: @15349
1427 /* 15349 */ GIM_Try, /*On fail goto*//*Label 87*/ GIMT_Encode4(15360), // Rule ID 32 //
1428 /* 15354 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1429 /* 15357 */ // Combiner Rule #12: binop_left_to_zero; wip_match_opcode 'G_LSHR'
1430 /* 15357 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1431 /* 15360 */ // Label 87: @15360
1432 /* 15360 */ GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(15381), // Rule ID 71 //
1433 /* 15365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
1434 /* 15368 */ // MIs[0] dst
1435 /* 15368 */ // No operand predicates
1436 /* 15368 */ // MIs[0] src
1437 /* 15368 */ // No operand predicates
1438 /* 15368 */ // MIs[0] amt
1439 /* 15368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
1440 /* 15372 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
1441 /* 15376 */ // MIs[1] amtsrc
1442 /* 15376 */ // No operand predicates
1443 /* 15376 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1444 /* 15378 */ // Combiner Rule #42: canonicalize_zext_lshr
1445 /* 15378 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
1446 /* 15381 */ // Label 88: @15381
1447 /* 15381 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(15404), // Rule ID 25 //
1448 /* 15386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1449 /* 15389 */ // MIs[0] dst
1450 /* 15389 */ // No operand predicates
1451 /* 15389 */ // MIs[0] lhs
1452 /* 15389 */ // No operand predicates
1453 /* 15389 */ // MIs[0] Operand 2
1454 /* 15389 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1455 /* 15393 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1456 /* 15398 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[6]]
1457 /* 15398 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1458 /* 15403 */ GIR_EraseRootFromParent_Done,
1459 /* 15404 */ // Label 89: @15404
1460 /* 15404 */ GIM_Reject,
1461 /* 15405 */ // Label 23: @15405
1462 /* 15405 */ GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(15416), // Rule ID 33 //
1463 /* 15410 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1464 /* 15413 */ // Combiner Rule #12: binop_left_to_zero; wip_match_opcode 'G_ASHR'
1465 /* 15413 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1466 /* 15416 */ // Label 90: @15416
1467 /* 15416 */ GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(15437), // Rule ID 72 //
1468 /* 15421 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
1469 /* 15424 */ // MIs[0] dst
1470 /* 15424 */ // No operand predicates
1471 /* 15424 */ // MIs[0] src
1472 /* 15424 */ // No operand predicates
1473 /* 15424 */ // MIs[0] amt
1474 /* 15424 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
1475 /* 15428 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
1476 /* 15432 */ // MIs[1] amtsrc
1477 /* 15432 */ // No operand predicates
1478 /* 15432 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1479 /* 15434 */ // Combiner Rule #43: canonicalize_zext_ashr
1480 /* 15434 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
1481 /* 15437 */ // Label 91: @15437
1482 /* 15437 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(15460), // Rule ID 24 //
1483 /* 15442 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1484 /* 15445 */ // MIs[0] dst
1485 /* 15445 */ // No operand predicates
1486 /* 15445 */ // MIs[0] lhs
1487 /* 15445 */ // No operand predicates
1488 /* 15445 */ // MIs[0] Operand 2
1489 /* 15445 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1490 /* 15449 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1491 /* 15454 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[5]]
1492 /* 15454 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1493 /* 15459 */ GIR_EraseRootFromParent_Done,
1494 /* 15460 */ // Label 92: @15460
1495 /* 15460 */ GIM_Reject,
1496 /* 15461 */ // Label 24: @15461
1497 /* 15461 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(15484), // Rule ID 28 //
1498 /* 15466 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1499 /* 15469 */ // MIs[0] dst
1500 /* 15469 */ // No operand predicates
1501 /* 15469 */ // MIs[0] lhs
1502 /* 15469 */ // No operand predicates
1503 /* 15469 */ // MIs[0] Operand 2
1504 /* 15469 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1505 /* 15473 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1506 /* 15478 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[9]]
1507 /* 15478 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1508 /* 15483 */ GIR_EraseRootFromParent_Done,
1509 /* 15484 */ // Label 93: @15484
1510 /* 15484 */ GIM_Reject,
1511 /* 15485 */ // Label 25: @15485
1512 /* 15485 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(15508), // Rule ID 27 //
1513 /* 15490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1514 /* 15493 */ // MIs[0] dst
1515 /* 15493 */ // No operand predicates
1516 /* 15493 */ // MIs[0] lhs
1517 /* 15493 */ // No operand predicates
1518 /* 15493 */ // MIs[0] Operand 2
1519 /* 15493 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1520 /* 15497 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1521 /* 15502 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[8]]
1522 /* 15502 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1523 /* 15507 */ GIR_EraseRootFromParent_Done,
1524 /* 15508 */ // Label 94: @15508
1525 /* 15508 */ GIM_Reject,
1526 /* 15509 */ // Label 26: @15509
1527 /* 15509 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(15520), // Rule ID 18 //
1528 /* 15514 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1529 /* 15517 */ // Combiner Rule #9: select_same_val; wip_match_opcode 'G_SELECT'
1530 /* 15517 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
1531 /* 15520 */ // Label 95: @15520
1532 /* 15520 */ GIM_Reject,
1533 /* 15521 */ // Label 27: @15521
1534 /* 15521 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(15544), // Rule ID 53 //
1535 /* 15526 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1536 /* 15529 */ // MIs[0] dst
1537 /* 15529 */ // No operand predicates
1538 /* 15529 */ // MIs[0] x
1539 /* 15529 */ // No operand predicates
1540 /* 15529 */ // MIs[0] y
1541 /* 15529 */ // No operand predicates
1542 /* 15529 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1543 /* 15533 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1544 /* 15538 */ // Combiner Rule #26: right_identity_neg_zero_fp
1545 /* 15538 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1546 /* 15543 */ GIR_EraseRootFromParent_Done,
1547 /* 15544 */ // Label 96: @15544
1548 /* 15544 */ GIM_Reject,
1549 /* 15545 */ // Label 28: @15545
1550 /* 15545 */ GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(15568), // Rule ID 44 //
1551 /* 15550 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
1552 /* 15553 */ // MIs[0] dst
1553 /* 15553 */ // No operand predicates
1554 /* 15553 */ // MIs[0] x
1555 /* 15553 */ // No operand predicates
1556 /* 15553 */ // MIs[0] y
1557 /* 15553 */ // No operand predicates
1558 /* 15553 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
1559 /* 15557 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1560 /* 15562 */ // Combiner Rule #19: right_identity_one_fp
1561 /* 15562 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1562 /* 15567 */ GIR_EraseRootFromParent_Done,
1563 /* 15568 */ // Label 97: @15568
1564 /* 15568 */ GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(15588), // Rule ID 54 //
1565 /* 15573 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1566 /* 15576 */ // MIs[0] dst
1567 /* 15576 */ // No operand predicates
1568 /* 15576 */ // MIs[0] x
1569 /* 15576 */ // No operand predicates
1570 /* 15576 */ // MIs[0] y
1571 /* 15576 */ // No operand predicates
1572 /* 15576 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
1573 /* 15580 */ // Combiner Rule #27: right_identity_neg_one_fp
1574 /* 15580 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
1575 /* 15583 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1576 /* 15585 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
1577 /* 15587 */ GIR_EraseRootFromParent_Done,
1578 /* 15588 */ // Label 98: @15588
1579 /* 15588 */ GIM_Reject,
1580 /* 15589 */ // Label 29: @15589
1581 /* 15589 */ GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(15618), // Rule ID 42 //
1582 /* 15594 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1583 /* 15597 */ // MIs[0] dst
1584 /* 15597 */ // No operand predicates
1585 /* 15597 */ // MIs[0] t
1586 /* 15597 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1587 /* 15601 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
1588 /* 15605 */ // MIs[1] src
1589 /* 15605 */ // No operand predicates
1590 /* 15605 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1591 /* 15610 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1592 /* 15612 */ // Combiner Rule #17: fneg_fneg_fold
1593 /* 15612 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1594 /* 15617 */ GIR_EraseRootFromParent_Done,
1595 /* 15618 */ // Label 99: @15618
1596 /* 15618 */ GIM_Reject,
1597 /* 15619 */ // Label 30: @15619
1598 /* 15619 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(15640), // Rule ID 52 //
1599 /* 15624 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1600 /* 15627 */ // MIs[0] dst
1601 /* 15627 */ // No operand predicates
1602 /* 15627 */ // MIs[0] src1
1603 /* 15627 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1604 /* 15631 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
1605 /* 15635 */ // MIs[1] src0
1606 /* 15635 */ // No operand predicates
1607 /* 15635 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1608 /* 15637 */ // Combiner Rule #25: fptrunc_fpext_fold
1609 /* 15637 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
1610 /* 15640 */ // Label 100: @15640
1611 /* 15640 */ GIM_Reject,
1612 /* 15641 */ // Label 31: @15641
1613 /* 15641 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(15652), // Rule ID 10 //
1614 /* 15646 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1615 /* 15649 */ // Combiner Rule #6: fp_minmax_to_clamp; wip_match_opcode 'G_FMINNUM'
1616 /* 15649 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
1617 /* 15652 */ // Label 101: @15652
1618 /* 15652 */ GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(15663), // Rule ID 14 //
1619 /* 15657 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1620 /* 15660 */ // Combiner Rule #7: fp_minmax_to_med3; wip_match_opcode 'G_FMINNUM'
1621 /* 15660 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
1622 /* 15663 */ // Label 102: @15663
1623 /* 15663 */ GIM_Reject,
1624 /* 15664 */ // Label 32: @15664
1625 /* 15664 */ GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(15675), // Rule ID 9 //
1626 /* 15669 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1627 /* 15672 */ // Combiner Rule #6: fp_minmax_to_clamp; wip_match_opcode 'G_FMAXNUM'
1628 /* 15672 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
1629 /* 15675 */ // Label 103: @15675
1630 /* 15675 */ GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(15686), // Rule ID 13 //
1631 /* 15680 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1632 /* 15683 */ // Combiner Rule #7: fp_minmax_to_med3; wip_match_opcode 'G_FMAXNUM'
1633 /* 15683 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
1634 /* 15686 */ // Label 104: @15686
1635 /* 15686 */ GIM_Reject,
1636 /* 15687 */ // Label 33: @15687
1637 /* 15687 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(15698), // Rule ID 12 //
1638 /* 15692 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1639 /* 15695 */ // Combiner Rule #6: fp_minmax_to_clamp; wip_match_opcode 'G_FMINNUM_IEEE'
1640 /* 15695 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
1641 /* 15698 */ // Label 105: @15698
1642 /* 15698 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(15709), // Rule ID 16 //
1643 /* 15703 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1644 /* 15706 */ // Combiner Rule #7: fp_minmax_to_med3; wip_match_opcode 'G_FMINNUM_IEEE'
1645 /* 15706 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
1646 /* 15709 */ // Label 106: @15709
1647 /* 15709 */ GIM_Reject,
1648 /* 15710 */ // Label 34: @15710
1649 /* 15710 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(15721), // Rule ID 11 //
1650 /* 15715 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1651 /* 15718 */ // Combiner Rule #6: fp_minmax_to_clamp; wip_match_opcode 'G_FMAXNUM_IEEE'
1652 /* 15718 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
1653 /* 15721 */ // Label 107: @15721
1654 /* 15721 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(15732), // Rule ID 15 //
1655 /* 15726 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1656 /* 15729 */ // Combiner Rule #7: fp_minmax_to_med3; wip_match_opcode 'G_FMAXNUM_IEEE'
1657 /* 15729 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
1658 /* 15732 */ // Label 108: @15732
1659 /* 15732 */ GIM_Reject,
1660 /* 15733 */ // Label 35: @15733
1661 /* 15733 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(15744), // Rule ID 8 //
1662 /* 15738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1663 /* 15741 */ // Combiner Rule #5: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
1664 /* 15741 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
1665 /* 15744 */ // Label 109: @15744
1666 /* 15744 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(15767), // Rule ID 26 //
1667 /* 15749 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1668 /* 15752 */ // MIs[0] dst
1669 /* 15752 */ // No operand predicates
1670 /* 15752 */ // MIs[0] lhs
1671 /* 15752 */ // No operand predicates
1672 /* 15752 */ // MIs[0] Operand 2
1673 /* 15752 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1674 /* 15756 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1675 /* 15761 */ // Combiner Rule #10: right_identity_zero @ [__right_identity_zero_match_0[7]]
1676 /* 15761 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1677 /* 15766 */ GIR_EraseRootFromParent_Done,
1678 /* 15767 */ // Label 110: @15767
1679 /* 15767 */ GIM_Reject,
1680 /* 15768 */ // Label 36: @15768
1681 /* 15768 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(15779), // Rule ID 5 //
1682 /* 15773 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
1683 /* 15776 */ // Combiner Rule #4: int_minmax_to_med3; wip_match_opcode 'G_SMIN'
1684 /* 15776 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
1685 /* 15779 */ // Label 111: @15779
1686 /* 15779 */ GIM_Reject,
1687 /* 15780 */ // Label 37: @15780
1688 /* 15780 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(15791), // Rule ID 4 //
1689 /* 15785 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
1690 /* 15788 */ // Combiner Rule #4: int_minmax_to_med3; wip_match_opcode 'G_SMAX'
1691 /* 15788 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
1692 /* 15791 */ // Label 112: @15791
1693 /* 15791 */ GIM_Reject,
1694 /* 15792 */ // Label 38: @15792
1695 /* 15792 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(15803), // Rule ID 7 //
1696 /* 15797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
1697 /* 15800 */ // Combiner Rule #4: int_minmax_to_med3; wip_match_opcode 'G_UMIN'
1698 /* 15800 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
1699 /* 15803 */ // Label 113: @15803
1700 /* 15803 */ GIM_Reject,
1701 /* 15804 */ // Label 39: @15804
1702 /* 15804 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(15815), // Rule ID 6 //
1703 /* 15809 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
1704 /* 15812 */ // Combiner Rule #4: int_minmax_to_med3; wip_match_opcode 'G_UMAX'
1705 /* 15812 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
1706 /* 15815 */ // Label 114: @15815
1707 /* 15815 */ GIM_Reject,
1708 /* 15816 */ // Label 40: @15816
1709 /* 15816 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(15827), // Rule ID 17 //
1710 /* 15821 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
1711 /* 15824 */ // Combiner Rule #8: fmed3_intrinsic_to_clamp; wip_match_opcode 'G_AMDGPU_FMED3'
1712 /* 15824 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
1713 /* 15827 */ // Label 115: @15827
1714 /* 15827 */ GIM_Reject,
1715 /* 15828 */ // Label 41: @15828
1716 /* 15828 */ GIM_Reject,
1717 /* 15829 */ }; // Size: 15829 bytes
1718 return MatchTable0;
1719}
1720#undef GIMT_Encode2
1721#undef GIMT_Encode4
1722#undef GIMT_Encode8
1723
1724#endif // ifdef GET_GICOMBINER_IMPL
1725
1726#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
1727AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
1728AvailableFunctionFeatures()
1729#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
1730#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
1731, State(0),
1732ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
1733#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
1734
1735