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. Coverage indexes are emitted as 4 bytes,
55 // COVERAGE_IDX_VAL handles this.
56 #define TARGET_VAL(X) X & 255, unsigned(X) >> 8
57 #define COVERAGE_IDX_VAL(X) X & 255, (unsigned(X) >> 8) & 255, (unsigned(X) >> 16) & 255, (unsigned(X) >> 24) & 255
58 static const uint8_t MatcherTable[] = {
59 OPC_SwitchOpcode , 70|128,2, TARGET_VAL(ISD::STORE),
60 OPC_RecordMemRef,
61 OPC_RecordNode,
62 OPC_RecordChild1,
63 OPC_Scope, 15|128,1,
64 OPC_MoveChild1,
65 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
66 OPC_SwitchType , 73, MVT::i64,
67 OPC_Scope, 19,
68 OPC_CheckPredicate0,
69 OPC_MoveParent,
70 OPC_RecordChild2,
71 OPC_CheckChild2TypeI64,
72 OPC_CheckPredicate, 11,
73 OPC_CheckPredicate, 13,
74 OPC_CheckPatternPredicate6,
75 OPC_CheckComplexPat0, /*#*/2,
76 OPC_EmitMergeInputChains1_0,
77 OPC_EmitConvertToTarget1,
78 OPC_MorphNodeTo0, TARGET_VAL(BPF::STD_imm), 0|OPFL_Chain|OPFL_MemRefs,
79 3, 25,
80 50,
81 OPC_CheckPredicate, 34,
82 OPC_MoveParent,
83 OPC_RecordChild2,
84 OPC_CheckChild2TypeI64,
85 OPC_CheckPredicate, 11,
86 OPC_CheckPredicate, 12,
87 OPC_Scope, 12,
88 OPC_CheckPredicate1,
89 OPC_CheckPatternPredicate6,
90 OPC_CheckComplexPat0, /*#*/2,
91 OPC_EmitMergeInputChains1_0,
92 OPC_EmitConvertToTarget1,
93 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW_imm), 0|OPFL_Chain|OPFL_MemRefs,
94 3, 25,
95 12,
96 OPC_CheckPredicate2,
97 OPC_CheckPatternPredicate6,
98 OPC_CheckComplexPat0, /*#*/2,
99 OPC_EmitMergeInputChains1_0,
100 OPC_EmitConvertToTarget1,
101 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH_imm), 0|OPFL_Chain|OPFL_MemRefs,
102 3, 25,
103 12,
104 OPC_CheckPredicate3,
105 OPC_CheckPatternPredicate6,
106 OPC_CheckComplexPat0, /*#*/2,
107 OPC_EmitMergeInputChains1_0,
108 OPC_EmitConvertToTarget1,
109 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB_imm), 0|OPFL_Chain|OPFL_MemRefs,
110 3, 25,
111 0,
112 0,
113 60, MVT::i32,
114 OPC_MoveParent,
115 OPC_RecordChild2,
116 OPC_CheckChild2TypeI64,
117 OPC_CheckPredicate, 11,
118 OPC_Scope, 15,
119 OPC_CheckPredicate, 13,
120 OPC_CheckPatternPredicate7,
121 OPC_CheckComplexPat0, /*#*/2,
122 OPC_EmitMergeInputChains1_0,
123 OPC_EmitNodeXForm, 0, 1,
124 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW_imm), 0|OPFL_Chain|OPFL_MemRefs,
125 3, 25,
126 36,
127 OPC_CheckPredicate, 12,
128 OPC_Scope, 15,
129 OPC_CheckPredicate2,
130 OPC_CheckPatternPredicate7,
131 OPC_CheckComplexPat0, /*#*/2,
132 OPC_EmitMergeInputChains1_0,
133 OPC_EmitConvertToTarget1,
134 OPC_EmitNodeXForm, 0, 5,
135 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH_imm), 0|OPFL_Chain|OPFL_MemRefs,
136 3, 30,
137 15,
138 OPC_CheckPredicate3,
139 OPC_CheckPatternPredicate7,
140 OPC_CheckComplexPat0, /*#*/2,
141 OPC_EmitMergeInputChains1_0,
142 OPC_EmitConvertToTarget1,
143 OPC_EmitNodeXForm, 0, 5,
144 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB_imm), 0|OPFL_Chain|OPFL_MemRefs,
145 3, 30,
146 0,
147 0,
148 0,
149 125,
150 OPC_CheckChild1TypeI64,
151 OPC_RecordChild2,
152 OPC_CheckChild2TypeI64,
153 OPC_CheckPredicate, 11,
154 OPC_Scope, 40,
155 OPC_CheckPredicate, 12,
156 OPC_Scope, 11,
157 OPC_CheckPredicate1,
158 OPC_CheckPatternPredicate2,
159 OPC_CheckComplexPat0, /*#*/2,
160 OPC_EmitMergeInputChains1_0,
161 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW), 0|OPFL_Chain|OPFL_MemRefs,
162 3, 20,
163 11,
164 OPC_CheckPredicate2,
165 OPC_CheckPatternPredicate2,
166 OPC_CheckComplexPat0, /*#*/2,
167 OPC_EmitMergeInputChains1_0,
168 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH), 0|OPFL_Chain|OPFL_MemRefs,
169 3, 20,
170 11,
171 OPC_CheckPredicate3,
172 OPC_CheckPatternPredicate2,
173 OPC_CheckComplexPat0, /*#*/2,
174 OPC_EmitMergeInputChains1_0,
175 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB), 0|OPFL_Chain|OPFL_MemRefs,
176 3, 20,
177 0,
178 11,
179 OPC_CheckPredicate, 13,
180 OPC_CheckComplexPat0, /*#*/2,
181 OPC_EmitMergeInputChains1_0,
182 OPC_MorphNodeTo0, TARGET_VAL(BPF::STD), 0|OPFL_Chain|OPFL_MemRefs,
183 3, 20,
184 64,
185 OPC_CheckPredicate, 12,
186 OPC_Scope, 19,
187 OPC_CheckPredicate3,
188 OPC_CheckPatternPredicate0,
189 OPC_CheckComplexPat0, /*#*/2,
190 OPC_EmitMergeInputChains1_0,
191 OPC_EmitIntegerI32, BPF::sub_32,
192 OPC_EmitNode1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
193 MVT::i32, 2, 33,
194 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB32), 0|OPFL_Chain|OPFL_MemRefs,
195 3, 30,
196 19,
197 OPC_CheckPredicate2,
198 OPC_CheckPatternPredicate0,
199 OPC_CheckComplexPat0, /*#*/2,
200 OPC_EmitMergeInputChains1_0,
201 OPC_EmitIntegerI32, BPF::sub_32,
202 OPC_EmitNode1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
203 MVT::i32, 2, 33,
204 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH32), 0|OPFL_Chain|OPFL_MemRefs,
205 3, 30,
206 19,
207 OPC_CheckPredicate1,
208 OPC_CheckPatternPredicate0,
209 OPC_CheckComplexPat0, /*#*/2,
210 OPC_EmitMergeInputChains1_0,
211 OPC_EmitIntegerI32, BPF::sub_32,
212 OPC_EmitNode1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
213 MVT::i32, 2, 33,
214 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW32), 0|OPFL_Chain|OPFL_MemRefs,
215 3, 30,
216 0,
217 0,
218 49,
219 OPC_CheckChild1TypeI32,
220 OPC_RecordChild2,
221 OPC_CheckChild2TypeI64,
222 OPC_CheckPredicate, 11,
223 OPC_Scope, 12,
224 OPC_CheckPredicate, 13,
225 OPC_CheckPatternPredicate0,
226 OPC_CheckComplexPat0, /*#*/2,
227 OPC_EmitMergeInputChains1_0,
228 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW32), 0|OPFL_Chain|OPFL_MemRefs,
229 3, 20,
230 28,
231 OPC_CheckPredicate, 12,
232 OPC_Scope, 11,
233 OPC_CheckPredicate2,
234 OPC_CheckPatternPredicate0,
235 OPC_CheckComplexPat0, /*#*/2,
236 OPC_EmitMergeInputChains1_0,
237 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH32), 0|OPFL_Chain|OPFL_MemRefs,
238 3, 20,
239 11,
240 OPC_CheckPredicate3,
241 OPC_CheckPatternPredicate0,
242 OPC_CheckComplexPat0, /*#*/2,
243 OPC_EmitMergeInputChains1_0,
244 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB32), 0|OPFL_Chain|OPFL_MemRefs,
245 3, 20,
246 0,
247 0,
248 0,
249 13|128,1, TARGET_VAL(ISD::INTRINSIC_W_CHAIN),
250 OPC_RecordNode,
251 OPC_Scope, 23,
252 OPC_CheckChild1Integer, 115|128,32,
253 OPC_RecordChild2,
254 OPC_MoveChild2,
255 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
256 OPC_MoveSibling3,
257 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
258 OPC_RecordNode,
259 OPC_MoveParent,
260 OPC_EmitMergeInputChains1_0,
261 OPC_EmitConvertToTarget1,
262 OPC_EmitConvertToTarget2,
263 OPC_MorphNodeTo1Chain, TARGET_VAL(BPF::LD_pseudo),
264 MVT::i64, 2, 21,
265 37,
266 OPC_CheckChild1Integer, 108|128,32,
267 OPC_RecordChild2,
268 OPC_CheckChild2TypeI64,
269 OPC_RecordChild3,
270 OPC_Scope, 17,
271 OPC_MoveChild3,
272 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
273 OPC_CheckPredicate0,
274 OPC_MoveParent,
275 OPC_EmitMergeInputChains1_0,
276 OPC_EmitConvertToTarget2,
277 OPC_EmitCopyToReg1, BPF::R6,
278 OPC_MorphNodeTo1, TARGET_VAL(BPF::LD_ABS_B), 0|OPFL_Chain|OPFL_GlueInput,
279 MVT::i64, 1, 13,
280 10,
281 OPC_EmitMergeInputChains1_0,
282 OPC_EmitCopyToReg1, BPF::R6,
283 OPC_MorphNodeTo1, TARGET_VAL(BPF::LD_IND_B), 0|OPFL_Chain|OPFL_GlueInput,
284 MVT::i64, 1, 5,
285 0,
286 37,
287 OPC_CheckChild1Integer, 109|128,32,
288 OPC_RecordChild2,
289 OPC_CheckChild2TypeI64,
290 OPC_RecordChild3,
291 OPC_Scope, 17,
292 OPC_MoveChild3,
293 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
294 OPC_CheckPredicate0,
295 OPC_MoveParent,
296 OPC_EmitMergeInputChains1_0,
297 OPC_EmitConvertToTarget2,
298 OPC_EmitCopyToReg1, BPF::R6,
299 OPC_MorphNodeTo1, TARGET_VAL(BPF::LD_ABS_H), 0|OPFL_Chain|OPFL_GlueInput,
300 MVT::i64, 1, 13,
301 10,
302 OPC_EmitMergeInputChains1_0,
303 OPC_EmitCopyToReg1, BPF::R6,
304 OPC_MorphNodeTo1, TARGET_VAL(BPF::LD_IND_H), 0|OPFL_Chain|OPFL_GlueInput,
305 MVT::i64, 1, 5,
306 0,
307 37,
308 OPC_CheckChild1Integer, 110|128,32,
309 OPC_RecordChild2,
310 OPC_CheckChild2TypeI64,
311 OPC_RecordChild3,
312 OPC_Scope, 17,
313 OPC_MoveChild3,
314 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
315 OPC_CheckPredicate0,
316 OPC_MoveParent,
317 OPC_EmitMergeInputChains1_0,
318 OPC_EmitConvertToTarget2,
319 OPC_EmitCopyToReg1, BPF::R6,
320 OPC_MorphNodeTo1, TARGET_VAL(BPF::LD_ABS_W), 0|OPFL_Chain|OPFL_GlueInput,
321 MVT::i64, 1, 13,
322 10,
323 OPC_EmitMergeInputChains1_0,
324 OPC_EmitCopyToReg1, BPF::R6,
325 OPC_MorphNodeTo1, TARGET_VAL(BPF::LD_IND_W), 0|OPFL_Chain|OPFL_GlueInput,
326 MVT::i64, 1, 5,
327 0,
328 0,
329 125, TARGET_VAL(ISD::ATOMIC_STORE),
330 OPC_RecordMemRef,
331 OPC_RecordNode,
332 OPC_RecordChild1,
333 OPC_Scope, 32,
334 OPC_CheckChild1TypeI64,
335 OPC_RecordChild2,
336 OPC_CheckChild2TypeI64,
337 OPC_CheckPredicate, 9,
338 OPC_Scope, 12,
339 OPC_CheckPredicate, 14,
340 OPC_CheckPatternPredicate1,
341 OPC_CheckComplexPat0, /*#*/2,
342 OPC_EmitMergeInputChains1_0,
343 OPC_MorphNodeTo0, TARGET_VAL(BPF::STD), 0|OPFL_Chain|OPFL_MemRefs,
344 3, 20,
345 11,
346 OPC_CheckPredicate5,
347 OPC_CheckPatternPredicate1,
348 OPC_CheckComplexPat0, /*#*/2,
349 OPC_EmitMergeInputChains1_0,
350 OPC_MorphNodeTo0, TARGET_VAL(BPF::STDREL), 0|OPFL_Chain|OPFL_MemRefs,
351 3, 20,
352 0,
353 86,
354 OPC_CheckChild1TypeI32,
355 OPC_RecordChild2,
356 OPC_CheckChild2TypeI64,
357 OPC_Scope, 13,
358 OPC_CheckPredicate1,
359 OPC_CheckPredicate, 14,
360 OPC_CheckPatternPredicate1,
361 OPC_CheckComplexPat0, /*#*/2,
362 OPC_EmitMergeInputChains1_0,
363 OPC_MorphNodeTo0, TARGET_VAL(BPF::STW32), 0|OPFL_Chain|OPFL_MemRefs,
364 3, 20,
365 13,
366 OPC_CheckPredicate2,
367 OPC_CheckPredicate, 14,
368 OPC_CheckPatternPredicate1,
369 OPC_CheckComplexPat0, /*#*/2,
370 OPC_EmitMergeInputChains1_0,
371 OPC_MorphNodeTo0, TARGET_VAL(BPF::STH32), 0|OPFL_Chain|OPFL_MemRefs,
372 3, 20,
373 13,
374 OPC_CheckPredicate3,
375 OPC_CheckPredicate, 14,
376 OPC_CheckPatternPredicate1,
377 OPC_CheckComplexPat0, /*#*/2,
378 OPC_EmitMergeInputChains1_0,
379 OPC_MorphNodeTo0, TARGET_VAL(BPF::STB32), 0|OPFL_Chain|OPFL_MemRefs,
380 3, 20,
381 12,
382 OPC_CheckPredicate1,
383 OPC_CheckPredicate5,
384 OPC_CheckPatternPredicate1,
385 OPC_CheckComplexPat0, /*#*/2,
386 OPC_EmitMergeInputChains1_0,
387 OPC_MorphNodeTo0, TARGET_VAL(BPF::STWREL32), 0|OPFL_Chain|OPFL_MemRefs,
388 3, 20,
389 12,
390 OPC_CheckPredicate2,
391 OPC_CheckPredicate5,
392 OPC_CheckPatternPredicate1,
393 OPC_CheckComplexPat0, /*#*/2,
394 OPC_EmitMergeInputChains1_0,
395 OPC_MorphNodeTo0, TARGET_VAL(BPF::STHREL32), 0|OPFL_Chain|OPFL_MemRefs,
396 3, 20,
397 12,
398 OPC_CheckPredicate3,
399 OPC_CheckPredicate5,
400 OPC_CheckPatternPredicate1,
401 OPC_CheckComplexPat0, /*#*/2,
402 OPC_EmitMergeInputChains1_0,
403 OPC_MorphNodeTo0, TARGET_VAL(BPF::STBREL32), 0|OPFL_Chain|OPFL_MemRefs,
404 3, 20,
405 0,
406 0,
407 37|128,3, TARGET_VAL(ISD::LOAD),
408 OPC_RecordMemRef,
409 OPC_RecordNode,
410 OPC_RecordChild1,
411 OPC_CheckChild1TypeI64,
412 OPC_CheckPredicate, 35,
413 OPC_SwitchType , 27|128,2, MVT::i64,
414 OPC_Scope, 43,
415 OPC_CheckPredicate, 27,
416 OPC_Scope, 12,
417 OPC_CheckPredicate1,
418 OPC_CheckPatternPredicate2,
419 OPC_CheckComplexPat0, /*#*/1,
420 OPC_EmitMergeInputChains1_0,
421 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDW), 0|OPFL_Chain|OPFL_MemRefs,
422 MVT::i64, 2, 12,
423 12,
424 OPC_CheckPredicate2,
425 OPC_CheckPatternPredicate2,
426 OPC_CheckComplexPat0, /*#*/1,
427 OPC_EmitMergeInputChains1_0,
428 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH), 0|OPFL_Chain|OPFL_MemRefs,
429 MVT::i64, 2, 12,
430 12,
431 OPC_CheckPredicate3,
432 OPC_CheckPatternPredicate2,
433 OPC_CheckComplexPat0, /*#*/1,
434 OPC_EmitMergeInputChains1_0,
435 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB), 0|OPFL_Chain|OPFL_MemRefs,
436 MVT::i64, 2, 12,
437 0,
438 43,
439 OPC_CheckPredicate, 31,
440 OPC_Scope, 12,
441 OPC_CheckPredicate1,
442 OPC_CheckPatternPredicate5,
443 OPC_CheckComplexPat0, /*#*/1,
444 OPC_EmitMergeInputChains1_0,
445 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDWSX), 0|OPFL_Chain|OPFL_MemRefs,
446 MVT::i64, 2, 12,
447 12,
448 OPC_CheckPredicate2,
449 OPC_CheckPatternPredicate5,
450 OPC_CheckComplexPat0, /*#*/1,
451 OPC_EmitMergeInputChains1_0,
452 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDHSX), 0|OPFL_Chain|OPFL_MemRefs,
453 MVT::i64, 2, 12,
454 12,
455 OPC_CheckPredicate3,
456 OPC_CheckPatternPredicate5,
457 OPC_CheckComplexPat0, /*#*/1,
458 OPC_EmitMergeInputChains1_0,
459 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDBSX), 0|OPFL_Chain|OPFL_MemRefs,
460 MVT::i64, 2, 12,
461 0,
462 12,
463 OPC_CheckPredicate, 32,
464 OPC_CheckComplexPat0, /*#*/1,
465 OPC_EmitMergeInputChains1_0,
466 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDD), 0|OPFL_Chain|OPFL_MemRefs,
467 MVT::i64, 2, 12,
468 43,
469 OPC_CheckPredicate, 28,
470 OPC_Scope, 12,
471 OPC_CheckPredicate3,
472 OPC_CheckPatternPredicate2,
473 OPC_CheckComplexPat0, /*#*/1,
474 OPC_EmitMergeInputChains1_0,
475 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB), 0|OPFL_Chain|OPFL_MemRefs,
476 MVT::i64, 2, 12,
477 12,
478 OPC_CheckPredicate2,
479 OPC_CheckPatternPredicate2,
480 OPC_CheckComplexPat0, /*#*/1,
481 OPC_EmitMergeInputChains1_0,
482 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH), 0|OPFL_Chain|OPFL_MemRefs,
483 MVT::i64, 2, 12,
484 12,
485 OPC_CheckPredicate1,
486 OPC_CheckPatternPredicate2,
487 OPC_CheckComplexPat0, /*#*/1,
488 OPC_EmitMergeInputChains1_0,
489 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDW), 0|OPFL_Chain|OPFL_MemRefs,
490 MVT::i64, 2, 12,
491 0,
492 67,
493 OPC_CheckPredicate, 27,
494 OPC_Scope, 20,
495 OPC_CheckPredicate3,
496 OPC_CheckPatternPredicate0,
497 OPC_CheckComplexPat0, /*#*/1,
498 OPC_EmitMergeInputChains1_0,
499 OPC_EmitNode1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
500 MVT::i32, 2, 12,
501 OPC_EmitIntegerI32, BPF::sub_32,
502 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
503 MVT::i64, 2, 36,
504 20,
505 OPC_CheckPredicate2,
506 OPC_CheckPatternPredicate0,
507 OPC_CheckComplexPat0, /*#*/1,
508 OPC_EmitMergeInputChains1_0,
509 OPC_EmitNode1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
510 MVT::i32, 2, 12,
511 OPC_EmitIntegerI32, BPF::sub_32,
512 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
513 MVT::i64, 2, 36,
514 20,
515 OPC_CheckPredicate1,
516 OPC_CheckPatternPredicate0,
517 OPC_CheckComplexPat0, /*#*/1,
518 OPC_EmitMergeInputChains1_0,
519 OPC_EmitNode1, TARGET_VAL(BPF::LDW32), 0|OPFL_Chain|OPFL_MemRefs,
520 MVT::i32, 2, 12,
521 OPC_EmitIntegerI32, BPF::sub_32,
522 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
523 MVT::i64, 2, 36,
524 0,
525 67,
526 OPC_CheckPredicate, 28,
527 OPC_Scope, 20,
528 OPC_CheckPredicate3,
529 OPC_CheckPatternPredicate0,
530 OPC_CheckComplexPat0, /*#*/1,
531 OPC_EmitMergeInputChains1_0,
532 OPC_EmitNode1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
533 MVT::i32, 2, 12,
534 OPC_EmitIntegerI32, BPF::sub_32,
535 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
536 MVT::i64, 2, 36,
537 20,
538 OPC_CheckPredicate2,
539 OPC_CheckPatternPredicate0,
540 OPC_CheckComplexPat0, /*#*/1,
541 OPC_EmitMergeInputChains1_0,
542 OPC_EmitNode1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
543 MVT::i32, 2, 12,
544 OPC_EmitIntegerI32, BPF::sub_32,
545 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
546 MVT::i64, 2, 36,
547 20,
548 OPC_CheckPredicate1,
549 OPC_CheckPatternPredicate0,
550 OPC_CheckComplexPat0, /*#*/1,
551 OPC_EmitMergeInputChains1_0,
552 OPC_EmitNode1, TARGET_VAL(BPF::LDW32), 0|OPFL_Chain|OPFL_MemRefs,
553 MVT::i32, 2, 12,
554 OPC_EmitIntegerI32, BPF::sub_32,
555 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::SUBREG_TO_REG),
556 MVT::i64, 2, 36,
557 0,
558 0,
559 125, MVT::i32,
560 OPC_Scope, 13,
561 OPC_CheckPredicate, 32,
562 OPC_CheckPatternPredicate0,
563 OPC_CheckComplexPat0, /*#*/1,
564 OPC_EmitMergeInputChains1_0,
565 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDW32), 0|OPFL_Chain|OPFL_MemRefs,
566 MVT::i32, 2, 12,
567 30,
568 OPC_CheckPredicate, 27,
569 OPC_Scope, 12,
570 OPC_CheckPredicate2,
571 OPC_CheckPatternPredicate0,
572 OPC_CheckComplexPat0, /*#*/1,
573 OPC_EmitMergeInputChains1_0,
574 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
575 MVT::i32, 2, 12,
576 12,
577 OPC_CheckPredicate3,
578 OPC_CheckPatternPredicate0,
579 OPC_CheckComplexPat0, /*#*/1,
580 OPC_EmitMergeInputChains1_0,
581 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
582 MVT::i32, 2, 12,
583 0,
584 30,
585 OPC_CheckPredicate, 28,
586 OPC_Scope, 12,
587 OPC_CheckPredicate3,
588 OPC_CheckPatternPredicate0,
589 OPC_CheckComplexPat0, /*#*/1,
590 OPC_EmitMergeInputChains1_0,
591 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
592 MVT::i32, 2, 12,
593 12,
594 OPC_CheckPredicate2,
595 OPC_CheckPatternPredicate0,
596 OPC_CheckComplexPat0, /*#*/1,
597 OPC_EmitMergeInputChains1_0,
598 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
599 MVT::i32, 2, 12,
600 0,
601 46,
602 OPC_CheckPredicate, 31,
603 OPC_Scope, 20,
604 OPC_CheckPredicate3,
605 OPC_CheckPatternPredicate5,
606 OPC_CheckComplexPat0, /*#*/1,
607 OPC_EmitMergeInputChains1_0,
608 OPC_EmitNode1, TARGET_VAL(BPF::LDBSX), 0|OPFL_Chain|OPFL_MemRefs,
609 MVT::i64, 2, 12,
610 OPC_EmitIntegerI32, BPF::sub_32,
611 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
612 MVT::i32, 2, 36,
613 20,
614 OPC_CheckPredicate2,
615 OPC_CheckPatternPredicate5,
616 OPC_CheckComplexPat0, /*#*/1,
617 OPC_EmitMergeInputChains1_0,
618 OPC_EmitNode1, TARGET_VAL(BPF::LDHSX), 0|OPFL_Chain|OPFL_MemRefs,
619 MVT::i64, 2, 12,
620 OPC_EmitIntegerI32, BPF::sub_32,
621 OPC_MorphNodeTo1Chain, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
622 MVT::i32, 2, 36,
623 0,
624 0,
625 0,
626 89|128,1, TARGET_VAL(ISD::ATOMIC_LOAD),
627 OPC_RecordMemRef,
628 OPC_RecordNode,
629 OPC_RecordChild1,
630 OPC_CheckChild1TypeI64,
631 OPC_Scope, 53,
632 OPC_CheckPredicate, 33,
633 OPC_SwitchType , 31, MVT::i64,
634 OPC_CheckPredicate, 9,
635 OPC_Scope, 13,
636 OPC_CheckPredicate, 10,
637 OPC_CheckPatternPredicate1,
638 OPC_CheckComplexPat0, /*#*/1,
639 OPC_EmitMergeInputChains1_0,
640 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDD), 0|OPFL_Chain|OPFL_MemRefs,
641 MVT::i64, 2, 12,
642 12,
643 OPC_CheckPredicate4,
644 OPC_CheckPatternPredicate1,
645 OPC_CheckComplexPat0, /*#*/1,
646 OPC_EmitMergeInputChains1_0,
647 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDDACQ), 0|OPFL_Chain|OPFL_MemRefs,
648 MVT::i64, 2, 12,
649 0,
650 14, MVT::i32,
651 OPC_CheckPredicate1,
652 OPC_CheckPredicate, 10,
653 OPC_CheckPatternPredicate1,
654 OPC_CheckComplexPat0, /*#*/1,
655 OPC_EmitMergeInputChains1_0,
656 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDW32), 0|OPFL_Chain|OPFL_MemRefs,
657 MVT::i32, 2, 12,
658 0,
659 17,
660 OPC_CheckPredicate, 15,
661 OPC_CheckPredicate2,
662 OPC_CheckPredicate, 10,
663 OPC_CheckTypeI32,
664 OPC_CheckPatternPredicate1,
665 OPC_CheckComplexPat0, /*#*/1,
666 OPC_EmitMergeInputChains1_0,
667 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
668 MVT::i32, 2, 12,
669 17,
670 OPC_CheckPredicate, 16,
671 OPC_CheckPredicate2,
672 OPC_CheckPredicate, 10,
673 OPC_CheckTypeI32,
674 OPC_CheckPatternPredicate1,
675 OPC_CheckComplexPat0, /*#*/1,
676 OPC_EmitMergeInputChains1_0,
677 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDH32), 0|OPFL_Chain|OPFL_MemRefs,
678 MVT::i32, 2, 12,
679 17,
680 OPC_CheckPredicate, 15,
681 OPC_CheckPredicate3,
682 OPC_CheckPredicate, 10,
683 OPC_CheckTypeI32,
684 OPC_CheckPatternPredicate1,
685 OPC_CheckComplexPat0, /*#*/1,
686 OPC_EmitMergeInputChains1_0,
687 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
688 MVT::i32, 2, 12,
689 17,
690 OPC_CheckPredicate, 16,
691 OPC_CheckPredicate3,
692 OPC_CheckPredicate, 10,
693 OPC_CheckTypeI32,
694 OPC_CheckPatternPredicate1,
695 OPC_CheckComplexPat0, /*#*/1,
696 OPC_EmitMergeInputChains1_0,
697 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDB32), 0|OPFL_Chain|OPFL_MemRefs,
698 MVT::i32, 2, 12,
699 16,
700 OPC_CheckPredicate, 33,
701 OPC_CheckPredicate1,
702 OPC_CheckPredicate4,
703 OPC_CheckTypeI32,
704 OPC_CheckPatternPredicate1,
705 OPC_CheckComplexPat0, /*#*/1,
706 OPC_EmitMergeInputChains1_0,
707 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDWACQ32), 0|OPFL_Chain|OPFL_MemRefs,
708 MVT::i32, 2, 12,
709 16,
710 OPC_CheckPredicate, 15,
711 OPC_CheckPredicate2,
712 OPC_CheckPredicate4,
713 OPC_CheckTypeI32,
714 OPC_CheckPatternPredicate1,
715 OPC_CheckComplexPat0, /*#*/1,
716 OPC_EmitMergeInputChains1_0,
717 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDHACQ32), 0|OPFL_Chain|OPFL_MemRefs,
718 MVT::i32, 2, 12,
719 16,
720 OPC_CheckPredicate, 16,
721 OPC_CheckPredicate2,
722 OPC_CheckPredicate4,
723 OPC_CheckTypeI32,
724 OPC_CheckPatternPredicate1,
725 OPC_CheckComplexPat0, /*#*/1,
726 OPC_EmitMergeInputChains1_0,
727 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDHACQ32), 0|OPFL_Chain|OPFL_MemRefs,
728 MVT::i32, 2, 12,
729 16,
730 OPC_CheckPredicate, 15,
731 OPC_CheckPredicate3,
732 OPC_CheckPredicate4,
733 OPC_CheckTypeI32,
734 OPC_CheckPatternPredicate1,
735 OPC_CheckComplexPat0, /*#*/1,
736 OPC_EmitMergeInputChains1_0,
737 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDBACQ32), 0|OPFL_Chain|OPFL_MemRefs,
738 MVT::i32, 2, 12,
739 16,
740 OPC_CheckPredicate, 16,
741 OPC_CheckPredicate3,
742 OPC_CheckPredicate4,
743 OPC_CheckTypeI32,
744 OPC_CheckPatternPredicate1,
745 OPC_CheckComplexPat0, /*#*/1,
746 OPC_EmitMergeInputChains1_0,
747 OPC_MorphNodeTo1, TARGET_VAL(BPF::LDBACQ32), 0|OPFL_Chain|OPFL_MemRefs,
748 MVT::i32, 2, 12,
749 0,
750 50|128,1, TARGET_VAL(ISD::ATOMIC_LOAD_ADD),
751 OPC_RecordMemRef,
752 OPC_RecordNode,
753 OPC_RecordChild1,
754 OPC_CheckChild1TypeI64,
755 OPC_RecordChild2,
756 OPC_SwitchType , 98, MVT::i64,
757 OPC_Scope, 12,
758 OPC_CheckPredicate1,
759 OPC_CheckPatternPredicate2,
760 OPC_CheckComplexPat0, /*#*/1,
761 OPC_EmitMergeInputChains1_0,
762 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDW), 0|OPFL_Chain|OPFL_MemRefs,
763 MVT::i64, 3, 8,
764 82,
765 OPC_CheckPredicate, 9,
766 OPC_Scope, 11,
767 OPC_CheckPatternPredicate2,
768 OPC_CheckComplexPat0, /*#*/1,
769 OPC_EmitMergeInputChains1_0,
770 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDD), 0|OPFL_Chain|OPFL_MemRefs,
771 MVT::i64, 3, 8,
772 12,
773 OPC_CheckPredicate6,
774 OPC_CheckPatternPredicate0,
775 OPC_CheckComplexPat0, /*#*/1,
776 OPC_EmitMergeInputChains1_0,
777 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDD), 0|OPFL_Chain|OPFL_MemRefs,
778 MVT::i64, 3, 8,
779 12,
780 OPC_CheckPredicate4,
781 OPC_CheckPatternPredicate0,
782 OPC_CheckComplexPat0, /*#*/1,
783 OPC_EmitMergeInputChains1_0,
784 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
785 MVT::i64, 3, 8,
786 12,
787 OPC_CheckPredicate5,
788 OPC_CheckPatternPredicate0,
789 OPC_CheckComplexPat0, /*#*/1,
790 OPC_EmitMergeInputChains1_0,
791 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
792 MVT::i64, 3, 8,
793 12,
794 OPC_CheckPredicate7,
795 OPC_CheckPatternPredicate0,
796 OPC_CheckComplexPat0, /*#*/1,
797 OPC_EmitMergeInputChains1_0,
798 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
799 MVT::i64, 3, 8,
800 13,
801 OPC_CheckPredicate, 8,
802 OPC_CheckPatternPredicate0,
803 OPC_CheckComplexPat0, /*#*/1,
804 OPC_EmitMergeInputChains1_0,
805 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
806 MVT::i64, 3, 8,
807 0,
808 0,
809 69, MVT::i32,
810 OPC_CheckPredicate1,
811 OPC_Scope, 12,
812 OPC_CheckPredicate6,
813 OPC_CheckPatternPredicate0,
814 OPC_CheckComplexPat0, /*#*/1,
815 OPC_EmitMergeInputChains1_0,
816 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDW32), 0|OPFL_Chain|OPFL_MemRefs,
817 MVT::i32, 3, 8,
818 12,
819 OPC_CheckPredicate4,
820 OPC_CheckPatternPredicate0,
821 OPC_CheckComplexPat0, /*#*/1,
822 OPC_EmitMergeInputChains1_0,
823 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
824 MVT::i32, 3, 8,
825 12,
826 OPC_CheckPredicate5,
827 OPC_CheckPatternPredicate0,
828 OPC_CheckComplexPat0, /*#*/1,
829 OPC_EmitMergeInputChains1_0,
830 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
831 MVT::i32, 3, 8,
832 12,
833 OPC_CheckPredicate7,
834 OPC_CheckPatternPredicate0,
835 OPC_CheckComplexPat0, /*#*/1,
836 OPC_EmitMergeInputChains1_0,
837 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
838 MVT::i32, 3, 8,
839 13,
840 OPC_CheckPredicate, 8,
841 OPC_CheckPatternPredicate0,
842 OPC_CheckComplexPat0, /*#*/1,
843 OPC_EmitMergeInputChains1_0,
844 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
845 MVT::i32, 3, 8,
846 0,
847 0,
848 35|128,1, TARGET_VAL(ISD::ATOMIC_LOAD_AND),
849 OPC_RecordMemRef,
850 OPC_RecordNode,
851 OPC_RecordChild1,
852 OPC_CheckChild1TypeI64,
853 OPC_RecordChild2,
854 OPC_SwitchType , 69, MVT::i32,
855 OPC_CheckPredicate1,
856 OPC_Scope, 12,
857 OPC_CheckPredicate6,
858 OPC_CheckPatternPredicate0,
859 OPC_CheckComplexPat0, /*#*/1,
860 OPC_EmitMergeInputChains1_0,
861 OPC_MorphNodeTo1, TARGET_VAL(BPF::XANDW32), 0|OPFL_Chain|OPFL_MemRefs,
862 MVT::i32, 3, 8,
863 12,
864 OPC_CheckPredicate4,
865 OPC_CheckPatternPredicate0,
866 OPC_CheckComplexPat0, /*#*/1,
867 OPC_EmitMergeInputChains1_0,
868 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
869 MVT::i32, 3, 8,
870 12,
871 OPC_CheckPredicate5,
872 OPC_CheckPatternPredicate0,
873 OPC_CheckComplexPat0, /*#*/1,
874 OPC_EmitMergeInputChains1_0,
875 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
876 MVT::i32, 3, 8,
877 12,
878 OPC_CheckPredicate7,
879 OPC_CheckPatternPredicate0,
880 OPC_CheckComplexPat0, /*#*/1,
881 OPC_EmitMergeInputChains1_0,
882 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
883 MVT::i32, 3, 8,
884 13,
885 OPC_CheckPredicate, 8,
886 OPC_CheckPatternPredicate0,
887 OPC_CheckComplexPat0, /*#*/1,
888 OPC_EmitMergeInputChains1_0,
889 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
890 MVT::i32, 3, 8,
891 0,
892 83, MVT::i64,
893 OPC_CheckPredicate, 9,
894 OPC_Scope, 29,
895 OPC_CheckPredicate6,
896 OPC_Scope, 12,
897 OPC_CheckPredicate, 29,
898 OPC_CheckComplexPat0, /*#*/1,
899 OPC_EmitMergeInputChains1_0,
900 OPC_MorphNodeTo1, TARGET_VAL(BPF::XANDD), 0|OPFL_Chain|OPFL_MemRefs,
901 MVT::i64, 3, 8,
902 12,
903 OPC_CheckPredicate, 30,
904 OPC_CheckComplexPat0, /*#*/1,
905 OPC_EmitMergeInputChains1_0,
906 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
907 MVT::i64, 3, 8,
908 0,
909 11,
910 OPC_CheckPredicate4,
911 OPC_CheckComplexPat0, /*#*/1,
912 OPC_EmitMergeInputChains1_0,
913 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
914 MVT::i64, 3, 8,
915 11,
916 OPC_CheckPredicate5,
917 OPC_CheckComplexPat0, /*#*/1,
918 OPC_EmitMergeInputChains1_0,
919 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
920 MVT::i64, 3, 8,
921 11,
922 OPC_CheckPredicate7,
923 OPC_CheckComplexPat0, /*#*/1,
924 OPC_EmitMergeInputChains1_0,
925 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
926 MVT::i64, 3, 8,
927 12,
928 OPC_CheckPredicate, 8,
929 OPC_CheckComplexPat0, /*#*/1,
930 OPC_EmitMergeInputChains1_0,
931 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
932 MVT::i64, 3, 8,
933 0,
934 0,
935 35|128,1, TARGET_VAL(ISD::ATOMIC_LOAD_OR),
936 OPC_RecordMemRef,
937 OPC_RecordNode,
938 OPC_RecordChild1,
939 OPC_CheckChild1TypeI64,
940 OPC_RecordChild2,
941 OPC_SwitchType , 69, MVT::i32,
942 OPC_CheckPredicate1,
943 OPC_Scope, 12,
944 OPC_CheckPredicate6,
945 OPC_CheckPatternPredicate0,
946 OPC_CheckComplexPat0, /*#*/1,
947 OPC_EmitMergeInputChains1_0,
948 OPC_MorphNodeTo1, TARGET_VAL(BPF::XORW32), 0|OPFL_Chain|OPFL_MemRefs,
949 MVT::i32, 3, 8,
950 12,
951 OPC_CheckPredicate4,
952 OPC_CheckPatternPredicate0,
953 OPC_CheckComplexPat0, /*#*/1,
954 OPC_EmitMergeInputChains1_0,
955 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
956 MVT::i32, 3, 8,
957 12,
958 OPC_CheckPredicate5,
959 OPC_CheckPatternPredicate0,
960 OPC_CheckComplexPat0, /*#*/1,
961 OPC_EmitMergeInputChains1_0,
962 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
963 MVT::i32, 3, 8,
964 12,
965 OPC_CheckPredicate7,
966 OPC_CheckPatternPredicate0,
967 OPC_CheckComplexPat0, /*#*/1,
968 OPC_EmitMergeInputChains1_0,
969 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
970 MVT::i32, 3, 8,
971 13,
972 OPC_CheckPredicate, 8,
973 OPC_CheckPatternPredicate0,
974 OPC_CheckComplexPat0, /*#*/1,
975 OPC_EmitMergeInputChains1_0,
976 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
977 MVT::i32, 3, 8,
978 0,
979 83, MVT::i64,
980 OPC_CheckPredicate, 9,
981 OPC_Scope, 29,
982 OPC_CheckPredicate6,
983 OPC_Scope, 12,
984 OPC_CheckPredicate, 29,
985 OPC_CheckComplexPat0, /*#*/1,
986 OPC_EmitMergeInputChains1_0,
987 OPC_MorphNodeTo1, TARGET_VAL(BPF::XORD), 0|OPFL_Chain|OPFL_MemRefs,
988 MVT::i64, 3, 8,
989 12,
990 OPC_CheckPredicate, 30,
991 OPC_CheckComplexPat0, /*#*/1,
992 OPC_EmitMergeInputChains1_0,
993 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
994 MVT::i64, 3, 8,
995 0,
996 11,
997 OPC_CheckPredicate4,
998 OPC_CheckComplexPat0, /*#*/1,
999 OPC_EmitMergeInputChains1_0,
1000 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
1001 MVT::i64, 3, 8,
1002 11,
1003 OPC_CheckPredicate5,
1004 OPC_CheckComplexPat0, /*#*/1,
1005 OPC_EmitMergeInputChains1_0,
1006 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
1007 MVT::i64, 3, 8,
1008 11,
1009 OPC_CheckPredicate7,
1010 OPC_CheckComplexPat0, /*#*/1,
1011 OPC_EmitMergeInputChains1_0,
1012 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
1013 MVT::i64, 3, 8,
1014 12,
1015 OPC_CheckPredicate, 8,
1016 OPC_CheckComplexPat0, /*#*/1,
1017 OPC_EmitMergeInputChains1_0,
1018 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
1019 MVT::i64, 3, 8,
1020 0,
1021 0,
1022 35|128,1, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),
1023 OPC_RecordMemRef,
1024 OPC_RecordNode,
1025 OPC_RecordChild1,
1026 OPC_CheckChild1TypeI64,
1027 OPC_RecordChild2,
1028 OPC_SwitchType , 69, MVT::i32,
1029 OPC_CheckPredicate1,
1030 OPC_Scope, 12,
1031 OPC_CheckPredicate6,
1032 OPC_CheckPatternPredicate0,
1033 OPC_CheckComplexPat0, /*#*/1,
1034 OPC_EmitMergeInputChains1_0,
1035 OPC_MorphNodeTo1, TARGET_VAL(BPF::XXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1036 MVT::i32, 3, 8,
1037 12,
1038 OPC_CheckPredicate4,
1039 OPC_CheckPatternPredicate0,
1040 OPC_CheckComplexPat0, /*#*/1,
1041 OPC_EmitMergeInputChains1_0,
1042 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1043 MVT::i32, 3, 8,
1044 12,
1045 OPC_CheckPredicate5,
1046 OPC_CheckPatternPredicate0,
1047 OPC_CheckComplexPat0, /*#*/1,
1048 OPC_EmitMergeInputChains1_0,
1049 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1050 MVT::i32, 3, 8,
1051 12,
1052 OPC_CheckPredicate7,
1053 OPC_CheckPatternPredicate0,
1054 OPC_CheckComplexPat0, /*#*/1,
1055 OPC_EmitMergeInputChains1_0,
1056 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1057 MVT::i32, 3, 8,
1058 13,
1059 OPC_CheckPredicate, 8,
1060 OPC_CheckPatternPredicate0,
1061 OPC_CheckComplexPat0, /*#*/1,
1062 OPC_EmitMergeInputChains1_0,
1063 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1064 MVT::i32, 3, 8,
1065 0,
1066 83, MVT::i64,
1067 OPC_CheckPredicate, 9,
1068 OPC_Scope, 29,
1069 OPC_CheckPredicate6,
1070 OPC_Scope, 12,
1071 OPC_CheckPredicate, 29,
1072 OPC_CheckComplexPat0, /*#*/1,
1073 OPC_EmitMergeInputChains1_0,
1074 OPC_MorphNodeTo1, TARGET_VAL(BPF::XXORD), 0|OPFL_Chain|OPFL_MemRefs,
1075 MVT::i64, 3, 8,
1076 12,
1077 OPC_CheckPredicate, 30,
1078 OPC_CheckComplexPat0, /*#*/1,
1079 OPC_EmitMergeInputChains1_0,
1080 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1081 MVT::i64, 3, 8,
1082 0,
1083 11,
1084 OPC_CheckPredicate4,
1085 OPC_CheckComplexPat0, /*#*/1,
1086 OPC_EmitMergeInputChains1_0,
1087 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1088 MVT::i64, 3, 8,
1089 11,
1090 OPC_CheckPredicate5,
1091 OPC_CheckComplexPat0, /*#*/1,
1092 OPC_EmitMergeInputChains1_0,
1093 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1094 MVT::i64, 3, 8,
1095 11,
1096 OPC_CheckPredicate7,
1097 OPC_CheckComplexPat0, /*#*/1,
1098 OPC_EmitMergeInputChains1_0,
1099 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1100 MVT::i64, 3, 8,
1101 12,
1102 OPC_CheckPredicate, 8,
1103 OPC_CheckComplexPat0, /*#*/1,
1104 OPC_EmitMergeInputChains1_0,
1105 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1106 MVT::i64, 3, 8,
1107 0,
1108 0,
1109 35, TARGET_VAL(ISD::ATOMIC_SWAP),
1110 OPC_RecordMemRef,
1111 OPC_RecordNode,
1112 OPC_RecordChild1,
1113 OPC_CheckChild1TypeI64,
1114 OPC_RecordChild2,
1115 OPC_SwitchType , 12, MVT::i32,
1116 OPC_CheckPredicate1,
1117 OPC_CheckPatternPredicate0,
1118 OPC_CheckComplexPat0, /*#*/1,
1119 OPC_EmitMergeInputChains1_0,
1120 OPC_MorphNodeTo1, TARGET_VAL(BPF::XCHGW32), 0|OPFL_Chain|OPFL_MemRefs,
1121 MVT::i32, 3, 8,
1122 12, MVT::i64,
1123 OPC_CheckPredicate, 9,
1124 OPC_CheckComplexPat0, /*#*/1,
1125 OPC_EmitMergeInputChains1_0,
1126 OPC_MorphNodeTo1, TARGET_VAL(BPF::XCHGD), 0|OPFL_Chain|OPFL_MemRefs,
1127 MVT::i64, 3, 8,
1128 0,
1129 40, TARGET_VAL(ISD::ATOMIC_CMP_SWAP),
1130 OPC_RecordMemRef,
1131 OPC_RecordNode,
1132 OPC_RecordChild1,
1133 OPC_CheckChild1TypeI64,
1134 OPC_RecordChild2,
1135 OPC_RecordChild3,
1136 OPC_SwitchType , 14, MVT::i32,
1137 OPC_CheckPredicate1,
1138 OPC_CheckPatternPredicate0,
1139 OPC_CheckComplexPat0, /*#*/1,
1140 OPC_EmitMergeInputChains1_0,
1141 OPC_EmitCopyToReg2, BPF::W0,
1142 OPC_MorphNodeTo1, TARGET_VAL(BPF::CMPXCHGW32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_MemRefs,
1143 MVT::i32, 3, 17,
1144 14, MVT::i64,
1145 OPC_CheckPredicate, 9,
1146 OPC_CheckComplexPat0, /*#*/1,
1147 OPC_EmitMergeInputChains1_0,
1148 OPC_EmitCopyToReg2, BPF::R0,
1149 OPC_MorphNodeTo1, TARGET_VAL(BPF::CMPXCHGD), 0|OPFL_Chain|OPFL_GlueInput|OPFL_MemRefs,
1150 MVT::i64, 3, 17,
1151 0,
1152 77|128,1, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),
1153 OPC_RecordMemRef,
1154 OPC_RecordNode,
1155 OPC_RecordChild1,
1156 OPC_CheckChild1TypeI64,
1157 OPC_RecordChild2,
1158 OPC_SwitchType , 99, MVT::i32,
1159 OPC_CheckPredicate1,
1160 OPC_Scope, 18,
1161 OPC_CheckPredicate6,
1162 OPC_CheckPatternPredicate0,
1163 OPC_CheckComplexPat0, /*#*/1,
1164 OPC_EmitMergeInputChains1_0,
1165 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1166 MVT::i32, 1, 5,
1167 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1168 MVT::i32, 3, 35,
1169 18,
1170 OPC_CheckPredicate4,
1171 OPC_CheckPatternPredicate0,
1172 OPC_CheckComplexPat0, /*#*/1,
1173 OPC_EmitMergeInputChains1_0,
1174 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1175 MVT::i32, 1, 5,
1176 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1177 MVT::i32, 3, 35,
1178 18,
1179 OPC_CheckPredicate5,
1180 OPC_CheckPatternPredicate0,
1181 OPC_CheckComplexPat0, /*#*/1,
1182 OPC_EmitMergeInputChains1_0,
1183 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1184 MVT::i32, 1, 5,
1185 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1186 MVT::i32, 3, 35,
1187 18,
1188 OPC_CheckPredicate7,
1189 OPC_CheckPatternPredicate0,
1190 OPC_CheckComplexPat0, /*#*/1,
1191 OPC_EmitMergeInputChains1_0,
1192 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1193 MVT::i32, 1, 5,
1194 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1195 MVT::i32, 3, 35,
1196 19,
1197 OPC_CheckPredicate, 8,
1198 OPC_CheckPatternPredicate0,
1199 OPC_CheckComplexPat0, /*#*/1,
1200 OPC_EmitMergeInputChains1_0,
1201 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1202 MVT::i32, 1, 5,
1203 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1204 MVT::i32, 3, 35,
1205 0,
1206 95, MVT::i64,
1207 OPC_CheckPredicate, 9,
1208 OPC_Scope, 17,
1209 OPC_CheckPredicate6,
1210 OPC_CheckComplexPat0, /*#*/1,
1211 OPC_EmitMergeInputChains1_0,
1212 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1213 MVT::i64, 1, 5,
1214 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDD), 0|OPFL_Chain|OPFL_MemRefs,
1215 MVT::i64, 3, 35,
1216 17,
1217 OPC_CheckPredicate4,
1218 OPC_CheckComplexPat0, /*#*/1,
1219 OPC_EmitMergeInputChains1_0,
1220 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1221 MVT::i64, 1, 5,
1222 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
1223 MVT::i64, 3, 35,
1224 17,
1225 OPC_CheckPredicate5,
1226 OPC_CheckComplexPat0, /*#*/1,
1227 OPC_EmitMergeInputChains1_0,
1228 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1229 MVT::i64, 1, 5,
1230 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
1231 MVT::i64, 3, 35,
1232 17,
1233 OPC_CheckPredicate7,
1234 OPC_CheckComplexPat0, /*#*/1,
1235 OPC_EmitMergeInputChains1_0,
1236 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1237 MVT::i64, 1, 5,
1238 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
1239 MVT::i64, 3, 35,
1240 18,
1241 OPC_CheckPredicate, 8,
1242 OPC_CheckComplexPat0, /*#*/1,
1243 OPC_EmitMergeInputChains1_0,
1244 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1245 MVT::i64, 1, 5,
1246 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
1247 MVT::i64, 3, 35,
1248 0,
1249 0,
1250 122|128,5, TARGET_VAL(BPFISD::BR_CC),
1251 OPC_RecordNode,
1252 OPC_RecordChild1,
1253 OPC_Scope, 121|128,2,
1254 OPC_CheckChild1TypeI64,
1255 OPC_RecordChild2,
1256 OPC_Scope, 44|128,1,
1257 OPC_MoveChild2,
1258 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1259 OPC_CheckPredicate0,
1260 OPC_MoveSibling3,
1261 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1262 OPC_CheckTypeI64,
1263 OPC_Scope, 15,
1264 OPC_CheckPredicate, 17,
1265 OPC_MoveSibling4,
1266 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1267 OPC_RecordNode,
1268 OPC_MoveParent,
1269 OPC_EmitMergeInputChains1_0,
1270 OPC_EmitConvertToTarget2,
1271 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JEQ_ri),
1272 3, 14,
1273 15,
1274 OPC_CheckPredicate, 18,
1275 OPC_MoveSibling4,
1276 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1277 OPC_RecordNode,
1278 OPC_MoveParent,
1279 OPC_EmitMergeInputChains1_0,
1280 OPC_EmitConvertToTarget2,
1281 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGT_ri),
1282 3, 14,
1283 15,
1284 OPC_CheckPredicate, 19,
1285 OPC_MoveSibling4,
1286 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1287 OPC_RecordNode,
1288 OPC_MoveParent,
1289 OPC_EmitMergeInputChains1_0,
1290 OPC_EmitConvertToTarget2,
1291 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGE_ri),
1292 3, 14,
1293 15,
1294 OPC_CheckPredicate, 20,
1295 OPC_MoveSibling4,
1296 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1297 OPC_RecordNode,
1298 OPC_MoveParent,
1299 OPC_EmitMergeInputChains1_0,
1300 OPC_EmitConvertToTarget2,
1301 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JNE_ri),
1302 3, 14,
1303 15,
1304 OPC_CheckPredicate, 21,
1305 OPC_MoveSibling4,
1306 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1307 OPC_RecordNode,
1308 OPC_MoveParent,
1309 OPC_EmitMergeInputChains1_0,
1310 OPC_EmitConvertToTarget2,
1311 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGT_ri),
1312 3, 14,
1313 15,
1314 OPC_CheckPredicate, 22,
1315 OPC_MoveSibling4,
1316 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1317 OPC_RecordNode,
1318 OPC_MoveParent,
1319 OPC_EmitMergeInputChains1_0,
1320 OPC_EmitConvertToTarget2,
1321 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGE_ri),
1322 3, 14,
1323 15,
1324 OPC_CheckPredicate, 23,
1325 OPC_MoveSibling4,
1326 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1327 OPC_RecordNode,
1328 OPC_MoveParent,
1329 OPC_EmitMergeInputChains1_0,
1330 OPC_EmitConvertToTarget2,
1331 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULT_ri),
1332 3, 14,
1333 15,
1334 OPC_CheckPredicate, 24,
1335 OPC_MoveSibling4,
1336 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1337 OPC_RecordNode,
1338 OPC_MoveParent,
1339 OPC_EmitMergeInputChains1_0,
1340 OPC_EmitConvertToTarget2,
1341 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULE_ri),
1342 3, 14,
1343 15,
1344 OPC_CheckPredicate, 25,
1345 OPC_MoveSibling4,
1346 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1347 OPC_RecordNode,
1348 OPC_MoveParent,
1349 OPC_EmitMergeInputChains1_0,
1350 OPC_EmitConvertToTarget2,
1351 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLT_ri),
1352 3, 14,
1353 15,
1354 OPC_CheckPredicate, 26,
1355 OPC_MoveSibling4,
1356 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1357 OPC_RecordNode,
1358 OPC_MoveParent,
1359 OPC_EmitMergeInputChains1_0,
1360 OPC_EmitConvertToTarget2,
1361 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLE_ri),
1362 3, 14,
1363 0,
1364 29|128,1,
1365 OPC_MoveChild3,
1366 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1367 OPC_CheckTypeI64,
1368 OPC_Scope, 14,
1369 OPC_CheckPredicate, 17,
1370 OPC_MoveSibling4,
1371 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1372 OPC_RecordNode,
1373 OPC_MoveParent,
1374 OPC_EmitMergeInputChains1_0,
1375 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JEQ_rr),
1376 3, 11,
1377 14,
1378 OPC_CheckPredicate, 18,
1379 OPC_MoveSibling4,
1380 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1381 OPC_RecordNode,
1382 OPC_MoveParent,
1383 OPC_EmitMergeInputChains1_0,
1384 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGT_rr),
1385 3, 11,
1386 14,
1387 OPC_CheckPredicate, 19,
1388 OPC_MoveSibling4,
1389 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1390 OPC_RecordNode,
1391 OPC_MoveParent,
1392 OPC_EmitMergeInputChains1_0,
1393 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGE_rr),
1394 3, 11,
1395 14,
1396 OPC_CheckPredicate, 20,
1397 OPC_MoveSibling4,
1398 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1399 OPC_RecordNode,
1400 OPC_MoveParent,
1401 OPC_EmitMergeInputChains1_0,
1402 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JNE_rr),
1403 3, 11,
1404 14,
1405 OPC_CheckPredicate, 21,
1406 OPC_MoveSibling4,
1407 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1408 OPC_RecordNode,
1409 OPC_MoveParent,
1410 OPC_EmitMergeInputChains1_0,
1411 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGT_rr),
1412 3, 11,
1413 14,
1414 OPC_CheckPredicate, 22,
1415 OPC_MoveSibling4,
1416 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1417 OPC_RecordNode,
1418 OPC_MoveParent,
1419 OPC_EmitMergeInputChains1_0,
1420 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGE_rr),
1421 3, 11,
1422 14,
1423 OPC_CheckPredicate, 23,
1424 OPC_MoveSibling4,
1425 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1426 OPC_RecordNode,
1427 OPC_MoveParent,
1428 OPC_EmitMergeInputChains1_0,
1429 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULT_rr),
1430 3, 11,
1431 14,
1432 OPC_CheckPredicate, 24,
1433 OPC_MoveSibling4,
1434 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1435 OPC_RecordNode,
1436 OPC_MoveParent,
1437 OPC_EmitMergeInputChains1_0,
1438 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULE_rr),
1439 3, 11,
1440 14,
1441 OPC_CheckPredicate, 25,
1442 OPC_MoveSibling4,
1443 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1444 OPC_RecordNode,
1445 OPC_MoveParent,
1446 OPC_EmitMergeInputChains1_0,
1447 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLT_rr),
1448 3, 11,
1449 14,
1450 OPC_CheckPredicate, 26,
1451 OPC_MoveSibling4,
1452 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1453 OPC_RecordNode,
1454 OPC_MoveParent,
1455 OPC_EmitMergeInputChains1_0,
1456 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLE_rr),
1457 3, 11,
1458 0,
1459 22,
1460 OPC_MoveChild2,
1461 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1462 OPC_CheckPredicate0,
1463 OPC_MoveSibling3,
1464 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
1465 OPC_MoveSibling4,
1466 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1467 OPC_RecordNode,
1468 OPC_MoveParent,
1469 OPC_EmitMergeInputChains1_0,
1470 OPC_EmitConvertToTarget2,
1471 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSET_ri),
1472 3, 14,
1473 16,
1474 OPC_MoveChild3,
1475 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
1476 OPC_MoveSibling4,
1477 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1478 OPC_RecordNode,
1479 OPC_MoveParent,
1480 OPC_EmitMergeInputChains1_0,
1481 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSET_rr),
1482 3, 11,
1483 0,
1484 121|128,2,
1485 OPC_CheckChild1TypeI32,
1486 OPC_RecordChild2,
1487 OPC_Scope, 44|128,1,
1488 OPC_MoveChild2,
1489 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1490 OPC_CheckPredicate0,
1491 OPC_MoveSibling3,
1492 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1493 OPC_CheckTypeI32,
1494 OPC_Scope, 15,
1495 OPC_CheckPredicate, 17,
1496 OPC_MoveSibling4,
1497 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1498 OPC_RecordNode,
1499 OPC_MoveParent,
1500 OPC_EmitMergeInputChains1_0,
1501 OPC_EmitConvertToTarget2,
1502 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JEQ_ri_32),
1503 3, 14,
1504 15,
1505 OPC_CheckPredicate, 18,
1506 OPC_MoveSibling4,
1507 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1508 OPC_RecordNode,
1509 OPC_MoveParent,
1510 OPC_EmitMergeInputChains1_0,
1511 OPC_EmitConvertToTarget2,
1512 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGT_ri_32),
1513 3, 14,
1514 15,
1515 OPC_CheckPredicate, 19,
1516 OPC_MoveSibling4,
1517 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1518 OPC_RecordNode,
1519 OPC_MoveParent,
1520 OPC_EmitMergeInputChains1_0,
1521 OPC_EmitConvertToTarget2,
1522 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGE_ri_32),
1523 3, 14,
1524 15,
1525 OPC_CheckPredicate, 20,
1526 OPC_MoveSibling4,
1527 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1528 OPC_RecordNode,
1529 OPC_MoveParent,
1530 OPC_EmitMergeInputChains1_0,
1531 OPC_EmitConvertToTarget2,
1532 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JNE_ri_32),
1533 3, 14,
1534 15,
1535 OPC_CheckPredicate, 21,
1536 OPC_MoveSibling4,
1537 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1538 OPC_RecordNode,
1539 OPC_MoveParent,
1540 OPC_EmitMergeInputChains1_0,
1541 OPC_EmitConvertToTarget2,
1542 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGT_ri_32),
1543 3, 14,
1544 15,
1545 OPC_CheckPredicate, 22,
1546 OPC_MoveSibling4,
1547 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1548 OPC_RecordNode,
1549 OPC_MoveParent,
1550 OPC_EmitMergeInputChains1_0,
1551 OPC_EmitConvertToTarget2,
1552 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGE_ri_32),
1553 3, 14,
1554 15,
1555 OPC_CheckPredicate, 23,
1556 OPC_MoveSibling4,
1557 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1558 OPC_RecordNode,
1559 OPC_MoveParent,
1560 OPC_EmitMergeInputChains1_0,
1561 OPC_EmitConvertToTarget2,
1562 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULT_ri_32),
1563 3, 14,
1564 15,
1565 OPC_CheckPredicate, 24,
1566 OPC_MoveSibling4,
1567 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1568 OPC_RecordNode,
1569 OPC_MoveParent,
1570 OPC_EmitMergeInputChains1_0,
1571 OPC_EmitConvertToTarget2,
1572 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULE_ri_32),
1573 3, 14,
1574 15,
1575 OPC_CheckPredicate, 25,
1576 OPC_MoveSibling4,
1577 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1578 OPC_RecordNode,
1579 OPC_MoveParent,
1580 OPC_EmitMergeInputChains1_0,
1581 OPC_EmitConvertToTarget2,
1582 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLT_ri_32),
1583 3, 14,
1584 15,
1585 OPC_CheckPredicate, 26,
1586 OPC_MoveSibling4,
1587 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1588 OPC_RecordNode,
1589 OPC_MoveParent,
1590 OPC_EmitMergeInputChains1_0,
1591 OPC_EmitConvertToTarget2,
1592 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLE_ri_32),
1593 3, 14,
1594 0,
1595 29|128,1,
1596 OPC_MoveChild3,
1597 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1598 OPC_CheckTypeI32,
1599 OPC_Scope, 14,
1600 OPC_CheckPredicate, 17,
1601 OPC_MoveSibling4,
1602 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1603 OPC_RecordNode,
1604 OPC_MoveParent,
1605 OPC_EmitMergeInputChains1_0,
1606 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JEQ_rr_32),
1607 3, 11,
1608 14,
1609 OPC_CheckPredicate, 18,
1610 OPC_MoveSibling4,
1611 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1612 OPC_RecordNode,
1613 OPC_MoveParent,
1614 OPC_EmitMergeInputChains1_0,
1615 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGT_rr_32),
1616 3, 11,
1617 14,
1618 OPC_CheckPredicate, 19,
1619 OPC_MoveSibling4,
1620 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1621 OPC_RecordNode,
1622 OPC_MoveParent,
1623 OPC_EmitMergeInputChains1_0,
1624 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGE_rr_32),
1625 3, 11,
1626 14,
1627 OPC_CheckPredicate, 20,
1628 OPC_MoveSibling4,
1629 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1630 OPC_RecordNode,
1631 OPC_MoveParent,
1632 OPC_EmitMergeInputChains1_0,
1633 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JNE_rr_32),
1634 3, 11,
1635 14,
1636 OPC_CheckPredicate, 21,
1637 OPC_MoveSibling4,
1638 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1639 OPC_RecordNode,
1640 OPC_MoveParent,
1641 OPC_EmitMergeInputChains1_0,
1642 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGT_rr_32),
1643 3, 11,
1644 14,
1645 OPC_CheckPredicate, 22,
1646 OPC_MoveSibling4,
1647 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1648 OPC_RecordNode,
1649 OPC_MoveParent,
1650 OPC_EmitMergeInputChains1_0,
1651 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGE_rr_32),
1652 3, 11,
1653 14,
1654 OPC_CheckPredicate, 23,
1655 OPC_MoveSibling4,
1656 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1657 OPC_RecordNode,
1658 OPC_MoveParent,
1659 OPC_EmitMergeInputChains1_0,
1660 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULT_rr_32),
1661 3, 11,
1662 14,
1663 OPC_CheckPredicate, 24,
1664 OPC_MoveSibling4,
1665 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1666 OPC_RecordNode,
1667 OPC_MoveParent,
1668 OPC_EmitMergeInputChains1_0,
1669 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULE_rr_32),
1670 3, 11,
1671 14,
1672 OPC_CheckPredicate, 25,
1673 OPC_MoveSibling4,
1674 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1675 OPC_RecordNode,
1676 OPC_MoveParent,
1677 OPC_EmitMergeInputChains1_0,
1678 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLT_rr_32),
1679 3, 11,
1680 14,
1681 OPC_CheckPredicate, 26,
1682 OPC_MoveSibling4,
1683 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1684 OPC_RecordNode,
1685 OPC_MoveParent,
1686 OPC_EmitMergeInputChains1_0,
1687 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLE_rr_32),
1688 3, 11,
1689 0,
1690 22,
1691 OPC_MoveChild2,
1692 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1693 OPC_CheckPredicate0,
1694 OPC_MoveSibling3,
1695 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
1696 OPC_MoveSibling4,
1697 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1698 OPC_RecordNode,
1699 OPC_MoveParent,
1700 OPC_EmitMergeInputChains1_0,
1701 OPC_EmitConvertToTarget2,
1702 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSET_ri_32),
1703 3, 14,
1704 16,
1705 OPC_MoveChild3,
1706 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
1707 OPC_MoveSibling4,
1708 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1709 OPC_RecordNode,
1710 OPC_MoveParent,
1711 OPC_EmitMergeInputChains1_0,
1712 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSET_rr_32),
1713 3, 11,
1714 0,
1715 0,
1716 4|128,1, TARGET_VAL(ISD::SRL),
1717 OPC_Scope, 75,
1718 OPC_MoveChild0,
1719 OPC_CheckOpcode, TARGET_VAL(ISD::BSWAP),
1720 OPC_RecordChild0,
1721 OPC_MoveParent,
1722 OPC_CheckTypeI64,
1723 OPC_Scope, 32,
1724 OPC_CheckChild1Integer, 48,
1725 OPC_CheckChild1TypeI64,
1726 OPC_Scope, 8,
1727 OPC_CheckPatternPredicate, 8,
1728 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BSWAP16),
1729 MVT::i64, 1, 0,
1730 8,
1731 OPC_CheckPatternPredicate, 9,
1732 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BE16),
1733 MVT::i64, 1, 0,
1734 8,
1735 OPC_CheckPatternPredicate, 10,
1736 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LE16),
1737 MVT::i64, 1, 0,
1738 0,
1739 32,
1740 OPC_CheckChild1Integer, 32,
1741 OPC_CheckChild1TypeI64,
1742 OPC_Scope, 8,
1743 OPC_CheckPatternPredicate, 8,
1744 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BSWAP32),
1745 MVT::i64, 1, 0,
1746 8,
1747 OPC_CheckPatternPredicate, 9,
1748 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BE32),
1749 MVT::i64, 1, 0,
1750 8,
1751 OPC_CheckPatternPredicate, 10,
1752 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LE32),
1753 MVT::i64, 1, 0,
1754 0,
1755 0,
1756 53,
1757 OPC_RecordChild0,
1758 OPC_RecordChild1,
1759 OPC_Scope, 30,
1760 OPC_MoveChild1,
1761 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1762 OPC_SwitchType , 10, MVT::i64,
1763 OPC_CheckPredicate0,
1764 OPC_MoveParent,
1765 OPC_CheckTypeI64,
1766 OPC_EmitConvertToTarget1,
1767 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_ri),
1768 MVT::i64, 2, 4,
1769 10, MVT::i32,
1770 OPC_CheckPredicate0,
1771 OPC_MoveParent,
1772 OPC_CheckTypeI32,
1773 OPC_EmitConvertToTarget1,
1774 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_ri_32),
1775 MVT::i32, 2, 4,
1776 0,
1777 8,
1778 OPC_CheckChild1TypeI64,
1779 OPC_CheckTypeI64,
1780 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_rr),
1781 MVT::i64, 2, 1,
1782 8,
1783 OPC_CheckChild1TypeI32,
1784 OPC_CheckTypeI32,
1785 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_rr_32),
1786 MVT::i32, 2, 1,
1787 0,
1788 0,
1789 19|128,1, TARGET_VAL(BPFISD::SELECT_CC),
1790 OPC_RecordChild0,
1791 OPC_Scope, 71,
1792 OPC_CheckChild0TypeI64,
1793 OPC_RecordChild1,
1794 OPC_Scope, 36,
1795 OPC_MoveChild1,
1796 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1797 OPC_CheckPredicate0,
1798 OPC_MoveSibling2,
1799 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1800 OPC_RecordNode,
1801 OPC_CheckTypeI64,
1802 OPC_MoveParent,
1803 OPC_RecordChild3,
1804 OPC_RecordChild4,
1805 OPC_SwitchType , 8, MVT::i64,
1806 OPC_EmitConvertToTarget1,
1807 OPC_EmitConvertToTarget2,
1808 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_Ri),
1809 MVT::i64, 5, 28,
1810 8, MVT::i32,
1811 OPC_EmitConvertToTarget1,
1812 OPC_EmitConvertToTarget2,
1813 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_Ri_64_32),
1814 MVT::i32, 5, 28,
1815 0,
1816 29,
1817 OPC_RecordChild2,
1818 OPC_MoveChild2,
1819 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1820 OPC_CheckTypeI64,
1821 OPC_MoveParent,
1822 OPC_RecordChild3,
1823 OPC_RecordChild4,
1824 OPC_SwitchType , 7, MVT::i64,
1825 OPC_EmitConvertToTarget2,
1826 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select),
1827 MVT::i64, 5, 23,
1828 7, MVT::i32,
1829 OPC_EmitConvertToTarget2,
1830 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_64_32),
1831 MVT::i32, 5, 23,
1832 0,
1833 0,
1834 71,
1835 OPC_CheckChild0TypeI32,
1836 OPC_RecordChild1,
1837 OPC_Scope, 36,
1838 OPC_MoveChild1,
1839 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1840 OPC_CheckPredicate0,
1841 OPC_MoveSibling2,
1842 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1843 OPC_RecordNode,
1844 OPC_CheckTypeI32,
1845 OPC_MoveParent,
1846 OPC_RecordChild3,
1847 OPC_RecordChild4,
1848 OPC_SwitchType , 8, MVT::i32,
1849 OPC_EmitConvertToTarget1,
1850 OPC_EmitConvertToTarget2,
1851 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_Ri_32),
1852 MVT::i32, 5, 28,
1853 8, MVT::i64,
1854 OPC_EmitConvertToTarget1,
1855 OPC_EmitConvertToTarget2,
1856 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_Ri_32_64),
1857 MVT::i64, 5, 28,
1858 0,
1859 29,
1860 OPC_RecordChild2,
1861 OPC_MoveChild2,
1862 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1863 OPC_CheckTypeI32,
1864 OPC_MoveParent,
1865 OPC_RecordChild3,
1866 OPC_RecordChild4,
1867 OPC_SwitchType , 7, MVT::i32,
1868 OPC_EmitConvertToTarget2,
1869 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_32),
1870 MVT::i32, 5, 23,
1871 7, MVT::i64,
1872 OPC_EmitConvertToTarget2,
1873 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_32_64),
1874 MVT::i64, 5, 23,
1875 0,
1876 0,
1877 0,
1878 63, TARGET_VAL(ISD::ADD),
1879 OPC_Scope, 10,
1880 OPC_RecordNode,
1881 OPC_CheckTypeI64,
1882 OPC_CheckComplexPat1, /*#*/0,
1883 OPC_MorphNodeTo1None, TARGET_VAL(BPF::FI_ri),
1884 MVT::i64, 2, 6,
1885 49,
1886 OPC_RecordChild0,
1887 OPC_RecordChild1,
1888 OPC_Scope, 28,
1889 OPC_MoveChild1,
1890 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1891 OPC_Scope, 10,
1892 OPC_CheckPredicate0,
1893 OPC_MoveParent,
1894 OPC_CheckTypeI64,
1895 OPC_EmitConvertToTarget1,
1896 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_ri),
1897 MVT::i64, 2, 4,
1898 10,
1899 OPC_CheckPredicate0,
1900 OPC_MoveParent,
1901 OPC_CheckTypeI32,
1902 OPC_EmitConvertToTarget1,
1903 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_ri_32),
1904 MVT::i32, 2, 4,
1905 0,
1906 7,
1907 OPC_CheckTypeI64,
1908 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_rr),
1909 MVT::i64, 2, 1,
1910 7,
1911 OPC_CheckTypeI32,
1912 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_rr_32),
1913 MVT::i32, 2, 1,
1914 0,
1915 0,
1916 63, TARGET_VAL(ISD::OR),
1917 OPC_Scope, 10,
1918 OPC_RecordNode,
1919 OPC_CheckTypeI64,
1920 OPC_CheckComplexPat1, /*#*/0,
1921 OPC_MorphNodeTo1None, TARGET_VAL(BPF::FI_ri),
1922 MVT::i64, 2, 6,
1923 49,
1924 OPC_RecordChild0,
1925 OPC_RecordChild1,
1926 OPC_Scope, 28,
1927 OPC_MoveChild1,
1928 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1929 OPC_Scope, 10,
1930 OPC_CheckPredicate0,
1931 OPC_MoveParent,
1932 OPC_CheckTypeI64,
1933 OPC_EmitConvertToTarget1,
1934 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_ri),
1935 MVT::i64, 2, 4,
1936 10,
1937 OPC_CheckPredicate0,
1938 OPC_MoveParent,
1939 OPC_CheckTypeI32,
1940 OPC_EmitConvertToTarget1,
1941 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_ri_32),
1942 MVT::i32, 2, 4,
1943 0,
1944 7,
1945 OPC_CheckTypeI64,
1946 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_rr),
1947 MVT::i64, 2, 1,
1948 7,
1949 OPC_CheckTypeI32,
1950 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_rr_32),
1951 MVT::i32, 2, 1,
1952 0,
1953 0,
1954 20, TARGET_VAL(ISD::CALLSEQ_START),
1955 OPC_RecordNode,
1956 OPC_RecordChild1,
1957 OPC_MoveChild1,
1958 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1959 OPC_MoveSibling2,
1960 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1961 OPC_RecordNode,
1962 OPC_MoveParent,
1963 OPC_EmitMergeInputChains1_0,
1964 OPC_MorphNodeTo1, TARGET_VAL(BPF::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_GlueOutput,
1965 MVT::i64, 2, 6,
1966 21, TARGET_VAL(ISD::CALLSEQ_END),
1967 OPC_RecordNode,
1968 OPC_CaptureGlueInput,
1969 OPC_RecordChild1,
1970 OPC_MoveChild1,
1971 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1972 OPC_MoveSibling2,
1973 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1974 OPC_RecordNode,
1975 OPC_MoveParent,
1976 OPC_EmitMergeInputChains1_0,
1977 OPC_MorphNodeTo1, TARGET_VAL(BPF::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1978 MVT::i64, 2, 6,
1979 22, TARGET_VAL(BPFISD::MEMCPY),
1980 OPC_RecordNode,
1981 OPC_RecordChild1,
1982 OPC_RecordChild2,
1983 OPC_RecordChild3,
1984 OPC_MoveChild3,
1985 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1986 OPC_MoveSibling4,
1987 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1988 OPC_RecordNode,
1989 OPC_MoveParent,
1990 OPC_EmitMergeInputChains1_0,
1991 OPC_EmitConvertToTarget3,
1992 OPC_EmitConvertToTarget4,
1993 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::MEMCPY),
1994 4, 38,
1995 74, TARGET_VAL(ISD::SUB),
1996 OPC_Scope, 21,
1997 OPC_CheckChild0Integer, 0,
1998 OPC_RecordChild1,
1999 OPC_SwitchType , 6, MVT::i64,
2000 OPC_MorphNodeTo1None, TARGET_VAL(BPF::NEG_64),
2001 MVT::i64, 1, 0,
2002 6, MVT::i32,
2003 OPC_MorphNodeTo1None, TARGET_VAL(BPF::NEG_32),
2004 MVT::i32, 1, 0,
2005 0,
2006 49,
2007 OPC_RecordChild0,
2008 OPC_RecordChild1,
2009 OPC_Scope, 28,
2010 OPC_MoveChild1,
2011 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2012 OPC_Scope, 10,
2013 OPC_CheckPredicate0,
2014 OPC_MoveParent,
2015 OPC_CheckTypeI64,
2016 OPC_EmitConvertToTarget1,
2017 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_ri),
2018 MVT::i64, 2, 4,
2019 10,
2020 OPC_CheckPredicate0,
2021 OPC_MoveParent,
2022 OPC_CheckTypeI32,
2023 OPC_EmitConvertToTarget1,
2024 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_ri_32),
2025 MVT::i32, 2, 4,
2026 0,
2027 7,
2028 OPC_CheckTypeI64,
2029 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_rr),
2030 MVT::i64, 2, 1,
2031 7,
2032 OPC_CheckTypeI32,
2033 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_rr_32),
2034 MVT::i32, 2, 1,
2035 0,
2036 0,
2037 77, TARGET_VAL(ISD::AND),
2038 OPC_Scope, 24,
2039 OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15,
2040 OPC_RecordChild0,
2041 OPC_CheckTypeI64,
2042 OPC_EmitIntegerI64, 32,
2043 OPC_EmitNode1None, TARGET_VAL(BPF::SLL_ri),
2044 MVT::i64, 2, 1,
2045 OPC_EmitIntegerI64, 32,
2046 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_ri),
2047 MVT::i64, 2, 12,
2048 49,
2049 OPC_RecordChild0,
2050 OPC_RecordChild1,
2051 OPC_Scope, 28,
2052 OPC_MoveChild1,
2053 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2054 OPC_Scope, 10,
2055 OPC_CheckPredicate0,
2056 OPC_MoveParent,
2057 OPC_CheckTypeI64,
2058 OPC_EmitConvertToTarget1,
2059 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_ri),
2060 MVT::i64, 2, 4,
2061 10,
2062 OPC_CheckPredicate0,
2063 OPC_MoveParent,
2064 OPC_CheckTypeI32,
2065 OPC_EmitConvertToTarget1,
2066 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_ri_32),
2067 MVT::i32, 2, 4,
2068 0,
2069 7,
2070 OPC_CheckTypeI64,
2071 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_rr),
2072 MVT::i64, 2, 1,
2073 7,
2074 OPC_CheckTypeI32,
2075 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_rr_32),
2076 MVT::i32, 2, 1,
2077 0,
2078 0,
2079 53, TARGET_VAL(ISD::SHL),
2080 OPC_RecordChild0,
2081 OPC_RecordChild1,
2082 OPC_Scope, 30,
2083 OPC_MoveChild1,
2084 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2085 OPC_SwitchType , 10, MVT::i64,
2086 OPC_CheckPredicate0,
2087 OPC_MoveParent,
2088 OPC_CheckTypeI64,
2089 OPC_EmitConvertToTarget1,
2090 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_ri),
2091 MVT::i64, 2, 4,
2092 10, MVT::i32,
2093 OPC_CheckPredicate0,
2094 OPC_MoveParent,
2095 OPC_CheckTypeI32,
2096 OPC_EmitConvertToTarget1,
2097 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_ri_32),
2098 MVT::i32, 2, 4,
2099 0,
2100 8,
2101 OPC_CheckChild1TypeI64,
2102 OPC_CheckTypeI64,
2103 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_rr),
2104 MVT::i64, 2, 1,
2105 8,
2106 OPC_CheckChild1TypeI32,
2107 OPC_CheckTypeI32,
2108 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_rr_32),
2109 MVT::i32, 2, 1,
2110 0,
2111 49, TARGET_VAL(ISD::XOR),
2112 OPC_RecordChild0,
2113 OPC_RecordChild1,
2114 OPC_Scope, 28,
2115 OPC_MoveChild1,
2116 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2117 OPC_Scope, 10,
2118 OPC_CheckPredicate0,
2119 OPC_MoveParent,
2120 OPC_CheckTypeI64,
2121 OPC_EmitConvertToTarget1,
2122 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_ri),
2123 MVT::i64, 2, 4,
2124 10,
2125 OPC_CheckPredicate0,
2126 OPC_MoveParent,
2127 OPC_CheckTypeI32,
2128 OPC_EmitConvertToTarget1,
2129 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_ri_32),
2130 MVT::i32, 2, 4,
2131 0,
2132 7,
2133 OPC_CheckTypeI64,
2134 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_rr),
2135 MVT::i64, 2, 1,
2136 7,
2137 OPC_CheckTypeI32,
2138 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_rr_32),
2139 MVT::i32, 2, 1,
2140 0,
2141 53, TARGET_VAL(ISD::SRA),
2142 OPC_RecordChild0,
2143 OPC_RecordChild1,
2144 OPC_Scope, 30,
2145 OPC_MoveChild1,
2146 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2147 OPC_SwitchType , 10, MVT::i64,
2148 OPC_CheckPredicate0,
2149 OPC_MoveParent,
2150 OPC_CheckTypeI64,
2151 OPC_EmitConvertToTarget1,
2152 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_ri),
2153 MVT::i64, 2, 4,
2154 10, MVT::i32,
2155 OPC_CheckPredicate0,
2156 OPC_MoveParent,
2157 OPC_CheckTypeI32,
2158 OPC_EmitConvertToTarget1,
2159 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_ri_32),
2160 MVT::i32, 2, 4,
2161 0,
2162 8,
2163 OPC_CheckChild1TypeI64,
2164 OPC_CheckTypeI64,
2165 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_rr),
2166 MVT::i64, 2, 1,
2167 8,
2168 OPC_CheckChild1TypeI32,
2169 OPC_CheckTypeI32,
2170 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_rr_32),
2171 MVT::i32, 2, 1,
2172 0,
2173 49, TARGET_VAL(ISD::MUL),
2174 OPC_RecordChild0,
2175 OPC_RecordChild1,
2176 OPC_Scope, 28,
2177 OPC_MoveChild1,
2178 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2179 OPC_Scope, 10,
2180 OPC_CheckPredicate0,
2181 OPC_MoveParent,
2182 OPC_CheckTypeI64,
2183 OPC_EmitConvertToTarget1,
2184 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_ri),
2185 MVT::i64, 2, 4,
2186 10,
2187 OPC_CheckPredicate0,
2188 OPC_MoveParent,
2189 OPC_CheckTypeI32,
2190 OPC_EmitConvertToTarget1,
2191 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_ri_32),
2192 MVT::i32, 2, 4,
2193 0,
2194 7,
2195 OPC_CheckTypeI64,
2196 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_rr),
2197 MVT::i64, 2, 1,
2198 7,
2199 OPC_CheckTypeI32,
2200 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_rr_32),
2201 MVT::i32, 2, 1,
2202 0,
2203 49, TARGET_VAL(ISD::UDIV),
2204 OPC_RecordChild0,
2205 OPC_RecordChild1,
2206 OPC_Scope, 28,
2207 OPC_MoveChild1,
2208 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2209 OPC_Scope, 10,
2210 OPC_CheckPredicate0,
2211 OPC_MoveParent,
2212 OPC_CheckTypeI64,
2213 OPC_EmitConvertToTarget1,
2214 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_ri),
2215 MVT::i64, 2, 4,
2216 10,
2217 OPC_CheckPredicate0,
2218 OPC_MoveParent,
2219 OPC_CheckTypeI32,
2220 OPC_EmitConvertToTarget1,
2221 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_ri_32),
2222 MVT::i32, 2, 4,
2223 0,
2224 7,
2225 OPC_CheckTypeI64,
2226 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_rr),
2227 MVT::i64, 2, 1,
2228 7,
2229 OPC_CheckTypeI32,
2230 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_rr_32),
2231 MVT::i32, 2, 1,
2232 0,
2233 49, TARGET_VAL(ISD::UREM),
2234 OPC_RecordChild0,
2235 OPC_RecordChild1,
2236 OPC_Scope, 28,
2237 OPC_MoveChild1,
2238 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2239 OPC_Scope, 10,
2240 OPC_CheckPredicate0,
2241 OPC_MoveParent,
2242 OPC_CheckTypeI64,
2243 OPC_EmitConvertToTarget1,
2244 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_ri),
2245 MVT::i64, 2, 4,
2246 10,
2247 OPC_CheckPredicate0,
2248 OPC_MoveParent,
2249 OPC_CheckTypeI32,
2250 OPC_EmitConvertToTarget1,
2251 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_ri_32),
2252 MVT::i32, 2, 4,
2253 0,
2254 7,
2255 OPC_CheckTypeI64,
2256 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_rr),
2257 MVT::i64, 2, 1,
2258 7,
2259 OPC_CheckTypeI32,
2260 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_rr_32),
2261 MVT::i32, 2, 1,
2262 0,
2263 53, TARGET_VAL(ISD::SDIV),
2264 OPC_RecordChild0,
2265 OPC_RecordChild1,
2266 OPC_Scope, 30,
2267 OPC_MoveChild1,
2268 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2269 OPC_Scope, 11,
2270 OPC_CheckPredicate0,
2271 OPC_MoveParent,
2272 OPC_CheckTypeI64,
2273 OPC_CheckPatternPredicate3,
2274 OPC_EmitConvertToTarget1,
2275 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_ri),
2276 MVT::i64, 2, 4,
2277 11,
2278 OPC_CheckPredicate0,
2279 OPC_MoveParent,
2280 OPC_CheckTypeI32,
2281 OPC_CheckPatternPredicate3,
2282 OPC_EmitConvertToTarget1,
2283 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_ri_32),
2284 MVT::i32, 2, 4,
2285 0,
2286 8,
2287 OPC_CheckTypeI64,
2288 OPC_CheckPatternPredicate3,
2289 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_rr),
2290 MVT::i64, 2, 1,
2291 8,
2292 OPC_CheckTypeI32,
2293 OPC_CheckPatternPredicate3,
2294 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_rr_32),
2295 MVT::i32, 2, 1,
2296 0,
2297 53, TARGET_VAL(ISD::SREM),
2298 OPC_RecordChild0,
2299 OPC_RecordChild1,
2300 OPC_Scope, 30,
2301 OPC_MoveChild1,
2302 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2303 OPC_Scope, 11,
2304 OPC_CheckPredicate0,
2305 OPC_MoveParent,
2306 OPC_CheckTypeI64,
2307 OPC_CheckPatternPredicate3,
2308 OPC_EmitConvertToTarget1,
2309 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_ri),
2310 MVT::i64, 2, 4,
2311 11,
2312 OPC_CheckPredicate0,
2313 OPC_MoveParent,
2314 OPC_CheckTypeI32,
2315 OPC_CheckPatternPredicate3,
2316 OPC_EmitConvertToTarget1,
2317 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_ri_32),
2318 MVT::i32, 2, 4,
2319 0,
2320 8,
2321 OPC_CheckTypeI64,
2322 OPC_CheckPatternPredicate3,
2323 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_rr),
2324 MVT::i64, 2, 1,
2325 8,
2326 OPC_CheckTypeI32,
2327 OPC_CheckPatternPredicate3,
2328 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_rr_32),
2329 MVT::i32, 2, 1,
2330 0,
2331 26, TARGET_VAL(BPFISD::Wrapper),
2332 OPC_RecordChild0,
2333 OPC_MoveChild0,
2334 OPC_SwitchOpcode , 8, TARGET_VAL(ISD::TargetConstantPool),
2335 OPC_MoveParent,
2336 OPC_CheckTypeI64,
2337 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LD_imm64),
2338 MVT::i64, 1, 0,
2339 8, TARGET_VAL(ISD::TargetJumpTable),
2340 OPC_MoveParent,
2341 OPC_CheckTypeI64,
2342 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LD_imm64),
2343 MVT::i64, 1, 0,
2344 0,
2345 52, TARGET_VAL(BPFISD::CALL),
2346 OPC_RecordNode,
2347 OPC_CaptureGlueInput,
2348 OPC_RecordChild1,
2349 OPC_Scope, 37,
2350 OPC_MoveChild1,
2351 OPC_SwitchOpcode , 8, TARGET_VAL(ISD::TargetGlobalAddress),
2352 OPC_MoveParent,
2353 OPC_EmitMergeInputChains1_0,
2354 OPC_MorphNodeTo0, TARGET_VAL(BPF::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
2355 1, 2,
2356 8, TARGET_VAL(ISD::TargetExternalSymbol),
2357 OPC_MoveParent,
2358 OPC_EmitMergeInputChains1_0,
2359 OPC_MorphNodeTo0, TARGET_VAL(BPF::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
2360 1, 2,
2361 9, TARGET_VAL(ISD::Constant),
2362 OPC_MoveParent,
2363 OPC_EmitMergeInputChains1_0,
2364 OPC_EmitConvertToTarget1,
2365 OPC_MorphNodeTo0, TARGET_VAL(BPF::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
2366 1, 5,
2367 0,
2368 8,
2369 OPC_CheckChild1TypeI64,
2370 OPC_EmitMergeInputChains1_0,
2371 OPC_MorphNodeTo0, TARGET_VAL(BPF::JALX), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
2372 1, 2,
2373 0,
2374 34, TARGET_VAL(ISD::Constant),
2375 OPC_RecordNode,
2376 OPC_SwitchType , 19, MVT::i64,
2377 OPC_Scope, 8,
2378 OPC_CheckPredicate0,
2379 OPC_EmitConvertToTarget0,
2380 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOV_ri),
2381 MVT::i64, 1, 2,
2382 7,
2383 OPC_EmitConvertToTarget0,
2384 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LD_imm64),
2385 MVT::i64, 1, 2,
2386 0,
2387 8, MVT::i32,
2388 OPC_CheckPredicate0,
2389 OPC_EmitConvertToTarget0,
2390 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOV_ri_32),
2391 MVT::i32, 1, 2,
2392 0,
2393 11, TARGET_VAL(ISD::BRIND),
2394 OPC_RecordNode,
2395 OPC_RecordChild1,
2396 OPC_CheckChild1TypeI64,
2397 OPC_CheckPatternPredicate, 11,
2398 OPC_EmitMergeInputChains1_0,
2399 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JX),
2400 1, 2,
2401 63, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
2402 OPC_RecordChild0,
2403 OPC_MoveChild1,
2404 OPC_Scope, 23,
2405 OPC_CheckValueType, MVT::i8,
2406 OPC_MoveParent,
2407 OPC_SwitchType , 7, MVT::i64,
2408 OPC_CheckPatternPredicate4,
2409 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_8),
2410 MVT::i64, 1, 0,
2411 7, MVT::i32,
2412 OPC_CheckPatternPredicate4,
2413 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32_8),
2414 MVT::i32, 1, 0,
2415 0,
2416 23,
2417 OPC_CheckValueType, MVT::i16,
2418 OPC_MoveParent,
2419 OPC_SwitchType , 7, MVT::i64,
2420 OPC_CheckPatternPredicate4,
2421 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_16),
2422 MVT::i64, 1, 0,
2423 7, MVT::i32,
2424 OPC_CheckPatternPredicate4,
2425 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32_16),
2426 MVT::i32, 1, 0,
2427 0,
2428 10,
2429 OPC_CheckValueType, MVT::i32,
2430 OPC_MoveParent,
2431 OPC_CheckPatternPredicate4,
2432 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32),
2433 MVT::i64, 1, 0,
2434 0,
2435 16, TARGET_VAL(ISD::ADDRSPACECAST),
2436 OPC_RecordNode,
2437 OPC_RecordChild0,
2438 OPC_CheckChild0TypeI64,
2439 OPC_CheckTypeI64,
2440 OPC_EmitNodeXForm, 1, 0,
2441 OPC_EmitNodeXForm, 2, 0,
2442 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADDR_SPACE_CAST),
2443 MVT::i64, 3, 11,
2444 13, TARGET_VAL(ISD::BR),
2445 OPC_RecordNode,
2446 OPC_RecordChild1,
2447 OPC_MoveChild1,
2448 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2449 OPC_MoveParent,
2450 OPC_EmitMergeInputChains1_0,
2451 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JMP),
2452 1, 2,
2453 8, TARGET_VAL(BPFISD::RET_GLUE),
2454 OPC_RecordNode,
2455 OPC_CaptureGlueInput,
2456 OPC_EmitMergeInputChains1_0,
2457 OPC_MorphNodeTo0, TARGET_VAL(BPF::RET), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
2458 0,
2459 31, TARGET_VAL(ISD::BSWAP),
2460 OPC_RecordChild0,
2461 OPC_CheckTypeI64,
2462 OPC_Scope, 8,
2463 OPC_CheckPatternPredicate, 8,
2464 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BSWAP64),
2465 MVT::i64, 1, 0,
2466 8,
2467 OPC_CheckPatternPredicate, 9,
2468 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BE64),
2469 MVT::i64, 1, 0,
2470 8,
2471 OPC_CheckPatternPredicate, 10,
2472 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LE64),
2473 MVT::i64, 1, 0,
2474 0,
2475 7, TARGET_VAL(ISD::ZERO_EXTEND),
2476 OPC_RecordChild0,
2477 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOV_32_64),
2478 MVT::i64, 1, 0,
2479 9, TARGET_VAL(ISD::TRUNCATE),
2480 OPC_RecordChild0,
2481 OPC_EmitIntegerI32, BPF::sub_32,
2482 OPC_MorphNodeTo1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
2483 MVT::i32, 2, 1,
2484 42, TARGET_VAL(ISD::SIGN_EXTEND),
2485 OPC_RecordChild0,
2486 OPC_Scope, 13,
2487 OPC_CheckPatternPredicate4,
2488 OPC_EmitNode1None, TARGET_VAL(BPF::MOV_32_64),
2489 MVT::i64, 1, 0,
2490 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32),
2491 MVT::i64, 1, 2,
2492 24,
2493 OPC_CheckPatternPredicate, 12,
2494 OPC_EmitNode1None, TARGET_VAL(BPF::MOV_32_64),
2495 MVT::i64, 1, 0,
2496 OPC_EmitIntegerI64, 32,
2497 OPC_EmitNode1None, TARGET_VAL(BPF::SLL_ri),
2498 MVT::i64, 2, 6,
2499 OPC_EmitIntegerI64, 32,
2500 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_ri),
2501 MVT::i64, 2, 21,
2502 0,
2503 14, TARGET_VAL(ISD::ANY_EXTEND),
2504 OPC_RecordChild0,
2505 OPC_EmitNode1None, TARGET_VAL(TargetOpcode::IMPLICIT_DEF),
2506 MVT::i64, 0,
2507 OPC_EmitIntegerI32, BPF::sub_32,
2508 OPC_MorphNodeTo1None, TARGET_VAL(TargetOpcode::INSERT_SUBREG),
2509 MVT::i64, 3, 3,
2510 0,
2511 }; // Total Array size is 4435 bytes
2512
2513 static const uint8_t OperandLists[] = {
2514 /* 0 */ 0,
2515 /* 1 */ 0, 1,
2516 /* 3 */ 1, 0, 2,
2517 /* 6 */ 1, 2,
2518 /* 8 */ 3, 4, 2,
2519 /* 11 */ 1, 2, 3,
2520 /* 14 */ 1, 4, 3,
2521 /* 17 */ 4, 5, 3,
2522 /* 20 */ 1, 3, 4,
2523 /* 23 */ 0, 1, 5, 3, 4,
2524 /* 28 */ 0, 5, 6, 3, 4,
2525 /* 33 */ 1, 5,
2526 /* 35 */ 3, 4, 5,
2527 /* 38 */ 1, 2, 5, 6,
2528 };
2529
2530 #undef COVERAGE_IDX_VAL
2531 #undef TARGET_VAL
2532 SelectCodeCommon(NodeToMatch: N, MatcherTable, TableSize: sizeof(MatcherTable),
2533 OperandLists);
2534}
2535#endif // GET_DAGISEL_BODY
2536
2537#ifdef GET_DAGISEL_DECL
2538bool CheckPatternPredicate(unsigned PredNo) const override;
2539#endif
2540#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2541bool DAGISEL_CLASS_COLONCOLON CheckPatternPredicate(unsigned PredNo) const
2542#if DAGISEL_INLINE
2543 override
2544#endif
2545{
2546 switch (PredNo) {
2547 default: llvm_unreachable("Invalid predicate in table?");
2548 case 0: return (Subtarget->getHasAlu32());
2549 case 1: return (Subtarget->hasLoadAcqStoreRel());
2550 case 2: return (!Subtarget->getHasAlu32());
2551 case 3: return (Subtarget->hasSdivSmod());
2552 case 4: return (Subtarget->hasMovsx());
2553 case 5: return (Subtarget->hasLdsx());
2554 case 6: return (Subtarget->hasStoreImm());
2555 case 7: return (Subtarget->getHasAlu32()) && (Subtarget->hasStoreImm());
2556 case 8: return (Subtarget->hasBswap());
2557 case 9: return (Subtarget->isLittleEndian());
2558 case 10: return (!Subtarget->isLittleEndian());
2559 case 11: return (Subtarget->hasGotox());
2560 case 12: return (!Subtarget->hasMovsx());
2561 }
2562}
2563#endif // GET_DAGISEL_BODY
2564
2565#ifdef GET_DAGISEL_DECL
2566bool CheckNodePredicate(SDValue Op, unsigned PredNo) const override;
2567#endif
2568#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2569bool DAGISEL_CLASS_COLONCOLON CheckNodePredicate(SDValue Op, unsigned PredNo) const
2570#if DAGISEL_INLINE
2571 override
2572#endif
2573{
2574 switch (PredNo) {
2575 default: llvm_unreachable("Invalid predicate in table?");
2576 case 0: {
2577 // Predicate_i32immSExt32
2578 // Predicate_i64immSExt32
2579 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2580 (void)N;
2581return isInt<32>(x: N->getSExtValue());
2582 }
2583 case 1: {
2584 // Predicate_atomic_cmp_swap_i32
2585 // Predicate_atomic_load_add_i32
2586 // Predicate_atomic_load_and_i32
2587 // Predicate_atomic_load_nonext_32
2588 // Predicate_atomic_load_or_i32
2589 // Predicate_atomic_load_sub_i32
2590 // Predicate_atomic_load_xor_i32
2591 // Predicate_atomic_store_32
2592 // Predicate_atomic_swap_i32
2593 // Predicate_extloadi32
2594 // Predicate_sextloadi32
2595 // Predicate_truncstorei32
2596 // Predicate_zextloadi32
2597 SDNode *N = Op.getNode();
2598 (void)N;
2599if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i32) return false;
2600return true;
2601
2602 }
2603 case 2: {
2604 // Predicate_atomic_load_aext_16
2605 // Predicate_atomic_load_zext_16
2606 // Predicate_atomic_store_16
2607 // Predicate_extloadi16
2608 // Predicate_sextloadi16
2609 // Predicate_truncstorei16
2610 // Predicate_zextloadi16
2611 SDNode *N = Op.getNode();
2612 (void)N;
2613if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i16) return false;
2614return true;
2615
2616 }
2617 case 3: {
2618 // Predicate_atomic_load_aext_8
2619 // Predicate_atomic_load_zext_8
2620 // Predicate_atomic_store_8
2621 // Predicate_extloadi8
2622 // Predicate_sextloadi8
2623 // Predicate_truncstorei8
2624 // Predicate_zextloadi8
2625 SDNode *N = Op.getNode();
2626 (void)N;
2627if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i8) return false;
2628return true;
2629
2630 }
2631 case 4: {
2632 // Predicate_anonymous_14625
2633 // Predicate_anonymous_14714
2634 // Predicate_anonymous_14715
2635 // Predicate_anonymous_14716
2636 // Predicate_atomic_load_add_i32_acquire
2637 // Predicate_atomic_load_add_i64_acquire
2638 // Predicate_atomic_load_and_i32_acquire
2639 // Predicate_atomic_load_and_i64_acquire
2640 // Predicate_atomic_load_or_i32_acquire
2641 // Predicate_atomic_load_or_i64_acquire
2642 // Predicate_atomic_load_sub_i32_acquire
2643 // Predicate_atomic_load_sub_i64_acquire
2644 // Predicate_atomic_load_xor_i32_acquire
2645 // Predicate_atomic_load_xor_i64_acquire
2646 SDNode *N = Op.getNode();
2647 (void)N;
2648if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::Acquire) return false;
2649return true;
2650
2651 }
2652 case 5: {
2653 // Predicate_anonymous_14621
2654 // Predicate_anonymous_14726
2655 // Predicate_anonymous_14727
2656 // Predicate_anonymous_14728
2657 // Predicate_atomic_load_add_i32_release
2658 // Predicate_atomic_load_add_i64_release
2659 // Predicate_atomic_load_and_i32_release
2660 // Predicate_atomic_load_and_i64_release
2661 // Predicate_atomic_load_or_i32_release
2662 // Predicate_atomic_load_or_i64_release
2663 // Predicate_atomic_load_sub_i32_release
2664 // Predicate_atomic_load_sub_i64_release
2665 // Predicate_atomic_load_xor_i32_release
2666 // Predicate_atomic_load_xor_i64_release
2667 SDNode *N = Op.getNode();
2668 (void)N;
2669if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::Release) return false;
2670return true;
2671
2672 }
2673 case 6: {
2674 // Predicate_atomic_load_add_i32_monotonic
2675 // Predicate_atomic_load_add_i64_monotonic
2676 // Predicate_atomic_load_and_i32_monotonic
2677 // Predicate_atomic_load_and_i64_monotonic
2678 // Predicate_atomic_load_or_i32_monotonic
2679 // Predicate_atomic_load_or_i64_monotonic
2680 // Predicate_atomic_load_sub_i32_monotonic
2681 // Predicate_atomic_load_sub_i64_monotonic
2682 // Predicate_atomic_load_xor_i32_monotonic
2683 // Predicate_atomic_load_xor_i64_monotonic
2684 SDNode *N = Op.getNode();
2685 (void)N;
2686if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::Monotonic) return false;
2687return true;
2688
2689 }
2690 case 7: {
2691 // Predicate_atomic_load_add_i32_acq_rel
2692 // Predicate_atomic_load_add_i64_acq_rel
2693 // Predicate_atomic_load_and_i32_acq_rel
2694 // Predicate_atomic_load_and_i64_acq_rel
2695 // Predicate_atomic_load_or_i32_acq_rel
2696 // Predicate_atomic_load_or_i64_acq_rel
2697 // Predicate_atomic_load_sub_i32_acq_rel
2698 // Predicate_atomic_load_sub_i64_acq_rel
2699 // Predicate_atomic_load_xor_i32_acq_rel
2700 // Predicate_atomic_load_xor_i64_acq_rel
2701 SDNode *N = Op.getNode();
2702 (void)N;
2703if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::AcquireRelease) return false;
2704return true;
2705
2706 }
2707 case 8: {
2708 // Predicate_atomic_load_add_i32_seq_cst
2709 // Predicate_atomic_load_add_i64_seq_cst
2710 // Predicate_atomic_load_and_i32_seq_cst
2711 // Predicate_atomic_load_and_i64_seq_cst
2712 // Predicate_atomic_load_or_i32_seq_cst
2713 // Predicate_atomic_load_or_i64_seq_cst
2714 // Predicate_atomic_load_sub_i32_seq_cst
2715 // Predicate_atomic_load_sub_i64_seq_cst
2716 // Predicate_atomic_load_xor_i32_seq_cst
2717 // Predicate_atomic_load_xor_i64_seq_cst
2718 SDNode *N = Op.getNode();
2719 (void)N;
2720if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::SequentiallyConsistent) return false;
2721return true;
2722
2723 }
2724 case 9: {
2725 // Predicate_atomic_cmp_swap_i64
2726 // Predicate_atomic_load_add_i64
2727 // Predicate_atomic_load_and_i64
2728 // Predicate_atomic_load_nonext_64
2729 // Predicate_atomic_load_or_i64
2730 // Predicate_atomic_load_sub_i64
2731 // Predicate_atomic_load_xor_i64
2732 // Predicate_atomic_store_64
2733 // Predicate_atomic_swap_i64
2734 SDNode *N = Op.getNode();
2735 (void)N;
2736if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i64) return false;
2737return true;
2738
2739 }
2740 case 10: {
2741 // Predicate_anonymous_14624
2742 // Predicate_anonymous_14711
2743 // Predicate_anonymous_14712
2744 // Predicate_anonymous_14713
2745 SDNode *N = Op.getNode();
2746 (void)N;
2747if (isAcquireOrStronger(AO: cast<AtomicSDNode>(Val: N)->getMergedOrdering())) return false;
2748return true;
2749
2750 }
2751 case 11: {
2752 // Predicate_unindexedstore
2753 SDNode *N = Op.getNode();
2754 (void)N;
2755if (cast<StoreSDNode>(Val: N)->getAddressingMode() != ISD::UNINDEXED) return false;
2756return true;
2757
2758 }
2759 case 12: {
2760 // Predicate_truncstore
2761 SDNode *N = Op.getNode();
2762 (void)N;
2763 if (!cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
2764return true;
2765
2766 }
2767 case 13: {
2768 // Predicate_store
2769 SDNode *N = Op.getNode();
2770 (void)N;
2771 if (cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
2772return true;
2773
2774 }
2775 case 14: {
2776 // Predicate_anonymous_14620
2777 // Predicate_anonymous_14723
2778 // Predicate_anonymous_14724
2779 // Predicate_anonymous_14725
2780 SDNode *N = Op.getNode();
2781 (void)N;
2782if (isReleaseOrStronger(AO: cast<AtomicSDNode>(Val: N)->getMergedOrdering())) return false;
2783return true;
2784
2785 }
2786 case 15: {
2787 // Predicate_atomic_load_aext
2788 SDNode *N = Op.getNode();
2789 (void)N;
2790if (cast<AtomicSDNode>(Val: N)->getExtensionType() != ISD::EXTLOAD) return false;
2791return true;
2792
2793 }
2794 case 16: {
2795 // Predicate_atomic_load_zext
2796 SDNode *N = Op.getNode();
2797 (void)N;
2798if (cast<AtomicSDNode>(Val: N)->getExtensionType() != ISD::ZEXTLOAD) return false;
2799return true;
2800
2801 }
2802 case 17: {
2803 // Predicate_BPF_CC_EQ
2804 // Predicate_BPF_CC_EQ_32
2805 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2806 (void)N;
2807return (N->getZExtValue() == ISD::SETEQ);
2808 }
2809 case 18: {
2810 // Predicate_BPF_CC_GTU
2811 // Predicate_BPF_CC_GTU_32
2812 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2813 (void)N;
2814return (N->getZExtValue() == ISD::SETUGT);
2815 }
2816 case 19: {
2817 // Predicate_BPF_CC_GEU
2818 // Predicate_BPF_CC_GEU_32
2819 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2820 (void)N;
2821return (N->getZExtValue() == ISD::SETUGE);
2822 }
2823 case 20: {
2824 // Predicate_BPF_CC_NE
2825 // Predicate_BPF_CC_NE_32
2826 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2827 (void)N;
2828return (N->getZExtValue() == ISD::SETNE);
2829 }
2830 case 21: {
2831 // Predicate_BPF_CC_GT
2832 // Predicate_BPF_CC_GT_32
2833 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2834 (void)N;
2835return (N->getZExtValue() == ISD::SETGT);
2836 }
2837 case 22: {
2838 // Predicate_BPF_CC_GE
2839 // Predicate_BPF_CC_GE_32
2840 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2841 (void)N;
2842return (N->getZExtValue() == ISD::SETGE);
2843 }
2844 case 23: {
2845 // Predicate_BPF_CC_LTU
2846 // Predicate_BPF_CC_LTU_32
2847 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2848 (void)N;
2849return (N->getZExtValue() == ISD::SETULT);
2850 }
2851 case 24: {
2852 // Predicate_BPF_CC_LEU
2853 // Predicate_BPF_CC_LEU_32
2854 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2855 (void)N;
2856return (N->getZExtValue() == ISD::SETULE);
2857 }
2858 case 25: {
2859 // Predicate_BPF_CC_LT
2860 // Predicate_BPF_CC_LT_32
2861 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2862 (void)N;
2863return (N->getZExtValue() == ISD::SETLT);
2864 }
2865 case 26: {
2866 // Predicate_BPF_CC_LE
2867 // Predicate_BPF_CC_LE_32
2868 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2869 (void)N;
2870return (N->getZExtValue() == ISD::SETLE);
2871 }
2872 case 27: {
2873 // Predicate_zextload
2874 SDNode *N = Op.getNode();
2875 (void)N;
2876if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::ZEXTLOAD) return false;
2877return true;
2878
2879 }
2880 case 28: {
2881 // Predicate_extload
2882 SDNode *N = Op.getNode();
2883 (void)N;
2884if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::EXTLOAD) return false;
2885return true;
2886
2887 }
2888 case 29: {
2889 // Predicate_atomic_load_and_i64_monotonic_nu
2890 // Predicate_atomic_load_or_i64_monotonic_nu
2891 // Predicate_atomic_load_xor_i64_monotonic_nu
2892 SDNode *N = Op.getNode();
2893 (void)N;
2894 return SDValue(N, 0).use_empty();
2895 }
2896 case 30: {
2897 // Predicate_atomic_load_and_i64_monotonic_hu
2898 // Predicate_atomic_load_or_i64_monotonic_hu
2899 // Predicate_atomic_load_xor_i64_monotonic_hu
2900 SDNode *N = Op.getNode();
2901 (void)N;
2902 return !SDValue(N, 0).use_empty();
2903 }
2904 case 31: {
2905 // Predicate_sextload
2906 SDNode *N = Op.getNode();
2907 (void)N;
2908if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::SEXTLOAD) return false;
2909return true;
2910
2911 }
2912 case 32: {
2913 // Predicate_load
2914 SDNode *N = Op.getNode();
2915 (void)N;
2916if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
2917return true;
2918
2919 }
2920 case 33: {
2921 // Predicate_atomic_load_nonext
2922 SDNode *N = Op.getNode();
2923 (void)N;
2924if (cast<AtomicSDNode>(Val: N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
2925return true;
2926
2927 }
2928 case 34: {
2929 // Predicate_i64immZExt32
2930 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2931 (void)N;
2932return isUInt<32>(x: N->getZExtValue());
2933 }
2934 case 35: {
2935 // Predicate_unindexedload
2936 SDNode *N = Op.getNode();
2937 (void)N;
2938if (cast<LoadSDNode>(Val: N)->getAddressingMode() != ISD::UNINDEXED) return false;
2939return true;
2940
2941 }
2942 }
2943}
2944#endif // GET_DAGISEL_BODY
2945
2946#ifdef GET_DAGISEL_DECL
2947bool CheckComplexPattern(SDNode *Root, SDNode *Parent,
2948 SDValue N, unsigned PatternNo,
2949 SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result) override;
2950#endif
2951#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2952bool DAGISEL_CLASS_COLONCOLON CheckComplexPattern(SDNode *Root, SDNode *Parent,
2953 SDValue N, unsigned PatternNo,
2954 SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result)
2955#if DAGISEL_INLINE
2956 override
2957#endif
2958{
2959 unsigned NextRes = Result.size();
2960 switch (PatternNo) {
2961 default: llvm_unreachable("Invalid pattern # in table?");
2962 case 0:
2963 Result.resize(N: NextRes+2);
2964 return SelectAddr(Addr: N, Base&: Result[NextRes+0].first, Offset&: Result[NextRes+1].first);
2965 case 1:
2966 Result.resize(N: NextRes+2);
2967 return SelectFIAddr(Addr: N, Base&: Result[NextRes+0].first, Offset&: Result[NextRes+1].first);
2968 }
2969}
2970#endif // GET_DAGISEL_BODY
2971
2972#ifdef GET_DAGISEL_DECL
2973SDValue RunSDNodeXForm(SDValue V, unsigned XFormNo) override;
2974#endif
2975#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2976SDValue DAGISEL_CLASS_COLONCOLON RunSDNodeXForm(SDValue V, unsigned XFormNo)
2977#if DAGISEL_INLINE
2978 override
2979#endif
2980{
2981 switch (XFormNo) {
2982 default: llvm_unreachable("Invalid xform # in table?");
2983 case 0: {
2984 ConstantSDNode *N = cast<ConstantSDNode>(Val: V.getNode());
2985
2986 return CurDAG->getTargetConstant(Val: N->getZExtValue(), DL: SDLoc(N), VT: MVT::i64);
2987
2988 }
2989 case 1: {
2990 SDNode *N = V.getNode();
2991
2992 return CurDAG->getTargetConstant(
2993 Val: cast<AddrSpaceCastSDNode>(Val: N)->getDestAddressSpace(),
2994 DL: SDLoc(N), VT: MVT::i64);
2995
2996 }
2997 case 2: {
2998 SDNode *N = V.getNode();
2999
3000 return CurDAG->getTargetConstant(
3001 Val: cast<AddrSpaceCastSDNode>(Val: N)->getSrcAddressSpace(),
3002 DL: SDLoc(N), VT: MVT::i64);
3003
3004 }
3005 }
3006}
3007#endif // GET_DAGISEL_BODY
3008
3009
3010#ifdef DAGISEL_INLINE
3011#undef DAGISEL_INLINE
3012#endif
3013#ifdef DAGISEL_CLASS_COLONCOLON
3014#undef DAGISEL_CLASS_COLONCOLON
3015#endif
3016#ifdef GET_DAGISEL_DECL
3017#undef GET_DAGISEL_DECL
3018#endif
3019#ifdef GET_DAGISEL_BODY
3020#undef GET_DAGISEL_BODY
3021#endif
3022