Coverage Report

Created: 2024-01-17 10:31

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