1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* DAG Instruction Selector for the BPF target *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9// *** NOTE: This file is #included into the middle of the target
10// *** instruction selector class. These functions are really methods.
11
12// If GET_DAGISEL_DECL is #defined with any value, only function
13// declarations will be included when this file is included.
14// If GET_DAGISEL_BODY is #defined, its value should be the name of
15// the instruction selector class. Function bodies will be emitted
16// and each function's name will be qualified with the name of the
17// class.
18//
19// When neither of the GET_DAGISEL* macros is defined, the functions
20// are emitted inline.
21
22#if defined(GET_DAGISEL_DECL) && defined(GET_DAGISEL_BODY)
23#error GET_DAGISEL_DECL and GET_DAGISEL_BODY cannot be both defined, undef both for inline definitions
24#endif
25
26#ifdef GET_DAGISEL_BODY
27#define LOCAL_DAGISEL_STRINGIZE(X) LOCAL_DAGISEL_STRINGIZE_(X)
28#define LOCAL_DAGISEL_STRINGIZE_(X) #X
29static_assert(sizeof(LOCAL_DAGISEL_STRINGIZE(GET_DAGISEL_BODY)) > 1,
30 "GET_DAGISEL_BODY is empty: it should be defined with the class name");
31#undef LOCAL_DAGISEL_STRINGIZE_
32#undef LOCAL_DAGISEL_STRINGIZE
33#endif
34
35#if !defined(GET_DAGISEL_DECL) && !defined(GET_DAGISEL_BODY)
36#define DAGISEL_INLINE 1
37#else
38#define DAGISEL_INLINE 0
39#endif
40
41#if !DAGISEL_INLINE
42#define DAGISEL_CLASS_COLONCOLON GET_DAGISEL_BODY ::
43#else
44#define DAGISEL_CLASS_COLONCOLON
45#endif
46
47#ifdef GET_DAGISEL_DECL
48void SelectCode(SDNode *N);
49#endif
50#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
51void DAGISEL_CLASS_COLONCOLON SelectCode(SDNode *N)
52{
53 // Some target values are emitted as 2 bytes, TARGET_VAL handles
54 // this.
55 #define TARGET_VAL(X) X & 255, unsigned(X) >> 8
56 static const unsigned char MatcherTable[] = {
57 OPC_SwitchOpcode , 106|128,2, TARGET_VAL(ISD::STORE),
58 OPC_RecordMemRef,
59 OPC_RecordNode,
60 OPC_RecordChild1,
61 OPC_Scope, 27|128,1,
62 OPC_MoveChild1,
63 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
64 OPC_SwitchType , 80, MVT::i64,
65 OPC_Scope, 20,
66 OPC_CheckPredicate0,
67 OPC_MoveParent,
68 OPC_RecordChild2,
69 OPC_CheckChild2TypeI64,
70 OPC_CheckPredicate5,
71 OPC_CheckPredicate, 9,
72 OPC_CheckPatternPredicate5,
73 OPC_CheckComplexPat0, /*#*/2,
74 OPC_EmitMergeInputChains1_0,
75 OPC_EmitConvertToTarget1,
76 OPC_MorphNodeTo0, TARGET_VAL(BPF::STD_imm), 0|OPFL_Chain|OPFL_MemRefs,
77 3, 5, 3, 4,
78 56,
79 OPC_CheckPredicate, 25,
80 OPC_MoveParent,
81 OPC_RecordChild2,
82 OPC_CheckChild2TypeI64,
83 OPC_CheckPredicate5,
84 OPC_CheckPredicate6,
85 OPC_Scope, 15,
86 OPC_CheckPredicate, 20,
87 OPC_CheckPatternPredicate5,
88 OPC_CheckComplexPat0, /*#*/2,
89 OPC_EmitMergeInputChains1_0,
90 OPC_EmitConvertToTarget1,
91 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW_imm), 0|OPFL_Chain|OPFL_MemRefs,
92 3, 5, 3, 4,
93 14,
94 OPC_CheckPredicate7,
95 OPC_CheckPatternPredicate5,
96 OPC_CheckComplexPat0, /*#*/2,
97 OPC_EmitMergeInputChains1_0,
98 OPC_EmitConvertToTarget1,
99 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH_imm), 0|OPFL_Chain|OPFL_MemRefs,
100 3, 5, 3, 4,
101 15,
102 OPC_CheckPredicate, 8,
103 OPC_CheckPatternPredicate5,
104 OPC_CheckComplexPat0, /*#*/2,
105 OPC_EmitMergeInputChains1_0,
106 OPC_EmitConvertToTarget1,
107 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB_imm), 0|OPFL_Chain|OPFL_MemRefs,
108 3, 5, 3, 4,
109 0,
110 0,
111 65, MVT::i32,
112 OPC_MoveParent,
113 OPC_RecordChild2,
114 OPC_CheckChild2TypeI64,
115 OPC_CheckPredicate5,
116 OPC_Scope, 17,
117 OPC_CheckPredicate, 9,
118 OPC_CheckPatternPredicate6,
119 OPC_CheckComplexPat0, /*#*/2,
120 OPC_EmitMergeInputChains1_0,
121 OPC_EmitNodeXForm, 0, 1,
122 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW_imm), 0|OPFL_Chain|OPFL_MemRefs,
123 3, 5, 3, 4,
124 40,
125 OPC_CheckPredicate6,
126 OPC_Scope, 17,
127 OPC_CheckPredicate7,
128 OPC_CheckPatternPredicate6,
129 OPC_CheckComplexPat0, /*#*/2,
130 OPC_EmitMergeInputChains1_0,
131 OPC_EmitConvertToTarget1,
132 OPC_EmitNodeXForm, 0, 5,
133 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH_imm), 0|OPFL_Chain|OPFL_MemRefs,
134 3, 6, 3, 4,
135 18,
136 OPC_CheckPredicate, 8,
137 OPC_CheckPatternPredicate6,
138 OPC_CheckComplexPat0, /*#*/2,
139 OPC_EmitMergeInputChains1_0,
140 OPC_EmitConvertToTarget1,
141 OPC_EmitNodeXForm, 0, 5,
142 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB_imm), 0|OPFL_Chain|OPFL_MemRefs,
143 3, 6, 3, 4,
144 0,
145 0,
146 0,
147 15|128,1,
148 OPC_CheckChild1TypeI64,
149 OPC_RecordChild2,
150 OPC_CheckChild2TypeI64,
151 OPC_CheckPredicate5,
152 OPC_Scope, 47,
153 OPC_CheckPredicate6,
154 OPC_Scope, 14,
155 OPC_CheckPredicate, 20,
156 OPC_CheckPatternPredicate1,
157 OPC_CheckComplexPat0, /*#*/2,
158 OPC_EmitMergeInputChains1_0,
159 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW), 0|OPFL_Chain|OPFL_MemRefs,
160 3, 1, 3, 4,
161 13,
162 OPC_CheckPredicate7,
163 OPC_CheckPatternPredicate1,
164 OPC_CheckComplexPat0, /*#*/2,
165 OPC_EmitMergeInputChains1_0,
166 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH), 0|OPFL_Chain|OPFL_MemRefs,
167 3, 1, 3, 4,
168 14,
169 OPC_CheckPredicate, 8,
170 OPC_CheckPatternPredicate1,
171 OPC_CheckComplexPat0, /*#*/2,
172 OPC_EmitMergeInputChains1_0,
173 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB), 0|OPFL_Chain|OPFL_MemRefs,
174 3, 1, 3, 4,
175 0,
176 13,
177 OPC_CheckPredicate, 9,
178 OPC_CheckComplexPat0, /*#*/2,
179 OPC_EmitMergeInputChains1_0,
180 OPC_MorphNodeTo0, TARGET_VAL(BPF::STD), 0|OPFL_Chain|OPFL_MemRefs,
181 3, 1, 3, 4,
182 74,
183 OPC_CheckPredicate6,
184 OPC_Scope, 23,
185 OPC_CheckPredicate, 8,
186 OPC_CheckPatternPredicate0,
187 OPC_CheckComplexPat0, /*#*/2,
188 OPC_EmitMergeInputChains1_0,
189 OPC_EmitStringInteger32, BPF::sub_32,
190 OPC_EmitNode1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
191 MVT::i32, 2, 1, 5,
192 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB32), 0|OPFL_Chain|OPFL_MemRefs,
193 3, 6, 3, 4,
194 22,
195 OPC_CheckPredicate7,
196 OPC_CheckPatternPredicate0,
197 OPC_CheckComplexPat0, /*#*/2,
198 OPC_EmitMergeInputChains1_0,
199 OPC_EmitStringInteger32, BPF::sub_32,
200 OPC_EmitNode1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
201 MVT::i32, 2, 1, 5,
202 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH32), 0|OPFL_Chain|OPFL_MemRefs,
203 3, 6, 3, 4,
204 23,
205 OPC_CheckPredicate, 20,
206 OPC_CheckPatternPredicate0,
207 OPC_CheckComplexPat0, /*#*/2,
208 OPC_EmitMergeInputChains1_0,
209 OPC_EmitStringInteger32, BPF::sub_32,
210 OPC_EmitNode1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
211 MVT::i32, 2, 1, 5,
212 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW32), 0|OPFL_Chain|OPFL_MemRefs,
213 3, 6, 3, 4,
214 0,
215 0,
216 54,
217 OPC_CheckChild1TypeI32,
218 OPC_RecordChild2,
219 OPC_CheckChild2TypeI64,
220 OPC_CheckPredicate5,
221 OPC_Scope, 14,
222 OPC_CheckPredicate, 9,
223 OPC_CheckPatternPredicate0,
224 OPC_CheckComplexPat0, /*#*/2,
225 OPC_EmitMergeInputChains1_0,
226 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW32), 0|OPFL_Chain|OPFL_MemRefs,
227 3, 1, 3, 4,
228 32,
229 OPC_CheckPredicate6,
230 OPC_Scope, 13,
231 OPC_CheckPredicate7,
232 OPC_CheckPatternPredicate0,
233 OPC_CheckComplexPat0, /*#*/2,
234 OPC_EmitMergeInputChains1_0,
235 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH32), 0|OPFL_Chain|OPFL_MemRefs,
236 3, 1, 3, 4,
237 14,
238 OPC_CheckPredicate, 8,
239 OPC_CheckPatternPredicate0,
240 OPC_CheckComplexPat0, /*#*/2,
241 OPC_EmitMergeInputChains1_0,
242 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB32), 0|OPFL_Chain|OPFL_MemRefs,
243 3, 1, 3, 4,
244 0,
245 0,
246 0,
247 2|128,1, TARGET_VAL(ISD::INTRINSIC_W_CHAIN),
248 OPC_RecordNode,
249 OPC_Scope, 24,
250 OPC_CheckChild1Integer, 88|128,56,
251 OPC_RecordChild2,
252 OPC_MoveChild2,
253 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
254 OPC_MoveSibling3,
255 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
256 OPC_RecordNode,
257 OPC_MoveParent,
258 OPC_EmitMergeInputChains1_0,
259 OPC_EmitConvertToTarget1,
260 OPC_EmitConvertToTarget2,
261 OPC_MorphNodeTo1Chain, TARGET_VAL(BPF::LD_pseudo),
262 MVT::i64, 2, 3, 4,
263 33,
264 OPC_CheckChild1Integer, 74|128,56,
265 OPC_RecordChild2,
266 OPC_CheckChild2TypeI64,
267 OPC_RecordChild3,
268 OPC_Scope, 15,
269 OPC_MoveChild3,
270 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
271 OPC_CheckPredicate0,
272 OPC_MoveParent,
273 OPC_EmitMergeInputChains1_0,
274 OPC_EmitConvertToTarget2,
275 OPC_MorphNodeTo1Chain, TARGET_VAL(BPF::LD_ABS_B),
276 MVT::i64, 2, 1, 3,
277 8,
278 OPC_EmitMergeInputChains1_0,
279 OPC_MorphNodeTo1Chain, TARGET_VAL(BPF::LD_IND_B),
280 MVT::i64, 2, 1, 2,
281 0,
282 33,
283 OPC_CheckChild1Integer, 76|128,56,
284 OPC_RecordChild2,
285 OPC_CheckChild2TypeI64,
286 OPC_RecordChild3,
287 OPC_Scope, 15,
288 OPC_MoveChild3,
289 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
290 OPC_CheckPredicate0,
291 OPC_MoveParent,
292 OPC_EmitMergeInputChains1_0,
293 OPC_EmitConvertToTarget2,
294 OPC_MorphNodeTo1Chain, TARGET_VAL(BPF::LD_ABS_H),
295 MVT::i64, 2, 1, 3,
296 8,
297 OPC_EmitMergeInputChains1_0,
298 OPC_MorphNodeTo1Chain, TARGET_VAL(BPF::LD_IND_H),
299 MVT::i64, 2, 1, 2,
300 0,
301 33,
302 OPC_CheckChild1Integer, 78|128,56,
303 OPC_RecordChild2,
304 OPC_CheckChild2TypeI64,
305 OPC_RecordChild3,
306 OPC_Scope, 15,
307 OPC_MoveChild3,
308 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
309 OPC_CheckPredicate0,
310 OPC_MoveParent,
311 OPC_EmitMergeInputChains1_0,
312 OPC_EmitConvertToTarget2,
313 OPC_MorphNodeTo1Chain, TARGET_VAL(BPF::LD_ABS_W),
314 MVT::i64, 2, 1, 3,
315 8,
316 OPC_EmitMergeInputChains1_0,
317 OPC_MorphNodeTo1Chain, TARGET_VAL(BPF::LD_IND_W),
318 MVT::i64, 2, 1, 2,
319 0,
320 0,
321 87|128,3, TARGET_VAL(ISD::LOAD),
322 OPC_RecordMemRef,
323 OPC_RecordNode,
324 OPC_RecordChild1,
325 OPC_CheckChild1TypeI64,
326 OPC_CheckPredicate, 26,
327 OPC_SwitchType , 67|128,2, MVT::i64,
328 OPC_Scope, 46,
329 OPC_CheckPredicate, 21,
330 OPC_Scope, 13,
331 OPC_CheckPredicate1,
332 OPC_CheckPatternPredicate1,
333 OPC_CheckComplexPat0, /*#*/1,
334 OPC_EmitMergeInputChains1_0,
335 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDW), 0|OPFL_Chain|OPFL_MemRefs,
336 MVT::i64, 2, 2, 3,
337 13,
338 OPC_CheckPredicate2,
339 OPC_CheckPatternPredicate1,
340 OPC_CheckComplexPat0, /*#*/1,
341 OPC_EmitMergeInputChains1_0,
342 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH), 0|OPFL_Chain|OPFL_MemRefs,
343 MVT::i64, 2, 2, 3,
344 13,
345 OPC_CheckPredicate3,
346 OPC_CheckPatternPredicate1,
347 OPC_CheckComplexPat0, /*#*/1,
348 OPC_EmitMergeInputChains1_0,
349 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB), 0|OPFL_Chain|OPFL_MemRefs,
350 MVT::i64, 2, 2, 3,
351 0,
352 46,
353 OPC_CheckPredicate, 23,
354 OPC_Scope, 13,
355 OPC_CheckPredicate1,
356 OPC_CheckPatternPredicate4,
357 OPC_CheckComplexPat0, /*#*/1,
358 OPC_EmitMergeInputChains1_0,
359 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDWSX), 0|OPFL_Chain|OPFL_MemRefs,
360 MVT::i64, 2, 2, 3,
361 13,
362 OPC_CheckPredicate2,
363 OPC_CheckPatternPredicate4,
364 OPC_CheckComplexPat0, /*#*/1,
365 OPC_EmitMergeInputChains1_0,
366 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDHSX), 0|OPFL_Chain|OPFL_MemRefs,
367 MVT::i64, 2, 2, 3,
368 13,
369 OPC_CheckPredicate3,
370 OPC_CheckPatternPredicate4,
371 OPC_CheckComplexPat0, /*#*/1,
372 OPC_EmitMergeInputChains1_0,
373 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDBSX), 0|OPFL_Chain|OPFL_MemRefs,
374 MVT::i64, 2, 2, 3,
375 0,
376 13,
377 OPC_CheckPredicate, 24,
378 OPC_CheckComplexPat0, /*#*/1,
379 OPC_EmitMergeInputChains1_0,
380 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDD), 0|OPFL_Chain|OPFL_MemRefs,
381 MVT::i64, 2, 2, 3,
382 46,
383 OPC_CheckPredicate, 22,
384 OPC_Scope, 13,
385 OPC_CheckPredicate3,
386 OPC_CheckPatternPredicate1,
387 OPC_CheckComplexPat0, /*#*/1,
388 OPC_EmitMergeInputChains1_0,
389 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB), 0|OPFL_Chain|OPFL_MemRefs,
390 MVT::i64, 2, 2, 3,
391 13,
392 OPC_CheckPredicate2,
393 OPC_CheckPatternPredicate1,
394 OPC_CheckComplexPat0, /*#*/1,
395 OPC_EmitMergeInputChains1_0,
396 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH), 0|OPFL_Chain|OPFL_MemRefs,
397 MVT::i64, 2, 2, 3,
398 13,
399 OPC_CheckPredicate1,
400 OPC_CheckPatternPredicate1,
401 OPC_CheckComplexPat0, /*#*/1,
402 OPC_EmitMergeInputChains1_0,
403 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDW), 0|OPFL_Chain|OPFL_MemRefs,
404 MVT::i64, 2, 2, 3,
405 0,
406 82,
407 OPC_CheckPredicate, 21,
408 OPC_Scope, 25,
409 OPC_CheckPredicate3,
410 OPC_CheckPatternPredicate0,
411 OPC_CheckComplexPat0, /*#*/1,
412 OPC_EmitMergeInputChains1_0,
413 OPC_EmitInteger64, 0,
414 OPC_EmitNode1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
415 MVT::i32, 2, 2, 3,
416 OPC_EmitStringInteger32, BPF::sub_32,
417 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
418 MVT::i64, 3, 4, 5, 6,
419 25,
420 OPC_CheckPredicate2,
421 OPC_CheckPatternPredicate0,
422 OPC_CheckComplexPat0, /*#*/1,
423 OPC_EmitMergeInputChains1_0,
424 OPC_EmitInteger64, 0,
425 OPC_EmitNode1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
426 MVT::i32, 2, 2, 3,
427 OPC_EmitStringInteger32, BPF::sub_32,
428 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
429 MVT::i64, 3, 4, 5, 6,
430 25,
431 OPC_CheckPredicate1,
432 OPC_CheckPatternPredicate0,
433 OPC_CheckComplexPat0, /*#*/1,
434 OPC_EmitMergeInputChains1_0,
435 OPC_EmitInteger64, 0,
436 OPC_EmitNode1, TARGET_VAL(BPF::LDW32), 0|OPFL_Chain|OPFL_MemRefs,
437 MVT::i32, 2, 2, 3,
438 OPC_EmitStringInteger32, BPF::sub_32,
439 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
440 MVT::i64, 3, 4, 5, 6,
441 0,
442 82,
443 OPC_CheckPredicate, 22,
444 OPC_Scope, 25,
445 OPC_CheckPredicate3,
446 OPC_CheckPatternPredicate0,
447 OPC_CheckComplexPat0, /*#*/1,
448 OPC_EmitMergeInputChains1_0,
449 OPC_EmitInteger64, 0,
450 OPC_EmitNode1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
451 MVT::i32, 2, 2, 3,
452 OPC_EmitStringInteger32, BPF::sub_32,
453 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
454 MVT::i64, 3, 4, 5, 6,
455 25,
456 OPC_CheckPredicate2,
457 OPC_CheckPatternPredicate0,
458 OPC_CheckComplexPat0, /*#*/1,
459 OPC_EmitMergeInputChains1_0,
460 OPC_EmitInteger64, 0,
461 OPC_EmitNode1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
462 MVT::i32, 2, 2, 3,
463 OPC_EmitStringInteger32, BPF::sub_32,
464 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
465 MVT::i64, 3, 4, 5, 6,
466 25,
467 OPC_CheckPredicate1,
468 OPC_CheckPatternPredicate0,
469 OPC_CheckComplexPat0, /*#*/1,
470 OPC_EmitMergeInputChains1_0,
471 OPC_EmitInteger64, 0,
472 OPC_EmitNode1, TARGET_VAL(BPF::LDW32), 0|OPFL_Chain|OPFL_MemRefs,
473 MVT::i32, 2, 2, 3,
474 OPC_EmitStringInteger32, BPF::sub_32,
475 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
476 MVT::i64, 3, 4, 5, 6,
477 0,
478 0,
479 6|128,1, MVT::i32,
480 OPC_Scope, 14,
481 OPC_CheckPredicate, 24,
482 OPC_CheckPatternPredicate0,
483 OPC_CheckComplexPat0, /*#*/1,
484 OPC_EmitMergeInputChains1_0,
485 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDW32), 0|OPFL_Chain|OPFL_MemRefs,
486 MVT::i32, 2, 2, 3,
487 32,
488 OPC_CheckPredicate, 21,
489 OPC_Scope, 13,
490 OPC_CheckPredicate2,
491 OPC_CheckPatternPredicate0,
492 OPC_CheckComplexPat0, /*#*/1,
493 OPC_EmitMergeInputChains1_0,
494 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
495 MVT::i32, 2, 2, 3,
496 13,
497 OPC_CheckPredicate3,
498 OPC_CheckPatternPredicate0,
499 OPC_CheckComplexPat0, /*#*/1,
500 OPC_EmitMergeInputChains1_0,
501 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
502 MVT::i32, 2, 2, 3,
503 0,
504 32,
505 OPC_CheckPredicate, 22,
506 OPC_Scope, 13,
507 OPC_CheckPredicate3,
508 OPC_CheckPatternPredicate0,
509 OPC_CheckComplexPat0, /*#*/1,
510 OPC_EmitMergeInputChains1_0,
511 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
512 MVT::i32, 2, 2, 3,
513 13,
514 OPC_CheckPredicate2,
515 OPC_CheckPatternPredicate0,
516 OPC_CheckComplexPat0, /*#*/1,
517 OPC_EmitMergeInputChains1_0,
518 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
519 MVT::i32, 2, 2, 3,
520 0,
521 50,
522 OPC_CheckPredicate, 23,
523 OPC_Scope, 22,
524 OPC_CheckPredicate3,
525 OPC_CheckPatternPredicate4,
526 OPC_CheckComplexPat0, /*#*/1,
527 OPC_EmitMergeInputChains1_0,
528 OPC_EmitNode1, TARGET_VAL(BPF::LDBSX), 0|OPFL_Chain|OPFL_MemRefs,
529 MVT::i64, 2, 2, 3,
530 OPC_EmitStringInteger32, BPF::sub_32,
531 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
532 MVT::i32, 2, 4, 5,
533 22,
534 OPC_CheckPredicate2,
535 OPC_CheckPatternPredicate4,
536 OPC_CheckComplexPat0, /*#*/1,
537 OPC_EmitMergeInputChains1_0,
538 OPC_EmitNode1, TARGET_VAL(BPF::LDHSX), 0|OPFL_Chain|OPFL_MemRefs,
539 MVT::i64, 2, 2, 3,
540 OPC_EmitStringInteger32, BPF::sub_32,
541 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
542 MVT::i32, 2, 4, 5,
543 0,
544 0,
545 0,
546 56, TARGET_VAL(ISD::ATOMIC_LOAD_ADD),
547 OPC_RecordMemRef,
548 OPC_RecordNode,
549 OPC_RecordChild1,
550 OPC_CheckChild1TypeI64,
551 OPC_RecordChild2,
552 OPC_Scope, 33,
553 OPC_CheckPredicate1,
554 OPC_SwitchType , 13, MVT::i64,
555 OPC_CheckPatternPredicate1,
556 OPC_CheckComplexPat0, /*#*/1,
557 OPC_EmitMergeInputChains1_0,
558 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDW), 0|OPFL_Chain|OPFL_MemRefs,
559 MVT::i64, 3, 3, 4, 2,
560 13, MVT::i32,
561 OPC_CheckPatternPredicate0,
562 OPC_CheckComplexPat0, /*#*/1,
563 OPC_EmitMergeInputChains1_0,
564 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
565 MVT::i32, 3, 3, 4, 2,
566 0,
567 14,
568 OPC_CheckPredicate4,
569 OPC_CheckTypeI64,
570 OPC_CheckComplexPat0, /*#*/1,
571 OPC_EmitMergeInputChains1_0,
572 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
573 MVT::i64, 3, 3, 4, 2,
574 0,
575 38, TARGET_VAL(ISD::ATOMIC_LOAD_AND),
576 OPC_RecordMemRef,
577 OPC_RecordNode,
578 OPC_RecordChild1,
579 OPC_CheckChild1TypeI64,
580 OPC_RecordChild2,
581 OPC_SwitchType , 14, MVT::i32,
582 OPC_CheckPredicate1,
583 OPC_CheckPatternPredicate0,
584 OPC_CheckComplexPat0, /*#*/1,
585 OPC_EmitMergeInputChains1_0,
586 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
587 MVT::i32, 3, 3, 4, 2,
588 13, MVT::i64,
589 OPC_CheckPredicate4,
590 OPC_CheckComplexPat0, /*#*/1,
591 OPC_EmitMergeInputChains1_0,
592 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
593 MVT::i64, 3, 3, 4, 2,
594 0,
595 38, TARGET_VAL(ISD::ATOMIC_LOAD_OR),
596 OPC_RecordMemRef,
597 OPC_RecordNode,
598 OPC_RecordChild1,
599 OPC_CheckChild1TypeI64,
600 OPC_RecordChild2,
601 OPC_SwitchType , 14, MVT::i32,
602 OPC_CheckPredicate1,
603 OPC_CheckPatternPredicate0,
604 OPC_CheckComplexPat0, /*#*/1,
605 OPC_EmitMergeInputChains1_0,
606 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
607 MVT::i32, 3, 3, 4, 2,
608 13, MVT::i64,
609 OPC_CheckPredicate4,
610 OPC_CheckComplexPat0, /*#*/1,
611 OPC_EmitMergeInputChains1_0,
612 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
613 MVT::i64, 3, 3, 4, 2,
614 0,
615 38, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),
616 OPC_RecordMemRef,
617 OPC_RecordNode,
618 OPC_RecordChild1,
619 OPC_CheckChild1TypeI64,
620 OPC_RecordChild2,
621 OPC_SwitchType , 14, MVT::i32,
622 OPC_CheckPredicate1,
623 OPC_CheckPatternPredicate0,
624 OPC_CheckComplexPat0, /*#*/1,
625 OPC_EmitMergeInputChains1_0,
626 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
627 MVT::i32, 3, 3, 4, 2,
628 13, MVT::i64,
629 OPC_CheckPredicate4,
630 OPC_CheckComplexPat0, /*#*/1,
631 OPC_EmitMergeInputChains1_0,
632 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
633 MVT::i64, 3, 3, 4, 2,
634 0,
635 38, TARGET_VAL(ISD::ATOMIC_SWAP),
636 OPC_RecordMemRef,
637 OPC_RecordNode,
638 OPC_RecordChild1,
639 OPC_CheckChild1TypeI64,
640 OPC_RecordChild2,
641 OPC_SwitchType , 14, MVT::i32,
642 OPC_CheckPredicate1,
643 OPC_CheckPatternPredicate0,
644 OPC_CheckComplexPat0, /*#*/1,
645 OPC_EmitMergeInputChains1_0,
646 OPC_MorphNodeTo1, TARGET_VAL(BPF::XCHGW32), 0|OPFL_Chain|OPFL_MemRefs,
647 MVT::i32, 3, 3, 4, 2,
648 13, MVT::i64,
649 OPC_CheckPredicate4,
650 OPC_CheckComplexPat0, /*#*/1,
651 OPC_EmitMergeInputChains1_0,
652 OPC_MorphNodeTo1, TARGET_VAL(BPF::XCHGD), 0|OPFL_Chain|OPFL_MemRefs,
653 MVT::i64, 3, 3, 4, 2,
654 0,
655 43, TARGET_VAL(ISD::ATOMIC_CMP_SWAP),
656 OPC_RecordMemRef,
657 OPC_RecordNode,
658 OPC_RecordChild1,
659 OPC_CheckChild1TypeI64,
660 OPC_RecordChild2,
661 OPC_RecordChild3,
662 OPC_SwitchType , 16, MVT::i32,
663 OPC_CheckPredicate1,
664 OPC_CheckPatternPredicate0,
665 OPC_CheckComplexPat0, /*#*/1,
666 OPC_EmitMergeInputChains1_0,
667 OPC_EmitCopyToReg2, BPF::W0,
668 OPC_MorphNodeTo1, TARGET_VAL(BPF::CMPXCHGW32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_MemRefs,
669 MVT::i32, 3, 4, 5, 3,
670 15, MVT::i64,
671 OPC_CheckPredicate4,
672 OPC_CheckComplexPat0, /*#*/1,
673 OPC_EmitMergeInputChains1_0,
674 OPC_EmitCopyToReg2, BPF::R0,
675 OPC_MorphNodeTo1, TARGET_VAL(BPF::CMPXCHGD), 0|OPFL_Chain|OPFL_GlueInput|OPFL_MemRefs,
676 MVT::i64, 3, 4, 5, 3,
677 0,
678 49, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),
679 OPC_RecordMemRef,
680 OPC_RecordNode,
681 OPC_RecordChild1,
682 OPC_CheckChild1TypeI64,
683 OPC_RecordChild2,
684 OPC_SwitchType , 19, MVT::i32,
685 OPC_CheckPredicate1,
686 OPC_CheckComplexPat0, /*#*/1,
687 OPC_EmitMergeInputChains1_0,
688 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
689 MVT::i32, 1, 2,
690 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
691 MVT::i32, 3, 3, 4, 5,
692 19, MVT::i64,
693 OPC_CheckPredicate4,
694 OPC_CheckComplexPat0, /*#*/1,
695 OPC_EmitMergeInputChains1_0,
696 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
697 MVT::i64, 1, 2,
698 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
699 MVT::i64, 3, 3, 4, 5,
700 0,
701 127|128,6, TARGET_VAL(BPFISD::BR_CC),
702 OPC_RecordNode,
703 OPC_CaptureGlueInput,
704 OPC_RecordChild1,
705 OPC_Scope, 59|128,3,
706 OPC_CheckChild1TypeI64,
707 OPC_RecordChild2,
708 OPC_Scope, 74|128,1,
709 OPC_MoveChild2,
710 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
711 OPC_CheckPredicate0,
712 OPC_MoveSibling3,
713 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
714 OPC_CheckTypeI64,
715 OPC_Scope, 18,
716 OPC_CheckPredicate, 10,
717 OPC_MoveSibling4,
718 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
719 OPC_RecordNode,
720 OPC_MoveParent,
721 OPC_EmitMergeInputChains1_0,
722 OPC_EmitConvertToTarget2,
723 OPC_MorphNodeTo0, TARGET_VAL(BPF::JEQ_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
724 3, 1, 4, 3,
725 18,
726 OPC_CheckPredicate, 11,
727 OPC_MoveSibling4,
728 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
729 OPC_RecordNode,
730 OPC_MoveParent,
731 OPC_EmitMergeInputChains1_0,
732 OPC_EmitConvertToTarget2,
733 OPC_MorphNodeTo0, TARGET_VAL(BPF::JUGT_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
734 3, 1, 4, 3,
735 18,
736 OPC_CheckPredicate, 12,
737 OPC_MoveSibling4,
738 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
739 OPC_RecordNode,
740 OPC_MoveParent,
741 OPC_EmitMergeInputChains1_0,
742 OPC_EmitConvertToTarget2,
743 OPC_MorphNodeTo0, TARGET_VAL(BPF::JUGE_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
744 3, 1, 4, 3,
745 18,
746 OPC_CheckPredicate, 13,
747 OPC_MoveSibling4,
748 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
749 OPC_RecordNode,
750 OPC_MoveParent,
751 OPC_EmitMergeInputChains1_0,
752 OPC_EmitConvertToTarget2,
753 OPC_MorphNodeTo0, TARGET_VAL(BPF::JNE_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
754 3, 1, 4, 3,
755 18,
756 OPC_CheckPredicate, 14,
757 OPC_MoveSibling4,
758 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
759 OPC_RecordNode,
760 OPC_MoveParent,
761 OPC_EmitMergeInputChains1_0,
762 OPC_EmitConvertToTarget2,
763 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSGT_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
764 3, 1, 4, 3,
765 18,
766 OPC_CheckPredicate, 15,
767 OPC_MoveSibling4,
768 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
769 OPC_RecordNode,
770 OPC_MoveParent,
771 OPC_EmitMergeInputChains1_0,
772 OPC_EmitConvertToTarget2,
773 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSGE_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
774 3, 1, 4, 3,
775 18,
776 OPC_CheckPredicate, 16,
777 OPC_MoveSibling4,
778 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
779 OPC_RecordNode,
780 OPC_MoveParent,
781 OPC_EmitMergeInputChains1_0,
782 OPC_EmitConvertToTarget2,
783 OPC_MorphNodeTo0, TARGET_VAL(BPF::JULT_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
784 3, 1, 4, 3,
785 18,
786 OPC_CheckPredicate, 17,
787 OPC_MoveSibling4,
788 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
789 OPC_RecordNode,
790 OPC_MoveParent,
791 OPC_EmitMergeInputChains1_0,
792 OPC_EmitConvertToTarget2,
793 OPC_MorphNodeTo0, TARGET_VAL(BPF::JULE_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
794 3, 1, 4, 3,
795 18,
796 OPC_CheckPredicate, 18,
797 OPC_MoveSibling4,
798 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
799 OPC_RecordNode,
800 OPC_MoveParent,
801 OPC_EmitMergeInputChains1_0,
802 OPC_EmitConvertToTarget2,
803 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSLT_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
804 3, 1, 4, 3,
805 18,
806 OPC_CheckPredicate, 19,
807 OPC_MoveSibling4,
808 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
809 OPC_RecordNode,
810 OPC_MoveParent,
811 OPC_EmitMergeInputChains1_0,
812 OPC_EmitConvertToTarget2,
813 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSLE_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
814 3, 1, 4, 3,
815 0,
816 59|128,1,
817 OPC_MoveChild3,
818 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
819 OPC_CheckTypeI64,
820 OPC_Scope, 17,
821 OPC_CheckPredicate, 10,
822 OPC_MoveSibling4,
823 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
824 OPC_RecordNode,
825 OPC_MoveParent,
826 OPC_EmitMergeInputChains1_0,
827 OPC_MorphNodeTo0, TARGET_VAL(BPF::JEQ_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
828 3, 1, 2, 3,
829 17,
830 OPC_CheckPredicate, 11,
831 OPC_MoveSibling4,
832 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
833 OPC_RecordNode,
834 OPC_MoveParent,
835 OPC_EmitMergeInputChains1_0,
836 OPC_MorphNodeTo0, TARGET_VAL(BPF::JUGT_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
837 3, 1, 2, 3,
838 17,
839 OPC_CheckPredicate, 12,
840 OPC_MoveSibling4,
841 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
842 OPC_RecordNode,
843 OPC_MoveParent,
844 OPC_EmitMergeInputChains1_0,
845 OPC_MorphNodeTo0, TARGET_VAL(BPF::JUGE_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
846 3, 1, 2, 3,
847 17,
848 OPC_CheckPredicate, 13,
849 OPC_MoveSibling4,
850 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
851 OPC_RecordNode,
852 OPC_MoveParent,
853 OPC_EmitMergeInputChains1_0,
854 OPC_MorphNodeTo0, TARGET_VAL(BPF::JNE_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
855 3, 1, 2, 3,
856 17,
857 OPC_CheckPredicate, 14,
858 OPC_MoveSibling4,
859 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
860 OPC_RecordNode,
861 OPC_MoveParent,
862 OPC_EmitMergeInputChains1_0,
863 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSGT_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
864 3, 1, 2, 3,
865 17,
866 OPC_CheckPredicate, 15,
867 OPC_MoveSibling4,
868 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
869 OPC_RecordNode,
870 OPC_MoveParent,
871 OPC_EmitMergeInputChains1_0,
872 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSGE_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
873 3, 1, 2, 3,
874 17,
875 OPC_CheckPredicate, 16,
876 OPC_MoveSibling4,
877 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
878 OPC_RecordNode,
879 OPC_MoveParent,
880 OPC_EmitMergeInputChains1_0,
881 OPC_MorphNodeTo0, TARGET_VAL(BPF::JULT_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
882 3, 1, 2, 3,
883 17,
884 OPC_CheckPredicate, 17,
885 OPC_MoveSibling4,
886 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
887 OPC_RecordNode,
888 OPC_MoveParent,
889 OPC_EmitMergeInputChains1_0,
890 OPC_MorphNodeTo0, TARGET_VAL(BPF::JULE_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
891 3, 1, 2, 3,
892 17,
893 OPC_CheckPredicate, 18,
894 OPC_MoveSibling4,
895 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
896 OPC_RecordNode,
897 OPC_MoveParent,
898 OPC_EmitMergeInputChains1_0,
899 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSLT_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
900 3, 1, 2, 3,
901 17,
902 OPC_CheckPredicate, 19,
903 OPC_MoveSibling4,
904 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
905 OPC_RecordNode,
906 OPC_MoveParent,
907 OPC_EmitMergeInputChains1_0,
908 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSLE_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
909 3, 1, 2, 3,
910 0,
911 25,
912 OPC_MoveChild2,
913 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
914 OPC_CheckPredicate0,
915 OPC_MoveSibling3,
916 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
917 OPC_MoveSibling4,
918 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
919 OPC_RecordNode,
920 OPC_MoveParent,
921 OPC_EmitMergeInputChains1_0,
922 OPC_EmitConvertToTarget2,
923 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSET_ri), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
924 3, 1, 4, 3,
925 19,
926 OPC_MoveChild3,
927 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
928 OPC_MoveSibling4,
929 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
930 OPC_RecordNode,
931 OPC_MoveParent,
932 OPC_EmitMergeInputChains1_0,
933 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSET_rr), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
934 3, 1, 2, 3,
935 0,
936 59|128,3,
937 OPC_CheckChild1TypeI32,
938 OPC_RecordChild2,
939 OPC_Scope, 74|128,1,
940 OPC_MoveChild2,
941 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
942 OPC_CheckPredicate0,
943 OPC_MoveSibling3,
944 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
945 OPC_CheckTypeI32,
946 OPC_Scope, 18,
947 OPC_CheckPredicate, 10,
948 OPC_MoveSibling4,
949 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
950 OPC_RecordNode,
951 OPC_MoveParent,
952 OPC_EmitMergeInputChains1_0,
953 OPC_EmitConvertToTarget2,
954 OPC_MorphNodeTo0, TARGET_VAL(BPF::JEQ_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
955 3, 1, 4, 3,
956 18,
957 OPC_CheckPredicate, 11,
958 OPC_MoveSibling4,
959 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
960 OPC_RecordNode,
961 OPC_MoveParent,
962 OPC_EmitMergeInputChains1_0,
963 OPC_EmitConvertToTarget2,
964 OPC_MorphNodeTo0, TARGET_VAL(BPF::JUGT_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
965 3, 1, 4, 3,
966 18,
967 OPC_CheckPredicate, 12,
968 OPC_MoveSibling4,
969 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
970 OPC_RecordNode,
971 OPC_MoveParent,
972 OPC_EmitMergeInputChains1_0,
973 OPC_EmitConvertToTarget2,
974 OPC_MorphNodeTo0, TARGET_VAL(BPF::JUGE_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
975 3, 1, 4, 3,
976 18,
977 OPC_CheckPredicate, 13,
978 OPC_MoveSibling4,
979 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
980 OPC_RecordNode,
981 OPC_MoveParent,
982 OPC_EmitMergeInputChains1_0,
983 OPC_EmitConvertToTarget2,
984 OPC_MorphNodeTo0, TARGET_VAL(BPF::JNE_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
985 3, 1, 4, 3,
986 18,
987 OPC_CheckPredicate, 14,
988 OPC_MoveSibling4,
989 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
990 OPC_RecordNode,
991 OPC_MoveParent,
992 OPC_EmitMergeInputChains1_0,
993 OPC_EmitConvertToTarget2,
994 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSGT_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
995 3, 1, 4, 3,
996 18,
997 OPC_CheckPredicate, 15,
998 OPC_MoveSibling4,
999 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1000 OPC_RecordNode,
1001 OPC_MoveParent,
1002 OPC_EmitMergeInputChains1_0,
1003 OPC_EmitConvertToTarget2,
1004 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSGE_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1005 3, 1, 4, 3,
1006 18,
1007 OPC_CheckPredicate, 16,
1008 OPC_MoveSibling4,
1009 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1010 OPC_RecordNode,
1011 OPC_MoveParent,
1012 OPC_EmitMergeInputChains1_0,
1013 OPC_EmitConvertToTarget2,
1014 OPC_MorphNodeTo0, TARGET_VAL(BPF::JULT_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1015 3, 1, 4, 3,
1016 18,
1017 OPC_CheckPredicate, 17,
1018 OPC_MoveSibling4,
1019 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1020 OPC_RecordNode,
1021 OPC_MoveParent,
1022 OPC_EmitMergeInputChains1_0,
1023 OPC_EmitConvertToTarget2,
1024 OPC_MorphNodeTo0, TARGET_VAL(BPF::JULE_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1025 3, 1, 4, 3,
1026 18,
1027 OPC_CheckPredicate, 18,
1028 OPC_MoveSibling4,
1029 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1030 OPC_RecordNode,
1031 OPC_MoveParent,
1032 OPC_EmitMergeInputChains1_0,
1033 OPC_EmitConvertToTarget2,
1034 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSLT_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1035 3, 1, 4, 3,
1036 18,
1037 OPC_CheckPredicate, 19,
1038 OPC_MoveSibling4,
1039 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1040 OPC_RecordNode,
1041 OPC_MoveParent,
1042 OPC_EmitMergeInputChains1_0,
1043 OPC_EmitConvertToTarget2,
1044 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSLE_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1045 3, 1, 4, 3,
1046 0,
1047 59|128,1,
1048 OPC_MoveChild3,
1049 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1050 OPC_CheckTypeI32,
1051 OPC_Scope, 17,
1052 OPC_CheckPredicate, 10,
1053 OPC_MoveSibling4,
1054 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1055 OPC_RecordNode,
1056 OPC_MoveParent,
1057 OPC_EmitMergeInputChains1_0,
1058 OPC_MorphNodeTo0, TARGET_VAL(BPF::JEQ_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1059 3, 1, 2, 3,
1060 17,
1061 OPC_CheckPredicate, 11,
1062 OPC_MoveSibling4,
1063 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1064 OPC_RecordNode,
1065 OPC_MoveParent,
1066 OPC_EmitMergeInputChains1_0,
1067 OPC_MorphNodeTo0, TARGET_VAL(BPF::JUGT_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1068 3, 1, 2, 3,
1069 17,
1070 OPC_CheckPredicate, 12,
1071 OPC_MoveSibling4,
1072 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1073 OPC_RecordNode,
1074 OPC_MoveParent,
1075 OPC_EmitMergeInputChains1_0,
1076 OPC_MorphNodeTo0, TARGET_VAL(BPF::JUGE_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1077 3, 1, 2, 3,
1078 17,
1079 OPC_CheckPredicate, 13,
1080 OPC_MoveSibling4,
1081 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1082 OPC_RecordNode,
1083 OPC_MoveParent,
1084 OPC_EmitMergeInputChains1_0,
1085 OPC_MorphNodeTo0, TARGET_VAL(BPF::JNE_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1086 3, 1, 2, 3,
1087 17,
1088 OPC_CheckPredicate, 14,
1089 OPC_MoveSibling4,
1090 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1091 OPC_RecordNode,
1092 OPC_MoveParent,
1093 OPC_EmitMergeInputChains1_0,
1094 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSGT_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1095 3, 1, 2, 3,
1096 17,
1097 OPC_CheckPredicate, 15,
1098 OPC_MoveSibling4,
1099 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1100 OPC_RecordNode,
1101 OPC_MoveParent,
1102 OPC_EmitMergeInputChains1_0,
1103 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSGE_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1104 3, 1, 2, 3,
1105 17,
1106 OPC_CheckPredicate, 16,
1107 OPC_MoveSibling4,
1108 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1109 OPC_RecordNode,
1110 OPC_MoveParent,
1111 OPC_EmitMergeInputChains1_0,
1112 OPC_MorphNodeTo0, TARGET_VAL(BPF::JULT_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1113 3, 1, 2, 3,
1114 17,
1115 OPC_CheckPredicate, 17,
1116 OPC_MoveSibling4,
1117 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1118 OPC_RecordNode,
1119 OPC_MoveParent,
1120 OPC_EmitMergeInputChains1_0,
1121 OPC_MorphNodeTo0, TARGET_VAL(BPF::JULE_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1122 3, 1, 2, 3,
1123 17,
1124 OPC_CheckPredicate, 18,
1125 OPC_MoveSibling4,
1126 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1127 OPC_RecordNode,
1128 OPC_MoveParent,
1129 OPC_EmitMergeInputChains1_0,
1130 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSLT_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1131 3, 1, 2, 3,
1132 17,
1133 OPC_CheckPredicate, 19,
1134 OPC_MoveSibling4,
1135 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1136 OPC_RecordNode,
1137 OPC_MoveParent,
1138 OPC_EmitMergeInputChains1_0,
1139 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSLE_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1140 3, 1, 2, 3,
1141 0,
1142 25,
1143 OPC_MoveChild2,
1144 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1145 OPC_CheckPredicate0,
1146 OPC_MoveSibling3,
1147 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
1148 OPC_MoveSibling4,
1149 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1150 OPC_RecordNode,
1151 OPC_MoveParent,
1152 OPC_EmitMergeInputChains1_0,
1153 OPC_EmitConvertToTarget2,
1154 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSET_ri_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1155 3, 1, 4, 3,
1156 19,
1157 OPC_MoveChild3,
1158 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
1159 OPC_MoveSibling4,
1160 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1161 OPC_RecordNode,
1162 OPC_MoveParent,
1163 OPC_EmitMergeInputChains1_0,
1164 OPC_MorphNodeTo0, TARGET_VAL(BPF::JSET_rr_32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1165 3, 1, 2, 3,
1166 0,
1167 0,
1168 6|128,1, TARGET_VAL(ISD::SRL),
1169 OPC_Scope, 73,
1170 OPC_MoveChild0,
1171 OPC_CheckOpcode, TARGET_VAL(ISD::BSWAP),
1172 OPC_RecordChild0,
1173 OPC_MoveParent,
1174 OPC_CheckTypeI64,
1175 OPC_Scope, 31,
1176 OPC_CheckChild1Integer, 96,
1177 OPC_CheckChild1TypeI64,
1178 OPC_Scope, 7,
1179 OPC_CheckPatternPredicate7,
1180 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BSWAP16),
1181 MVT::i64, 1, 0,
1182 8,
1183 OPC_CheckPatternPredicate, 8,
1184 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BE16),
1185 MVT::i64, 1, 0,
1186 8,
1187 OPC_CheckPatternPredicate, 9,
1188 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LE16),
1189 MVT::i64, 1, 0,
1190 0,
1191 31,
1192 OPC_CheckChild1Integer, 64,
1193 OPC_CheckChild1TypeI64,
1194 OPC_Scope, 7,
1195 OPC_CheckPatternPredicate7,
1196 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BSWAP32),
1197 MVT::i64, 1, 0,
1198 8,
1199 OPC_CheckPatternPredicate, 8,
1200 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BE32),
1201 MVT::i64, 1, 0,
1202 8,
1203 OPC_CheckPatternPredicate, 9,
1204 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LE32),
1205 MVT::i64, 1, 0,
1206 0,
1207 0,
1208 57,
1209 OPC_RecordChild0,
1210 OPC_RecordChild1,
1211 OPC_Scope, 32,
1212 OPC_MoveChild1,
1213 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1214 OPC_SwitchType , 11, MVT::i64,
1215 OPC_CheckPredicate0,
1216 OPC_MoveParent,
1217 OPC_CheckTypeI64,
1218 OPC_EmitConvertToTarget1,
1219 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_ri),
1220 MVT::i64, 2, 0, 2,
1221 11, MVT::i32,
1222 OPC_CheckPredicate0,
1223 OPC_MoveParent,
1224 OPC_CheckTypeI32,
1225 OPC_EmitConvertToTarget1,
1226 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_ri_32),
1227 MVT::i32, 2, 0, 2,
1228 0,
1229 9,
1230 OPC_CheckChild1TypeI64,
1231 OPC_CheckTypeI64,
1232 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_rr),
1233 MVT::i64, 2, 0, 1,
1234 9,
1235 OPC_CheckChild1TypeI32,
1236 OPC_CheckTypeI32,
1237 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_rr_32),
1238 MVT::i32, 2, 0, 1,
1239 0,
1240 0,
1241 52|128,1, TARGET_VAL(BPFISD::SELECT_CC),
1242 OPC_CaptureGlueInput,
1243 OPC_RecordChild0,
1244 OPC_Scope, 87,
1245 OPC_CheckChild0TypeI64,
1246 OPC_RecordChild1,
1247 OPC_Scope, 44,
1248 OPC_MoveChild1,
1249 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1250 OPC_CheckPredicate0,
1251 OPC_MoveSibling2,
1252 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1253 OPC_RecordNode,
1254 OPC_CheckTypeI64,
1255 OPC_MoveParent,
1256 OPC_RecordChild3,
1257 OPC_RecordChild4,
1258 OPC_SwitchType , 12, MVT::i64,
1259 OPC_EmitConvertToTarget1,
1260 OPC_EmitConvertToTarget2,
1261 OPC_MorphNodeTo1GlueInput, TARGET_VAL(BPF::Select_Ri),
1262 MVT::i64, 5, 0, 5, 6, 3, 4,
1263 12, MVT::i32,
1264 OPC_EmitConvertToTarget1,
1265 OPC_EmitConvertToTarget2,
1266 OPC_MorphNodeTo1GlueInput, TARGET_VAL(BPF::Select_Ri_64_32),
1267 MVT::i32, 5, 0, 5, 6, 3, 4,
1268 0,
1269 37,
1270 OPC_RecordChild2,
1271 OPC_MoveChild2,
1272 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1273 OPC_CheckTypeI64,
1274 OPC_MoveParent,
1275 OPC_RecordChild3,
1276 OPC_RecordChild4,
1277 OPC_SwitchType , 11, MVT::i64,
1278 OPC_EmitConvertToTarget2,
1279 OPC_MorphNodeTo1GlueInput, TARGET_VAL(BPF::Select),
1280 MVT::i64, 5, 0, 1, 5, 3, 4,
1281 11, MVT::i32,
1282 OPC_EmitConvertToTarget2,
1283 OPC_MorphNodeTo1GlueInput, TARGET_VAL(BPF::Select_64_32),
1284 MVT::i32, 5, 0, 1, 5, 3, 4,
1285 0,
1286 0,
1287 87,
1288 OPC_CheckChild0TypeI32,
1289 OPC_RecordChild1,
1290 OPC_Scope, 44,
1291 OPC_MoveChild1,
1292 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1293 OPC_CheckPredicate0,
1294 OPC_MoveSibling2,
1295 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1296 OPC_RecordNode,
1297 OPC_CheckTypeI32,
1298 OPC_MoveParent,
1299 OPC_RecordChild3,
1300 OPC_RecordChild4,
1301 OPC_SwitchType , 12, MVT::i32,
1302 OPC_EmitConvertToTarget1,
1303 OPC_EmitConvertToTarget2,
1304 OPC_MorphNodeTo1GlueInput, TARGET_VAL(BPF::Select_Ri_32),
1305 MVT::i32, 5, 0, 5, 6, 3, 4,
1306 12, MVT::i64,
1307 OPC_EmitConvertToTarget1,
1308 OPC_EmitConvertToTarget2,
1309 OPC_MorphNodeTo1GlueInput, TARGET_VAL(BPF::Select_Ri_32_64),
1310 MVT::i64, 5, 0, 5, 6, 3, 4,
1311 0,
1312 37,
1313 OPC_RecordChild2,
1314 OPC_MoveChild2,
1315 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1316 OPC_CheckTypeI32,
1317 OPC_MoveParent,
1318 OPC_RecordChild3,
1319 OPC_RecordChild4,
1320 OPC_SwitchType , 11, MVT::i32,
1321 OPC_EmitConvertToTarget2,
1322 OPC_MorphNodeTo1GlueInput, TARGET_VAL(BPF::Select_32),
1323 MVT::i32, 5, 0, 1, 5, 3, 4,
1324 11, MVT::i64,
1325 OPC_EmitConvertToTarget2,
1326 OPC_MorphNodeTo1GlueInput, TARGET_VAL(BPF::Select_32_64),
1327 MVT::i64, 5, 0, 1, 5, 3, 4,
1328 0,
1329 0,
1330 0,
1331 68, TARGET_VAL(ISD::ADD),
1332 OPC_Scope, 11,
1333 OPC_RecordNode,
1334 OPC_CheckTypeI64,
1335 OPC_CheckComplexPat1, /*#*/0,
1336 OPC_MorphNodeTo1None, TARGET_VAL(BPF::FI_ri),
1337 MVT::i64, 2, 1, 2,
1338 53,
1339 OPC_RecordChild0,
1340 OPC_RecordChild1,
1341 OPC_Scope, 30,
1342 OPC_MoveChild1,
1343 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1344 OPC_Scope, 11,
1345 OPC_CheckPredicate0,
1346 OPC_MoveParent,
1347 OPC_CheckTypeI64,
1348 OPC_EmitConvertToTarget1,
1349 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_ri),
1350 MVT::i64, 2, 0, 2,
1351 11,
1352 OPC_CheckPredicate0,
1353 OPC_MoveParent,
1354 OPC_CheckTypeI32,
1355 OPC_EmitConvertToTarget1,
1356 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_ri_32),
1357 MVT::i32, 2, 0, 2,
1358 0,
1359 8,
1360 OPC_CheckTypeI64,
1361 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_rr),
1362 MVT::i64, 2, 0, 1,
1363 8,
1364 OPC_CheckTypeI32,
1365 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_rr_32),
1366 MVT::i32, 2, 0, 1,
1367 0,
1368 0,
1369 68, TARGET_VAL(ISD::OR),
1370 OPC_Scope, 11,
1371 OPC_RecordNode,
1372 OPC_CheckTypeI64,
1373 OPC_CheckComplexPat1, /*#*/0,
1374 OPC_MorphNodeTo1None, TARGET_VAL(BPF::FI_ri),
1375 MVT::i64, 2, 1, 2,
1376 53,
1377 OPC_RecordChild0,
1378 OPC_RecordChild1,
1379 OPC_Scope, 30,
1380 OPC_MoveChild1,
1381 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1382 OPC_Scope, 11,
1383 OPC_CheckPredicate0,
1384 OPC_MoveParent,
1385 OPC_CheckTypeI64,
1386 OPC_EmitConvertToTarget1,
1387 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_ri),
1388 MVT::i64, 2, 0, 2,
1389 11,
1390 OPC_CheckPredicate0,
1391 OPC_MoveParent,
1392 OPC_CheckTypeI32,
1393 OPC_EmitConvertToTarget1,
1394 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_ri_32),
1395 MVT::i32, 2, 0, 2,
1396 0,
1397 8,
1398 OPC_CheckTypeI64,
1399 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_rr),
1400 MVT::i64, 2, 0, 1,
1401 8,
1402 OPC_CheckTypeI32,
1403 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_rr_32),
1404 MVT::i32, 2, 0, 1,
1405 0,
1406 0,
1407 21, TARGET_VAL(ISD::CALLSEQ_START),
1408 OPC_RecordNode,
1409 OPC_RecordChild1,
1410 OPC_MoveChild1,
1411 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1412 OPC_MoveSibling2,
1413 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1414 OPC_RecordNode,
1415 OPC_MoveParent,
1416 OPC_EmitMergeInputChains1_0,
1417 OPC_MorphNodeTo1, TARGET_VAL(BPF::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_GlueOutput,
1418 MVT::i64, 2, 1, 2,
1419 22, TARGET_VAL(ISD::CALLSEQ_END),
1420 OPC_RecordNode,
1421 OPC_CaptureGlueInput,
1422 OPC_RecordChild1,
1423 OPC_MoveChild1,
1424 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1425 OPC_MoveSibling2,
1426 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1427 OPC_RecordNode,
1428 OPC_MoveParent,
1429 OPC_EmitMergeInputChains1_0,
1430 OPC_MorphNodeTo1, TARGET_VAL(BPF::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1431 MVT::i64, 2, 1, 2,
1432 27, TARGET_VAL(BPFISD::MEMCPY),
1433 OPC_RecordNode,
1434 OPC_CaptureGlueInput,
1435 OPC_RecordChild1,
1436 OPC_RecordChild2,
1437 OPC_RecordChild3,
1438 OPC_MoveChild3,
1439 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1440 OPC_MoveSibling4,
1441 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1442 OPC_RecordNode,
1443 OPC_MoveParent,
1444 OPC_EmitMergeInputChains1_0,
1445 OPC_EmitConvertToTarget3,
1446 OPC_EmitConvertToTarget4,
1447 OPC_MorphNodeTo0, TARGET_VAL(BPF::MEMCPY), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1448 4, 1, 2, 5, 6,
1449 78, TARGET_VAL(ISD::SUB),
1450 OPC_Scope, 21,
1451 OPC_CheckChild0Integer, 0,
1452 OPC_RecordChild1,
1453 OPC_SwitchType , 6, MVT::i64,
1454 OPC_MorphNodeTo1None, TARGET_VAL(BPF::NEG_64),
1455 MVT::i64, 1, 0,
1456 6, MVT::i32,
1457 OPC_MorphNodeTo1None, TARGET_VAL(BPF::NEG_32),
1458 MVT::i32, 1, 0,
1459 0,
1460 53,
1461 OPC_RecordChild0,
1462 OPC_RecordChild1,
1463 OPC_Scope, 30,
1464 OPC_MoveChild1,
1465 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1466 OPC_Scope, 11,
1467 OPC_CheckPredicate0,
1468 OPC_MoveParent,
1469 OPC_CheckTypeI64,
1470 OPC_EmitConvertToTarget1,
1471 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_ri),
1472 MVT::i64, 2, 0, 2,
1473 11,
1474 OPC_CheckPredicate0,
1475 OPC_MoveParent,
1476 OPC_CheckTypeI32,
1477 OPC_EmitConvertToTarget1,
1478 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_ri_32),
1479 MVT::i32, 2, 0, 2,
1480 0,
1481 8,
1482 OPC_CheckTypeI64,
1483 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_rr),
1484 MVT::i64, 2, 0, 1,
1485 8,
1486 OPC_CheckTypeI32,
1487 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_rr_32),
1488 MVT::i32, 2, 0, 1,
1489 0,
1490 0,
1491 83, TARGET_VAL(ISD::AND),
1492 OPC_Scope, 26,
1493 OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15,
1494 OPC_RecordChild0,
1495 OPC_CheckTypeI64,
1496 OPC_EmitInteger64, 64,
1497 OPC_EmitNode1None, TARGET_VAL(BPF::SLL_ri),
1498 MVT::i64, 2, 0, 1,
1499 OPC_EmitInteger64, 64,
1500 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_ri),
1501 MVT::i64, 2, 2, 3,
1502 53,
1503 OPC_RecordChild0,
1504 OPC_RecordChild1,
1505 OPC_Scope, 30,
1506 OPC_MoveChild1,
1507 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1508 OPC_Scope, 11,
1509 OPC_CheckPredicate0,
1510 OPC_MoveParent,
1511 OPC_CheckTypeI64,
1512 OPC_EmitConvertToTarget1,
1513 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_ri),
1514 MVT::i64, 2, 0, 2,
1515 11,
1516 OPC_CheckPredicate0,
1517 OPC_MoveParent,
1518 OPC_CheckTypeI32,
1519 OPC_EmitConvertToTarget1,
1520 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_ri_32),
1521 MVT::i32, 2, 0, 2,
1522 0,
1523 8,
1524 OPC_CheckTypeI64,
1525 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_rr),
1526 MVT::i64, 2, 0, 1,
1527 8,
1528 OPC_CheckTypeI32,
1529 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_rr_32),
1530 MVT::i32, 2, 0, 1,
1531 0,
1532 0,
1533 57, TARGET_VAL(ISD::SHL),
1534 OPC_RecordChild0,
1535 OPC_RecordChild1,
1536 OPC_Scope, 32,
1537 OPC_MoveChild1,
1538 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1539 OPC_SwitchType , 11, MVT::i64,
1540 OPC_CheckPredicate0,
1541 OPC_MoveParent,
1542 OPC_CheckTypeI64,
1543 OPC_EmitConvertToTarget1,
1544 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_ri),
1545 MVT::i64, 2, 0, 2,
1546 11, MVT::i32,
1547 OPC_CheckPredicate0,
1548 OPC_MoveParent,
1549 OPC_CheckTypeI32,
1550 OPC_EmitConvertToTarget1,
1551 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_ri_32),
1552 MVT::i32, 2, 0, 2,
1553 0,
1554 9,
1555 OPC_CheckChild1TypeI64,
1556 OPC_CheckTypeI64,
1557 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_rr),
1558 MVT::i64, 2, 0, 1,
1559 9,
1560 OPC_CheckChild1TypeI32,
1561 OPC_CheckTypeI32,
1562 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_rr_32),
1563 MVT::i32, 2, 0, 1,
1564 0,
1565 53, TARGET_VAL(ISD::XOR),
1566 OPC_RecordChild0,
1567 OPC_RecordChild1,
1568 OPC_Scope, 30,
1569 OPC_MoveChild1,
1570 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1571 OPC_Scope, 11,
1572 OPC_CheckPredicate0,
1573 OPC_MoveParent,
1574 OPC_CheckTypeI64,
1575 OPC_EmitConvertToTarget1,
1576 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_ri),
1577 MVT::i64, 2, 0, 2,
1578 11,
1579 OPC_CheckPredicate0,
1580 OPC_MoveParent,
1581 OPC_CheckTypeI32,
1582 OPC_EmitConvertToTarget1,
1583 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_ri_32),
1584 MVT::i32, 2, 0, 2,
1585 0,
1586 8,
1587 OPC_CheckTypeI64,
1588 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_rr),
1589 MVT::i64, 2, 0, 1,
1590 8,
1591 OPC_CheckTypeI32,
1592 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_rr_32),
1593 MVT::i32, 2, 0, 1,
1594 0,
1595 57, TARGET_VAL(ISD::SRA),
1596 OPC_RecordChild0,
1597 OPC_RecordChild1,
1598 OPC_Scope, 32,
1599 OPC_MoveChild1,
1600 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1601 OPC_SwitchType , 11, MVT::i64,
1602 OPC_CheckPredicate0,
1603 OPC_MoveParent,
1604 OPC_CheckTypeI64,
1605 OPC_EmitConvertToTarget1,
1606 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_ri),
1607 MVT::i64, 2, 0, 2,
1608 11, MVT::i32,
1609 OPC_CheckPredicate0,
1610 OPC_MoveParent,
1611 OPC_CheckTypeI32,
1612 OPC_EmitConvertToTarget1,
1613 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_ri_32),
1614 MVT::i32, 2, 0, 2,
1615 0,
1616 9,
1617 OPC_CheckChild1TypeI64,
1618 OPC_CheckTypeI64,
1619 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_rr),
1620 MVT::i64, 2, 0, 1,
1621 9,
1622 OPC_CheckChild1TypeI32,
1623 OPC_CheckTypeI32,
1624 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_rr_32),
1625 MVT::i32, 2, 0, 1,
1626 0,
1627 53, TARGET_VAL(ISD::MUL),
1628 OPC_RecordChild0,
1629 OPC_RecordChild1,
1630 OPC_Scope, 30,
1631 OPC_MoveChild1,
1632 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1633 OPC_Scope, 11,
1634 OPC_CheckPredicate0,
1635 OPC_MoveParent,
1636 OPC_CheckTypeI64,
1637 OPC_EmitConvertToTarget1,
1638 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_ri),
1639 MVT::i64, 2, 0, 2,
1640 11,
1641 OPC_CheckPredicate0,
1642 OPC_MoveParent,
1643 OPC_CheckTypeI32,
1644 OPC_EmitConvertToTarget1,
1645 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_ri_32),
1646 MVT::i32, 2, 0, 2,
1647 0,
1648 8,
1649 OPC_CheckTypeI64,
1650 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_rr),
1651 MVT::i64, 2, 0, 1,
1652 8,
1653 OPC_CheckTypeI32,
1654 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_rr_32),
1655 MVT::i32, 2, 0, 1,
1656 0,
1657 53, TARGET_VAL(ISD::UDIV),
1658 OPC_RecordChild0,
1659 OPC_RecordChild1,
1660 OPC_Scope, 30,
1661 OPC_MoveChild1,
1662 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1663 OPC_Scope, 11,
1664 OPC_CheckPredicate0,
1665 OPC_MoveParent,
1666 OPC_CheckTypeI64,
1667 OPC_EmitConvertToTarget1,
1668 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_ri),
1669 MVT::i64, 2, 0, 2,
1670 11,
1671 OPC_CheckPredicate0,
1672 OPC_MoveParent,
1673 OPC_CheckTypeI32,
1674 OPC_EmitConvertToTarget1,
1675 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_ri_32),
1676 MVT::i32, 2, 0, 2,
1677 0,
1678 8,
1679 OPC_CheckTypeI64,
1680 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_rr),
1681 MVT::i64, 2, 0, 1,
1682 8,
1683 OPC_CheckTypeI32,
1684 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_rr_32),
1685 MVT::i32, 2, 0, 1,
1686 0,
1687 53, TARGET_VAL(ISD::UREM),
1688 OPC_RecordChild0,
1689 OPC_RecordChild1,
1690 OPC_Scope, 30,
1691 OPC_MoveChild1,
1692 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1693 OPC_Scope, 11,
1694 OPC_CheckPredicate0,
1695 OPC_MoveParent,
1696 OPC_CheckTypeI64,
1697 OPC_EmitConvertToTarget1,
1698 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_ri),
1699 MVT::i64, 2, 0, 2,
1700 11,
1701 OPC_CheckPredicate0,
1702 OPC_MoveParent,
1703 OPC_CheckTypeI32,
1704 OPC_EmitConvertToTarget1,
1705 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_ri_32),
1706 MVT::i32, 2, 0, 2,
1707 0,
1708 8,
1709 OPC_CheckTypeI64,
1710 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_rr),
1711 MVT::i64, 2, 0, 1,
1712 8,
1713 OPC_CheckTypeI32,
1714 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_rr_32),
1715 MVT::i32, 2, 0, 1,
1716 0,
1717 57, TARGET_VAL(ISD::SDIV),
1718 OPC_RecordChild0,
1719 OPC_RecordChild1,
1720 OPC_Scope, 32,
1721 OPC_MoveChild1,
1722 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1723 OPC_Scope, 12,
1724 OPC_CheckPredicate0,
1725 OPC_MoveParent,
1726 OPC_CheckTypeI64,
1727 OPC_CheckPatternPredicate2,
1728 OPC_EmitConvertToTarget1,
1729 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_ri),
1730 MVT::i64, 2, 0, 2,
1731 12,
1732 OPC_CheckPredicate0,
1733 OPC_MoveParent,
1734 OPC_CheckTypeI32,
1735 OPC_CheckPatternPredicate2,
1736 OPC_EmitConvertToTarget1,
1737 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_ri_32),
1738 MVT::i32, 2, 0, 2,
1739 0,
1740 9,
1741 OPC_CheckTypeI64,
1742 OPC_CheckPatternPredicate2,
1743 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_rr),
1744 MVT::i64, 2, 0, 1,
1745 9,
1746 OPC_CheckTypeI32,
1747 OPC_CheckPatternPredicate2,
1748 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_rr_32),
1749 MVT::i32, 2, 0, 1,
1750 0,
1751 57, TARGET_VAL(ISD::SREM),
1752 OPC_RecordChild0,
1753 OPC_RecordChild1,
1754 OPC_Scope, 32,
1755 OPC_MoveChild1,
1756 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1757 OPC_Scope, 12,
1758 OPC_CheckPredicate0,
1759 OPC_MoveParent,
1760 OPC_CheckTypeI64,
1761 OPC_CheckPatternPredicate2,
1762 OPC_EmitConvertToTarget1,
1763 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_ri),
1764 MVT::i64, 2, 0, 2,
1765 12,
1766 OPC_CheckPredicate0,
1767 OPC_MoveParent,
1768 OPC_CheckTypeI32,
1769 OPC_CheckPatternPredicate2,
1770 OPC_EmitConvertToTarget1,
1771 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_ri_32),
1772 MVT::i32, 2, 0, 2,
1773 0,
1774 9,
1775 OPC_CheckTypeI64,
1776 OPC_CheckPatternPredicate2,
1777 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_rr),
1778 MVT::i64, 2, 0, 1,
1779 9,
1780 OPC_CheckTypeI32,
1781 OPC_CheckPatternPredicate2,
1782 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_rr_32),
1783 MVT::i32, 2, 0, 1,
1784 0,
1785 26, TARGET_VAL(BPFISD::Wrapper),
1786 OPC_RecordChild0,
1787 OPC_MoveChild0,
1788 OPC_SwitchOpcode , 8, TARGET_VAL(ISD::TargetGlobalAddress),
1789 OPC_MoveParent,
1790 OPC_CheckTypeI64,
1791 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LD_imm64),
1792 MVT::i64, 1, 0,
1793 8, TARGET_VAL(ISD::TargetConstantPool),
1794 OPC_MoveParent,
1795 OPC_CheckTypeI64,
1796 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LD_imm64),
1797 MVT::i64, 1, 0,
1798 0,
1799 56, TARGET_VAL(BPFISD::CALL),
1800 OPC_RecordNode,
1801 OPC_CaptureGlueInput,
1802 OPC_RecordChild1,
1803 OPC_Scope, 40,
1804 OPC_MoveChild1,
1805 OPC_SwitchOpcode , 9, TARGET_VAL(ISD::TargetGlobalAddress),
1806 OPC_MoveParent,
1807 OPC_EmitMergeInputChains1_0,
1808 OPC_MorphNodeTo1, TARGET_VAL(BPF::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1809 MVT::i64, 1, 1,
1810 9, TARGET_VAL(ISD::TargetExternalSymbol),
1811 OPC_MoveParent,
1812 OPC_EmitMergeInputChains1_0,
1813 OPC_MorphNodeTo1, TARGET_VAL(BPF::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1814 MVT::i64, 1, 1,
1815 10, TARGET_VAL(ISD::Constant),
1816 OPC_MoveParent,
1817 OPC_EmitMergeInputChains1_0,
1818 OPC_EmitConvertToTarget1,
1819 OPC_MorphNodeTo1, TARGET_VAL(BPF::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1820 MVT::i64, 1, 2,
1821 0,
1822 9,
1823 OPC_CheckChild1TypeI64,
1824 OPC_EmitMergeInputChains1_0,
1825 OPC_MorphNodeTo1, TARGET_VAL(BPF::JALX), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1826 MVT::i64, 1, 1,
1827 0,
1828 34, TARGET_VAL(ISD::Constant),
1829 OPC_RecordNode,
1830 OPC_SwitchType , 19, MVT::i64,
1831 OPC_Scope, 8,
1832 OPC_CheckPredicate0,
1833 OPC_EmitConvertToTarget0,
1834 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOV_ri),
1835 MVT::i64, 1, 1,
1836 7,
1837 OPC_EmitConvertToTarget0,
1838 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LD_imm64),
1839 MVT::i64, 1, 1,
1840 0,
1841 8, MVT::i32,
1842 OPC_CheckPredicate0,
1843 OPC_EmitConvertToTarget0,
1844 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOV_ri_32),
1845 MVT::i32, 1, 1,
1846 0,
1847 63, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
1848 OPC_RecordChild0,
1849 OPC_MoveChild1,
1850 OPC_Scope, 23,
1851 OPC_CheckValueType, MVT::i8,
1852 OPC_MoveParent,
1853 OPC_SwitchType , 7, MVT::i64,
1854 OPC_CheckPatternPredicate3,
1855 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_8),
1856 MVT::i64, 1, 0,
1857 7, MVT::i32,
1858 OPC_CheckPatternPredicate3,
1859 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32_8),
1860 MVT::i32, 1, 0,
1861 0,
1862 23,
1863 OPC_CheckValueType, MVT::i16,
1864 OPC_MoveParent,
1865 OPC_SwitchType , 7, MVT::i64,
1866 OPC_CheckPatternPredicate3,
1867 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_16),
1868 MVT::i64, 1, 0,
1869 7, MVT::i32,
1870 OPC_CheckPatternPredicate3,
1871 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32_16),
1872 MVT::i32, 1, 0,
1873 0,
1874 10,
1875 OPC_CheckValueType, MVT::i32,
1876 OPC_MoveParent,
1877 OPC_CheckPatternPredicate3,
1878 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32),
1879 MVT::i64, 1, 0,
1880 0,
1881 18, TARGET_VAL(ISD::ADDRSPACECAST),
1882 OPC_RecordNode,
1883 OPC_RecordChild0,
1884 OPC_CheckChild0TypeI64,
1885 OPC_CheckTypeI64,
1886 OPC_EmitNodeXForm, 1, 0,
1887 OPC_EmitNodeXForm, 2, 0,
1888 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADDR_SPACE_CAST),
1889 MVT::i64, 3, 1, 2, 3,
1890 13, TARGET_VAL(ISD::BR),
1891 OPC_RecordNode,
1892 OPC_RecordChild1,
1893 OPC_MoveChild1,
1894 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1895 OPC_MoveParent,
1896 OPC_EmitMergeInputChains1_0,
1897 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JMP),
1898 1, 1,
1899 8, TARGET_VAL(BPFISD::RET_GLUE),
1900 OPC_RecordNode,
1901 OPC_CaptureGlueInput,
1902 OPC_EmitMergeInputChains1_0,
1903 OPC_MorphNodeTo0, TARGET_VAL(BPF::RET), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
1904 0,
1905 30, TARGET_VAL(ISD::BSWAP),
1906 OPC_RecordChild0,
1907 OPC_CheckTypeI64,
1908 OPC_Scope, 7,
1909 OPC_CheckPatternPredicate7,
1910 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BSWAP64),
1911 MVT::i64, 1, 0,
1912 8,
1913 OPC_CheckPatternPredicate, 8,
1914 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BE64),
1915 MVT::i64, 1, 0,
1916 8,
1917 OPC_CheckPatternPredicate, 9,
1918 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LE64),
1919 MVT::i64, 1, 0,
1920 0,
1921 7, TARGET_VAL(ISD::ZERO_EXTEND),
1922 OPC_RecordChild0,
1923 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOV_32_64),
1924 MVT::i64, 1, 0,
1925 10, TARGET_VAL(ISD::TRUNCATE),
1926 OPC_RecordChild0,
1927 OPC_EmitStringInteger32, BPF::sub_32,
1928 OPC_MorphNodeTo1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
1929 MVT::i32, 2, 0, 1,
1930 44, TARGET_VAL(ISD::SIGN_EXTEND),
1931 OPC_RecordChild0,
1932 OPC_Scope, 13,
1933 OPC_CheckPatternPredicate3,
1934 OPC_EmitNode1None, TARGET_VAL(BPF::MOV_32_64),
1935 MVT::i64, 1, 0,
1936 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32),
1937 MVT::i64, 1, 1,
1938 26,
1939 OPC_CheckPatternPredicate, 10,
1940 OPC_EmitNode1None, TARGET_VAL(BPF::MOV_32_64),
1941 MVT::i64, 1, 0,
1942 OPC_EmitInteger64, 64,
1943 OPC_EmitNode1None, TARGET_VAL(BPF::SLL_ri),
1944 MVT::i64, 2, 1, 2,
1945 OPC_EmitInteger64, 64,
1946 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_ri),
1947 MVT::i64, 2, 3, 4,
1948 0,
1949 16, TARGET_VAL(ISD::ANY_EXTEND),
1950 OPC_RecordChild0,
1951 OPC_EmitNode1None, TARGET_VAL(TargetOpcode::IMPLICIT_DEF),
1952 MVT::i64, 0,
1953 OPC_EmitStringInteger32, BPF::sub_32,
1954 OPC_MorphNodeTo1None, TARGET_VAL(TargetOpcode::INSERT_SUBREG),
1955 MVT::i64, 3, 1, 0, 2,
1956 0,
1957 0
1958 }; // Total Array size is 3733 bytes
1959
1960 #undef TARGET_VAL
1961 SelectCodeCommon(NodeToMatch: N, MatcherTable, TableSize: sizeof(MatcherTable));
1962}
1963#endif // GET_DAGISEL_BODY
1964
1965#ifdef GET_DAGISEL_DECL
1966bool CheckPatternPredicate(unsigned PredNo) const override;
1967#endif
1968#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
1969bool DAGISEL_CLASS_COLONCOLON CheckPatternPredicate(unsigned PredNo) const
1970#if DAGISEL_INLINE
1971 override
1972#endif
1973{
1974 switch (PredNo) {
1975 default: llvm_unreachable("Invalid predicate in table?");
1976 case 0: return (Subtarget->getHasAlu32());
1977 case 1: return (!Subtarget->getHasAlu32());
1978 case 2: return (Subtarget->hasSdivSmod());
1979 case 3: return (Subtarget->hasMovsx());
1980 case 4: return (Subtarget->hasLdsx());
1981 case 5: return (Subtarget->hasStoreImm());
1982 case 6: return (Subtarget->getHasAlu32()) && (Subtarget->hasStoreImm());
1983 case 7: return (Subtarget->hasBswap());
1984 case 8: return (Subtarget->isLittleEndian());
1985 case 9: return (!Subtarget->isLittleEndian());
1986 case 10: return (!Subtarget->hasMovsx());
1987 }
1988}
1989#endif // GET_DAGISEL_BODY
1990
1991#ifdef GET_DAGISEL_DECL
1992bool CheckNodePredicate(SDNode *Node, unsigned PredNo) const override;
1993#endif
1994#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
1995bool DAGISEL_CLASS_COLONCOLON CheckNodePredicate(SDNode *Node, unsigned PredNo) const
1996#if DAGISEL_INLINE
1997 override
1998#endif
1999{
2000 switch (PredNo) {
2001 default: llvm_unreachable("Invalid predicate in table?");
2002 case 0: {
2003 // Predicate_i32immSExt32
2004 // Predicate_i64immSExt32
2005 auto *N = cast<ConstantSDNode>(Val: Node);
2006 (void)N;
2007return isInt<32>(x: N->getSExtValue());
2008 }
2009 case 1: {
2010 // Predicate_atomic_cmp_swap_i32
2011 // Predicate_atomic_load_add_i32
2012 // Predicate_atomic_load_and_i32
2013 // Predicate_atomic_load_or_i32
2014 // Predicate_atomic_load_sub_i32
2015 // Predicate_atomic_load_xor_i32
2016 // Predicate_atomic_swap_i32
2017 // Predicate_extloadi32
2018 // Predicate_sextloadi32
2019 // Predicate_zextloadi32
2020 SDNode *N = Node;
2021 (void)N;
2022if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i32) return false;
2023return true;
2024
2025 }
2026 case 2: {
2027 // Predicate_extloadi16
2028 // Predicate_sextloadi16
2029 // Predicate_zextloadi16
2030 SDNode *N = Node;
2031 (void)N;
2032if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i16) return false;
2033return true;
2034
2035 }
2036 case 3: {
2037 // Predicate_extloadi8
2038 // Predicate_sextloadi8
2039 // Predicate_zextloadi8
2040 SDNode *N = Node;
2041 (void)N;
2042if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i8) return false;
2043return true;
2044
2045 }
2046 case 4: {
2047 // Predicate_atomic_cmp_swap_i64
2048 // Predicate_atomic_load_add_i64
2049 // Predicate_atomic_load_and_i64
2050 // Predicate_atomic_load_or_i64
2051 // Predicate_atomic_load_sub_i64
2052 // Predicate_atomic_load_xor_i64
2053 // Predicate_atomic_swap_i64
2054 SDNode *N = Node;
2055 (void)N;
2056if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i64) return false;
2057return true;
2058
2059 }
2060 case 5: {
2061 // Predicate_unindexedstore
2062 SDNode *N = Node;
2063 (void)N;
2064if (cast<StoreSDNode>(Val: N)->getAddressingMode() != ISD::UNINDEXED) return false;
2065return true;
2066
2067 }
2068 case 6: {
2069 // Predicate_truncstore
2070 SDNode *N = Node;
2071 (void)N;
2072 if (!cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
2073return true;
2074
2075 }
2076 case 7: {
2077 // Predicate_truncstorei16
2078 SDNode *N = Node;
2079 (void)N;
2080if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i16) return false;
2081 if (!cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
2082return true;
2083
2084 }
2085 case 8: {
2086 // Predicate_truncstorei8
2087 SDNode *N = Node;
2088 (void)N;
2089if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i8) return false;
2090 if (!cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
2091return true;
2092
2093 }
2094 case 9: {
2095 // Predicate_store
2096 SDNode *N = Node;
2097 (void)N;
2098 if (cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
2099return true;
2100
2101 }
2102 case 10: {
2103 // Predicate_BPF_CC_EQ
2104 // Predicate_BPF_CC_EQ_32
2105 auto *N = cast<ConstantSDNode>(Val: Node);
2106 (void)N;
2107return (N->getZExtValue() == ISD::SETEQ);
2108 }
2109 case 11: {
2110 // Predicate_BPF_CC_GTU
2111 // Predicate_BPF_CC_GTU_32
2112 auto *N = cast<ConstantSDNode>(Val: Node);
2113 (void)N;
2114return (N->getZExtValue() == ISD::SETUGT);
2115 }
2116 case 12: {
2117 // Predicate_BPF_CC_GEU
2118 // Predicate_BPF_CC_GEU_32
2119 auto *N = cast<ConstantSDNode>(Val: Node);
2120 (void)N;
2121return (N->getZExtValue() == ISD::SETUGE);
2122 }
2123 case 13: {
2124 // Predicate_BPF_CC_NE
2125 // Predicate_BPF_CC_NE_32
2126 auto *N = cast<ConstantSDNode>(Val: Node);
2127 (void)N;
2128return (N->getZExtValue() == ISD::SETNE);
2129 }
2130 case 14: {
2131 // Predicate_BPF_CC_GT
2132 // Predicate_BPF_CC_GT_32
2133 auto *N = cast<ConstantSDNode>(Val: Node);
2134 (void)N;
2135return (N->getZExtValue() == ISD::SETGT);
2136 }
2137 case 15: {
2138 // Predicate_BPF_CC_GE
2139 // Predicate_BPF_CC_GE_32
2140 auto *N = cast<ConstantSDNode>(Val: Node);
2141 (void)N;
2142return (N->getZExtValue() == ISD::SETGE);
2143 }
2144 case 16: {
2145 // Predicate_BPF_CC_LTU
2146 // Predicate_BPF_CC_LTU_32
2147 auto *N = cast<ConstantSDNode>(Val: Node);
2148 (void)N;
2149return (N->getZExtValue() == ISD::SETULT);
2150 }
2151 case 17: {
2152 // Predicate_BPF_CC_LEU
2153 // Predicate_BPF_CC_LEU_32
2154 auto *N = cast<ConstantSDNode>(Val: Node);
2155 (void)N;
2156return (N->getZExtValue() == ISD::SETULE);
2157 }
2158 case 18: {
2159 // Predicate_BPF_CC_LT
2160 // Predicate_BPF_CC_LT_32
2161 auto *N = cast<ConstantSDNode>(Val: Node);
2162 (void)N;
2163return (N->getZExtValue() == ISD::SETLT);
2164 }
2165 case 19: {
2166 // Predicate_BPF_CC_LE
2167 // Predicate_BPF_CC_LE_32
2168 auto *N = cast<ConstantSDNode>(Val: Node);
2169 (void)N;
2170return (N->getZExtValue() == ISD::SETLE);
2171 }
2172 case 20: {
2173 // Predicate_truncstorei32
2174 SDNode *N = Node;
2175 (void)N;
2176if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i32) return false;
2177 if (!cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
2178return true;
2179
2180 }
2181 case 21: {
2182 // Predicate_zextload
2183 SDNode *N = Node;
2184 (void)N;
2185if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::ZEXTLOAD) return false;
2186return true;
2187
2188 }
2189 case 22: {
2190 // Predicate_extload
2191 SDNode *N = Node;
2192 (void)N;
2193if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::EXTLOAD) return false;
2194return true;
2195
2196 }
2197 case 23: {
2198 // Predicate_sextload
2199 SDNode *N = Node;
2200 (void)N;
2201if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::SEXTLOAD) return false;
2202return true;
2203
2204 }
2205 case 24: {
2206 // Predicate_load
2207 SDNode *N = Node;
2208 (void)N;
2209if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
2210return true;
2211
2212 }
2213 case 25: {
2214 // Predicate_i64immZExt32
2215 auto *N = cast<ConstantSDNode>(Val: Node);
2216 (void)N;
2217return isUInt<32>(x: N->getZExtValue());
2218 }
2219 case 26: {
2220 // Predicate_unindexedload
2221 SDNode *N = Node;
2222 (void)N;
2223if (cast<LoadSDNode>(Val: N)->getAddressingMode() != ISD::UNINDEXED) return false;
2224return true;
2225
2226 }
2227 }
2228}
2229#endif // GET_DAGISEL_BODY
2230
2231#ifdef GET_DAGISEL_DECL
2232bool CheckComplexPattern(SDNode *Root, SDNode *Parent,
2233 SDValue N, unsigned PatternNo,
2234 SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result) override;
2235#endif
2236#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2237bool DAGISEL_CLASS_COLONCOLON CheckComplexPattern(SDNode *Root, SDNode *Parent,
2238 SDValue N, unsigned PatternNo,
2239 SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result)
2240#if DAGISEL_INLINE
2241 override
2242#endif
2243{
2244 unsigned NextRes = Result.size();
2245 switch (PatternNo) {
2246 default: llvm_unreachable("Invalid pattern # in table?");
2247 case 0:
2248 Result.resize(N: NextRes+2);
2249 return SelectAddr(Addr: N, Base&: Result[NextRes+0].first, Offset&: Result[NextRes+1].first);
2250 case 1:
2251 Result.resize(N: NextRes+2);
2252 return SelectFIAddr(Addr: N, Base&: Result[NextRes+0].first, Offset&: Result[NextRes+1].first);
2253 }
2254}
2255#endif // GET_DAGISEL_BODY
2256
2257#ifdef GET_DAGISEL_DECL
2258SDValue RunSDNodeXForm(SDValue V, unsigned XFormNo) override;
2259#endif
2260#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2261SDValue DAGISEL_CLASS_COLONCOLON RunSDNodeXForm(SDValue V, unsigned XFormNo)
2262#if DAGISEL_INLINE
2263 override
2264#endif
2265{
2266 switch (XFormNo) {
2267 default: llvm_unreachable("Invalid xform # in table?");
2268 case 0: {
2269 ConstantSDNode *N = cast<ConstantSDNode>(Val: V.getNode());
2270
2271 return CurDAG->getTargetConstant(Val: N->getZExtValue(), DL: SDLoc(N), VT: MVT::i64);
2272
2273 }
2274 case 1: {
2275 SDNode *N = V.getNode();
2276
2277 return CurDAG->getTargetConstant(
2278 Val: cast<AddrSpaceCastSDNode>(Val: N)->getDestAddressSpace(),
2279 DL: SDLoc(N), VT: MVT::i64);
2280
2281 }
2282 case 2: {
2283 SDNode *N = V.getNode();
2284
2285 return CurDAG->getTargetConstant(
2286 Val: cast<AddrSpaceCastSDNode>(Val: N)->getSrcAddressSpace(),
2287 DL: SDLoc(N), VT: MVT::i64);
2288
2289 }
2290 }
2291}
2292#endif // GET_DAGISEL_BODY
2293
2294
2295#ifdef DAGISEL_INLINE
2296#undef DAGISEL_INLINE
2297#endif
2298#ifdef DAGISEL_CLASS_COLONCOLON
2299#undef DAGISEL_CLASS_COLONCOLON
2300#endif
2301#ifdef GET_DAGISEL_DECL
2302#undef GET_DAGISEL_DECL
2303#endif
2304#ifdef GET_DAGISEL_BODY
2305#undef GET_DAGISEL_BODY
2306#endif
2307