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