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