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, 13,
73 OPC_CheckPredicate, 15,
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, 13,
86 OPC_CheckPredicate, 14,
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, 13,
118 OPC_Scope, 15,
119 OPC_CheckPredicate, 15,
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, 14,
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, 13,
154 OPC_Scope, 40,
155 OPC_CheckPredicate, 14,
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, 15,
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, 14,
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, 13,
223 OPC_Scope, 12,
224 OPC_CheckPredicate, 15,
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, 14,
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, 119|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, 112|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, 113|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, 114|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, 11,
338 OPC_Scope, 12,
339 OPC_CheckPredicate, 16,
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, 16,
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, 16,
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, 16,
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, 29,
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, 30,
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, 29,
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, 30,
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, 29,
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, 30,
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, 11,
635 OPC_Scope, 13,
636 OPC_CheckPredicate, 12,
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, 12,
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, 17,
661 OPC_CheckPredicate2,
662 OPC_CheckPredicate, 12,
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, 18,
671 OPC_CheckPredicate2,
672 OPC_CheckPredicate, 12,
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, 17,
681 OPC_CheckPredicate3,
682 OPC_CheckPredicate, 12,
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, 18,
691 OPC_CheckPredicate3,
692 OPC_CheckPredicate, 12,
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, 17,
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, 18,
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, 17,
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, 18,
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 88|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 , 117, 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 101,
765 OPC_CheckPredicate, 11,
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 30,
773 OPC_CheckPredicate6,
774 OPC_Scope, 12,
775 OPC_CheckPredicate7,
776 OPC_CheckPatternPredicate0,
777 OPC_CheckComplexPat0, /*#*/1,
778 OPC_EmitMergeInputChains1_0,
779 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDD), 0|OPFL_Chain|OPFL_MemRefs,
780 MVT::i64, 3, 8,
781 13,
782 OPC_CheckPredicate, 8,
783 OPC_CheckPatternPredicate0,
784 OPC_CheckComplexPat0, /*#*/1,
785 OPC_EmitMergeInputChains1_0,
786 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
787 MVT::i64, 3, 8,
788 0,
789 12,
790 OPC_CheckPredicate4,
791 OPC_CheckPatternPredicate0,
792 OPC_CheckComplexPat0, /*#*/1,
793 OPC_EmitMergeInputChains1_0,
794 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
795 MVT::i64, 3, 8,
796 12,
797 OPC_CheckPredicate5,
798 OPC_CheckPatternPredicate0,
799 OPC_CheckComplexPat0, /*#*/1,
800 OPC_EmitMergeInputChains1_0,
801 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
802 MVT::i64, 3, 8,
803 13,
804 OPC_CheckPredicate, 9,
805 OPC_CheckPatternPredicate0,
806 OPC_CheckComplexPat0, /*#*/1,
807 OPC_EmitMergeInputChains1_0,
808 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
809 MVT::i64, 3, 8,
810 13,
811 OPC_CheckPredicate, 10,
812 OPC_CheckPatternPredicate0,
813 OPC_CheckComplexPat0, /*#*/1,
814 OPC_EmitMergeInputChains1_0,
815 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
816 MVT::i64, 3, 8,
817 0,
818 0,
819 88, MVT::i32,
820 OPC_CheckPredicate1,
821 OPC_Scope, 30,
822 OPC_CheckPredicate6,
823 OPC_Scope, 12,
824 OPC_CheckPredicate7,
825 OPC_CheckPatternPredicate0,
826 OPC_CheckComplexPat0, /*#*/1,
827 OPC_EmitMergeInputChains1_0,
828 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDW32), 0|OPFL_Chain|OPFL_MemRefs,
829 MVT::i32, 3, 8,
830 13,
831 OPC_CheckPredicate, 8,
832 OPC_CheckPatternPredicate0,
833 OPC_CheckComplexPat0, /*#*/1,
834 OPC_EmitMergeInputChains1_0,
835 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
836 MVT::i32, 3, 8,
837 0,
838 12,
839 OPC_CheckPredicate4,
840 OPC_CheckPatternPredicate0,
841 OPC_CheckComplexPat0, /*#*/1,
842 OPC_EmitMergeInputChains1_0,
843 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
844 MVT::i32, 3, 8,
845 12,
846 OPC_CheckPredicate5,
847 OPC_CheckPatternPredicate0,
848 OPC_CheckComplexPat0, /*#*/1,
849 OPC_EmitMergeInputChains1_0,
850 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
851 MVT::i32, 3, 8,
852 13,
853 OPC_CheckPredicate, 9,
854 OPC_CheckPatternPredicate0,
855 OPC_CheckComplexPat0, /*#*/1,
856 OPC_EmitMergeInputChains1_0,
857 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
858 MVT::i32, 3, 8,
859 13,
860 OPC_CheckPredicate, 10,
861 OPC_CheckPatternPredicate0,
862 OPC_CheckComplexPat0, /*#*/1,
863 OPC_EmitMergeInputChains1_0,
864 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
865 MVT::i32, 3, 8,
866 0,
867 0,
868 54|128,1, TARGET_VAL(ISD::ATOMIC_LOAD_AND),
869 OPC_RecordMemRef,
870 OPC_RecordNode,
871 OPC_RecordChild1,
872 OPC_CheckChild1TypeI64,
873 OPC_RecordChild2,
874 OPC_SwitchType , 88, MVT::i32,
875 OPC_CheckPredicate1,
876 OPC_Scope, 30,
877 OPC_CheckPredicate6,
878 OPC_Scope, 12,
879 OPC_CheckPredicate7,
880 OPC_CheckPatternPredicate0,
881 OPC_CheckComplexPat0, /*#*/1,
882 OPC_EmitMergeInputChains1_0,
883 OPC_MorphNodeTo1, TARGET_VAL(BPF::XANDW32), 0|OPFL_Chain|OPFL_MemRefs,
884 MVT::i32, 3, 8,
885 13,
886 OPC_CheckPredicate, 8,
887 OPC_CheckPatternPredicate0,
888 OPC_CheckComplexPat0, /*#*/1,
889 OPC_EmitMergeInputChains1_0,
890 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
891 MVT::i32, 3, 8,
892 0,
893 12,
894 OPC_CheckPredicate4,
895 OPC_CheckPatternPredicate0,
896 OPC_CheckComplexPat0, /*#*/1,
897 OPC_EmitMergeInputChains1_0,
898 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
899 MVT::i32, 3, 8,
900 12,
901 OPC_CheckPredicate5,
902 OPC_CheckPatternPredicate0,
903 OPC_CheckComplexPat0, /*#*/1,
904 OPC_EmitMergeInputChains1_0,
905 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
906 MVT::i32, 3, 8,
907 13,
908 OPC_CheckPredicate, 9,
909 OPC_CheckPatternPredicate0,
910 OPC_CheckComplexPat0, /*#*/1,
911 OPC_EmitMergeInputChains1_0,
912 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
913 MVT::i32, 3, 8,
914 13,
915 OPC_CheckPredicate, 10,
916 OPC_CheckPatternPredicate0,
917 OPC_CheckComplexPat0, /*#*/1,
918 OPC_EmitMergeInputChains1_0,
919 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDW32), 0|OPFL_Chain|OPFL_MemRefs,
920 MVT::i32, 3, 8,
921 0,
922 83, MVT::i64,
923 OPC_CheckPredicate, 11,
924 OPC_Scope, 28,
925 OPC_CheckPredicate6,
926 OPC_Scope, 11,
927 OPC_CheckPredicate7,
928 OPC_CheckComplexPat0, /*#*/1,
929 OPC_EmitMergeInputChains1_0,
930 OPC_MorphNodeTo1, TARGET_VAL(BPF::XANDD), 0|OPFL_Chain|OPFL_MemRefs,
931 MVT::i64, 3, 8,
932 12,
933 OPC_CheckPredicate, 8,
934 OPC_CheckComplexPat0, /*#*/1,
935 OPC_EmitMergeInputChains1_0,
936 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
937 MVT::i64, 3, 8,
938 0,
939 11,
940 OPC_CheckPredicate4,
941 OPC_CheckComplexPat0, /*#*/1,
942 OPC_EmitMergeInputChains1_0,
943 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
944 MVT::i64, 3, 8,
945 11,
946 OPC_CheckPredicate5,
947 OPC_CheckComplexPat0, /*#*/1,
948 OPC_EmitMergeInputChains1_0,
949 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
950 MVT::i64, 3, 8,
951 12,
952 OPC_CheckPredicate, 9,
953 OPC_CheckComplexPat0, /*#*/1,
954 OPC_EmitMergeInputChains1_0,
955 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
956 MVT::i64, 3, 8,
957 12,
958 OPC_CheckPredicate, 10,
959 OPC_CheckComplexPat0, /*#*/1,
960 OPC_EmitMergeInputChains1_0,
961 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFANDD), 0|OPFL_Chain|OPFL_MemRefs,
962 MVT::i64, 3, 8,
963 0,
964 0,
965 54|128,1, TARGET_VAL(ISD::ATOMIC_LOAD_OR),
966 OPC_RecordMemRef,
967 OPC_RecordNode,
968 OPC_RecordChild1,
969 OPC_CheckChild1TypeI64,
970 OPC_RecordChild2,
971 OPC_SwitchType , 88, MVT::i32,
972 OPC_CheckPredicate1,
973 OPC_Scope, 30,
974 OPC_CheckPredicate6,
975 OPC_Scope, 12,
976 OPC_CheckPredicate7,
977 OPC_CheckPatternPredicate0,
978 OPC_CheckComplexPat0, /*#*/1,
979 OPC_EmitMergeInputChains1_0,
980 OPC_MorphNodeTo1, TARGET_VAL(BPF::XORW32), 0|OPFL_Chain|OPFL_MemRefs,
981 MVT::i32, 3, 8,
982 13,
983 OPC_CheckPredicate, 8,
984 OPC_CheckPatternPredicate0,
985 OPC_CheckComplexPat0, /*#*/1,
986 OPC_EmitMergeInputChains1_0,
987 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
988 MVT::i32, 3, 8,
989 0,
990 12,
991 OPC_CheckPredicate4,
992 OPC_CheckPatternPredicate0,
993 OPC_CheckComplexPat0, /*#*/1,
994 OPC_EmitMergeInputChains1_0,
995 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
996 MVT::i32, 3, 8,
997 12,
998 OPC_CheckPredicate5,
999 OPC_CheckPatternPredicate0,
1000 OPC_CheckComplexPat0, /*#*/1,
1001 OPC_EmitMergeInputChains1_0,
1002 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
1003 MVT::i32, 3, 8,
1004 13,
1005 OPC_CheckPredicate, 9,
1006 OPC_CheckPatternPredicate0,
1007 OPC_CheckComplexPat0, /*#*/1,
1008 OPC_EmitMergeInputChains1_0,
1009 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
1010 MVT::i32, 3, 8,
1011 13,
1012 OPC_CheckPredicate, 10,
1013 OPC_CheckPatternPredicate0,
1014 OPC_CheckComplexPat0, /*#*/1,
1015 OPC_EmitMergeInputChains1_0,
1016 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORW32), 0|OPFL_Chain|OPFL_MemRefs,
1017 MVT::i32, 3, 8,
1018 0,
1019 83, MVT::i64,
1020 OPC_CheckPredicate, 11,
1021 OPC_Scope, 28,
1022 OPC_CheckPredicate6,
1023 OPC_Scope, 11,
1024 OPC_CheckPredicate7,
1025 OPC_CheckComplexPat0, /*#*/1,
1026 OPC_EmitMergeInputChains1_0,
1027 OPC_MorphNodeTo1, TARGET_VAL(BPF::XORD), 0|OPFL_Chain|OPFL_MemRefs,
1028 MVT::i64, 3, 8,
1029 12,
1030 OPC_CheckPredicate, 8,
1031 OPC_CheckComplexPat0, /*#*/1,
1032 OPC_EmitMergeInputChains1_0,
1033 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
1034 MVT::i64, 3, 8,
1035 0,
1036 11,
1037 OPC_CheckPredicate4,
1038 OPC_CheckComplexPat0, /*#*/1,
1039 OPC_EmitMergeInputChains1_0,
1040 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
1041 MVT::i64, 3, 8,
1042 11,
1043 OPC_CheckPredicate5,
1044 OPC_CheckComplexPat0, /*#*/1,
1045 OPC_EmitMergeInputChains1_0,
1046 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
1047 MVT::i64, 3, 8,
1048 12,
1049 OPC_CheckPredicate, 9,
1050 OPC_CheckComplexPat0, /*#*/1,
1051 OPC_EmitMergeInputChains1_0,
1052 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
1053 MVT::i64, 3, 8,
1054 12,
1055 OPC_CheckPredicate, 10,
1056 OPC_CheckComplexPat0, /*#*/1,
1057 OPC_EmitMergeInputChains1_0,
1058 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFORD), 0|OPFL_Chain|OPFL_MemRefs,
1059 MVT::i64, 3, 8,
1060 0,
1061 0,
1062 54|128,1, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),
1063 OPC_RecordMemRef,
1064 OPC_RecordNode,
1065 OPC_RecordChild1,
1066 OPC_CheckChild1TypeI64,
1067 OPC_RecordChild2,
1068 OPC_SwitchType , 88, MVT::i32,
1069 OPC_CheckPredicate1,
1070 OPC_Scope, 30,
1071 OPC_CheckPredicate6,
1072 OPC_Scope, 12,
1073 OPC_CheckPredicate7,
1074 OPC_CheckPatternPredicate0,
1075 OPC_CheckComplexPat0, /*#*/1,
1076 OPC_EmitMergeInputChains1_0,
1077 OPC_MorphNodeTo1, TARGET_VAL(BPF::XXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1078 MVT::i32, 3, 8,
1079 13,
1080 OPC_CheckPredicate, 8,
1081 OPC_CheckPatternPredicate0,
1082 OPC_CheckComplexPat0, /*#*/1,
1083 OPC_EmitMergeInputChains1_0,
1084 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1085 MVT::i32, 3, 8,
1086 0,
1087 12,
1088 OPC_CheckPredicate4,
1089 OPC_CheckPatternPredicate0,
1090 OPC_CheckComplexPat0, /*#*/1,
1091 OPC_EmitMergeInputChains1_0,
1092 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1093 MVT::i32, 3, 8,
1094 12,
1095 OPC_CheckPredicate5,
1096 OPC_CheckPatternPredicate0,
1097 OPC_CheckComplexPat0, /*#*/1,
1098 OPC_EmitMergeInputChains1_0,
1099 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1100 MVT::i32, 3, 8,
1101 13,
1102 OPC_CheckPredicate, 9,
1103 OPC_CheckPatternPredicate0,
1104 OPC_CheckComplexPat0, /*#*/1,
1105 OPC_EmitMergeInputChains1_0,
1106 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1107 MVT::i32, 3, 8,
1108 13,
1109 OPC_CheckPredicate, 10,
1110 OPC_CheckPatternPredicate0,
1111 OPC_CheckComplexPat0, /*#*/1,
1112 OPC_EmitMergeInputChains1_0,
1113 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORW32), 0|OPFL_Chain|OPFL_MemRefs,
1114 MVT::i32, 3, 8,
1115 0,
1116 83, MVT::i64,
1117 OPC_CheckPredicate, 11,
1118 OPC_Scope, 28,
1119 OPC_CheckPredicate6,
1120 OPC_Scope, 11,
1121 OPC_CheckPredicate7,
1122 OPC_CheckComplexPat0, /*#*/1,
1123 OPC_EmitMergeInputChains1_0,
1124 OPC_MorphNodeTo1, TARGET_VAL(BPF::XXORD), 0|OPFL_Chain|OPFL_MemRefs,
1125 MVT::i64, 3, 8,
1126 12,
1127 OPC_CheckPredicate, 8,
1128 OPC_CheckComplexPat0, /*#*/1,
1129 OPC_EmitMergeInputChains1_0,
1130 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1131 MVT::i64, 3, 8,
1132 0,
1133 11,
1134 OPC_CheckPredicate4,
1135 OPC_CheckComplexPat0, /*#*/1,
1136 OPC_EmitMergeInputChains1_0,
1137 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1138 MVT::i64, 3, 8,
1139 11,
1140 OPC_CheckPredicate5,
1141 OPC_CheckComplexPat0, /*#*/1,
1142 OPC_EmitMergeInputChains1_0,
1143 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1144 MVT::i64, 3, 8,
1145 12,
1146 OPC_CheckPredicate, 9,
1147 OPC_CheckComplexPat0, /*#*/1,
1148 OPC_EmitMergeInputChains1_0,
1149 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1150 MVT::i64, 3, 8,
1151 12,
1152 OPC_CheckPredicate, 10,
1153 OPC_CheckComplexPat0, /*#*/1,
1154 OPC_EmitMergeInputChains1_0,
1155 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFXORD), 0|OPFL_Chain|OPFL_MemRefs,
1156 MVT::i64, 3, 8,
1157 0,
1158 0,
1159 35, TARGET_VAL(ISD::ATOMIC_SWAP),
1160 OPC_RecordMemRef,
1161 OPC_RecordNode,
1162 OPC_RecordChild1,
1163 OPC_CheckChild1TypeI64,
1164 OPC_RecordChild2,
1165 OPC_SwitchType , 12, MVT::i32,
1166 OPC_CheckPredicate1,
1167 OPC_CheckPatternPredicate0,
1168 OPC_CheckComplexPat0, /*#*/1,
1169 OPC_EmitMergeInputChains1_0,
1170 OPC_MorphNodeTo1, TARGET_VAL(BPF::XCHGW32), 0|OPFL_Chain|OPFL_MemRefs,
1171 MVT::i32, 3, 8,
1172 12, MVT::i64,
1173 OPC_CheckPredicate, 11,
1174 OPC_CheckComplexPat0, /*#*/1,
1175 OPC_EmitMergeInputChains1_0,
1176 OPC_MorphNodeTo1, TARGET_VAL(BPF::XCHGD), 0|OPFL_Chain|OPFL_MemRefs,
1177 MVT::i64, 3, 8,
1178 0,
1179 40, TARGET_VAL(ISD::ATOMIC_CMP_SWAP),
1180 OPC_RecordMemRef,
1181 OPC_RecordNode,
1182 OPC_RecordChild1,
1183 OPC_CheckChild1TypeI64,
1184 OPC_RecordChild2,
1185 OPC_RecordChild3,
1186 OPC_SwitchType , 14, MVT::i32,
1187 OPC_CheckPredicate1,
1188 OPC_CheckPatternPredicate0,
1189 OPC_CheckComplexPat0, /*#*/1,
1190 OPC_EmitMergeInputChains1_0,
1191 OPC_EmitCopyToReg2, BPF::W0,
1192 OPC_MorphNodeTo1, TARGET_VAL(BPF::CMPXCHGW32), 0|OPFL_Chain|OPFL_GlueInput|OPFL_MemRefs,
1193 MVT::i32, 3, 17,
1194 14, MVT::i64,
1195 OPC_CheckPredicate, 11,
1196 OPC_CheckComplexPat0, /*#*/1,
1197 OPC_EmitMergeInputChains1_0,
1198 OPC_EmitCopyToReg2, BPF::R0,
1199 OPC_MorphNodeTo1, TARGET_VAL(BPF::CMPXCHGD), 0|OPFL_Chain|OPFL_GlueInput|OPFL_MemRefs,
1200 MVT::i64, 3, 17,
1201 0,
1202 17|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),
1203 OPC_RecordMemRef,
1204 OPC_RecordNode,
1205 OPC_RecordChild1,
1206 OPC_CheckChild1TypeI64,
1207 OPC_RecordChild2,
1208 OPC_SwitchType , 9|128,1, MVT::i64,
1209 OPC_CheckPredicate, 11,
1210 OPC_Scope, 58,
1211 OPC_CheckPredicate6,
1212 OPC_Scope, 17,
1213 OPC_CheckPatternPredicate2,
1214 OPC_CheckComplexPat0, /*#*/1,
1215 OPC_EmitMergeInputChains1_0,
1216 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1217 MVT::i64, 1, 5,
1218 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDD), 0|OPFL_Chain|OPFL_MemRefs,
1219 MVT::i64, 3, 35,
1220 17,
1221 OPC_CheckPredicate7,
1222 OPC_CheckComplexPat0, /*#*/1,
1223 OPC_EmitMergeInputChains1_0,
1224 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1225 MVT::i64, 1, 5,
1226 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDD), 0|OPFL_Chain|OPFL_MemRefs,
1227 MVT::i64, 3, 35,
1228 18,
1229 OPC_CheckPredicate, 8,
1230 OPC_CheckComplexPat0, /*#*/1,
1231 OPC_EmitMergeInputChains1_0,
1232 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1233 MVT::i64, 1, 5,
1234 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
1235 MVT::i64, 3, 35,
1236 0,
1237 17,
1238 OPC_CheckPredicate4,
1239 OPC_CheckComplexPat0, /*#*/1,
1240 OPC_EmitMergeInputChains1_0,
1241 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1242 MVT::i64, 1, 5,
1243 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
1244 MVT::i64, 3, 35,
1245 17,
1246 OPC_CheckPredicate5,
1247 OPC_CheckComplexPat0, /*#*/1,
1248 OPC_EmitMergeInputChains1_0,
1249 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1250 MVT::i64, 1, 5,
1251 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
1252 MVT::i64, 3, 35,
1253 18,
1254 OPC_CheckPredicate, 9,
1255 OPC_CheckComplexPat0, /*#*/1,
1256 OPC_EmitMergeInputChains1_0,
1257 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1258 MVT::i64, 1, 5,
1259 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
1260 MVT::i64, 3, 35,
1261 18,
1262 OPC_CheckPredicate, 10,
1263 OPC_CheckComplexPat0, /*#*/1,
1264 OPC_EmitMergeInputChains1_0,
1265 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_64),
1266 MVT::i64, 1, 5,
1267 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDD), 0|OPFL_Chain|OPFL_MemRefs,
1268 MVT::i64, 3, 35,
1269 0,
1270 124, MVT::i32,
1271 OPC_CheckPredicate1,
1272 OPC_Scope, 42,
1273 OPC_CheckPredicate6,
1274 OPC_Scope, 18,
1275 OPC_CheckPredicate7,
1276 OPC_CheckPatternPredicate0,
1277 OPC_CheckComplexPat0, /*#*/1,
1278 OPC_EmitMergeInputChains1_0,
1279 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1280 MVT::i32, 1, 5,
1281 OPC_MorphNodeTo1, TARGET_VAL(BPF::XADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1282 MVT::i32, 3, 35,
1283 19,
1284 OPC_CheckPredicate, 8,
1285 OPC_CheckPatternPredicate0,
1286 OPC_CheckComplexPat0, /*#*/1,
1287 OPC_EmitMergeInputChains1_0,
1288 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1289 MVT::i32, 1, 5,
1290 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1291 MVT::i32, 3, 35,
1292 0,
1293 18,
1294 OPC_CheckPredicate4,
1295 OPC_CheckPatternPredicate0,
1296 OPC_CheckComplexPat0, /*#*/1,
1297 OPC_EmitMergeInputChains1_0,
1298 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1299 MVT::i32, 1, 5,
1300 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1301 MVT::i32, 3, 35,
1302 18,
1303 OPC_CheckPredicate5,
1304 OPC_CheckPatternPredicate0,
1305 OPC_CheckComplexPat0, /*#*/1,
1306 OPC_EmitMergeInputChains1_0,
1307 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1308 MVT::i32, 1, 5,
1309 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1310 MVT::i32, 3, 35,
1311 19,
1312 OPC_CheckPredicate, 9,
1313 OPC_CheckPatternPredicate0,
1314 OPC_CheckComplexPat0, /*#*/1,
1315 OPC_EmitMergeInputChains1_0,
1316 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1317 MVT::i32, 1, 5,
1318 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1319 MVT::i32, 3, 35,
1320 19,
1321 OPC_CheckPredicate, 10,
1322 OPC_CheckPatternPredicate0,
1323 OPC_CheckComplexPat0, /*#*/1,
1324 OPC_EmitMergeInputChains1_0,
1325 OPC_EmitNode1None, TARGET_VAL(BPF::NEG_32),
1326 MVT::i32, 1, 5,
1327 OPC_MorphNodeTo1, TARGET_VAL(BPF::XFADDW32), 0|OPFL_Chain|OPFL_MemRefs,
1328 MVT::i32, 3, 35,
1329 0,
1330 0,
1331 122|128,5, TARGET_VAL(BPFISD::BR_CC),
1332 OPC_RecordNode,
1333 OPC_RecordChild1,
1334 OPC_Scope, 121|128,2,
1335 OPC_CheckChild1TypeI64,
1336 OPC_RecordChild2,
1337 OPC_Scope, 44|128,1,
1338 OPC_MoveChild2,
1339 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1340 OPC_CheckPredicate0,
1341 OPC_MoveSibling3,
1342 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1343 OPC_CheckTypeI64,
1344 OPC_Scope, 15,
1345 OPC_CheckPredicate, 19,
1346 OPC_MoveSibling4,
1347 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1348 OPC_RecordNode,
1349 OPC_MoveParent,
1350 OPC_EmitMergeInputChains1_0,
1351 OPC_EmitConvertToTarget2,
1352 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JEQ_ri),
1353 3, 14,
1354 15,
1355 OPC_CheckPredicate, 20,
1356 OPC_MoveSibling4,
1357 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1358 OPC_RecordNode,
1359 OPC_MoveParent,
1360 OPC_EmitMergeInputChains1_0,
1361 OPC_EmitConvertToTarget2,
1362 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGT_ri),
1363 3, 14,
1364 15,
1365 OPC_CheckPredicate, 21,
1366 OPC_MoveSibling4,
1367 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1368 OPC_RecordNode,
1369 OPC_MoveParent,
1370 OPC_EmitMergeInputChains1_0,
1371 OPC_EmitConvertToTarget2,
1372 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGE_ri),
1373 3, 14,
1374 15,
1375 OPC_CheckPredicate, 22,
1376 OPC_MoveSibling4,
1377 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1378 OPC_RecordNode,
1379 OPC_MoveParent,
1380 OPC_EmitMergeInputChains1_0,
1381 OPC_EmitConvertToTarget2,
1382 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JNE_ri),
1383 3, 14,
1384 15,
1385 OPC_CheckPredicate, 23,
1386 OPC_MoveSibling4,
1387 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1388 OPC_RecordNode,
1389 OPC_MoveParent,
1390 OPC_EmitMergeInputChains1_0,
1391 OPC_EmitConvertToTarget2,
1392 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGT_ri),
1393 3, 14,
1394 15,
1395 OPC_CheckPredicate, 24,
1396 OPC_MoveSibling4,
1397 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1398 OPC_RecordNode,
1399 OPC_MoveParent,
1400 OPC_EmitMergeInputChains1_0,
1401 OPC_EmitConvertToTarget2,
1402 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGE_ri),
1403 3, 14,
1404 15,
1405 OPC_CheckPredicate, 25,
1406 OPC_MoveSibling4,
1407 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1408 OPC_RecordNode,
1409 OPC_MoveParent,
1410 OPC_EmitMergeInputChains1_0,
1411 OPC_EmitConvertToTarget2,
1412 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULT_ri),
1413 3, 14,
1414 15,
1415 OPC_CheckPredicate, 26,
1416 OPC_MoveSibling4,
1417 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1418 OPC_RecordNode,
1419 OPC_MoveParent,
1420 OPC_EmitMergeInputChains1_0,
1421 OPC_EmitConvertToTarget2,
1422 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULE_ri),
1423 3, 14,
1424 15,
1425 OPC_CheckPredicate, 27,
1426 OPC_MoveSibling4,
1427 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1428 OPC_RecordNode,
1429 OPC_MoveParent,
1430 OPC_EmitMergeInputChains1_0,
1431 OPC_EmitConvertToTarget2,
1432 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLT_ri),
1433 3, 14,
1434 15,
1435 OPC_CheckPredicate, 28,
1436 OPC_MoveSibling4,
1437 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1438 OPC_RecordNode,
1439 OPC_MoveParent,
1440 OPC_EmitMergeInputChains1_0,
1441 OPC_EmitConvertToTarget2,
1442 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLE_ri),
1443 3, 14,
1444 0,
1445 29|128,1,
1446 OPC_MoveChild3,
1447 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1448 OPC_CheckTypeI64,
1449 OPC_Scope, 14,
1450 OPC_CheckPredicate, 19,
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::JEQ_rr),
1457 3, 11,
1458 14,
1459 OPC_CheckPredicate, 20,
1460 OPC_MoveSibling4,
1461 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1462 OPC_RecordNode,
1463 OPC_MoveParent,
1464 OPC_EmitMergeInputChains1_0,
1465 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGT_rr),
1466 3, 11,
1467 14,
1468 OPC_CheckPredicate, 21,
1469 OPC_MoveSibling4,
1470 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1471 OPC_RecordNode,
1472 OPC_MoveParent,
1473 OPC_EmitMergeInputChains1_0,
1474 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGE_rr),
1475 3, 11,
1476 14,
1477 OPC_CheckPredicate, 22,
1478 OPC_MoveSibling4,
1479 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1480 OPC_RecordNode,
1481 OPC_MoveParent,
1482 OPC_EmitMergeInputChains1_0,
1483 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JNE_rr),
1484 3, 11,
1485 14,
1486 OPC_CheckPredicate, 23,
1487 OPC_MoveSibling4,
1488 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1489 OPC_RecordNode,
1490 OPC_MoveParent,
1491 OPC_EmitMergeInputChains1_0,
1492 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGT_rr),
1493 3, 11,
1494 14,
1495 OPC_CheckPredicate, 24,
1496 OPC_MoveSibling4,
1497 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1498 OPC_RecordNode,
1499 OPC_MoveParent,
1500 OPC_EmitMergeInputChains1_0,
1501 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGE_rr),
1502 3, 11,
1503 14,
1504 OPC_CheckPredicate, 25,
1505 OPC_MoveSibling4,
1506 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1507 OPC_RecordNode,
1508 OPC_MoveParent,
1509 OPC_EmitMergeInputChains1_0,
1510 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULT_rr),
1511 3, 11,
1512 14,
1513 OPC_CheckPredicate, 26,
1514 OPC_MoveSibling4,
1515 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1516 OPC_RecordNode,
1517 OPC_MoveParent,
1518 OPC_EmitMergeInputChains1_0,
1519 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULE_rr),
1520 3, 11,
1521 14,
1522 OPC_CheckPredicate, 27,
1523 OPC_MoveSibling4,
1524 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1525 OPC_RecordNode,
1526 OPC_MoveParent,
1527 OPC_EmitMergeInputChains1_0,
1528 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLT_rr),
1529 3, 11,
1530 14,
1531 OPC_CheckPredicate, 28,
1532 OPC_MoveSibling4,
1533 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1534 OPC_RecordNode,
1535 OPC_MoveParent,
1536 OPC_EmitMergeInputChains1_0,
1537 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLE_rr),
1538 3, 11,
1539 0,
1540 22,
1541 OPC_MoveChild2,
1542 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1543 OPC_CheckPredicate0,
1544 OPC_MoveSibling3,
1545 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
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::JSET_ri),
1553 3, 14,
1554 16,
1555 OPC_MoveChild3,
1556 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
1557 OPC_MoveSibling4,
1558 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1559 OPC_RecordNode,
1560 OPC_MoveParent,
1561 OPC_EmitMergeInputChains1_0,
1562 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSET_rr),
1563 3, 11,
1564 0,
1565 121|128,2,
1566 OPC_CheckChild1TypeI32,
1567 OPC_RecordChild2,
1568 OPC_Scope, 44|128,1,
1569 OPC_MoveChild2,
1570 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1571 OPC_CheckPredicate0,
1572 OPC_MoveSibling3,
1573 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1574 OPC_CheckTypeI32,
1575 OPC_Scope, 15,
1576 OPC_CheckPredicate, 19,
1577 OPC_MoveSibling4,
1578 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1579 OPC_RecordNode,
1580 OPC_MoveParent,
1581 OPC_EmitMergeInputChains1_0,
1582 OPC_EmitConvertToTarget2,
1583 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JEQ_ri_32),
1584 3, 14,
1585 15,
1586 OPC_CheckPredicate, 20,
1587 OPC_MoveSibling4,
1588 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1589 OPC_RecordNode,
1590 OPC_MoveParent,
1591 OPC_EmitMergeInputChains1_0,
1592 OPC_EmitConvertToTarget2,
1593 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGT_ri_32),
1594 3, 14,
1595 15,
1596 OPC_CheckPredicate, 21,
1597 OPC_MoveSibling4,
1598 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1599 OPC_RecordNode,
1600 OPC_MoveParent,
1601 OPC_EmitMergeInputChains1_0,
1602 OPC_EmitConvertToTarget2,
1603 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGE_ri_32),
1604 3, 14,
1605 15,
1606 OPC_CheckPredicate, 22,
1607 OPC_MoveSibling4,
1608 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1609 OPC_RecordNode,
1610 OPC_MoveParent,
1611 OPC_EmitMergeInputChains1_0,
1612 OPC_EmitConvertToTarget2,
1613 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JNE_ri_32),
1614 3, 14,
1615 15,
1616 OPC_CheckPredicate, 23,
1617 OPC_MoveSibling4,
1618 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1619 OPC_RecordNode,
1620 OPC_MoveParent,
1621 OPC_EmitMergeInputChains1_0,
1622 OPC_EmitConvertToTarget2,
1623 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGT_ri_32),
1624 3, 14,
1625 15,
1626 OPC_CheckPredicate, 24,
1627 OPC_MoveSibling4,
1628 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1629 OPC_RecordNode,
1630 OPC_MoveParent,
1631 OPC_EmitMergeInputChains1_0,
1632 OPC_EmitConvertToTarget2,
1633 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGE_ri_32),
1634 3, 14,
1635 15,
1636 OPC_CheckPredicate, 25,
1637 OPC_MoveSibling4,
1638 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1639 OPC_RecordNode,
1640 OPC_MoveParent,
1641 OPC_EmitMergeInputChains1_0,
1642 OPC_EmitConvertToTarget2,
1643 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULT_ri_32),
1644 3, 14,
1645 15,
1646 OPC_CheckPredicate, 26,
1647 OPC_MoveSibling4,
1648 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1649 OPC_RecordNode,
1650 OPC_MoveParent,
1651 OPC_EmitMergeInputChains1_0,
1652 OPC_EmitConvertToTarget2,
1653 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULE_ri_32),
1654 3, 14,
1655 15,
1656 OPC_CheckPredicate, 27,
1657 OPC_MoveSibling4,
1658 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1659 OPC_RecordNode,
1660 OPC_MoveParent,
1661 OPC_EmitMergeInputChains1_0,
1662 OPC_EmitConvertToTarget2,
1663 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLT_ri_32),
1664 3, 14,
1665 15,
1666 OPC_CheckPredicate, 28,
1667 OPC_MoveSibling4,
1668 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1669 OPC_RecordNode,
1670 OPC_MoveParent,
1671 OPC_EmitMergeInputChains1_0,
1672 OPC_EmitConvertToTarget2,
1673 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLE_ri_32),
1674 3, 14,
1675 0,
1676 29|128,1,
1677 OPC_MoveChild3,
1678 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1679 OPC_CheckTypeI32,
1680 OPC_Scope, 14,
1681 OPC_CheckPredicate, 19,
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::JEQ_rr_32),
1688 3, 11,
1689 14,
1690 OPC_CheckPredicate, 20,
1691 OPC_MoveSibling4,
1692 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1693 OPC_RecordNode,
1694 OPC_MoveParent,
1695 OPC_EmitMergeInputChains1_0,
1696 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGT_rr_32),
1697 3, 11,
1698 14,
1699 OPC_CheckPredicate, 21,
1700 OPC_MoveSibling4,
1701 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1702 OPC_RecordNode,
1703 OPC_MoveParent,
1704 OPC_EmitMergeInputChains1_0,
1705 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JUGE_rr_32),
1706 3, 11,
1707 14,
1708 OPC_CheckPredicate, 22,
1709 OPC_MoveSibling4,
1710 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1711 OPC_RecordNode,
1712 OPC_MoveParent,
1713 OPC_EmitMergeInputChains1_0,
1714 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JNE_rr_32),
1715 3, 11,
1716 14,
1717 OPC_CheckPredicate, 23,
1718 OPC_MoveSibling4,
1719 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1720 OPC_RecordNode,
1721 OPC_MoveParent,
1722 OPC_EmitMergeInputChains1_0,
1723 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGT_rr_32),
1724 3, 11,
1725 14,
1726 OPC_CheckPredicate, 24,
1727 OPC_MoveSibling4,
1728 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1729 OPC_RecordNode,
1730 OPC_MoveParent,
1731 OPC_EmitMergeInputChains1_0,
1732 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSGE_rr_32),
1733 3, 11,
1734 14,
1735 OPC_CheckPredicate, 25,
1736 OPC_MoveSibling4,
1737 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1738 OPC_RecordNode,
1739 OPC_MoveParent,
1740 OPC_EmitMergeInputChains1_0,
1741 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULT_rr_32),
1742 3, 11,
1743 14,
1744 OPC_CheckPredicate, 26,
1745 OPC_MoveSibling4,
1746 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1747 OPC_RecordNode,
1748 OPC_MoveParent,
1749 OPC_EmitMergeInputChains1_0,
1750 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JULE_rr_32),
1751 3, 11,
1752 14,
1753 OPC_CheckPredicate, 27,
1754 OPC_MoveSibling4,
1755 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1756 OPC_RecordNode,
1757 OPC_MoveParent,
1758 OPC_EmitMergeInputChains1_0,
1759 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLT_rr_32),
1760 3, 11,
1761 14,
1762 OPC_CheckPredicate, 28,
1763 OPC_MoveSibling4,
1764 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1765 OPC_RecordNode,
1766 OPC_MoveParent,
1767 OPC_EmitMergeInputChains1_0,
1768 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSLE_rr_32),
1769 3, 11,
1770 0,
1771 22,
1772 OPC_MoveChild2,
1773 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1774 OPC_CheckPredicate0,
1775 OPC_MoveSibling3,
1776 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
1777 OPC_MoveSibling4,
1778 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1779 OPC_RecordNode,
1780 OPC_MoveParent,
1781 OPC_EmitMergeInputChains1_0,
1782 OPC_EmitConvertToTarget2,
1783 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSET_ri_32),
1784 3, 14,
1785 16,
1786 OPC_MoveChild3,
1787 OPC_CheckOpcode, TARGET_VAL(ISD::VALUETYPE),
1788 OPC_MoveSibling4,
1789 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1790 OPC_RecordNode,
1791 OPC_MoveParent,
1792 OPC_EmitMergeInputChains1_0,
1793 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JSET_rr_32),
1794 3, 11,
1795 0,
1796 0,
1797 4|128,1, TARGET_VAL(ISD::SRL),
1798 OPC_Scope, 75,
1799 OPC_MoveChild0,
1800 OPC_CheckOpcode, TARGET_VAL(ISD::BSWAP),
1801 OPC_RecordChild0,
1802 OPC_MoveParent,
1803 OPC_CheckTypeI64,
1804 OPC_Scope, 32,
1805 OPC_CheckChild1Integer, 48,
1806 OPC_CheckChild1TypeI64,
1807 OPC_Scope, 8,
1808 OPC_CheckPatternPredicate, 8,
1809 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BSWAP16),
1810 MVT::i64, 1, 0,
1811 8,
1812 OPC_CheckPatternPredicate, 9,
1813 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BE16),
1814 MVT::i64, 1, 0,
1815 8,
1816 OPC_CheckPatternPredicate, 10,
1817 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LE16),
1818 MVT::i64, 1, 0,
1819 0,
1820 32,
1821 OPC_CheckChild1Integer, 32,
1822 OPC_CheckChild1TypeI64,
1823 OPC_Scope, 8,
1824 OPC_CheckPatternPredicate, 8,
1825 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BSWAP32),
1826 MVT::i64, 1, 0,
1827 8,
1828 OPC_CheckPatternPredicate, 9,
1829 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BE32),
1830 MVT::i64, 1, 0,
1831 8,
1832 OPC_CheckPatternPredicate, 10,
1833 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LE32),
1834 MVT::i64, 1, 0,
1835 0,
1836 0,
1837 53,
1838 OPC_RecordChild0,
1839 OPC_RecordChild1,
1840 OPC_Scope, 30,
1841 OPC_MoveChild1,
1842 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1843 OPC_SwitchType , 10, MVT::i64,
1844 OPC_CheckPredicate0,
1845 OPC_MoveParent,
1846 OPC_CheckTypeI64,
1847 OPC_EmitConvertToTarget1,
1848 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_ri),
1849 MVT::i64, 2, 4,
1850 10, MVT::i32,
1851 OPC_CheckPredicate0,
1852 OPC_MoveParent,
1853 OPC_CheckTypeI32,
1854 OPC_EmitConvertToTarget1,
1855 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_ri_32),
1856 MVT::i32, 2, 4,
1857 0,
1858 8,
1859 OPC_CheckChild1TypeI64,
1860 OPC_CheckTypeI64,
1861 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_rr),
1862 MVT::i64, 2, 1,
1863 8,
1864 OPC_CheckChild1TypeI32,
1865 OPC_CheckTypeI32,
1866 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_rr_32),
1867 MVT::i32, 2, 1,
1868 0,
1869 0,
1870 19|128,1, TARGET_VAL(BPFISD::SELECT_CC),
1871 OPC_RecordChild0,
1872 OPC_Scope, 71,
1873 OPC_CheckChild0TypeI64,
1874 OPC_RecordChild1,
1875 OPC_Scope, 36,
1876 OPC_MoveChild1,
1877 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1878 OPC_CheckPredicate0,
1879 OPC_MoveSibling2,
1880 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1881 OPC_RecordNode,
1882 OPC_CheckTypeI64,
1883 OPC_MoveParent,
1884 OPC_RecordChild3,
1885 OPC_RecordChild4,
1886 OPC_SwitchType , 8, MVT::i64,
1887 OPC_EmitConvertToTarget1,
1888 OPC_EmitConvertToTarget2,
1889 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_Ri),
1890 MVT::i64, 5, 28,
1891 8, MVT::i32,
1892 OPC_EmitConvertToTarget1,
1893 OPC_EmitConvertToTarget2,
1894 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_Ri_64_32),
1895 MVT::i32, 5, 28,
1896 0,
1897 29,
1898 OPC_RecordChild2,
1899 OPC_MoveChild2,
1900 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1901 OPC_CheckTypeI64,
1902 OPC_MoveParent,
1903 OPC_RecordChild3,
1904 OPC_RecordChild4,
1905 OPC_SwitchType , 7, MVT::i64,
1906 OPC_EmitConvertToTarget2,
1907 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select),
1908 MVT::i64, 5, 23,
1909 7, MVT::i32,
1910 OPC_EmitConvertToTarget2,
1911 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_64_32),
1912 MVT::i32, 5, 23,
1913 0,
1914 0,
1915 71,
1916 OPC_CheckChild0TypeI32,
1917 OPC_RecordChild1,
1918 OPC_Scope, 36,
1919 OPC_MoveChild1,
1920 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1921 OPC_CheckPredicate0,
1922 OPC_MoveSibling2,
1923 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1924 OPC_RecordNode,
1925 OPC_CheckTypeI32,
1926 OPC_MoveParent,
1927 OPC_RecordChild3,
1928 OPC_RecordChild4,
1929 OPC_SwitchType , 8, MVT::i32,
1930 OPC_EmitConvertToTarget1,
1931 OPC_EmitConvertToTarget2,
1932 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_Ri_32),
1933 MVT::i32, 5, 28,
1934 8, MVT::i64,
1935 OPC_EmitConvertToTarget1,
1936 OPC_EmitConvertToTarget2,
1937 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_Ri_32_64),
1938 MVT::i64, 5, 28,
1939 0,
1940 29,
1941 OPC_RecordChild2,
1942 OPC_MoveChild2,
1943 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1944 OPC_CheckTypeI32,
1945 OPC_MoveParent,
1946 OPC_RecordChild3,
1947 OPC_RecordChild4,
1948 OPC_SwitchType , 7, MVT::i32,
1949 OPC_EmitConvertToTarget2,
1950 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_32),
1951 MVT::i32, 5, 23,
1952 7, MVT::i64,
1953 OPC_EmitConvertToTarget2,
1954 OPC_MorphNodeTo1None, TARGET_VAL(BPF::Select_32_64),
1955 MVT::i64, 5, 23,
1956 0,
1957 0,
1958 0,
1959 63, TARGET_VAL(ISD::ADD),
1960 OPC_Scope, 10,
1961 OPC_RecordNode,
1962 OPC_CheckTypeI64,
1963 OPC_CheckComplexPat1, /*#*/0,
1964 OPC_MorphNodeTo1None, TARGET_VAL(BPF::FI_ri),
1965 MVT::i64, 2, 6,
1966 49,
1967 OPC_RecordChild0,
1968 OPC_RecordChild1,
1969 OPC_Scope, 28,
1970 OPC_MoveChild1,
1971 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1972 OPC_Scope, 10,
1973 OPC_CheckPredicate0,
1974 OPC_MoveParent,
1975 OPC_CheckTypeI64,
1976 OPC_EmitConvertToTarget1,
1977 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_ri),
1978 MVT::i64, 2, 4,
1979 10,
1980 OPC_CheckPredicate0,
1981 OPC_MoveParent,
1982 OPC_CheckTypeI32,
1983 OPC_EmitConvertToTarget1,
1984 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_ri_32),
1985 MVT::i32, 2, 4,
1986 0,
1987 7,
1988 OPC_CheckTypeI64,
1989 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_rr),
1990 MVT::i64, 2, 1,
1991 7,
1992 OPC_CheckTypeI32,
1993 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADD_rr_32),
1994 MVT::i32, 2, 1,
1995 0,
1996 0,
1997 63, TARGET_VAL(ISD::OR),
1998 OPC_Scope, 10,
1999 OPC_RecordNode,
2000 OPC_CheckTypeI64,
2001 OPC_CheckComplexPat1, /*#*/0,
2002 OPC_MorphNodeTo1None, TARGET_VAL(BPF::FI_ri),
2003 MVT::i64, 2, 6,
2004 49,
2005 OPC_RecordChild0,
2006 OPC_RecordChild1,
2007 OPC_Scope, 28,
2008 OPC_MoveChild1,
2009 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2010 OPC_Scope, 10,
2011 OPC_CheckPredicate0,
2012 OPC_MoveParent,
2013 OPC_CheckTypeI64,
2014 OPC_EmitConvertToTarget1,
2015 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_ri),
2016 MVT::i64, 2, 4,
2017 10,
2018 OPC_CheckPredicate0,
2019 OPC_MoveParent,
2020 OPC_CheckTypeI32,
2021 OPC_EmitConvertToTarget1,
2022 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_ri_32),
2023 MVT::i32, 2, 4,
2024 0,
2025 7,
2026 OPC_CheckTypeI64,
2027 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_rr),
2028 MVT::i64, 2, 1,
2029 7,
2030 OPC_CheckTypeI32,
2031 OPC_MorphNodeTo1None, TARGET_VAL(BPF::OR_rr_32),
2032 MVT::i32, 2, 1,
2033 0,
2034 0,
2035 20, TARGET_VAL(ISD::CALLSEQ_START),
2036 OPC_RecordNode,
2037 OPC_RecordChild1,
2038 OPC_MoveChild1,
2039 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
2040 OPC_MoveSibling2,
2041 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
2042 OPC_RecordNode,
2043 OPC_MoveParent,
2044 OPC_EmitMergeInputChains1_0,
2045 OPC_MorphNodeTo1, TARGET_VAL(BPF::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_GlueOutput,
2046 MVT::i64, 2, 6,
2047 21, TARGET_VAL(ISD::CALLSEQ_END),
2048 OPC_RecordNode,
2049 OPC_CaptureGlueInput,
2050 OPC_RecordChild1,
2051 OPC_MoveChild1,
2052 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
2053 OPC_MoveSibling2,
2054 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
2055 OPC_RecordNode,
2056 OPC_MoveParent,
2057 OPC_EmitMergeInputChains1_0,
2058 OPC_MorphNodeTo1, TARGET_VAL(BPF::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
2059 MVT::i64, 2, 6,
2060 22, TARGET_VAL(BPFISD::MEMCPY),
2061 OPC_RecordNode,
2062 OPC_RecordChild1,
2063 OPC_RecordChild2,
2064 OPC_RecordChild3,
2065 OPC_MoveChild3,
2066 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2067 OPC_MoveSibling4,
2068 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2069 OPC_RecordNode,
2070 OPC_MoveParent,
2071 OPC_EmitMergeInputChains1_0,
2072 OPC_EmitConvertToTarget3,
2073 OPC_EmitConvertToTarget4,
2074 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::MEMCPY),
2075 4, 38,
2076 74, TARGET_VAL(ISD::SUB),
2077 OPC_Scope, 21,
2078 OPC_CheckChild0Integer, 0,
2079 OPC_RecordChild1,
2080 OPC_SwitchType , 6, MVT::i64,
2081 OPC_MorphNodeTo1None, TARGET_VAL(BPF::NEG_64),
2082 MVT::i64, 1, 0,
2083 6, MVT::i32,
2084 OPC_MorphNodeTo1None, TARGET_VAL(BPF::NEG_32),
2085 MVT::i32, 1, 0,
2086 0,
2087 49,
2088 OPC_RecordChild0,
2089 OPC_RecordChild1,
2090 OPC_Scope, 28,
2091 OPC_MoveChild1,
2092 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2093 OPC_Scope, 10,
2094 OPC_CheckPredicate0,
2095 OPC_MoveParent,
2096 OPC_CheckTypeI64,
2097 OPC_EmitConvertToTarget1,
2098 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_ri),
2099 MVT::i64, 2, 4,
2100 10,
2101 OPC_CheckPredicate0,
2102 OPC_MoveParent,
2103 OPC_CheckTypeI32,
2104 OPC_EmitConvertToTarget1,
2105 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_ri_32),
2106 MVT::i32, 2, 4,
2107 0,
2108 7,
2109 OPC_CheckTypeI64,
2110 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_rr),
2111 MVT::i64, 2, 1,
2112 7,
2113 OPC_CheckTypeI32,
2114 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SUB_rr_32),
2115 MVT::i32, 2, 1,
2116 0,
2117 0,
2118 77, TARGET_VAL(ISD::AND),
2119 OPC_Scope, 24,
2120 OPC_CheckAndImm, 127|128,127|128,127|128,127|128,15,
2121 OPC_RecordChild0,
2122 OPC_CheckTypeI64,
2123 OPC_EmitIntegerI64, 32,
2124 OPC_EmitNode1None, TARGET_VAL(BPF::SLL_ri),
2125 MVT::i64, 2, 1,
2126 OPC_EmitIntegerI64, 32,
2127 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRL_ri),
2128 MVT::i64, 2, 12,
2129 49,
2130 OPC_RecordChild0,
2131 OPC_RecordChild1,
2132 OPC_Scope, 28,
2133 OPC_MoveChild1,
2134 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2135 OPC_Scope, 10,
2136 OPC_CheckPredicate0,
2137 OPC_MoveParent,
2138 OPC_CheckTypeI64,
2139 OPC_EmitConvertToTarget1,
2140 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_ri),
2141 MVT::i64, 2, 4,
2142 10,
2143 OPC_CheckPredicate0,
2144 OPC_MoveParent,
2145 OPC_CheckTypeI32,
2146 OPC_EmitConvertToTarget1,
2147 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_ri_32),
2148 MVT::i32, 2, 4,
2149 0,
2150 7,
2151 OPC_CheckTypeI64,
2152 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_rr),
2153 MVT::i64, 2, 1,
2154 7,
2155 OPC_CheckTypeI32,
2156 OPC_MorphNodeTo1None, TARGET_VAL(BPF::AND_rr_32),
2157 MVT::i32, 2, 1,
2158 0,
2159 0,
2160 53, TARGET_VAL(ISD::SHL),
2161 OPC_RecordChild0,
2162 OPC_RecordChild1,
2163 OPC_Scope, 30,
2164 OPC_MoveChild1,
2165 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2166 OPC_SwitchType , 10, MVT::i64,
2167 OPC_CheckPredicate0,
2168 OPC_MoveParent,
2169 OPC_CheckTypeI64,
2170 OPC_EmitConvertToTarget1,
2171 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_ri),
2172 MVT::i64, 2, 4,
2173 10, MVT::i32,
2174 OPC_CheckPredicate0,
2175 OPC_MoveParent,
2176 OPC_CheckTypeI32,
2177 OPC_EmitConvertToTarget1,
2178 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_ri_32),
2179 MVT::i32, 2, 4,
2180 0,
2181 8,
2182 OPC_CheckChild1TypeI64,
2183 OPC_CheckTypeI64,
2184 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_rr),
2185 MVT::i64, 2, 1,
2186 8,
2187 OPC_CheckChild1TypeI32,
2188 OPC_CheckTypeI32,
2189 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SLL_rr_32),
2190 MVT::i32, 2, 1,
2191 0,
2192 49, TARGET_VAL(ISD::XOR),
2193 OPC_RecordChild0,
2194 OPC_RecordChild1,
2195 OPC_Scope, 28,
2196 OPC_MoveChild1,
2197 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2198 OPC_Scope, 10,
2199 OPC_CheckPredicate0,
2200 OPC_MoveParent,
2201 OPC_CheckTypeI64,
2202 OPC_EmitConvertToTarget1,
2203 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_ri),
2204 MVT::i64, 2, 4,
2205 10,
2206 OPC_CheckPredicate0,
2207 OPC_MoveParent,
2208 OPC_CheckTypeI32,
2209 OPC_EmitConvertToTarget1,
2210 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_ri_32),
2211 MVT::i32, 2, 4,
2212 0,
2213 7,
2214 OPC_CheckTypeI64,
2215 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_rr),
2216 MVT::i64, 2, 1,
2217 7,
2218 OPC_CheckTypeI32,
2219 OPC_MorphNodeTo1None, TARGET_VAL(BPF::XOR_rr_32),
2220 MVT::i32, 2, 1,
2221 0,
2222 53, TARGET_VAL(ISD::SRA),
2223 OPC_RecordChild0,
2224 OPC_RecordChild1,
2225 OPC_Scope, 30,
2226 OPC_MoveChild1,
2227 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2228 OPC_SwitchType , 10, MVT::i64,
2229 OPC_CheckPredicate0,
2230 OPC_MoveParent,
2231 OPC_CheckTypeI64,
2232 OPC_EmitConvertToTarget1,
2233 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_ri),
2234 MVT::i64, 2, 4,
2235 10, MVT::i32,
2236 OPC_CheckPredicate0,
2237 OPC_MoveParent,
2238 OPC_CheckTypeI32,
2239 OPC_EmitConvertToTarget1,
2240 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_ri_32),
2241 MVT::i32, 2, 4,
2242 0,
2243 8,
2244 OPC_CheckChild1TypeI64,
2245 OPC_CheckTypeI64,
2246 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_rr),
2247 MVT::i64, 2, 1,
2248 8,
2249 OPC_CheckChild1TypeI32,
2250 OPC_CheckTypeI32,
2251 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_rr_32),
2252 MVT::i32, 2, 1,
2253 0,
2254 49, TARGET_VAL(ISD::MUL),
2255 OPC_RecordChild0,
2256 OPC_RecordChild1,
2257 OPC_Scope, 28,
2258 OPC_MoveChild1,
2259 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2260 OPC_Scope, 10,
2261 OPC_CheckPredicate0,
2262 OPC_MoveParent,
2263 OPC_CheckTypeI64,
2264 OPC_EmitConvertToTarget1,
2265 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_ri),
2266 MVT::i64, 2, 4,
2267 10,
2268 OPC_CheckPredicate0,
2269 OPC_MoveParent,
2270 OPC_CheckTypeI32,
2271 OPC_EmitConvertToTarget1,
2272 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_ri_32),
2273 MVT::i32, 2, 4,
2274 0,
2275 7,
2276 OPC_CheckTypeI64,
2277 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_rr),
2278 MVT::i64, 2, 1,
2279 7,
2280 OPC_CheckTypeI32,
2281 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MUL_rr_32),
2282 MVT::i32, 2, 1,
2283 0,
2284 49, TARGET_VAL(ISD::UDIV),
2285 OPC_RecordChild0,
2286 OPC_RecordChild1,
2287 OPC_Scope, 28,
2288 OPC_MoveChild1,
2289 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2290 OPC_Scope, 10,
2291 OPC_CheckPredicate0,
2292 OPC_MoveParent,
2293 OPC_CheckTypeI64,
2294 OPC_EmitConvertToTarget1,
2295 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_ri),
2296 MVT::i64, 2, 4,
2297 10,
2298 OPC_CheckPredicate0,
2299 OPC_MoveParent,
2300 OPC_CheckTypeI32,
2301 OPC_EmitConvertToTarget1,
2302 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_ri_32),
2303 MVT::i32, 2, 4,
2304 0,
2305 7,
2306 OPC_CheckTypeI64,
2307 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_rr),
2308 MVT::i64, 2, 1,
2309 7,
2310 OPC_CheckTypeI32,
2311 OPC_MorphNodeTo1None, TARGET_VAL(BPF::DIV_rr_32),
2312 MVT::i32, 2, 1,
2313 0,
2314 49, TARGET_VAL(ISD::UREM),
2315 OPC_RecordChild0,
2316 OPC_RecordChild1,
2317 OPC_Scope, 28,
2318 OPC_MoveChild1,
2319 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2320 OPC_Scope, 10,
2321 OPC_CheckPredicate0,
2322 OPC_MoveParent,
2323 OPC_CheckTypeI64,
2324 OPC_EmitConvertToTarget1,
2325 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_ri),
2326 MVT::i64, 2, 4,
2327 10,
2328 OPC_CheckPredicate0,
2329 OPC_MoveParent,
2330 OPC_CheckTypeI32,
2331 OPC_EmitConvertToTarget1,
2332 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_ri_32),
2333 MVT::i32, 2, 4,
2334 0,
2335 7,
2336 OPC_CheckTypeI64,
2337 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_rr),
2338 MVT::i64, 2, 1,
2339 7,
2340 OPC_CheckTypeI32,
2341 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOD_rr_32),
2342 MVT::i32, 2, 1,
2343 0,
2344 53, TARGET_VAL(ISD::SDIV),
2345 OPC_RecordChild0,
2346 OPC_RecordChild1,
2347 OPC_Scope, 30,
2348 OPC_MoveChild1,
2349 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2350 OPC_Scope, 11,
2351 OPC_CheckPredicate0,
2352 OPC_MoveParent,
2353 OPC_CheckTypeI64,
2354 OPC_CheckPatternPredicate3,
2355 OPC_EmitConvertToTarget1,
2356 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_ri),
2357 MVT::i64, 2, 4,
2358 11,
2359 OPC_CheckPredicate0,
2360 OPC_MoveParent,
2361 OPC_CheckTypeI32,
2362 OPC_CheckPatternPredicate3,
2363 OPC_EmitConvertToTarget1,
2364 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_ri_32),
2365 MVT::i32, 2, 4,
2366 0,
2367 8,
2368 OPC_CheckTypeI64,
2369 OPC_CheckPatternPredicate3,
2370 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_rr),
2371 MVT::i64, 2, 1,
2372 8,
2373 OPC_CheckTypeI32,
2374 OPC_CheckPatternPredicate3,
2375 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SDIV_rr_32),
2376 MVT::i32, 2, 1,
2377 0,
2378 53, TARGET_VAL(ISD::SREM),
2379 OPC_RecordChild0,
2380 OPC_RecordChild1,
2381 OPC_Scope, 30,
2382 OPC_MoveChild1,
2383 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2384 OPC_Scope, 11,
2385 OPC_CheckPredicate0,
2386 OPC_MoveParent,
2387 OPC_CheckTypeI64,
2388 OPC_CheckPatternPredicate3,
2389 OPC_EmitConvertToTarget1,
2390 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_ri),
2391 MVT::i64, 2, 4,
2392 11,
2393 OPC_CheckPredicate0,
2394 OPC_MoveParent,
2395 OPC_CheckTypeI32,
2396 OPC_CheckPatternPredicate3,
2397 OPC_EmitConvertToTarget1,
2398 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_ri_32),
2399 MVT::i32, 2, 4,
2400 0,
2401 8,
2402 OPC_CheckTypeI64,
2403 OPC_CheckPatternPredicate3,
2404 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_rr),
2405 MVT::i64, 2, 1,
2406 8,
2407 OPC_CheckTypeI32,
2408 OPC_CheckPatternPredicate3,
2409 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SMOD_rr_32),
2410 MVT::i32, 2, 1,
2411 0,
2412 26, TARGET_VAL(BPFISD::Wrapper),
2413 OPC_RecordChild0,
2414 OPC_MoveChild0,
2415 OPC_SwitchOpcode , 8, TARGET_VAL(ISD::TargetConstantPool),
2416 OPC_MoveParent,
2417 OPC_CheckTypeI64,
2418 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LD_imm64),
2419 MVT::i64, 1, 0,
2420 8, TARGET_VAL(ISD::TargetJumpTable),
2421 OPC_MoveParent,
2422 OPC_CheckTypeI64,
2423 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LD_imm64),
2424 MVT::i64, 1, 0,
2425 0,
2426 52, TARGET_VAL(BPFISD::CALL),
2427 OPC_RecordNode,
2428 OPC_CaptureGlueInput,
2429 OPC_RecordChild1,
2430 OPC_Scope, 37,
2431 OPC_MoveChild1,
2432 OPC_SwitchOpcode , 8, TARGET_VAL(ISD::TargetGlobalAddress),
2433 OPC_MoveParent,
2434 OPC_EmitMergeInputChains1_0,
2435 OPC_MorphNodeTo0, TARGET_VAL(BPF::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
2436 1, 2,
2437 8, TARGET_VAL(ISD::TargetExternalSymbol),
2438 OPC_MoveParent,
2439 OPC_EmitMergeInputChains1_0,
2440 OPC_MorphNodeTo0, TARGET_VAL(BPF::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
2441 1, 2,
2442 9, TARGET_VAL(ISD::Constant),
2443 OPC_MoveParent,
2444 OPC_EmitMergeInputChains1_0,
2445 OPC_EmitConvertToTarget1,
2446 OPC_MorphNodeTo0, TARGET_VAL(BPF::JAL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
2447 1, 5,
2448 0,
2449 8,
2450 OPC_CheckChild1TypeI64,
2451 OPC_EmitMergeInputChains1_0,
2452 OPC_MorphNodeTo0, TARGET_VAL(BPF::JALX), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
2453 1, 2,
2454 0,
2455 34, TARGET_VAL(ISD::Constant),
2456 OPC_RecordNode,
2457 OPC_SwitchType , 19, MVT::i64,
2458 OPC_Scope, 8,
2459 OPC_CheckPredicate0,
2460 OPC_EmitConvertToTarget0,
2461 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOV_ri),
2462 MVT::i64, 1, 2,
2463 7,
2464 OPC_EmitConvertToTarget0,
2465 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LD_imm64),
2466 MVT::i64, 1, 2,
2467 0,
2468 8, MVT::i32,
2469 OPC_CheckPredicate0,
2470 OPC_EmitConvertToTarget0,
2471 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOV_ri_32),
2472 MVT::i32, 1, 2,
2473 0,
2474 11, TARGET_VAL(ISD::BRIND),
2475 OPC_RecordNode,
2476 OPC_RecordChild1,
2477 OPC_CheckChild1TypeI64,
2478 OPC_CheckPatternPredicate, 11,
2479 OPC_EmitMergeInputChains1_0,
2480 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JX),
2481 1, 2,
2482 63, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
2483 OPC_RecordChild0,
2484 OPC_MoveChild1,
2485 OPC_Scope, 23,
2486 OPC_CheckValueType, MVT::i8,
2487 OPC_MoveParent,
2488 OPC_SwitchType , 7, MVT::i64,
2489 OPC_CheckPatternPredicate4,
2490 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_8),
2491 MVT::i64, 1, 0,
2492 7, MVT::i32,
2493 OPC_CheckPatternPredicate4,
2494 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32_8),
2495 MVT::i32, 1, 0,
2496 0,
2497 23,
2498 OPC_CheckValueType, MVT::i16,
2499 OPC_MoveParent,
2500 OPC_SwitchType , 7, MVT::i64,
2501 OPC_CheckPatternPredicate4,
2502 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_16),
2503 MVT::i64, 1, 0,
2504 7, MVT::i32,
2505 OPC_CheckPatternPredicate4,
2506 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32_16),
2507 MVT::i32, 1, 0,
2508 0,
2509 10,
2510 OPC_CheckValueType, MVT::i32,
2511 OPC_MoveParent,
2512 OPC_CheckPatternPredicate4,
2513 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32),
2514 MVT::i64, 1, 0,
2515 0,
2516 16, TARGET_VAL(ISD::ADDRSPACECAST),
2517 OPC_RecordNode,
2518 OPC_RecordChild0,
2519 OPC_CheckChild0TypeI64,
2520 OPC_CheckTypeI64,
2521 OPC_EmitNodeXForm, 1, 0,
2522 OPC_EmitNodeXForm, 2, 0,
2523 OPC_MorphNodeTo1None, TARGET_VAL(BPF::ADDR_SPACE_CAST),
2524 MVT::i64, 3, 11,
2525 13, TARGET_VAL(ISD::BR),
2526 OPC_RecordNode,
2527 OPC_RecordChild1,
2528 OPC_MoveChild1,
2529 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2530 OPC_MoveParent,
2531 OPC_EmitMergeInputChains1_0,
2532 OPC_MorphNodeTo0Chain, TARGET_VAL(BPF::JMP),
2533 1, 2,
2534 8, TARGET_VAL(BPFISD::RET_GLUE),
2535 OPC_RecordNode,
2536 OPC_CaptureGlueInput,
2537 OPC_EmitMergeInputChains1_0,
2538 OPC_MorphNodeTo0, TARGET_VAL(BPF::RET), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
2539 0,
2540 31, TARGET_VAL(ISD::BSWAP),
2541 OPC_RecordChild0,
2542 OPC_CheckTypeI64,
2543 OPC_Scope, 8,
2544 OPC_CheckPatternPredicate, 8,
2545 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BSWAP64),
2546 MVT::i64, 1, 0,
2547 8,
2548 OPC_CheckPatternPredicate, 9,
2549 OPC_MorphNodeTo1None, TARGET_VAL(BPF::BE64),
2550 MVT::i64, 1, 0,
2551 8,
2552 OPC_CheckPatternPredicate, 10,
2553 OPC_MorphNodeTo1None, TARGET_VAL(BPF::LE64),
2554 MVT::i64, 1, 0,
2555 0,
2556 7, TARGET_VAL(ISD::ZERO_EXTEND),
2557 OPC_RecordChild0,
2558 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOV_32_64),
2559 MVT::i64, 1, 0,
2560 9, TARGET_VAL(ISD::TRUNCATE),
2561 OPC_RecordChild0,
2562 OPC_EmitIntegerI32, BPF::sub_32,
2563 OPC_MorphNodeTo1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
2564 MVT::i32, 2, 1,
2565 42, TARGET_VAL(ISD::SIGN_EXTEND),
2566 OPC_RecordChild0,
2567 OPC_Scope, 13,
2568 OPC_CheckPatternPredicate4,
2569 OPC_EmitNode1None, TARGET_VAL(BPF::MOV_32_64),
2570 MVT::i64, 1, 0,
2571 OPC_MorphNodeTo1None, TARGET_VAL(BPF::MOVSX_rr_32),
2572 MVT::i64, 1, 2,
2573 24,
2574 OPC_CheckPatternPredicate, 12,
2575 OPC_EmitNode1None, TARGET_VAL(BPF::MOV_32_64),
2576 MVT::i64, 1, 0,
2577 OPC_EmitIntegerI64, 32,
2578 OPC_EmitNode1None, TARGET_VAL(BPF::SLL_ri),
2579 MVT::i64, 2, 6,
2580 OPC_EmitIntegerI64, 32,
2581 OPC_MorphNodeTo1None, TARGET_VAL(BPF::SRA_ri),
2582 MVT::i64, 2, 21,
2583 0,
2584 14, TARGET_VAL(ISD::ANY_EXTEND),
2585 OPC_RecordChild0,
2586 OPC_EmitNode1None, TARGET_VAL(TargetOpcode::IMPLICIT_DEF),
2587 MVT::i64, 0,
2588 OPC_EmitIntegerI32, BPF::sub_32,
2589 OPC_MorphNodeTo1None, TARGET_VAL(TargetOpcode::INSERT_SUBREG),
2590 MVT::i64, 3, 3,
2591 0,
2592 }; // Total Array size is 4598 bytes
2593
2594 static const uint8_t OperandLists[] = {
2595 /* 0 */ 0,
2596 /* 1 */ 0, 1,
2597 /* 3 */ 1, 0, 2,
2598 /* 6 */ 1, 2,
2599 /* 8 */ 3, 4, 2,
2600 /* 11 */ 1, 2, 3,
2601 /* 14 */ 1, 4, 3,
2602 /* 17 */ 4, 5, 3,
2603 /* 20 */ 1, 3, 4,
2604 /* 23 */ 0, 1, 5, 3, 4,
2605 /* 28 */ 0, 5, 6, 3, 4,
2606 /* 33 */ 1, 5,
2607 /* 35 */ 3, 4, 5,
2608 /* 38 */ 1, 2, 5, 6,
2609 };
2610
2611 #undef COVERAGE_IDX_VAL
2612 #undef TARGET_VAL
2613 SelectCodeCommon(NodeToMatch: N, MatcherTable, TableSize: sizeof(MatcherTable),
2614 OperandLists);
2615}
2616#endif // GET_DAGISEL_BODY
2617
2618#ifdef GET_DAGISEL_DECL
2619bool CheckPatternPredicate(unsigned PredNo) const override;
2620#endif
2621#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2622bool DAGISEL_CLASS_COLONCOLON CheckPatternPredicate(unsigned PredNo) const
2623#if DAGISEL_INLINE
2624 override
2625#endif
2626{
2627 switch (PredNo) {
2628 default: llvm_unreachable("Invalid predicate in table?");
2629 case 0: return (Subtarget->getHasAlu32());
2630 case 1: return (Subtarget->hasLoadAcqStoreRel());
2631 case 2: return (!Subtarget->getHasAlu32());
2632 case 3: return (Subtarget->hasSdivSmod());
2633 case 4: return (Subtarget->hasMovsx());
2634 case 5: return (Subtarget->hasLdsx());
2635 case 6: return (Subtarget->hasStoreImm());
2636 case 7: return (Subtarget->getHasAlu32()) && (Subtarget->hasStoreImm());
2637 case 8: return (Subtarget->hasBswap());
2638 case 9: return (Subtarget->isLittleEndian());
2639 case 10: return (!Subtarget->isLittleEndian());
2640 case 11: return (Subtarget->hasGotox());
2641 case 12: return (!Subtarget->hasMovsx());
2642 }
2643}
2644#endif // GET_DAGISEL_BODY
2645
2646#ifdef GET_DAGISEL_DECL
2647bool CheckNodePredicate(SDValue Op, unsigned PredNo) const override;
2648#endif
2649#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2650bool DAGISEL_CLASS_COLONCOLON CheckNodePredicate(SDValue Op, unsigned PredNo) const
2651#if DAGISEL_INLINE
2652 override
2653#endif
2654{
2655 switch (PredNo) {
2656 default: llvm_unreachable("Invalid predicate in table?");
2657 case 0: {
2658 // Predicate_i32immSExt32
2659 // Predicate_i64immSExt32
2660 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2661 (void)N;
2662return isInt<32>(x: N->getSExtValue());
2663 }
2664 case 1: {
2665 // Predicate_atomic_cmp_swap_i32
2666 // Predicate_atomic_load_add_i32
2667 // Predicate_atomic_load_and_i32
2668 // Predicate_atomic_load_nonext_32
2669 // Predicate_atomic_load_or_i32
2670 // Predicate_atomic_load_sub_i32
2671 // Predicate_atomic_load_xor_i32
2672 // Predicate_atomic_store_32
2673 // Predicate_atomic_swap_i32
2674 // Predicate_extloadi32
2675 // Predicate_sextloadi32
2676 // Predicate_truncstorei32
2677 // Predicate_zextloadi32
2678 SDNode *N = Op.getNode();
2679 (void)N;
2680if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i32) return false;
2681return true;
2682
2683 }
2684 case 2: {
2685 // Predicate_atomic_load_aext_16
2686 // Predicate_atomic_load_zext_16
2687 // Predicate_atomic_store_16
2688 // Predicate_extloadi16
2689 // Predicate_sextloadi16
2690 // Predicate_truncstorei16
2691 // Predicate_zextloadi16
2692 SDNode *N = Op.getNode();
2693 (void)N;
2694if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i16) return false;
2695return true;
2696
2697 }
2698 case 3: {
2699 // Predicate_atomic_load_aext_8
2700 // Predicate_atomic_load_zext_8
2701 // Predicate_atomic_store_8
2702 // Predicate_extloadi8
2703 // Predicate_sextloadi8
2704 // Predicate_truncstorei8
2705 // Predicate_zextloadi8
2706 SDNode *N = Op.getNode();
2707 (void)N;
2708if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i8) return false;
2709return true;
2710
2711 }
2712 case 4: {
2713 // Predicate_anonymous_14722
2714 // Predicate_anonymous_14819
2715 // Predicate_anonymous_14820
2716 // Predicate_anonymous_14821
2717 // Predicate_atomic_load_add_i32_acquire
2718 // Predicate_atomic_load_add_i64_acquire
2719 // Predicate_atomic_load_and_i32_acquire
2720 // Predicate_atomic_load_and_i64_acquire
2721 // Predicate_atomic_load_or_i32_acquire
2722 // Predicate_atomic_load_or_i64_acquire
2723 // Predicate_atomic_load_sub_i32_acquire
2724 // Predicate_atomic_load_sub_i64_acquire
2725 // Predicate_atomic_load_xor_i32_acquire
2726 // Predicate_atomic_load_xor_i64_acquire
2727 SDNode *N = Op.getNode();
2728 (void)N;
2729if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::Acquire) return false;
2730return true;
2731
2732 }
2733 case 5: {
2734 // Predicate_anonymous_14718
2735 // Predicate_anonymous_14831
2736 // Predicate_anonymous_14832
2737 // Predicate_anonymous_14833
2738 // Predicate_atomic_load_add_i32_release
2739 // Predicate_atomic_load_add_i64_release
2740 // Predicate_atomic_load_and_i32_release
2741 // Predicate_atomic_load_and_i64_release
2742 // Predicate_atomic_load_or_i32_release
2743 // Predicate_atomic_load_or_i64_release
2744 // Predicate_atomic_load_sub_i32_release
2745 // Predicate_atomic_load_sub_i64_release
2746 // Predicate_atomic_load_xor_i32_release
2747 // Predicate_atomic_load_xor_i64_release
2748 SDNode *N = Op.getNode();
2749 (void)N;
2750if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::Release) return false;
2751return true;
2752
2753 }
2754 case 6: {
2755 // Predicate_atomic_load_add_i32_monotonic
2756 // Predicate_atomic_load_add_i64_monotonic
2757 // Predicate_atomic_load_and_i32_monotonic
2758 // Predicate_atomic_load_and_i64_monotonic
2759 // Predicate_atomic_load_or_i32_monotonic
2760 // Predicate_atomic_load_or_i64_monotonic
2761 // Predicate_atomic_load_sub_i32_monotonic
2762 // Predicate_atomic_load_sub_i64_monotonic
2763 // Predicate_atomic_load_xor_i32_monotonic
2764 // Predicate_atomic_load_xor_i64_monotonic
2765 SDNode *N = Op.getNode();
2766 (void)N;
2767if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::Monotonic) return false;
2768return true;
2769
2770 }
2771 case 7: {
2772 // Predicate_atomic_load_add_i32_monotonic_nu
2773 // Predicate_atomic_load_add_i64_monotonic_nu
2774 // Predicate_atomic_load_and_i32_monotonic_nu
2775 // Predicate_atomic_load_and_i64_monotonic_nu
2776 // Predicate_atomic_load_or_i32_monotonic_nu
2777 // Predicate_atomic_load_or_i64_monotonic_nu
2778 // Predicate_atomic_load_sub_i32_monotonic_nu
2779 // Predicate_atomic_load_sub_i64_monotonic_nu
2780 // Predicate_atomic_load_xor_i32_monotonic_nu
2781 // Predicate_atomic_load_xor_i64_monotonic_nu
2782 SDNode *N = Op.getNode();
2783 (void)N;
2784 return SDValue(N, 0).use_empty();
2785 }
2786 case 8: {
2787 // Predicate_atomic_load_add_i32_monotonic_hu
2788 // Predicate_atomic_load_add_i64_monotonic_hu
2789 // Predicate_atomic_load_and_i32_monotonic_hu
2790 // Predicate_atomic_load_and_i64_monotonic_hu
2791 // Predicate_atomic_load_or_i32_monotonic_hu
2792 // Predicate_atomic_load_or_i64_monotonic_hu
2793 // Predicate_atomic_load_sub_i32_monotonic_hu
2794 // Predicate_atomic_load_sub_i64_monotonic_hu
2795 // Predicate_atomic_load_xor_i32_monotonic_hu
2796 // Predicate_atomic_load_xor_i64_monotonic_hu
2797 SDNode *N = Op.getNode();
2798 (void)N;
2799 return !SDValue(N, 0).use_empty();
2800 }
2801 case 9: {
2802 // Predicate_atomic_load_add_i32_acq_rel
2803 // Predicate_atomic_load_add_i64_acq_rel
2804 // Predicate_atomic_load_and_i32_acq_rel
2805 // Predicate_atomic_load_and_i64_acq_rel
2806 // Predicate_atomic_load_or_i32_acq_rel
2807 // Predicate_atomic_load_or_i64_acq_rel
2808 // Predicate_atomic_load_sub_i32_acq_rel
2809 // Predicate_atomic_load_sub_i64_acq_rel
2810 // Predicate_atomic_load_xor_i32_acq_rel
2811 // Predicate_atomic_load_xor_i64_acq_rel
2812 SDNode *N = Op.getNode();
2813 (void)N;
2814if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::AcquireRelease) return false;
2815return true;
2816
2817 }
2818 case 10: {
2819 // Predicate_atomic_load_add_i32_seq_cst
2820 // Predicate_atomic_load_add_i64_seq_cst
2821 // Predicate_atomic_load_and_i32_seq_cst
2822 // Predicate_atomic_load_and_i64_seq_cst
2823 // Predicate_atomic_load_or_i32_seq_cst
2824 // Predicate_atomic_load_or_i64_seq_cst
2825 // Predicate_atomic_load_sub_i32_seq_cst
2826 // Predicate_atomic_load_sub_i64_seq_cst
2827 // Predicate_atomic_load_xor_i32_seq_cst
2828 // Predicate_atomic_load_xor_i64_seq_cst
2829 SDNode *N = Op.getNode();
2830 (void)N;
2831if (cast<AtomicSDNode>(Val: N)->getMergedOrdering() != AtomicOrdering::SequentiallyConsistent) return false;
2832return true;
2833
2834 }
2835 case 11: {
2836 // Predicate_atomic_cmp_swap_i64
2837 // Predicate_atomic_load_add_i64
2838 // Predicate_atomic_load_and_i64
2839 // Predicate_atomic_load_nonext_64
2840 // Predicate_atomic_load_or_i64
2841 // Predicate_atomic_load_sub_i64
2842 // Predicate_atomic_load_xor_i64
2843 // Predicate_atomic_store_64
2844 // Predicate_atomic_swap_i64
2845 SDNode *N = Op.getNode();
2846 (void)N;
2847if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i64) return false;
2848return true;
2849
2850 }
2851 case 12: {
2852 // Predicate_anonymous_14721
2853 // Predicate_anonymous_14816
2854 // Predicate_anonymous_14817
2855 // Predicate_anonymous_14818
2856 SDNode *N = Op.getNode();
2857 (void)N;
2858if (isAcquireOrStronger(AO: cast<AtomicSDNode>(Val: N)->getMergedOrdering())) return false;
2859return true;
2860
2861 }
2862 case 13: {
2863 // Predicate_unindexedstore
2864 SDNode *N = Op.getNode();
2865 (void)N;
2866if (cast<StoreSDNode>(Val: N)->getAddressingMode() != ISD::UNINDEXED) return false;
2867return true;
2868
2869 }
2870 case 14: {
2871 // Predicate_truncstore
2872 SDNode *N = Op.getNode();
2873 (void)N;
2874 if (!cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
2875return true;
2876
2877 }
2878 case 15: {
2879 // Predicate_store
2880 SDNode *N = Op.getNode();
2881 (void)N;
2882 if (cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
2883return true;
2884
2885 }
2886 case 16: {
2887 // Predicate_anonymous_14717
2888 // Predicate_anonymous_14828
2889 // Predicate_anonymous_14829
2890 // Predicate_anonymous_14830
2891 SDNode *N = Op.getNode();
2892 (void)N;
2893if (isReleaseOrStronger(AO: cast<AtomicSDNode>(Val: N)->getMergedOrdering())) return false;
2894return true;
2895
2896 }
2897 case 17: {
2898 // Predicate_atomic_load_aext
2899 SDNode *N = Op.getNode();
2900 (void)N;
2901if (cast<AtomicSDNode>(Val: N)->getExtensionType() != ISD::EXTLOAD) return false;
2902return true;
2903
2904 }
2905 case 18: {
2906 // Predicate_atomic_load_zext
2907 SDNode *N = Op.getNode();
2908 (void)N;
2909if (cast<AtomicSDNode>(Val: N)->getExtensionType() != ISD::ZEXTLOAD) return false;
2910return true;
2911
2912 }
2913 case 19: {
2914 // Predicate_BPF_CC_EQ
2915 // Predicate_BPF_CC_EQ_32
2916 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2917 (void)N;
2918return (N->getZExtValue() == ISD::SETEQ);
2919 }
2920 case 20: {
2921 // Predicate_BPF_CC_GTU
2922 // Predicate_BPF_CC_GTU_32
2923 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2924 (void)N;
2925return (N->getZExtValue() == ISD::SETUGT);
2926 }
2927 case 21: {
2928 // Predicate_BPF_CC_GEU
2929 // Predicate_BPF_CC_GEU_32
2930 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2931 (void)N;
2932return (N->getZExtValue() == ISD::SETUGE);
2933 }
2934 case 22: {
2935 // Predicate_BPF_CC_NE
2936 // Predicate_BPF_CC_NE_32
2937 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2938 (void)N;
2939return (N->getZExtValue() == ISD::SETNE);
2940 }
2941 case 23: {
2942 // Predicate_BPF_CC_GT
2943 // Predicate_BPF_CC_GT_32
2944 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2945 (void)N;
2946return (N->getZExtValue() == ISD::SETGT);
2947 }
2948 case 24: {
2949 // Predicate_BPF_CC_GE
2950 // Predicate_BPF_CC_GE_32
2951 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2952 (void)N;
2953return (N->getZExtValue() == ISD::SETGE);
2954 }
2955 case 25: {
2956 // Predicate_BPF_CC_LTU
2957 // Predicate_BPF_CC_LTU_32
2958 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2959 (void)N;
2960return (N->getZExtValue() == ISD::SETULT);
2961 }
2962 case 26: {
2963 // Predicate_BPF_CC_LEU
2964 // Predicate_BPF_CC_LEU_32
2965 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2966 (void)N;
2967return (N->getZExtValue() == ISD::SETULE);
2968 }
2969 case 27: {
2970 // Predicate_BPF_CC_LT
2971 // Predicate_BPF_CC_LT_32
2972 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2973 (void)N;
2974return (N->getZExtValue() == ISD::SETLT);
2975 }
2976 case 28: {
2977 // Predicate_BPF_CC_LE
2978 // Predicate_BPF_CC_LE_32
2979 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
2980 (void)N;
2981return (N->getZExtValue() == ISD::SETLE);
2982 }
2983 case 29: {
2984 // Predicate_zextload
2985 SDNode *N = Op.getNode();
2986 (void)N;
2987if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::ZEXTLOAD) return false;
2988return true;
2989
2990 }
2991 case 30: {
2992 // Predicate_extload
2993 SDNode *N = Op.getNode();
2994 (void)N;
2995if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::EXTLOAD) return false;
2996return true;
2997
2998 }
2999 case 31: {
3000 // Predicate_sextload
3001 SDNode *N = Op.getNode();
3002 (void)N;
3003if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::SEXTLOAD) return false;
3004return true;
3005
3006 }
3007 case 32: {
3008 // Predicate_load
3009 SDNode *N = Op.getNode();
3010 (void)N;
3011if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
3012return true;
3013
3014 }
3015 case 33: {
3016 // Predicate_atomic_load_nonext
3017 SDNode *N = Op.getNode();
3018 (void)N;
3019if (cast<AtomicSDNode>(Val: N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
3020return true;
3021
3022 }
3023 case 34: {
3024 // Predicate_i64immZExt32
3025 auto *N = cast<ConstantSDNode>(Val: Op.getNode());
3026 (void)N;
3027return isUInt<32>(x: N->getZExtValue());
3028 }
3029 case 35: {
3030 // Predicate_unindexedload
3031 SDNode *N = Op.getNode();
3032 (void)N;
3033if (cast<LoadSDNode>(Val: N)->getAddressingMode() != ISD::UNINDEXED) return false;
3034return true;
3035
3036 }
3037 }
3038}
3039#endif // GET_DAGISEL_BODY
3040
3041#ifdef GET_DAGISEL_DECL
3042bool CheckComplexPattern(SDNode *Root, SDNode *Parent,
3043 SDValue N, unsigned PatternNo,
3044 SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result) override;
3045#endif
3046#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
3047bool DAGISEL_CLASS_COLONCOLON CheckComplexPattern(SDNode *Root, SDNode *Parent,
3048 SDValue N, unsigned PatternNo,
3049 SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result)
3050#if DAGISEL_INLINE
3051 override
3052#endif
3053{
3054 unsigned NextRes = Result.size();
3055 switch (PatternNo) {
3056 default: llvm_unreachable("Invalid pattern # in table?");
3057 case 0:
3058 Result.resize(N: NextRes+2);
3059 return SelectAddr(Addr: N, Base&: Result[NextRes+0].first, Offset&: Result[NextRes+1].first);
3060 case 1:
3061 Result.resize(N: NextRes+2);
3062 return SelectFIAddr(Addr: N, Base&: Result[NextRes+0].first, Offset&: Result[NextRes+1].first);
3063 }
3064}
3065#endif // GET_DAGISEL_BODY
3066
3067#ifdef GET_DAGISEL_DECL
3068SDValue RunSDNodeXForm(SDValue V, unsigned XFormNo) override;
3069#endif
3070#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
3071SDValue DAGISEL_CLASS_COLONCOLON RunSDNodeXForm(SDValue V, unsigned XFormNo)
3072#if DAGISEL_INLINE
3073 override
3074#endif
3075{
3076 switch (XFormNo) {
3077 default: llvm_unreachable("Invalid xform # in table?");
3078 case 0: {
3079 ConstantSDNode *N = cast<ConstantSDNode>(Val: V.getNode());
3080
3081 return CurDAG->getTargetConstant(Val: N->getZExtValue(), DL: SDLoc(N), VT: MVT::i64);
3082
3083 }
3084 case 1: {
3085 SDNode *N = V.getNode();
3086
3087 return CurDAG->getTargetConstant(
3088 Val: cast<AddrSpaceCastSDNode>(Val: N)->getDestAddressSpace(),
3089 DL: SDLoc(N), VT: MVT::i64);
3090
3091 }
3092 case 2: {
3093 SDNode *N = V.getNode();
3094
3095 return CurDAG->getTargetConstant(
3096 Val: cast<AddrSpaceCastSDNode>(Val: N)->getSrcAddressSpace(),
3097 DL: SDLoc(N), VT: MVT::i64);
3098
3099 }
3100 }
3101}
3102#endif // GET_DAGISEL_BODY
3103
3104
3105#ifdef DAGISEL_INLINE
3106#undef DAGISEL_INLINE
3107#endif
3108#ifdef DAGISEL_CLASS_COLONCOLON
3109#undef DAGISEL_CLASS_COLONCOLON
3110#endif
3111#ifdef GET_DAGISEL_DECL
3112#undef GET_DAGISEL_DECL
3113#endif
3114#ifdef GET_DAGISEL_BODY
3115#undef GET_DAGISEL_BODY
3116#endif
3117