Coverage Report

Created: 2024-01-17 10:31

/src/build/lib/Target/AVR/AVRGenDAGISel.inc
Line
Count
Source (jump to first uncovered line)
1
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
|*                                                                            *|
3
|* DAG Instruction Selector for the AVR 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
0
{
53
  // Some target values are emitted as 2 bytes, TARGET_VAL handles
54
  // this.
55
0
  #define TARGET_VAL(X) X & 255, unsigned(X) >> 8
56
0
  static const unsigned char MatcherTable[] = {
57
0
 OPC_SwitchOpcode , 85|128,3, TARGET_VAL(ISD::STORE),
58
0
  OPC_RecordMemRef,
59
0
  OPC_RecordNode,
60
0
  OPC_Scope, 111, 
61
0
   OPC_MoveChild1,
62
0
   OPC_SwitchOpcode , 51, TARGET_VAL(ISD::OR),
63
0
    OPC_MoveChild0,
64
0
    OPC_CheckOpcode, TARGET_VAL(ISD::LOAD),
65
0
    OPC_RecordMemRef,
66
0
    OPC_RecordNode,
67
0
    OPC_CheckFoldableChainNode,
68
0
    OPC_RecordChild1,
69
0
    OPC_MoveChild1,
70
0
    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
71
0
    OPC_CheckPredicate, 11,
72
0
    OPC_MoveParent,
73
0
    OPC_CheckPredicate3, 
74
0
    OPC_CheckPredicate2, 
75
0
    OPC_MoveSibling1,
76
0
    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
77
0
    OPC_RecordNode,
78
0
    OPC_CheckPredicate, 12,
79
0
    OPC_MoveParent,
80
0
    OPC_CheckType, MVT::i8,
81
0
    OPC_MoveParent,
82
0
    OPC_CheckChild2Same, 2,
83
0
    OPC_CheckPredicate1, 
84
0
    OPC_CheckPredicate0, 
85
0
    OPC_EmitMergeInputChains, 2, 0, 1, 
86
0
    OPC_EmitConvertToTarget2,
87
0
    OPC_EmitNodeXForm, 0, 4,
88
0
    OPC_EmitConvertToTarget3,
89
0
    OPC_EmitNodeXForm, 1, 6,
90
0
    OPC_MorphNodeTo0, TARGET_VAL(AVR::SBIAb), 0|OPFL_Chain|OPFL_MemRefs,
91
0
                  2, 5, 7, 
92
0
   51, TARGET_VAL(ISD::AND),
93
0
    OPC_MoveChild0,
94
0
    OPC_CheckOpcode, TARGET_VAL(ISD::LOAD),
95
0
    OPC_RecordMemRef,
96
0
    OPC_RecordNode,
97
0
    OPC_CheckFoldableChainNode,
98
0
    OPC_RecordChild1,
99
0
    OPC_MoveChild1,
100
0
    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
101
0
    OPC_CheckPredicate, 11,
102
0
    OPC_MoveParent,
103
0
    OPC_CheckPredicate3, 
104
0
    OPC_CheckPredicate2, 
105
0
    OPC_MoveSibling1,
106
0
    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
107
0
    OPC_RecordNode,
108
0
    OPC_CheckPredicate, 14,
109
0
    OPC_MoveParent,
110
0
    OPC_CheckType, MVT::i8,
111
0
    OPC_MoveParent,
112
0
    OPC_CheckChild2Same, 2,
113
0
    OPC_CheckPredicate1, 
114
0
    OPC_CheckPredicate0, 
115
0
    OPC_EmitMergeInputChains, 2, 0, 1, 
116
0
    OPC_EmitConvertToTarget2,
117
0
    OPC_EmitNodeXForm, 0, 4,
118
0
    OPC_EmitConvertToTarget3,
119
0
    OPC_EmitNodeXForm, 2, 6,
120
0
    OPC_MorphNodeTo0, TARGET_VAL(AVR::CBIAb), 0|OPFL_Chain|OPFL_MemRefs,
121
0
                  2, 5, 7, 
122
0
   0,
123
0
  95|128,2, 
124
0
   OPC_RecordChild1,
125
0
   OPC_Scope, 58|128,1, 
126
0
    OPC_CheckChild1Type, MVT::i8,
127
0
    OPC_Scope, 31, 
128
0
     OPC_RecordChild2,
129
0
     OPC_CheckPredicate1, 
130
0
     OPC_CheckPredicate0, 
131
0
     OPC_Scope, 12, 
132
0
      OPC_CheckPatternPredicate0,
133
0
      OPC_CheckComplexPat0, /*#*/2,
134
0
      OPC_EmitMergeInputChains1_0,
135
0
      OPC_MorphNodeTo0, TARGET_VAL(AVR::STDPtrQRr), 0|OPFL_Chain|OPFL_MemRefs,
136
0
                    3, 3, 4, 1, 
137
0
     12, 
138
0
      OPC_CheckComplexPat0, /*#*/2,
139
0
      OPC_EmitMergeInputChains1_0,
140
0
      OPC_MorphNodeTo1, TARGET_VAL(AVR::STDSPQRr), 0|OPFL_Chain|OPFL_MemRefs,
141
0
                    MVT::i16, 3, 3, 4, 1, 
142
0
     0, 
143
0
    37, 
144
0
     OPC_MoveChild2,
145
0
     OPC_CheckOpcode, TARGET_VAL(AVRISD::WRAPPER),
146
0
     OPC_RecordChild0,
147
0
     OPC_MoveChild0,
148
0
     OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalAddress),
149
0
     OPC_MoveParent,
150
0
     OPC_CheckType, MVT::i16,
151
0
     OPC_MoveParent,
152
0
     OPC_CheckPredicate1, 
153
0
     OPC_CheckPredicate0, 
154
0
     OPC_Scope, 9, 
155
0
      OPC_CheckPatternPredicate0,
156
0
      OPC_EmitMergeInputChains1_0,
157
0
      OPC_MorphNodeTo0, TARGET_VAL(AVR::STSKRr), 0|OPFL_Chain|OPFL_MemRefs,
158
0
                    2, 2, 1, 
159
0
     9, 
160
0
      OPC_CheckPatternPredicate2,
161
0
      OPC_EmitMergeInputChains1_0,
162
0
      OPC_MorphNodeTo0, TARGET_VAL(AVR::STSKRrTiny), 0|OPFL_Chain|OPFL_MemRefs,
163
0
                    2, 2, 1, 
164
0
     0, 
165
0
    111, 
166
0
     OPC_RecordChild2,
167
0
     OPC_Scope, 52, 
168
0
      OPC_MoveChild2,
169
0
      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
170
0
      OPC_Scope, 17, 
171
0
       OPC_CheckPredicate, 8,
172
0
       OPC_MoveParent,
173
0
       OPC_CheckPredicate1, 
174
0
       OPC_CheckPredicate0, 
175
0
       OPC_EmitMergeInputChains1_0,
176
0
       OPC_EmitConvertToTarget2,
177
0
       OPC_EmitNodeXForm, 0, 3,
178
0
       OPC_MorphNodeTo0, TARGET_VAL(AVR::OUTARr), 0|OPFL_Chain|OPFL_MemRefs,
179
0
                     2, 4, 1, 
180
0
      27, 
181
0
       OPC_MoveParent,
182
0
       OPC_CheckPredicate1, 
183
0
       OPC_CheckPredicate0, 
184
0
       OPC_Scope, 10, 
185
0
        OPC_CheckPatternPredicate0,
186
0
        OPC_EmitMergeInputChains1_0,
187
0
        OPC_EmitConvertToTarget2,
188
0
        OPC_MorphNodeTo0, TARGET_VAL(AVR::STSKRr), 0|OPFL_Chain|OPFL_MemRefs,
189
0
                      2, 3, 1, 
190
0
       10, 
191
0
        OPC_CheckPatternPredicate2,
192
0
        OPC_EmitMergeInputChains1_0,
193
0
        OPC_EmitConvertToTarget2,
194
0
        OPC_MorphNodeTo0, TARGET_VAL(AVR::STSKRrTiny), 0|OPFL_Chain|OPFL_MemRefs,
195
0
                      2, 3, 1, 
196
0
       0, 
197
0
      0, 
198
0
     40, 
199
0
      OPC_RecordChild3,
200
0
      OPC_MoveChild3,
201
0
      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
202
0
      OPC_MoveParent,
203
0
      OPC_CheckPredicate0, 
204
0
      OPC_CheckType, MVT::i16,
205
0
      OPC_Scope, 14, 
206
0
       OPC_CheckPredicate, 9,
207
0
       OPC_CheckPatternPredicate1,
208
0
       OPC_EmitMergeInputChains1_0,
209
0
       OPC_EmitConvertToTarget3,
210
0
       OPC_MorphNodeTo1, TARGET_VAL(AVR::STPtrPiRr), 0|OPFL_Chain|OPFL_MemRefs,
211
0
                     MVT::i16, 3, 2, 1, 4, 
212
0
      13, 
213
0
       OPC_CheckPredicate6, 
214
0
       OPC_CheckPatternPredicate1,
215
0
       OPC_EmitMergeInputChains1_0,
216
0
       OPC_EmitConvertToTarget3,
217
0
       OPC_MorphNodeTo1, TARGET_VAL(AVR::STPtrPdRr), 0|OPFL_Chain|OPFL_MemRefs,
218
0
                     MVT::i16, 3, 2, 1, 4, 
219
0
      0, 
220
0
     13, 
221
0
      OPC_CheckChild2Type, MVT::i16,
222
0
      OPC_CheckPredicate1, 
223
0
      OPC_CheckPredicate0, 
224
0
      OPC_CheckPatternPredicate1,
225
0
      OPC_EmitMergeInputChains1_0,
226
0
      OPC_MorphNodeTo0, TARGET_VAL(AVR::STPtrRr), 0|OPFL_Chain|OPFL_MemRefs,
227
0
                    2, 2, 1, 
228
0
     0, 
229
0
    0, 
230
0
   30|128,1, 
231
0
    OPC_CheckChild1Type, MVT::i16,
232
0
    OPC_Scope, 31, 
233
0
     OPC_RecordChild2,
234
0
     OPC_CheckPredicate1, 
235
0
     OPC_CheckPredicate0, 
236
0
     OPC_Scope, 12, 
237
0
      OPC_CheckPatternPredicate1,
238
0
      OPC_CheckComplexPat0, /*#*/2,
239
0
      OPC_EmitMergeInputChains1_0,
240
0
      OPC_MorphNodeTo0, TARGET_VAL(AVR::STDWPtrQRr), 0|OPFL_Chain|OPFL_MemRefs,
241
0
                    3, 3, 4, 1, 
242
0
     12, 
243
0
      OPC_CheckComplexPat0, /*#*/2,
244
0
      OPC_EmitMergeInputChains1_0,
245
0
      OPC_MorphNodeTo1, TARGET_VAL(AVR::STDWSPQRr), 0|OPFL_Chain|OPFL_MemRefs,
246
0
                    MVT::i16, 3, 3, 4, 1, 
247
0
     0, 
248
0
    24, 
249
0
     OPC_MoveChild2,
250
0
     OPC_CheckOpcode, TARGET_VAL(AVRISD::WRAPPER),
251
0
     OPC_RecordChild0,
252
0
     OPC_MoveChild0,
253
0
     OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalAddress),
254
0
     OPC_MoveParent,
255
0
     OPC_CheckType, MVT::i16,
256
0
     OPC_MoveParent,
257
0
     OPC_CheckPredicate1, 
258
0
     OPC_CheckPredicate0, 
259
0
     OPC_CheckPatternPredicate0,
260
0
     OPC_EmitMergeInputChains1_0,
261
0
     OPC_MorphNodeTo0, TARGET_VAL(AVR::STSWKRr), 0|OPFL_Chain|OPFL_MemRefs,
262
0
                   2, 2, 1, 
263
0
    96, 
264
0
     OPC_RecordChild2,
265
0
     OPC_Scope, 37, 
266
0
      OPC_MoveChild2,
267
0
      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
268
0
      OPC_Scope, 16, 
269
0
       OPC_CheckPredicate7, 
270
0
       OPC_MoveParent,
271
0
       OPC_CheckPredicate1, 
272
0
       OPC_CheckPredicate0, 
273
0
       OPC_EmitMergeInputChains1_0,
274
0
       OPC_EmitConvertToTarget2,
275
0
       OPC_EmitNodeXForm, 0, 3,
276
0
       OPC_MorphNodeTo0, TARGET_VAL(AVR::OUTWARr), 0|OPFL_Chain|OPFL_MemRefs,
277
0
                     2, 4, 1, 
278
0
      13, 
279
0
       OPC_MoveParent,
280
0
       OPC_CheckPredicate1, 
281
0
       OPC_CheckPredicate0, 
282
0
       OPC_CheckPatternPredicate0,
283
0
       OPC_EmitMergeInputChains1_0,
284
0
       OPC_EmitConvertToTarget2,
285
0
       OPC_MorphNodeTo0, TARGET_VAL(AVR::STSWKRr), 0|OPFL_Chain|OPFL_MemRefs,
286
0
                     2, 3, 1, 
287
0
      0, 
288
0
     40, 
289
0
      OPC_RecordChild3,
290
0
      OPC_MoveChild3,
291
0
      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
292
0
      OPC_MoveParent,
293
0
      OPC_CheckPredicate0, 
294
0
      OPC_CheckType, MVT::i16,
295
0
      OPC_Scope, 14, 
296
0
       OPC_CheckPredicate, 9,
297
0
       OPC_CheckPatternPredicate1,
298
0
       OPC_EmitMergeInputChains1_0,
299
0
       OPC_EmitConvertToTarget3,
300
0
       OPC_MorphNodeTo1, TARGET_VAL(AVR::STWPtrPiRr), 0|OPFL_Chain|OPFL_MemRefs,
301
0
                     MVT::i16, 3, 2, 1, 4, 
302
0
      13, 
303
0
       OPC_CheckPredicate6, 
304
0
       OPC_CheckPatternPredicate1,
305
0
       OPC_EmitMergeInputChains1_0,
306
0
       OPC_EmitConvertToTarget3,
307
0
       OPC_MorphNodeTo1, TARGET_VAL(AVR::STWPtrPdRr), 0|OPFL_Chain|OPFL_MemRefs,
308
0
                     MVT::i16, 3, 2, 1, 4, 
309
0
      0, 
310
0
     13, 
311
0
      OPC_CheckChild2Type, MVT::i16,
312
0
      OPC_CheckPredicate1, 
313
0
      OPC_CheckPredicate0, 
314
0
      OPC_CheckPatternPredicate1,
315
0
      OPC_EmitMergeInputChains1_0,
316
0
      OPC_MorphNodeTo0, TARGET_VAL(AVR::STWPtrRr), 0|OPFL_Chain|OPFL_MemRefs,
317
0
                    2, 2, 1, 
318
0
     0, 
319
0
    0, 
320
0
   0, 
321
0
  0, 
322
0
 84|128,1, TARGET_VAL(ISD::LOAD),
323
0
  OPC_RecordMemRef,
324
0
  OPC_RecordNode,
325
0
  OPC_Scope, 33, 
326
0
   OPC_RecordChild1,
327
0
   OPC_CheckPredicate3, 
328
0
   OPC_CheckPredicate2, 
329
0
   OPC_SwitchType , 12, MVT::i8,
330
0
    OPC_CheckPatternPredicate0,
331
0
    OPC_CheckComplexPat0, /*#*/1,
332
0
    OPC_EmitMergeInputChains1_0,
333
0
    OPC_MorphNodeTo1, TARGET_VAL(AVR::LDDRdPtrQ), 0|OPFL_Chain|OPFL_MemRefs,
334
0
                  MVT::i8, 2, 2, 3, 
335
0
   12, MVT::i16,
336
0
    OPC_CheckPatternPredicate1,
337
0
    OPC_CheckComplexPat0, /*#*/1,
338
0
    OPC_EmitMergeInputChains1_0,
339
0
    OPC_MorphNodeTo1, TARGET_VAL(AVR::LDDWRdPtrQ), 0|OPFL_Chain|OPFL_MemRefs,
340
0
                  MVT::i16, 2, 2, 3, 
341
0
   0,
342
0
  50, 
343
0
   OPC_MoveChild1,
344
0
   OPC_CheckOpcode, TARGET_VAL(AVRISD::WRAPPER),
345
0
   OPC_RecordChild0,
346
0
   OPC_MoveChild0,
347
0
   OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalAddress),
348
0
   OPC_MoveParent,
349
0
   OPC_MoveParent,
350
0
   OPC_CheckPredicate3, 
351
0
   OPC_CheckPredicate2, 
352
0
   OPC_SwitchType , 22, MVT::i8,
353
0
    OPC_Scope, 9, 
354
0
     OPC_CheckPatternPredicate0,
355
0
     OPC_EmitMergeInputChains1_0,
356
0
     OPC_MorphNodeTo1, TARGET_VAL(AVR::LDSRdK), 0|OPFL_Chain|OPFL_MemRefs,
357
0
                   MVT::i8, 1, 1, 
358
0
    9, 
359
0
     OPC_CheckPatternPredicate2,
360
0
     OPC_EmitMergeInputChains1_0,
361
0
     OPC_MorphNodeTo1, TARGET_VAL(AVR::LDSRdKTiny), 0|OPFL_Chain|OPFL_MemRefs,
362
0
                   MVT::i8, 1, 1, 
363
0
    0, 
364
0
   9, MVT::i16,
365
0
    OPC_CheckPatternPredicate0,
366
0
    OPC_EmitMergeInputChains1_0,
367
0
    OPC_MorphNodeTo1, TARGET_VAL(AVR::LDSWRdK), 0|OPFL_Chain|OPFL_MemRefs,
368
0
                  MVT::i16, 1, 1, 
369
0
   0,
370
0
  122, 
371
0
   OPC_RecordChild1,
372
0
   OPC_Scope, 89, 
373
0
    OPC_MoveChild1,
374
0
    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
375
0
    OPC_Scope, 19, 
376
0
     OPC_CheckPredicate, 8,
377
0
     OPC_MoveParent,
378
0
     OPC_CheckPredicate3, 
379
0
     OPC_CheckPredicate2, 
380
0
     OPC_CheckType, MVT::i8,
381
0
     OPC_EmitMergeInputChains1_0,
382
0
     OPC_EmitConvertToTarget1,
383
0
     OPC_EmitNodeXForm, 0, 2,
384
0
     OPC_MorphNodeTo1, TARGET_VAL(AVR::INRdA), 0|OPFL_Chain|OPFL_MemRefs,
385
0
                   MVT::i8, 1, 3, 
386
0
    18, 
387
0
     OPC_CheckPredicate7, 
388
0
     OPC_MoveParent,
389
0
     OPC_CheckPredicate3, 
390
0
     OPC_CheckPredicate2, 
391
0
     OPC_CheckType, MVT::i16,
392
0
     OPC_EmitMergeInputChains1_0,
393
0
     OPC_EmitConvertToTarget1,
394
0
     OPC_EmitNodeXForm, 0, 2,
395
0
     OPC_MorphNodeTo1, TARGET_VAL(AVR::INWRdA), 0|OPFL_Chain|OPFL_MemRefs,
396
0
                   MVT::i16, 1, 3, 
397
0
    43, 
398
0
     OPC_MoveParent,
399
0
     OPC_CheckPredicate3, 
400
0
     OPC_CheckPredicate2, 
401
0
     OPC_SwitchType , 24, MVT::i8,
402
0
      OPC_Scope, 10, 
403
0
       OPC_CheckPatternPredicate0,
404
0
       OPC_EmitMergeInputChains1_0,
405
0
       OPC_EmitConvertToTarget1,
406
0
       OPC_MorphNodeTo1, TARGET_VAL(AVR::LDSRdK), 0|OPFL_Chain|OPFL_MemRefs,
407
0
                     MVT::i8, 1, 2, 
408
0
      10, 
409
0
       OPC_CheckPatternPredicate2,
410
0
       OPC_EmitMergeInputChains1_0,
411
0
       OPC_EmitConvertToTarget1,
412
0
       OPC_MorphNodeTo1, TARGET_VAL(AVR::LDSRdKTiny), 0|OPFL_Chain|OPFL_MemRefs,
413
0
                     MVT::i8, 1, 2, 
414
0
      0, 
415
0
     10, MVT::i16,
416
0
      OPC_CheckPatternPredicate0,
417
0
      OPC_EmitMergeInputChains1_0,
418
0
      OPC_EmitConvertToTarget1,
419
0
      OPC_MorphNodeTo1, TARGET_VAL(AVR::LDSWRdK), 0|OPFL_Chain|OPFL_MemRefs,
420
0
                    MVT::i16, 1, 2, 
421
0
     0,
422
0
    0, 
423
0
   28, 
424
0
    OPC_CheckChild1Type, MVT::i16,
425
0
    OPC_CheckPredicate3, 
426
0
    OPC_CheckPredicate2, 
427
0
    OPC_SwitchType , 9, MVT::i8,
428
0
     OPC_CheckPatternPredicate1,
429
0
     OPC_EmitMergeInputChains1_0,
430
0
     OPC_MorphNodeTo1, TARGET_VAL(AVR::LDRdPtr), 0|OPFL_Chain|OPFL_MemRefs,
431
0
                   MVT::i8, 1, 1, 
432
0
    9, MVT::i16,
433
0
     OPC_CheckPatternPredicate1,
434
0
     OPC_EmitMergeInputChains1_0,
435
0
     OPC_MorphNodeTo1, TARGET_VAL(AVR::LDWRdPtr), 0|OPFL_Chain|OPFL_MemRefs,
436
0
                   MVT::i16, 1, 1, 
437
0
    0,
438
0
   0, 
439
0
  0, 
440
0
 31, TARGET_VAL(ISD::TRUNCATE),
441
0
  OPC_Scope, 17, 
442
0
   OPC_MoveChild0,
443
0
   OPC_CheckOpcode, TARGET_VAL(AVRISD::LSRWN),
444
0
   OPC_RecordChild0,
445
0
   OPC_CheckChild1Integer, 16, 
446
0
   OPC_MoveParent,
447
0
   OPC_EmitStringInteger32, AVR::sub_hi,
448
0
   OPC_MorphNodeTo1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
449
0
                 MVT::i8, 2, 0, 1, 
450
0
  10, 
451
0
   OPC_RecordChild0,
452
0
   OPC_EmitStringInteger32, AVR::sub_lo,
453
0
   OPC_MorphNodeTo1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
454
0
                 MVT::i8, 2, 0, 1, 
455
0
  0, 
456
0
 21, TARGET_VAL(ISD::CALLSEQ_START),
457
0
  OPC_RecordNode,
458
0
  OPC_RecordChild1,
459
0
  OPC_MoveChild1,
460
0
  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
461
0
  OPC_MoveSibling2,
462
0
  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
463
0
  OPC_RecordNode,
464
0
  OPC_MoveParent,
465
0
  OPC_EmitMergeInputChains1_0,
466
0
  OPC_MorphNodeTo1, TARGET_VAL(AVR::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_GlueOutput,
467
0
                MVT::i16, 2, 1, 2, 
468
0
 22, TARGET_VAL(ISD::CALLSEQ_END),
469
0
  OPC_RecordNode,
470
0
  OPC_CaptureGlueInput,
471
0
  OPC_RecordChild1,
472
0
  OPC_MoveChild1,
473
0
  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
474
0
  OPC_MoveSibling2,
475
0
  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
476
0
  OPC_RecordNode,
477
0
  OPC_MoveParent,
478
0
  OPC_EmitMergeInputChains1_0,
479
0
  OPC_MorphNodeTo1, TARGET_VAL(AVR::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
480
0
                MVT::i16, 2, 1, 2, 
481
0
 15, TARGET_VAL(ISD::ATOMIC_FENCE),
482
0
  OPC_RecordNode,
483
0
  OPC_MoveChild1,
484
0
  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
485
0
  OPC_MoveSibling2,
486
0
  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
487
0
  OPC_MoveParent,
488
0
  OPC_EmitMergeInputChains1_0,
489
0
  OPC_MorphNodeTo0Chain, TARGET_VAL(AVR::AtomicFence),
490
0
                0, 
491
0
 48|128,1, TARGET_VAL(ISD::ADD),
492
0
  OPC_Scope, 22, 
493
0
   OPC_RecordChild0,
494
0
   OPC_MoveChild1,
495
0
   OPC_CheckOpcode, TARGET_VAL(AVRISD::WRAPPER),
496
0
   OPC_RecordChild0,
497
0
   OPC_MoveChild0,
498
0
   OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalAddress),
499
0
   OPC_MoveParent,
500
0
   OPC_MoveParent,
501
0
   OPC_CheckType, MVT::i16,
502
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::SUBIWRdK),
503
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
504
0
  22, 
505
0
   OPC_MoveChild0,
506
0
   OPC_CheckOpcode, TARGET_VAL(AVRISD::WRAPPER),
507
0
   OPC_RecordChild0,
508
0
   OPC_MoveChild0,
509
0
   OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalAddress),
510
0
   OPC_MoveParent,
511
0
   OPC_MoveParent,
512
0
   OPC_RecordChild1,
513
0
   OPC_CheckType, MVT::i16,
514
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::SUBIWRdK),
515
0
                 MVT::i16, MVT::i8, 2, 1, 0, 
516
0
  127, 
517
0
   OPC_RecordChild0,
518
0
   OPC_Scope, 11, 
519
0
    OPC_CheckChild1Integer, 2, 
520
0
    OPC_CheckType, MVT::i8,
521
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::INCRd),
522
0
                  MVT::i8, MVT::i8, 1, 0, 
523
0
   11, 
524
0
    OPC_CheckChild1Integer, 3, 
525
0
    OPC_CheckType, MVT::i8,
526
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::DECRd),
527
0
                  MVT::i8, MVT::i8, 1, 0, 
528
0
   99, 
529
0
    OPC_RecordChild1,
530
0
    OPC_Scope, 73, 
531
0
     OPC_MoveChild1,
532
0
     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
533
0
     OPC_Scope, 15, 
534
0
      OPC_CheckPredicate, 10,
535
0
      OPC_MoveParent,
536
0
      OPC_CheckType, MVT::i16,
537
0
      OPC_CheckPatternPredicate3,
538
0
      OPC_EmitConvertToTarget1,
539
0
      OPC_MorphNodeTo2None, TARGET_VAL(AVR::ADIWRdK),
540
0
                    MVT::i16, MVT::i8, 2, 0, 2, 
541
0
     18, 
542
0
      OPC_CheckPredicate, 13,
543
0
      OPC_MoveParent,
544
0
      OPC_CheckType, MVT::i16,
545
0
      OPC_CheckPatternPredicate3,
546
0
      OPC_EmitConvertToTarget1,
547
0
      OPC_EmitNodeXForm, 3, 2,
548
0
      OPC_MorphNodeTo2None, TARGET_VAL(AVR::SBIWRdK),
549
0
                    MVT::i16, MVT::i8, 2, 0, 3, 
550
0
     31, 
551
0
      OPC_MoveParent,
552
0
      OPC_SwitchType , 12, MVT::i16,
553
0
       OPC_EmitConvertToTarget1,
554
0
       OPC_EmitNodeXForm, 3, 2,
555
0
       OPC_MorphNodeTo2None, TARGET_VAL(AVR::SUBIWRdK),
556
0
                     MVT::i16, MVT::i8, 2, 0, 3, 
557
0
      12, MVT::i8,
558
0
       OPC_EmitConvertToTarget1,
559
0
       OPC_EmitNodeXForm, 4, 2,
560
0
       OPC_MorphNodeTo2None, TARGET_VAL(AVR::SUBIRdK),
561
0
                     MVT::i8, MVT::i8, 2, 0, 3, 
562
0
      0,
563
0
     0, 
564
0
    10, 
565
0
     OPC_CheckType, MVT::i8,
566
0
     OPC_MorphNodeTo2None, TARGET_VAL(AVR::ADDRdRr),
567
0
                   MVT::i8, MVT::i8, 2, 0, 1, 
568
0
    10, 
569
0
     OPC_CheckType, MVT::i16,
570
0
     OPC_MorphNodeTo2None, TARGET_VAL(AVR::ADDWRdRr),
571
0
                   MVT::i16, MVT::i8, 2, 0, 1, 
572
0
    0, 
573
0
   0, 
574
0
  0, 
575
0
 50, TARGET_VAL(ISD::XOR),
576
0
  OPC_RecordChild0,
577
0
  OPC_Scope, 22, 
578
0
   OPC_CheckChild1Integer, 3, 
579
0
   OPC_SwitchType , 7, MVT::i8,
580
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::COMRd),
581
0
                  MVT::i8, MVT::i8, 1, 0, 
582
0
   7, MVT::i16,
583
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::COMWRd),
584
0
                  MVT::i16, MVT::i8, 1, 0, 
585
0
   0,
586
0
  23, 
587
0
   OPC_RecordChild1,
588
0
   OPC_SwitchType , 8, MVT::i8,
589
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::EORRdRr),
590
0
                  MVT::i8, MVT::i8, 2, 0, 1, 
591
0
   8, MVT::i16,
592
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::EORWRdRr),
593
0
                  MVT::i16, MVT::i8, 2, 0, 1, 
594
0
   0,
595
0
  0, 
596
0
 108, TARGET_VAL(ISD::SUB),
597
0
  OPC_Scope, 29, 
598
0
   OPC_CheckChild0Integer, 0, 
599
0
   OPC_RecordChild1,
600
0
   OPC_SwitchType , 7, MVT::i8,
601
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::NEGRd),
602
0
                  MVT::i8, MVT::i8, 1, 0, 
603
0
   13, MVT::i16,
604
0
    OPC_EmitNode1None, TARGET_VAL(AVR::CopyZero),
605
0
                  MVT::i8, 0, 
606
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::NEGWRd),
607
0
                  MVT::i16, MVT::i8, 2, 0, 1, 
608
0
   0,
609
0
  75, 
610
0
   OPC_RecordChild0,
611
0
   OPC_RecordChild1,
612
0
   OPC_Scope, 48, 
613
0
    OPC_MoveChild1,
614
0
    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
615
0
    OPC_Scope, 15, 
616
0
     OPC_CheckPredicate, 10,
617
0
     OPC_MoveParent,
618
0
     OPC_CheckType, MVT::i16,
619
0
     OPC_CheckPatternPredicate3,
620
0
     OPC_EmitConvertToTarget1,
621
0
     OPC_MorphNodeTo2None, TARGET_VAL(AVR::SBIWRdK),
622
0
                   MVT::i16, MVT::i8, 2, 0, 2, 
623
0
    25, 
624
0
     OPC_MoveParent,
625
0
     OPC_SwitchType , 9, MVT::i8,
626
0
      OPC_EmitConvertToTarget1,
627
0
      OPC_MorphNodeTo2None, TARGET_VAL(AVR::SUBIRdK),
628
0
                    MVT::i8, MVT::i8, 2, 0, 2, 
629
0
     9, MVT::i16,
630
0
      OPC_EmitConvertToTarget1,
631
0
      OPC_MorphNodeTo2None, TARGET_VAL(AVR::SUBIWRdK),
632
0
                    MVT::i16, MVT::i8, 2, 0, 2, 
633
0
     0,
634
0
    0, 
635
0
   10, 
636
0
    OPC_CheckType, MVT::i8,
637
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::SUBRdRr),
638
0
                  MVT::i8, MVT::i8, 2, 0, 1, 
639
0
   10, 
640
0
    OPC_CheckType, MVT::i16,
641
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::SUBWRdRr),
642
0
                  MVT::i16, MVT::i8, 2, 0, 1, 
643
0
   0, 
644
0
  0, 
645
0
 90, TARGET_VAL(AVRISD::BRCOND),
646
0
  OPC_RecordNode,
647
0
  OPC_CaptureGlueInput,
648
0
  OPC_RecordChild1,
649
0
  OPC_MoveChild1,
650
0
  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
651
0
  OPC_MoveParent,
652
0
  OPC_Scope, 9, 
653
0
   OPC_CheckChild2Integer, 0, 
654
0
   OPC_EmitMergeInputChains1_0,
655
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::BREQk), 0|OPFL_Chain|OPFL_GlueInput,
656
0
                 1, 1, 
657
0
  9, 
658
0
   OPC_CheckChild2Integer, 2, 
659
0
   OPC_EmitMergeInputChains1_0,
660
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::BRNEk), 0|OPFL_Chain|OPFL_GlueInput,
661
0
                 1, 1, 
662
0
  9, 
663
0
   OPC_CheckChild2Integer, 8, 
664
0
   OPC_EmitMergeInputChains1_0,
665
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::BRSHk), 0|OPFL_Chain|OPFL_GlueInput,
666
0
                 1, 1, 
667
0
  9, 
668
0
   OPC_CheckChild2Integer, 10, 
669
0
   OPC_EmitMergeInputChains1_0,
670
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::BRLOk), 0|OPFL_Chain|OPFL_GlueInput,
671
0
                 1, 1, 
672
0
  9, 
673
0
   OPC_CheckChild2Integer, 12, 
674
0
   OPC_EmitMergeInputChains1_0,
675
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::BRMIk), 0|OPFL_Chain|OPFL_GlueInput,
676
0
                 1, 1, 
677
0
  9, 
678
0
   OPC_CheckChild2Integer, 14, 
679
0
   OPC_EmitMergeInputChains1_0,
680
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::BRPLk), 0|OPFL_Chain|OPFL_GlueInput,
681
0
                 1, 1, 
682
0
  9, 
683
0
   OPC_CheckChild2Integer, 4, 
684
0
   OPC_EmitMergeInputChains1_0,
685
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::BRGEk), 0|OPFL_Chain|OPFL_GlueInput,
686
0
                 1, 1, 
687
0
  9, 
688
0
   OPC_CheckChild2Integer, 6, 
689
0
   OPC_EmitMergeInputChains1_0,
690
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::BRLTk), 0|OPFL_Chain|OPFL_GlueInput,
691
0
                 1, 1, 
692
0
  0, 
693
0
 14, TARGET_VAL(ISD::SHL),
694
0
  OPC_RecordChild0,
695
0
  OPC_CheckChild1Integer, 2, 
696
0
  OPC_CheckChild1Type, MVT::i8,
697
0
  OPC_CheckType, MVT::i16,
698
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSLWRd),
699
0
                MVT::i16, MVT::i8, 1, 0, 
700
0
 61, TARGET_VAL(ISD::SUBE),
701
0
  OPC_CaptureGlueInput,
702
0
  OPC_RecordChild0,
703
0
  OPC_RecordChild1,
704
0
  OPC_Scope, 31, 
705
0
   OPC_MoveChild1,
706
0
   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
707
0
   OPC_MoveParent,
708
0
   OPC_SwitchType , 10, MVT::i8,
709
0
    OPC_EmitConvertToTarget1,
710
0
    OPC_MorphNodeTo2, TARGET_VAL(AVR::SBCIRdK), 0|OPFL_GlueInput|OPFL_GlueOutput,
711
0
                  MVT::i8, MVT::i8, 2, 0, 2, 
712
0
   10, MVT::i16,
713
0
    OPC_EmitConvertToTarget1,
714
0
    OPC_MorphNodeTo2, TARGET_VAL(AVR::SBCIWRdK), 0|OPFL_GlueInput|OPFL_GlueOutput,
715
0
                  MVT::i16, MVT::i8, 2, 0, 2, 
716
0
   0,
717
0
  11, 
718
0
   OPC_CheckType, MVT::i8,
719
0
   OPC_MorphNodeTo2, TARGET_VAL(AVR::SBCRdRr), 0|OPFL_GlueInput|OPFL_GlueOutput,
720
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
721
0
  11, 
722
0
   OPC_CheckType, MVT::i16,
723
0
   OPC_MorphNodeTo2, TARGET_VAL(AVR::SBCWRdRr), 0|OPFL_GlueInput|OPFL_GlueOutput,
724
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
725
0
  0, 
726
0
 56, TARGET_VAL(ISD::AND),
727
0
  OPC_RecordChild0,
728
0
  OPC_RecordChild1,
729
0
  OPC_Scope, 29, 
730
0
   OPC_MoveChild1,
731
0
   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
732
0
   OPC_MoveParent,
733
0
   OPC_SwitchType , 9, MVT::i8,
734
0
    OPC_EmitConvertToTarget1,
735
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::ANDIRdK),
736
0
                  MVT::i8, MVT::i8, 2, 0, 2, 
737
0
   9, MVT::i16,
738
0
    OPC_EmitConvertToTarget1,
739
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::ANDIWRdK),
740
0
                  MVT::i16, MVT::i8, 2, 0, 2, 
741
0
   0,
742
0
  10, 
743
0
   OPC_CheckType, MVT::i8,
744
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::ANDRdRr),
745
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
746
0
  10, 
747
0
   OPC_CheckType, MVT::i16,
748
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::ANDWRdRr),
749
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
750
0
  0, 
751
0
 56, TARGET_VAL(ISD::OR),
752
0
  OPC_RecordChild0,
753
0
  OPC_RecordChild1,
754
0
  OPC_Scope, 29, 
755
0
   OPC_MoveChild1,
756
0
   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
757
0
   OPC_MoveParent,
758
0
   OPC_SwitchType , 9, MVT::i8,
759
0
    OPC_EmitConvertToTarget1,
760
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::ORIRdK),
761
0
                  MVT::i8, MVT::i8, 2, 0, 2, 
762
0
   9, MVT::i16,
763
0
    OPC_EmitConvertToTarget1,
764
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::ORIWRdK),
765
0
                  MVT::i16, MVT::i8, 2, 0, 2, 
766
0
   0,
767
0
  10, 
768
0
   OPC_CheckType, MVT::i8,
769
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::ORRdRr),
770
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
771
0
  10, 
772
0
   OPC_CheckType, MVT::i16,
773
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::ORWRdRr),
774
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
775
0
  0, 
776
0
 81, TARGET_VAL(AVRISD::CALL),
777
0
  OPC_RecordNode,
778
0
  OPC_CaptureGlueInput,
779
0
  OPC_RecordChild1,
780
0
  OPC_MoveChild1,
781
0
  OPC_SwitchOpcode , 22, TARGET_VAL(ISD::Constant),
782
0
   OPC_MoveParent,
783
0
   OPC_Scope, 8, 
784
0
    OPC_EmitMergeInputChains1_0,
785
0
    OPC_EmitConvertToTarget1,
786
0
    OPC_MorphNodeTo0, TARGET_VAL(AVR::RCALLk), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
787
0
                  1, 2, 
788
0
   9, 
789
0
    OPC_CheckPatternPredicate4,
790
0
    OPC_EmitMergeInputChains1_0,
791
0
    OPC_EmitConvertToTarget1,
792
0
    OPC_MorphNodeTo0, TARGET_VAL(AVR::CALLk), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
793
0
                  1, 2, 
794
0
   0, 
795
0
  22, TARGET_VAL(ISD::TargetGlobalAddress),
796
0
   OPC_CheckType, MVT::i16,
797
0
   OPC_MoveParent,
798
0
   OPC_Scope, 8, 
799
0
    OPC_CheckPatternPredicate4,
800
0
    OPC_EmitMergeInputChains1_0,
801
0
    OPC_MorphNodeTo0, TARGET_VAL(AVR::CALLk), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
802
0
                  1, 1, 
803
0
   7, 
804
0
    OPC_EmitMergeInputChains1_0,
805
0
    OPC_MorphNodeTo0, TARGET_VAL(AVR::RCALLk), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
806
0
                  1, 1, 
807
0
   0, 
808
0
  22, TARGET_VAL(ISD::TargetExternalSymbol),
809
0
   OPC_CheckType, MVT::i16,
810
0
   OPC_MoveParent,
811
0
   OPC_Scope, 8, 
812
0
    OPC_CheckPatternPredicate4,
813
0
    OPC_EmitMergeInputChains1_0,
814
0
    OPC_MorphNodeTo0, TARGET_VAL(AVR::CALLk), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
815
0
                  1, 1, 
816
0
   7, 
817
0
    OPC_EmitMergeInputChains1_0,
818
0
    OPC_MorphNodeTo0, TARGET_VAL(AVR::RCALLk), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
819
0
                  1, 1, 
820
0
   0, 
821
0
  0,
822
0
 42, TARGET_VAL(AVRISD::CMP),
823
0
  OPC_RecordChild0,
824
0
  OPC_Scope, 27, 
825
0
   OPC_CheckChild0Type, MVT::i8,
826
0
   OPC_RecordChild1,
827
0
   OPC_Scope, 13, 
828
0
    OPC_MoveChild1,
829
0
    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
830
0
    OPC_MoveParent,
831
0
    OPC_EmitConvertToTarget1,
832
0
    OPC_MorphNodeTo1GlueOutput, TARGET_VAL(AVR::CPIRdK),
833
0
                  MVT::i8, 2, 0, 2, 
834
0
   7, 
835
0
    OPC_MorphNodeTo1GlueOutput, TARGET_VAL(AVR::CPRdRr),
836
0
                  MVT::i8, 2, 0, 1, 
837
0
   0, 
838
0
  10, 
839
0
   OPC_CheckChild0Type, MVT::i16,
840
0
   OPC_RecordChild1,
841
0
   OPC_MorphNodeTo1GlueOutput, TARGET_VAL(AVR::CPWRdRr),
842
0
                 MVT::i8, 2, 0, 1, 
843
0
  0, 
844
0
 18, TARGET_VAL(AVRISD::LSLWN),
845
0
  OPC_RecordChild0,
846
0
  OPC_RecordChild1,
847
0
  OPC_MoveChild1,
848
0
  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
849
0
  OPC_MoveParent,
850
0
  OPC_CheckType, MVT::i16,
851
0
  OPC_EmitConvertToTarget1,
852
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSLWNRd),
853
0
                MVT::i16, MVT::i8, 2, 0, 2, 
854
0
 18, TARGET_VAL(AVRISD::LSLBN),
855
0
  OPC_RecordChild0,
856
0
  OPC_RecordChild1,
857
0
  OPC_MoveChild1,
858
0
  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
859
0
  OPC_MoveParent,
860
0
  OPC_CheckType, MVT::i8,
861
0
  OPC_EmitConvertToTarget1,
862
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSLBNRd),
863
0
                MVT::i8, MVT::i8, 2, 0, 2, 
864
0
 18, TARGET_VAL(AVRISD::LSRWN),
865
0
  OPC_RecordChild0,
866
0
  OPC_RecordChild1,
867
0
  OPC_MoveChild1,
868
0
  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
869
0
  OPC_MoveParent,
870
0
  OPC_CheckType, MVT::i16,
871
0
  OPC_EmitConvertToTarget1,
872
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSRWNRd),
873
0
                MVT::i16, MVT::i8, 2, 0, 2, 
874
0
 18, TARGET_VAL(AVRISD::LSRBN),
875
0
  OPC_RecordChild0,
876
0
  OPC_RecordChild1,
877
0
  OPC_MoveChild1,
878
0
  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
879
0
  OPC_MoveParent,
880
0
  OPC_CheckType, MVT::i8,
881
0
  OPC_EmitConvertToTarget1,
882
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSRBNRd),
883
0
                MVT::i8, MVT::i8, 2, 0, 2, 
884
0
 18, TARGET_VAL(AVRISD::ASRWN),
885
0
  OPC_RecordChild0,
886
0
  OPC_RecordChild1,
887
0
  OPC_MoveChild1,
888
0
  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
889
0
  OPC_MoveParent,
890
0
  OPC_CheckType, MVT::i16,
891
0
  OPC_EmitConvertToTarget1,
892
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::ASRWNRd),
893
0
                MVT::i16, MVT::i8, 2, 0, 2, 
894
0
 18, TARGET_VAL(AVRISD::ASRBN),
895
0
  OPC_RecordChild0,
896
0
  OPC_RecordChild1,
897
0
  OPC_MoveChild1,
898
0
  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
899
0
  OPC_MoveParent,
900
0
  OPC_CheckType, MVT::i8,
901
0
  OPC_EmitConvertToTarget1,
902
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::ASRBNRd),
903
0
                MVT::i8, MVT::i8, 2, 0, 2, 
904
0
 56, TARGET_VAL(ISD::SUBC),
905
0
  OPC_RecordChild0,
906
0
  OPC_RecordChild1,
907
0
  OPC_Scope, 29, 
908
0
   OPC_MoveChild1,
909
0
   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
910
0
   OPC_MoveParent,
911
0
   OPC_SwitchType , 9, MVT::i8,
912
0
    OPC_EmitConvertToTarget1,
913
0
    OPC_MorphNodeTo2GlueOutput, TARGET_VAL(AVR::SUBIRdK),
914
0
                  MVT::i8, MVT::i8, 2, 0, 2, 
915
0
   9, MVT::i16,
916
0
    OPC_EmitConvertToTarget1,
917
0
    OPC_MorphNodeTo2GlueOutput, TARGET_VAL(AVR::SUBIWRdK),
918
0
                  MVT::i16, MVT::i8, 2, 0, 2, 
919
0
   0,
920
0
  10, 
921
0
   OPC_CheckType, MVT::i8,
922
0
   OPC_MorphNodeTo2GlueOutput, TARGET_VAL(AVR::SUBRdRr),
923
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
924
0
  10, 
925
0
   OPC_CheckType, MVT::i16,
926
0
   OPC_MorphNodeTo2GlueOutput, TARGET_VAL(AVR::SUBWRdRr),
927
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
928
0
  0, 
929
0
 62, TARGET_VAL(ISD::ADDC),
930
0
  OPC_RecordChild0,
931
0
  OPC_RecordChild1,
932
0
  OPC_Scope, 35, 
933
0
   OPC_MoveChild1,
934
0
   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
935
0
   OPC_MoveParent,
936
0
   OPC_SwitchType , 12, MVT::i16,
937
0
    OPC_EmitConvertToTarget1,
938
0
    OPC_EmitNodeXForm, 3, 2,
939
0
    OPC_MorphNodeTo2GlueOutput, TARGET_VAL(AVR::SUBIWRdK),
940
0
                  MVT::i16, MVT::i8, 2, 0, 3, 
941
0
   12, MVT::i8,
942
0
    OPC_EmitConvertToTarget1,
943
0
    OPC_EmitNodeXForm, 4, 2,
944
0
    OPC_MorphNodeTo2GlueOutput, TARGET_VAL(AVR::SUBIRdK),
945
0
                  MVT::i8, MVT::i8, 2, 0, 3, 
946
0
   0,
947
0
  10, 
948
0
   OPC_CheckType, MVT::i8,
949
0
   OPC_MorphNodeTo2GlueOutput, TARGET_VAL(AVR::ADDRdRr),
950
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
951
0
  10, 
952
0
   OPC_CheckType, MVT::i16,
953
0
   OPC_MorphNodeTo2GlueOutput, TARGET_VAL(AVR::ADDWRdRr),
954
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
955
0
  0, 
956
0
 50, TARGET_VAL(ISD::ADDE),
957
0
  OPC_CaptureGlueInput,
958
0
  OPC_RecordChild0,
959
0
  OPC_RecordChild1,
960
0
  OPC_Scope, 20, 
961
0
   OPC_MoveChild1,
962
0
   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
963
0
   OPC_MoveParent,
964
0
   OPC_CheckType, MVT::i8,
965
0
   OPC_EmitConvertToTarget1,
966
0
   OPC_EmitNodeXForm, 4, 2,
967
0
   OPC_MorphNodeTo2, TARGET_VAL(AVR::SBCIRdK), 0|OPFL_GlueInput|OPFL_GlueOutput,
968
0
                 MVT::i8, MVT::i8, 2, 0, 3, 
969
0
  11, 
970
0
   OPC_CheckType, MVT::i8,
971
0
   OPC_MorphNodeTo2, TARGET_VAL(AVR::ADCRdRr), 0|OPFL_GlueInput|OPFL_GlueOutput,
972
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
973
0
  11, 
974
0
   OPC_CheckType, MVT::i16,
975
0
   OPC_MorphNodeTo2, TARGET_VAL(AVR::ADCWRdRr), 0|OPFL_GlueInput|OPFL_GlueOutput,
976
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
977
0
  0, 
978
0
 28, TARGET_VAL(AVRISD::WRAPPER),
979
0
  OPC_RecordChild0,
980
0
  OPC_MoveChild0,
981
0
  OPC_SwitchOpcode , 9, TARGET_VAL(ISD::TargetGlobalAddress),
982
0
   OPC_MoveParent,
983
0
   OPC_CheckType, MVT::i16,
984
0
   OPC_MorphNodeTo1None, TARGET_VAL(AVR::LDIWRdK),
985
0
                 MVT::i16, 1, 0, 
986
0
  9, TARGET_VAL(ISD::TargetBlockAddress),
987
0
   OPC_MoveParent,
988
0
   OPC_CheckType, MVT::i16,
989
0
   OPC_MorphNodeTo1None, TARGET_VAL(AVR::LDIWRdK),
990
0
                 MVT::i16, 1, 0, 
991
0
  0,
992
0
 33, TARGET_VAL(AVRISD::SELECT_CC),
993
0
  OPC_CaptureGlueInput,
994
0
  OPC_RecordChild0,
995
0
  OPC_RecordChild1,
996
0
  OPC_RecordChild2,
997
0
  OPC_MoveChild2,
998
0
  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
999
0
  OPC_MoveParent,
1000
0
  OPC_SwitchType , 9, MVT::i8,
1001
0
   OPC_EmitConvertToTarget2,
1002
0
   OPC_MorphNodeTo1GlueInput, TARGET_VAL(AVR::Select8),
1003
0
                 MVT::i8, 3, 0, 1, 3, 
1004
0
  9, MVT::i16,
1005
0
   OPC_EmitConvertToTarget2,
1006
0
   OPC_MorphNodeTo1GlueInput, TARGET_VAL(AVR::Select16),
1007
0
                 MVT::i16, 3, 0, 1, 3, 
1008
0
  0,
1009
0
 34, TARGET_VAL(ISD::Constant),
1010
0
  OPC_Scope, 9, 
1011
0
   OPC_CheckInteger, 0, 
1012
0
   OPC_CheckType, MVT::i8,
1013
0
   OPC_MorphNodeTo1None, TARGET_VAL(AVR::CopyZero),
1014
0
                 MVT::i8, 0, 
1015
0
  21, 
1016
0
   OPC_RecordNode,
1017
0
   OPC_SwitchType , 7, MVT::i8,
1018
0
    OPC_EmitConvertToTarget0,
1019
0
    OPC_MorphNodeTo1None, TARGET_VAL(AVR::LDIRdK),
1020
0
                  MVT::i8, 1, 1, 
1021
0
   7, MVT::i16,
1022
0
    OPC_EmitConvertToTarget0,
1023
0
    OPC_MorphNodeTo1None, TARGET_VAL(AVR::LDIWRdK),
1024
0
                  MVT::i16, 1, 1, 
1025
0
   0,
1026
0
  0, 
1027
0
 29, TARGET_VAL(ISD::ATOMIC_LOAD),
1028
0
  OPC_RecordMemRef,
1029
0
  OPC_RecordNode,
1030
0
  OPC_RecordChild1,
1031
0
  OPC_CheckChild1Type, MVT::i16,
1032
0
  OPC_SwitchType , 9, MVT::i8,
1033
0
   OPC_CheckPredicate4, 
1034
0
   OPC_EmitMergeInputChains1_0,
1035
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoad8), 0|OPFL_Chain|OPFL_MemRefs,
1036
0
                 MVT::i8, 1, 1, 
1037
0
  9, MVT::i16,
1038
0
   OPC_CheckPredicate5, 
1039
0
   OPC_EmitMergeInputChains1_0,
1040
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoad16), 0|OPFL_Chain|OPFL_MemRefs,
1041
0
                 MVT::i16, 1, 1, 
1042
0
  0,
1043
0
 35, TARGET_VAL(ISD::ATOMIC_STORE),
1044
0
  OPC_RecordMemRef,
1045
0
  OPC_RecordNode,
1046
0
  OPC_RecordChild1,
1047
0
  OPC_Scope, 14, 
1048
0
   OPC_CheckChild1Type, MVT::i8,
1049
0
   OPC_RecordChild2,
1050
0
   OPC_CheckChild2Type, MVT::i16,
1051
0
   OPC_CheckPredicate4, 
1052
0
   OPC_EmitMergeInputChains1_0,
1053
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::AtomicStore8), 0|OPFL_Chain|OPFL_MemRefs,
1054
0
                 2, 2, 1, 
1055
0
  14, 
1056
0
   OPC_CheckChild1Type, MVT::i16,
1057
0
   OPC_RecordChild2,
1058
0
   OPC_CheckChild2Type, MVT::i16,
1059
0
   OPC_CheckPredicate5, 
1060
0
   OPC_EmitMergeInputChains1_0,
1061
0
   OPC_MorphNodeTo0, TARGET_VAL(AVR::AtomicStore16), 0|OPFL_Chain|OPFL_MemRefs,
1062
0
                 2, 2, 1, 
1063
0
  0, 
1064
0
 32, TARGET_VAL(ISD::ATOMIC_LOAD_ADD),
1065
0
  OPC_RecordMemRef,
1066
0
  OPC_RecordNode,
1067
0
  OPC_RecordChild1,
1068
0
  OPC_CheckChild1Type, MVT::i16,
1069
0
  OPC_RecordChild2,
1070
0
  OPC_SwitchType , 10, MVT::i8,
1071
0
   OPC_CheckPredicate4, 
1072
0
   OPC_EmitMergeInputChains1_0,
1073
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadAdd8), 0|OPFL_Chain|OPFL_MemRefs,
1074
0
                 MVT::i8, 2, 1, 2, 
1075
0
  10, MVT::i16,
1076
0
   OPC_CheckPredicate5, 
1077
0
   OPC_EmitMergeInputChains1_0,
1078
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadAdd16), 0|OPFL_Chain|OPFL_MemRefs,
1079
0
                 MVT::i16, 2, 1, 2, 
1080
0
  0,
1081
0
 32, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),
1082
0
  OPC_RecordMemRef,
1083
0
  OPC_RecordNode,
1084
0
  OPC_RecordChild1,
1085
0
  OPC_CheckChild1Type, MVT::i16,
1086
0
  OPC_RecordChild2,
1087
0
  OPC_SwitchType , 10, MVT::i8,
1088
0
   OPC_CheckPredicate4, 
1089
0
   OPC_EmitMergeInputChains1_0,
1090
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadSub8), 0|OPFL_Chain|OPFL_MemRefs,
1091
0
                 MVT::i8, 2, 1, 2, 
1092
0
  10, MVT::i16,
1093
0
   OPC_CheckPredicate5, 
1094
0
   OPC_EmitMergeInputChains1_0,
1095
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadSub16), 0|OPFL_Chain|OPFL_MemRefs,
1096
0
                 MVT::i16, 2, 1, 2, 
1097
0
  0,
1098
0
 32, TARGET_VAL(ISD::ATOMIC_LOAD_AND),
1099
0
  OPC_RecordMemRef,
1100
0
  OPC_RecordNode,
1101
0
  OPC_RecordChild1,
1102
0
  OPC_CheckChild1Type, MVT::i16,
1103
0
  OPC_RecordChild2,
1104
0
  OPC_SwitchType , 10, MVT::i8,
1105
0
   OPC_CheckPredicate4, 
1106
0
   OPC_EmitMergeInputChains1_0,
1107
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadAnd8), 0|OPFL_Chain|OPFL_MemRefs,
1108
0
                 MVT::i8, 2, 1, 2, 
1109
0
  10, MVT::i16,
1110
0
   OPC_CheckPredicate5, 
1111
0
   OPC_EmitMergeInputChains1_0,
1112
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadAnd16), 0|OPFL_Chain|OPFL_MemRefs,
1113
0
                 MVT::i16, 2, 1, 2, 
1114
0
  0,
1115
0
 32, TARGET_VAL(ISD::ATOMIC_LOAD_OR),
1116
0
  OPC_RecordMemRef,
1117
0
  OPC_RecordNode,
1118
0
  OPC_RecordChild1,
1119
0
  OPC_CheckChild1Type, MVT::i16,
1120
0
  OPC_RecordChild2,
1121
0
  OPC_SwitchType , 10, MVT::i8,
1122
0
   OPC_CheckPredicate4, 
1123
0
   OPC_EmitMergeInputChains1_0,
1124
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadOr8), 0|OPFL_Chain|OPFL_MemRefs,
1125
0
                 MVT::i8, 2, 1, 2, 
1126
0
  10, MVT::i16,
1127
0
   OPC_CheckPredicate5, 
1128
0
   OPC_EmitMergeInputChains1_0,
1129
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadOr16), 0|OPFL_Chain|OPFL_MemRefs,
1130
0
                 MVT::i16, 2, 1, 2, 
1131
0
  0,
1132
0
 32, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),
1133
0
  OPC_RecordMemRef,
1134
0
  OPC_RecordNode,
1135
0
  OPC_RecordChild1,
1136
0
  OPC_CheckChild1Type, MVT::i16,
1137
0
  OPC_RecordChild2,
1138
0
  OPC_SwitchType , 10, MVT::i8,
1139
0
   OPC_CheckPredicate4, 
1140
0
   OPC_EmitMergeInputChains1_0,
1141
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadXor8), 0|OPFL_Chain|OPFL_MemRefs,
1142
0
                 MVT::i8, 2, 1, 2, 
1143
0
  10, MVT::i16,
1144
0
   OPC_CheckPredicate5, 
1145
0
   OPC_EmitMergeInputChains1_0,
1146
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::AtomicLoadXor16), 0|OPFL_Chain|OPFL_MemRefs,
1147
0
                 MVT::i16, 2, 1, 2, 
1148
0
  0,
1149
0
 13, TARGET_VAL(ISD::BR),
1150
0
  OPC_RecordNode,
1151
0
  OPC_RecordChild1,
1152
0
  OPC_MoveChild1,
1153
0
  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1154
0
  OPC_MoveParent,
1155
0
  OPC_EmitMergeInputChains1_0,
1156
0
  OPC_MorphNodeTo0Chain, TARGET_VAL(AVR::RJMPk),
1157
0
                1, 1, 
1158
0
 8, TARGET_VAL(AVRISD::RET_GLUE),
1159
0
  OPC_RecordNode,
1160
0
  OPC_CaptureGlueInput,
1161
0
  OPC_EmitMergeInputChains1_0,
1162
0
  OPC_MorphNodeTo0, TARGET_VAL(AVR::RET), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
1163
0
                0, 
1164
0
 8, TARGET_VAL(AVRISD::RETI_GLUE),
1165
0
  OPC_RecordNode,
1166
0
  OPC_CaptureGlueInput,
1167
0
  OPC_EmitMergeInputChains1_0,
1168
0
  OPC_MorphNodeTo0, TARGET_VAL(AVR::RETI), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
1169
0
                0, 
1170
0
 28, TARGET_VAL(AVRISD::CMPC),
1171
0
  OPC_CaptureGlueInput,
1172
0
  OPC_RecordChild0,
1173
0
  OPC_Scope, 11, 
1174
0
   OPC_CheckChild0Type, MVT::i8,
1175
0
   OPC_RecordChild1,
1176
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::CPCRdRr), 0|OPFL_GlueInput|OPFL_GlueOutput,
1177
0
                 MVT::i8, 2, 0, 1, 
1178
0
  11, 
1179
0
   OPC_CheckChild0Type, MVT::i16,
1180
0
   OPC_RecordChild1,
1181
0
   OPC_MorphNodeTo1, TARGET_VAL(AVR::CPCWRdRr), 0|OPFL_GlueInput|OPFL_GlueOutput,
1182
0
                 MVT::i8, 2, 0, 1, 
1183
0
  0, 
1184
0
 22, TARGET_VAL(AVRISD::LSL),
1185
0
  OPC_RecordChild0,
1186
0
  OPC_SwitchType , 7, MVT::i16,
1187
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSLWRd),
1188
0
                 MVT::i16, MVT::i8, 1, 0, 
1189
0
  8, MVT::i8,
1190
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::ADDRdRr),
1191
0
                 MVT::i8, MVT::i8, 2, 0, 0, 
1192
0
  0,
1193
0
 10, TARGET_VAL(AVRISD::LSLHI),
1194
0
  OPC_RecordChild0,
1195
0
  OPC_CheckType, MVT::i16,
1196
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSLWHiRd),
1197
0
                MVT::i16, MVT::i8, 1, 0, 
1198
0
 21, TARGET_VAL(AVRISD::LSR),
1199
0
  OPC_RecordChild0,
1200
0
  OPC_SwitchType , 7, MVT::i8,
1201
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSRRd),
1202
0
                 MVT::i8, MVT::i8, 1, 0, 
1203
0
  7, MVT::i16,
1204
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSRWRd),
1205
0
                 MVT::i16, MVT::i8, 1, 0, 
1206
0
  0,
1207
0
 10, TARGET_VAL(AVRISD::LSRLO),
1208
0
  OPC_RecordChild0,
1209
0
  OPC_CheckType, MVT::i16,
1210
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::LSRWLoRd),
1211
0
                MVT::i16, MVT::i8, 1, 0, 
1212
0
 21, TARGET_VAL(AVRISD::ASR),
1213
0
  OPC_RecordChild0,
1214
0
  OPC_SwitchType , 7, MVT::i8,
1215
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::ASRRd),
1216
0
                 MVT::i8, MVT::i8, 1, 0, 
1217
0
  7, MVT::i16,
1218
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::ASRWRd),
1219
0
                 MVT::i16, MVT::i8, 1, 0, 
1220
0
  0,
1221
0
 10, TARGET_VAL(AVRISD::ASRLO),
1222
0
  OPC_RecordChild0,
1223
0
  OPC_CheckType, MVT::i16,
1224
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::ASRWLoRd),
1225
0
                MVT::i16, MVT::i8, 1, 0, 
1226
0
 34, TARGET_VAL(AVRISD::ROL),
1227
0
  OPC_RecordChild0,
1228
0
  OPC_SwitchType , 20, MVT::i8,
1229
0
   OPC_Scope, 8, 
1230
0
    OPC_CheckPatternPredicate5,
1231
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::ROLBRdR1),
1232
0
                  MVT::i8, MVT::i8, 1, 0, 
1233
0
   8, 
1234
0
    OPC_CheckPatternPredicate6,
1235
0
    OPC_MorphNodeTo2None, TARGET_VAL(AVR::ROLBRdR17),
1236
0
                  MVT::i8, MVT::i8, 1, 0, 
1237
0
   0, 
1238
0
  7, MVT::i16,
1239
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::ROLWRd),
1240
0
                 MVT::i16, MVT::i8, 1, 0, 
1241
0
  0,
1242
0
 21, TARGET_VAL(AVRISD::ROR),
1243
0
  OPC_RecordChild0,
1244
0
  OPC_SwitchType , 7, MVT::i8,
1245
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::RORBRd),
1246
0
                 MVT::i8, MVT::i8, 1, 0, 
1247
0
  7, MVT::i16,
1248
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::RORWRd),
1249
0
                 MVT::i16, MVT::i8, 1, 0, 
1250
0
  0,
1251
0
 9, TARGET_VAL(AVRISD::SWAP),
1252
0
  OPC_RecordChild0,
1253
0
  OPC_CheckType, MVT::i8,
1254
0
  OPC_MorphNodeTo1None, TARGET_VAL(AVR::SWAPRd),
1255
0
                MVT::i8, 1, 0, 
1256
0
 8, TARGET_VAL(ISD::SIGN_EXTEND),
1257
0
  OPC_RecordChild0,
1258
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::SEXT),
1259
0
                MVT::i16, MVT::i8, 1, 0, 
1260
0
 8, TARGET_VAL(ISD::ZERO_EXTEND),
1261
0
  OPC_RecordChild0,
1262
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::ZEXT),
1263
0
                MVT::i16, MVT::i8, 1, 0, 
1264
0
 11, TARGET_VAL(AVRISD::TST),
1265
0
  OPC_RecordChild0,
1266
0
  OPC_CheckChild0Type, MVT::i8,
1267
0
  OPC_MorphNodeTo2GlueOutput, TARGET_VAL(AVR::ANDRdRr),
1268
0
                MVT::i8, MVT::i8, 2, 0, 0, 
1269
0
 16, TARGET_VAL(ISD::ANY_EXTEND),
1270
0
  OPC_RecordChild0,
1271
0
  OPC_EmitNode1None, TARGET_VAL(TargetOpcode::IMPLICIT_DEF),
1272
0
                MVT::i16, 0, 
1273
0
  OPC_EmitStringInteger32, AVR::sub_lo,
1274
0
  OPC_MorphNodeTo1None, TARGET_VAL(TargetOpcode::INSERT_SUBREG),
1275
0
                MVT::i16, 3, 1, 0, 2, 
1276
0
 21, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
1277
0
  OPC_RecordChild0,
1278
0
  OPC_MoveChild1,
1279
0
  OPC_CheckValueType, MVT::i8,
1280
0
  OPC_MoveParent,
1281
0
  OPC_EmitStringInteger32, AVR::sub_lo,
1282
0
  OPC_EmitNode1None, TARGET_VAL(TargetOpcode::EXTRACT_SUBREG),
1283
0
                MVT::i8, 2, 0, 1, 
1284
0
  OPC_MorphNodeTo2None, TARGET_VAL(AVR::SEXT),
1285
0
                MVT::i16, MVT::i8, 1, 2, 
1286
0
 26, TARGET_VAL(AVRISD::LSLLOOP),
1287
0
  OPC_RecordChild0,
1288
0
  OPC_RecordChild1,
1289
0
  OPC_CheckChild1Type, MVT::i8,
1290
0
  OPC_SwitchType , 8, MVT::i8,
1291
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Lsl8),
1292
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
1293
0
  8, MVT::i16,
1294
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Lsl16),
1295
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
1296
0
  0,
1297
0
 19, TARGET_VAL(AVRISD::LSLW),
1298
0
  OPC_RecordChild0,
1299
0
  OPC_RecordChild1,
1300
0
  OPC_RecordChild2,
1301
0
  OPC_CheckChild2Type, MVT::i8,
1302
0
  OPC_CheckType, MVT::i16,
1303
0
  OPC_MorphNodeTo, TARGET_VAL(AVR::Lsl32), 0,
1304
0
                3, MVT::i16, MVT::i16, MVT::i8, 3, 0, 1, 2, 
1305
0
 26, TARGET_VAL(AVRISD::LSRLOOP),
1306
0
  OPC_RecordChild0,
1307
0
  OPC_RecordChild1,
1308
0
  OPC_CheckChild1Type, MVT::i8,
1309
0
  OPC_SwitchType , 8, MVT::i8,
1310
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Lsr8),
1311
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
1312
0
  8, MVT::i16,
1313
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Lsr16),
1314
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
1315
0
  0,
1316
0
 19, TARGET_VAL(AVRISD::LSRW),
1317
0
  OPC_RecordChild0,
1318
0
  OPC_RecordChild1,
1319
0
  OPC_RecordChild2,
1320
0
  OPC_CheckChild2Type, MVT::i8,
1321
0
  OPC_CheckType, MVT::i16,
1322
0
  OPC_MorphNodeTo, TARGET_VAL(AVR::Lsr32), 0,
1323
0
                3, MVT::i16, MVT::i16, MVT::i8, 3, 0, 1, 2, 
1324
0
 26, TARGET_VAL(AVRISD::ROLLOOP),
1325
0
  OPC_RecordChild0,
1326
0
  OPC_RecordChild1,
1327
0
  OPC_CheckChild1Type, MVT::i8,
1328
0
  OPC_SwitchType , 8, MVT::i8,
1329
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Rol8),
1330
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
1331
0
  8, MVT::i16,
1332
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Rol16),
1333
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
1334
0
  0,
1335
0
 26, TARGET_VAL(AVRISD::RORLOOP),
1336
0
  OPC_RecordChild0,
1337
0
  OPC_RecordChild1,
1338
0
  OPC_CheckChild1Type, MVT::i8,
1339
0
  OPC_SwitchType , 8, MVT::i8,
1340
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Ror8),
1341
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
1342
0
  8, MVT::i16,
1343
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Ror16),
1344
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
1345
0
  0,
1346
0
 26, TARGET_VAL(AVRISD::ASRLOOP),
1347
0
  OPC_RecordChild0,
1348
0
  OPC_RecordChild1,
1349
0
  OPC_CheckChild1Type, MVT::i8,
1350
0
  OPC_SwitchType , 8, MVT::i8,
1351
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Asr8),
1352
0
                 MVT::i8, MVT::i8, 2, 0, 1, 
1353
0
  8, MVT::i16,
1354
0
   OPC_MorphNodeTo2None, TARGET_VAL(AVR::Asr16),
1355
0
                 MVT::i16, MVT::i8, 2, 0, 1, 
1356
0
  0,
1357
0
 19, TARGET_VAL(AVRISD::ASRW),
1358
0
  OPC_RecordChild0,
1359
0
  OPC_RecordChild1,
1360
0
  OPC_RecordChild2,
1361
0
  OPC_CheckChild2Type, MVT::i8,
1362
0
  OPC_CheckType, MVT::i16,
1363
0
  OPC_MorphNodeTo, TARGET_VAL(AVR::Asr32), 0,
1364
0
                3, MVT::i16, MVT::i16, MVT::i8, 3, 0, 1, 2, 
1365
0
 0,
1366
0
    0
1367
0
  }; // Total Array size is 2754 bytes
1368
1369
0
  #undef TARGET_VAL
1370
0
  SelectCodeCommon(N, MatcherTable,sizeof(MatcherTable));
1371
0
}
1372
#endif // GET_DAGISEL_BODY
1373
1374
#ifdef GET_DAGISEL_DECL
1375
bool CheckPatternPredicate(unsigned PredNo) const override;
1376
#endif
1377
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
1378
bool DAGISEL_CLASS_COLONCOLON CheckPatternPredicate(unsigned PredNo) const
1379
#if DAGISEL_INLINE
1380
  override
1381
#endif
1382
0
{
1383
0
  switch (PredNo) {
1384
0
  default: llvm_unreachable("Invalid predicate in table?");
1385
0
  case 0: return (!Subtarget->hasTinyEncoding()) && (Subtarget->hasSRAM());
1386
0
  case 1: return (Subtarget->hasSRAM());
1387
0
  case 2: return (Subtarget->hasSRAM()) && (Subtarget->hasTinyEncoding());
1388
0
  case 3: return (Subtarget->hasADDSUBIW());
1389
0
  case 4: return (Subtarget->hasJMPCALL());
1390
0
  case 5: return (!Subtarget->hasTinyEncoding());
1391
0
  case 6: return (Subtarget->hasTinyEncoding());
1392
0
  }
1393
0
}
1394
#endif // GET_DAGISEL_BODY
1395
1396
#ifdef GET_DAGISEL_DECL
1397
bool CheckNodePredicate(SDNode *Node, unsigned PredNo) const override;
1398
#endif
1399
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
1400
bool DAGISEL_CLASS_COLONCOLON CheckNodePredicate(SDNode *Node, unsigned PredNo) const
1401
#if DAGISEL_INLINE
1402
  override
1403
#endif
1404
0
{
1405
0
  switch (PredNo) {
1406
0
  default: llvm_unreachable("Invalid predicate in table?");
1407
0
  case 0: {
1408
    // Predicate_istore
1409
    // Predicate_store
1410
0
    SDNode *N = Node;
1411
0
    (void)N;
1412
0
 if (cast<StoreSDNode>(N)->isTruncatingStore()) return false;
1413
0
return true;
1414
1415
0
  }
1416
0
  case 1: {
1417
    // Predicate_unindexedstore
1418
0
    SDNode *N = Node;
1419
0
    (void)N;
1420
0
if (cast<StoreSDNode>(N)->getAddressingMode() != ISD::UNINDEXED) return false;
1421
0
return true;
1422
1423
0
  }
1424
0
  case 2: {
1425
    // Predicate_load
1426
0
    SDNode *N = Node;
1427
0
    (void)N;
1428
0
if (cast<LoadSDNode>(N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
1429
0
return true;
1430
1431
0
  }
1432
0
  case 3: {
1433
    // Predicate_unindexedload
1434
0
    SDNode *N = Node;
1435
0
    (void)N;
1436
0
if (cast<LoadSDNode>(N)->getAddressingMode() != ISD::UNINDEXED) return false;
1437
0
return true;
1438
1439
0
  }
1440
0
  case 4: {
1441
    // Predicate_atomic_load_8
1442
    // Predicate_atomic_load_add_8
1443
    // Predicate_atomic_load_and_8
1444
    // Predicate_atomic_load_or_8
1445
    // Predicate_atomic_load_sub_8
1446
    // Predicate_atomic_load_xor_8
1447
    // Predicate_atomic_store_8
1448
0
    SDNode *N = Node;
1449
0
    (void)N;
1450
0
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i8) return false;
1451
0
return true;
1452
1453
0
  }
1454
0
  case 5: {
1455
    // Predicate_atomic_load_16
1456
    // Predicate_atomic_load_add_16
1457
    // Predicate_atomic_load_and_16
1458
    // Predicate_atomic_load_or_16
1459
    // Predicate_atomic_load_sub_16
1460
    // Predicate_atomic_load_xor_16
1461
    // Predicate_atomic_store_16
1462
0
    SDNode *N = Node;
1463
0
    (void)N;
1464
0
if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i16) return false;
1465
0
return true;
1466
1467
0
  }
1468
0
  case 6: {
1469
    // Predicate_pre_store
1470
0
    SDNode *N = Node;
1471
0
    (void)N;
1472
1473
0
  ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
1474
0
  return AM == ISD::PRE_INC || AM == ISD::PRE_DEC;
1475
1476
0
  }
1477
0
  case 7: {
1478
    // Predicate_ioaddr16
1479
0
    auto *N = cast<ConstantSDNode>(Node);
1480
0
    (void)N;
1481
1482
0
                         uint8_t offset = Subtarget->getIORegisterOffset();
1483
0
                         uint64_t val = N->getZExtValue() - offset;
1484
0
                         return val < 0x3f;
1485
                       
1486
0
  }
1487
0
  case 8: {
1488
    // Predicate_ioaddr8
1489
0
    auto *N = cast<ConstantSDNode>(Node);
1490
0
    (void)N;
1491
1492
0
                        uint8_t offset = Subtarget->getIORegisterOffset();
1493
0
                        uint64_t val = N->getZExtValue() - offset;
1494
0
                        return val < 0x40;
1495
                      
1496
0
  }
1497
0
  case 9: {
1498
    // Predicate_post_store
1499
0
    SDNode *N = Node;
1500
0
    (void)N;
1501
1502
0
  ISD::MemIndexedMode AM = cast<StoreSDNode>(N)->getAddressingMode();
1503
0
  return AM == ISD::POST_INC || AM == ISD::POST_DEC;
1504
1505
0
  }
1506
0
  case 10: {
1507
    // Predicate_uimm6
1508
0
    auto *N = cast<ConstantSDNode>(Node);
1509
0
    (void)N;
1510
0
 return isUInt<6>(N->getZExtValue()); 
1511
0
  }
1512
0
  case 11: {
1513
    // Predicate_lowioaddr8
1514
0
    auto *N = cast<ConstantSDNode>(Node);
1515
0
    (void)N;
1516
1517
0
                           uint8_t offset = Subtarget->getIORegisterOffset();
1518
0
                           uint64_t val = N->getZExtValue() - offset;
1519
0
                           return val < 0x20;
1520
                         
1521
0
  }
1522
0
  case 12: {
1523
    // Predicate_iobitpos8
1524
0
    auto *N = cast<ConstantSDNode>(Node);
1525
0
    (void)N;
1526
0
 return isPowerOf2_32(uint8_t(N->getZExtValue())); 
1527
0
  }
1528
0
  case 13: {
1529
    // Predicate_imm0_63_neg
1530
0
    auto *N = cast<ConstantSDNode>(Node);
1531
0
    (void)N;
1532
1533
0
                            int64_t val = -N->getSExtValue();
1534
0
                            return val >= 0 && val < 64;
1535
                          
1536
0
  }
1537
0
  case 14: {
1538
    // Predicate_iobitposn8
1539
0
    auto *N = cast<ConstantSDNode>(Node);
1540
0
    (void)N;
1541
0
 return isPowerOf2_32(uint8_t(~N->getZExtValue())); 
1542
0
  }
1543
0
  }
1544
0
}
1545
#endif // GET_DAGISEL_BODY
1546
1547
#ifdef GET_DAGISEL_DECL
1548
bool CheckComplexPattern(SDNode *Root, SDNode *Parent,
1549
      SDValue N, unsigned PatternNo,
1550
      SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result) override;
1551
#endif
1552
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
1553
bool DAGISEL_CLASS_COLONCOLON CheckComplexPattern(SDNode *Root, SDNode *Parent,
1554
      SDValue N, unsigned PatternNo,
1555
      SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result)
1556
#if DAGISEL_INLINE
1557
  override
1558
#endif
1559
0
{
1560
0
  unsigned NextRes = Result.size();
1561
0
  switch (PatternNo) {
1562
0
  default: llvm_unreachable("Invalid pattern # in table?");
1563
0
  case 0:
1564
0
    Result.resize(NextRes+2);
1565
0
  return SelectAddr(Root, N, Result[NextRes+0].first, Result[NextRes+1].first);
1566
0
  }
1567
0
}
1568
#endif // GET_DAGISEL_BODY
1569
1570
#ifdef GET_DAGISEL_DECL
1571
SDValue RunSDNodeXForm(SDValue V, unsigned XFormNo) override;
1572
#endif
1573
#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
1574
SDValue DAGISEL_CLASS_COLONCOLON RunSDNodeXForm(SDValue V, unsigned XFormNo)
1575
#if DAGISEL_INLINE
1576
  override
1577
#endif
1578
0
{
1579
0
  switch (XFormNo) {
1580
0
  default: llvm_unreachable("Invalid xform # in table?");
1581
0
  case 0: {  
1582
0
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
1583
1584
0
                    uint8_t offset = Subtarget->getIORegisterOffset();
1585
0
                    return CurDAG->getTargetConstant(
1586
0
                        uint8_t(N->getZExtValue()) - offset, SDLoc(N), MVT::i8);
1587
                  
1588
0
  }
1589
0
  case 1: {  
1590
0
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
1591
1592
0
                    return CurDAG->getTargetConstant(
1593
0
                        Log2_32(uint8_t(N->getZExtValue())), SDLoc(N), MVT::i8);
1594
                  
1595
0
  }
1596
0
  case 2: {  
1597
0
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
1598
1599
0
                                     return CurDAG->getTargetConstant(
1600
0
                                         Log2_32(uint8_t(~N->getZExtValue())),
1601
0
                                         SDLoc(N), MVT::i8);
1602
                                   
1603
0
  }
1604
0
  case 3: {  
1605
0
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
1606
1607
0
                    return CurDAG->getTargetConstant(-N->getAPIntValue(),
1608
0
                                                     SDLoc(N), MVT::i16);
1609
                  
1610
0
  }
1611
0
  case 4: {  
1612
0
    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
1613
1614
0
                                   return CurDAG->getTargetConstant(
1615
0
                                       -N->getAPIntValue(), SDLoc(N), MVT::i8);
1616
                                 
1617
0
  }
1618
0
  }
1619
0
}
1620
#endif // GET_DAGISEL_BODY
1621
1622
1623
#ifdef DAGISEL_INLINE
1624
#undef DAGISEL_INLINE
1625
#endif
1626
#ifdef DAGISEL_CLASS_COLONCOLON
1627
#undef DAGISEL_CLASS_COLONCOLON
1628
#endif
1629
#ifdef GET_DAGISEL_DECL
1630
#undef GET_DAGISEL_DECL
1631
#endif
1632
#ifdef GET_DAGISEL_BODY
1633
#undef GET_DAGISEL_BODY
1634
#endif