1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* DAG Instruction Selector for the XCore 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 , 42|128,1, TARGET_VAL(ISD::ADD),
58 OPC_Scope, 16,
59 OPC_MoveChild0,
60 OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
61 OPC_CheckChild0Integer, 2,
62 OPC_RecordChild1,
63 OPC_MoveParent,
64 OPC_CheckChild1Integer, 3,
65 OPC_MorphNodeTo1None, TARGET_VAL(XCore::MKMSK_2r),
66 MVT::i32, 1, 0,
67 30,
68 OPC_RecordChild0,
69 OPC_MoveChild1,
70 OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
71 OPC_RecordChild0,
72 OPC_Scope, 10,
73 OPC_CheckChild1Integer, 4,
74 OPC_MoveParent,
75 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWF_l3r),
76 MVT::i32, 2, 0, 1,
77 10,
78 OPC_CheckChild1Integer, 2,
79 OPC_MoveParent,
80 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDA16F_l3r),
81 MVT::i32, 2, 0, 1,
82 0,
83 31,
84 OPC_MoveChild0,
85 OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
86 OPC_RecordChild0,
87 OPC_Scope, 11,
88 OPC_CheckChild1Integer, 4,
89 OPC_MoveParent,
90 OPC_RecordChild1,
91 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWF_l3r),
92 MVT::i32, 2, 1, 0,
93 11,
94 OPC_CheckChild1Integer, 2,
95 OPC_MoveParent,
96 OPC_RecordChild1,
97 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDA16F_l3r),
98 MVT::i32, 2, 1, 0,
99 0,
100 11,
101 OPC_RecordNode,
102 OPC_CheckTypeI32,
103 OPC_CheckComplexPat0, /*#*/0,
104 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWFI),
105 MVT::i32, 2, 1, 2,
106 75,
107 OPC_RecordChild0,
108 OPC_RecordChild1,
109 OPC_Scope, 62,
110 OPC_MoveChild1,
111 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
112 OPC_Scope, 10,
113 OPC_CheckPredicate2,
114 OPC_MoveParent,
115 OPC_EmitConvertToTarget1,
116 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ADD_2rus),
117 MVT::i32, 2, 0, 2,
118 14,
119 OPC_CheckPredicate, 9,
120 OPC_MoveParent,
121 OPC_EmitConvertToTarget1,
122 OPC_EmitNodeXForm, 0, 2,
123 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWF_l2rus),
124 MVT::i32, 2, 0, 3,
125 14,
126 OPC_CheckPredicate, 17,
127 OPC_MoveParent,
128 OPC_EmitConvertToTarget1,
129 OPC_EmitNodeXForm, 1, 2,
130 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SUB_2rus),
131 MVT::i32, 2, 0, 3,
132 14,
133 OPC_CheckPredicate, 18,
134 OPC_MoveParent,
135 OPC_EmitConvertToTarget1,
136 OPC_EmitNodeXForm, 2, 2,
137 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWB_l2rus),
138 MVT::i32, 2, 0, 3,
139 0,
140 7,
141 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ADD_3r),
142 MVT::i32, 2, 0, 1,
143 0,
144 0,
145 6|128,3, TARGET_VAL(ISD::LOAD),
146 OPC_RecordMemRef,
147 OPC_RecordNode,
148 OPC_Scope, 1|128,1,
149 OPC_MoveChild1,
150 OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
151 OPC_Scope, 60,
152 OPC_RecordChild0,
153 OPC_MoveChild1,
154 OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
155 OPC_RecordChild0,
156 OPC_Scope, 34,
157 OPC_CheckChild1Integer, 2,
158 OPC_MoveParent,
159 OPC_MoveParent,
160 OPC_CheckPredicate0,
161 OPC_CheckTypeI32,
162 OPC_Scope, 12,
163 OPC_CheckPredicate, 13,
164 OPC_CheckPredicate6,
165 OPC_EmitMergeInputChains1_0,
166 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD16S_3r), 0|OPFL_Chain|OPFL_MemRefs,
167 MVT::i32, 2, 1, 2,
168 12,
169 OPC_CheckPredicate, 10,
170 OPC_CheckPredicate6,
171 OPC_EmitMergeInputChains1_0,
172 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD16S_3r), 0|OPFL_Chain|OPFL_MemRefs,
173 MVT::i32, 2, 1, 2,
174 0,
175 16,
176 OPC_CheckChild1Integer, 4,
177 OPC_MoveParent,
178 OPC_MoveParent,
179 OPC_CheckPredicate0,
180 OPC_CheckPredicate3,
181 OPC_CheckTypeI32,
182 OPC_EmitMergeInputChains1_0,
183 OPC_MorphNodeTo1, TARGET_VAL(XCore::LDW_3r), 0|OPFL_Chain|OPFL_MemRefs,
184 MVT::i32, 2, 1, 2,
185 0,
186 61,
187 OPC_MoveChild0,
188 OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
189 OPC_RecordChild0,
190 OPC_Scope, 35,
191 OPC_CheckChild1Integer, 2,
192 OPC_MoveParent,
193 OPC_RecordChild1,
194 OPC_MoveParent,
195 OPC_CheckPredicate0,
196 OPC_CheckTypeI32,
197 OPC_Scope, 12,
198 OPC_CheckPredicate, 13,
199 OPC_CheckPredicate6,
200 OPC_EmitMergeInputChains1_0,
201 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD16S_3r), 0|OPFL_Chain|OPFL_MemRefs,
202 MVT::i32, 2, 2, 1,
203 12,
204 OPC_CheckPredicate, 10,
205 OPC_CheckPredicate6,
206 OPC_EmitMergeInputChains1_0,
207 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD16S_3r), 0|OPFL_Chain|OPFL_MemRefs,
208 MVT::i32, 2, 2, 1,
209 0,
210 17,
211 OPC_CheckChild1Integer, 4,
212 OPC_MoveParent,
213 OPC_RecordChild1,
214 OPC_MoveParent,
215 OPC_CheckPredicate0,
216 OPC_CheckPredicate3,
217 OPC_CheckTypeI32,
218 OPC_EmitMergeInputChains1_0,
219 OPC_MorphNodeTo1, TARGET_VAL(XCore::LDW_3r), 0|OPFL_Chain|OPFL_MemRefs,
220 MVT::i32, 2, 2, 1,
221 0,
222 0,
223 16,
224 OPC_RecordChild1,
225 OPC_CheckChild1TypeI32,
226 OPC_CheckPredicate0,
227 OPC_CheckPredicate3,
228 OPC_CheckTypeI32,
229 OPC_CheckComplexPat0, /*#*/1,
230 OPC_EmitMergeInputChains1_0,
231 OPC_MorphNodeTo1, TARGET_VAL(XCore::LDWFI), 0|OPFL_Chain|OPFL_MemRefs,
232 MVT::i32, 2, 2, 3,
233 1|128,1,
234 OPC_MoveChild1,
235 OPC_SwitchOpcode , 63, TARGET_VAL(ISD::ADD),
236 OPC_RecordChild0,
237 OPC_RecordChild1,
238 OPC_Scope, 24,
239 OPC_MoveChild1,
240 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
241 OPC_CheckPredicate, 9,
242 OPC_MoveParent,
243 OPC_MoveParent,
244 OPC_CheckPredicate0,
245 OPC_CheckPredicate3,
246 OPC_CheckTypeI32,
247 OPC_EmitMergeInputChains1_0,
248 OPC_EmitConvertToTarget2,
249 OPC_EmitNodeXForm, 0, 3,
250 OPC_MorphNodeTo1, TARGET_VAL(XCore::LDW_2rus), 0|OPFL_Chain|OPFL_MemRefs,
251 MVT::i32, 2, 1, 4,
252 33,
253 OPC_MoveParent,
254 OPC_CheckPredicate0,
255 OPC_CheckTypeI32,
256 OPC_Scope, 13,
257 OPC_CheckPredicate, 15,
258 OPC_CheckPredicate, 11,
259 OPC_EmitMergeInputChains1_0,
260 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD8U_3r), 0|OPFL_Chain|OPFL_MemRefs,
261 MVT::i32, 2, 1, 2,
262 13,
263 OPC_CheckPredicate, 10,
264 OPC_CheckPredicate, 11,
265 OPC_EmitMergeInputChains1_0,
266 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD8U_3r), 0|OPFL_Chain|OPFL_MemRefs,
267 MVT::i32, 2, 1, 2,
268 0,
269 0,
270 18, TARGET_VAL(XCoreISD::DPRelativeWrapper),
271 OPC_RecordChild0,
272 OPC_MoveChild0,
273 OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalAddress),
274 OPC_MoveParent,
275 OPC_MoveParent,
276 OPC_CheckPredicate0,
277 OPC_CheckPredicate3,
278 OPC_CheckTypeI32,
279 OPC_EmitMergeInputChains1_0,
280 OPC_MorphNodeTo1, TARGET_VAL(XCore::LDWDP_lru6), 0|OPFL_Chain|OPFL_MemRefs,
281 MVT::i32, 1, 1,
282 36, TARGET_VAL(XCoreISD::CPRelativeWrapper),
283 OPC_RecordChild0,
284 OPC_MoveChild0,
285 OPC_SwitchOpcode , 13, TARGET_VAL(ISD::TargetGlobalAddress),
286 OPC_MoveParent,
287 OPC_MoveParent,
288 OPC_CheckPredicate0,
289 OPC_CheckPredicate3,
290 OPC_CheckTypeI32,
291 OPC_EmitMergeInputChains1_0,
292 OPC_MorphNodeTo1, TARGET_VAL(XCore::LDWCP_lru6), 0|OPFL_Chain|OPFL_MemRefs,
293 MVT::i32, 1, 1,
294 13, TARGET_VAL(ISD::TargetConstantPool),
295 OPC_MoveParent,
296 OPC_MoveParent,
297 OPC_CheckPredicate0,
298 OPC_CheckPredicate3,
299 OPC_CheckTypeI32,
300 OPC_EmitMergeInputChains1_0,
301 OPC_MorphNodeTo1, TARGET_VAL(XCore::LDWCP_lru6), 0|OPFL_Chain|OPFL_MemRefs,
302 MVT::i32, 1, 1,
303 0,
304 0,
305 106,
306 OPC_RecordChild1,
307 OPC_CheckChild1TypeI32,
308 OPC_CheckPredicate0,
309 OPC_CheckTypeI32,
310 OPC_Scope, 12,
311 OPC_CheckPredicate3,
312 OPC_EmitMergeInputChains1_0,
313 OPC_EmitInteger32, 0,
314 OPC_MorphNodeTo1, TARGET_VAL(XCore::LDW_2rus), 0|OPFL_Chain|OPFL_MemRefs,
315 MVT::i32, 2, 1, 2,
316 21,
317 OPC_CheckPredicate, 15,
318 OPC_CheckPredicate, 11,
319 OPC_EmitMergeInputChains1_0,
320 OPC_EmitInteger32, 0,
321 OPC_EmitNode1None, TARGET_VAL(XCore::LDC_ru6),
322 MVT::i32, 1, 2,
323 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD8U_3r), 0|OPFL_Chain|OPFL_MemRefs,
324 MVT::i32, 2, 1, 3,
325 20,
326 OPC_CheckPredicate, 13,
327 OPC_CheckPredicate6,
328 OPC_EmitMergeInputChains1_0,
329 OPC_EmitInteger32, 0,
330 OPC_EmitNode1None, TARGET_VAL(XCore::LDC_ru6),
331 MVT::i32, 1, 2,
332 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD16S_3r), 0|OPFL_Chain|OPFL_MemRefs,
333 MVT::i32, 2, 1, 3,
334 43,
335 OPC_CheckPredicate, 10,
336 OPC_Scope, 19,
337 OPC_CheckPredicate, 11,
338 OPC_EmitMergeInputChains1_0,
339 OPC_EmitInteger32, 0,
340 OPC_EmitNode1None, TARGET_VAL(XCore::LDC_ru6),
341 MVT::i32, 1, 2,
342 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD8U_3r), 0|OPFL_Chain|OPFL_MemRefs,
343 MVT::i32, 2, 1, 3,
344 18,
345 OPC_CheckPredicate6,
346 OPC_EmitMergeInputChains1_0,
347 OPC_EmitInteger32, 0,
348 OPC_EmitNode1None, TARGET_VAL(XCore::LDC_ru6),
349 MVT::i32, 1, 2,
350 OPC_MorphNodeTo1, TARGET_VAL(XCore::LD16S_3r), 0|OPFL_Chain|OPFL_MemRefs,
351 MVT::i32, 2, 1, 3,
352 0,
353 0,
354 0,
355 125|128,1, TARGET_VAL(ISD::STORE),
356 OPC_RecordMemRef,
357 OPC_RecordNode,
358 OPC_RecordChild1,
359 OPC_CheckChild1TypeI32,
360 OPC_Scope, 95,
361 OPC_MoveChild2,
362 OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
363 OPC_Scope, 43,
364 OPC_RecordChild0,
365 OPC_MoveChild1,
366 OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
367 OPC_RecordChild0,
368 OPC_Scope, 18,
369 OPC_CheckChild1Integer, 2,
370 OPC_MoveParent,
371 OPC_MoveParent,
372 OPC_CheckPredicate1,
373 OPC_CheckPredicate, 12,
374 OPC_CheckPredicate, 14,
375 OPC_EmitMergeInputChains1_0,
376 OPC_MorphNodeTo0, TARGET_VAL(XCore::ST16_l3r), 0|OPFL_Chain|OPFL_MemRefs,
377 3, 1, 2, 3,
378 15,
379 OPC_CheckChild1Integer, 4,
380 OPC_MoveParent,
381 OPC_MoveParent,
382 OPC_CheckPredicate1,
383 OPC_CheckPredicate7,
384 OPC_EmitMergeInputChains1_0,
385 OPC_MorphNodeTo0, TARGET_VAL(XCore::STW_l3r), 0|OPFL_Chain|OPFL_MemRefs,
386 3, 1, 2, 3,
387 0,
388 44,
389 OPC_MoveChild0,
390 OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
391 OPC_RecordChild0,
392 OPC_Scope, 19,
393 OPC_CheckChild1Integer, 2,
394 OPC_MoveParent,
395 OPC_RecordChild1,
396 OPC_MoveParent,
397 OPC_CheckPredicate1,
398 OPC_CheckPredicate, 12,
399 OPC_CheckPredicate, 14,
400 OPC_EmitMergeInputChains1_0,
401 OPC_MorphNodeTo0, TARGET_VAL(XCore::ST16_l3r), 0|OPFL_Chain|OPFL_MemRefs,
402 3, 1, 3, 2,
403 16,
404 OPC_CheckChild1Integer, 4,
405 OPC_MoveParent,
406 OPC_RecordChild1,
407 OPC_MoveParent,
408 OPC_CheckPredicate1,
409 OPC_CheckPredicate7,
410 OPC_EmitMergeInputChains1_0,
411 OPC_MorphNodeTo0, TARGET_VAL(XCore::STW_l3r), 0|OPFL_Chain|OPFL_MemRefs,
412 3, 1, 3, 2,
413 0,
414 0,
415 15,
416 OPC_RecordChild2,
417 OPC_CheckChild2TypeI32,
418 OPC_CheckPredicate1,
419 OPC_CheckPredicate7,
420 OPC_CheckComplexPat0, /*#*/2,
421 OPC_EmitMergeInputChains1_0,
422 OPC_MorphNodeTo0, TARGET_VAL(XCore::STWFI), 0|OPFL_Chain|OPFL_MemRefs,
423 3, 1, 3, 4,
424 70,
425 OPC_MoveChild2,
426 OPC_SwitchOpcode , 44, TARGET_VAL(ISD::ADD),
427 OPC_RecordChild0,
428 OPC_RecordChild1,
429 OPC_Scope, 23,
430 OPC_MoveChild1,
431 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
432 OPC_CheckPredicate, 9,
433 OPC_MoveParent,
434 OPC_MoveParent,
435 OPC_CheckPredicate1,
436 OPC_CheckPredicate7,
437 OPC_EmitMergeInputChains1_0,
438 OPC_EmitConvertToTarget3,
439 OPC_EmitNodeXForm, 0, 4,
440 OPC_MorphNodeTo0, TARGET_VAL(XCore::STW_2rus), 0|OPFL_Chain|OPFL_MemRefs,
441 3, 1, 2, 5,
442 15,
443 OPC_MoveParent,
444 OPC_CheckPredicate1,
445 OPC_CheckPredicate, 12,
446 OPC_CheckPredicate, 16,
447 OPC_EmitMergeInputChains1_0,
448 OPC_MorphNodeTo0, TARGET_VAL(XCore::ST8_l3r), 0|OPFL_Chain|OPFL_MemRefs,
449 3, 1, 2, 3,
450 0,
451 17, TARGET_VAL(XCoreISD::DPRelativeWrapper),
452 OPC_RecordChild0,
453 OPC_MoveChild0,
454 OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalAddress),
455 OPC_MoveParent,
456 OPC_MoveParent,
457 OPC_CheckPredicate1,
458 OPC_CheckPredicate7,
459 OPC_EmitMergeInputChains1_0,
460 OPC_MorphNodeTo0, TARGET_VAL(XCore::STWDP_lru6), 0|OPFL_Chain|OPFL_MemRefs,
461 2, 1, 2,
462 0,
463 63,
464 OPC_RecordChild2,
465 OPC_CheckChild2TypeI32,
466 OPC_CheckPredicate1,
467 OPC_Scope, 12,
468 OPC_CheckPredicate7,
469 OPC_EmitMergeInputChains1_0,
470 OPC_EmitInteger32, 0,
471 OPC_MorphNodeTo0, TARGET_VAL(XCore::STW_2rus), 0|OPFL_Chain|OPFL_MemRefs,
472 3, 1, 2, 3,
473 44,
474 OPC_CheckPredicate, 12,
475 OPC_Scope, 19,
476 OPC_CheckPredicate, 16,
477 OPC_EmitMergeInputChains1_0,
478 OPC_EmitInteger32, 0,
479 OPC_EmitNode1None, TARGET_VAL(XCore::LDC_ru6),
480 MVT::i32, 1, 3,
481 OPC_MorphNodeTo0, TARGET_VAL(XCore::ST8_l3r), 0|OPFL_Chain|OPFL_MemRefs,
482 3, 1, 2, 4,
483 19,
484 OPC_CheckPredicate, 14,
485 OPC_EmitMergeInputChains1_0,
486 OPC_EmitInteger32, 0,
487 OPC_EmitNode1None, TARGET_VAL(XCore::LDC_ru6),
488 MVT::i32, 1, 3,
489 OPC_MorphNodeTo0, TARGET_VAL(XCore::ST16_l3r), 0|OPFL_Chain|OPFL_MemRefs,
490 3, 1, 2, 4,
491 0,
492 0,
493 0,
494 74, TARGET_VAL(ISD::SRA),
495 OPC_Scope, 27,
496 OPC_MoveChild0,
497 OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
498 OPC_RecordChild0,
499 OPC_RecordChild1,
500 OPC_MoveChild1,
501 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
502 OPC_CheckPredicate, 19,
503 OPC_MoveParent,
504 OPC_MoveParent,
505 OPC_CheckChild1Same, 1,
506 OPC_EmitConvertToTarget1,
507 OPC_EmitNodeXForm, 3, 2,
508 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SEXT_rus),
509 MVT::i32, 2, 0, 3,
510 43,
511 OPC_RecordChild0,
512 OPC_Scope, 11,
513 OPC_CheckChild1Integer, 62,
514 OPC_EmitInteger32, 64,
515 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ASHR_l2rus),
516 MVT::i32, 2, 0, 1,
517 27,
518 OPC_RecordChild1,
519 OPC_Scope, 15,
520 OPC_MoveChild1,
521 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
522 OPC_CheckPredicate, 8,
523 OPC_MoveParent,
524 OPC_EmitConvertToTarget1,
525 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ASHR_l2rus),
526 MVT::i32, 2, 0, 2,
527 7,
528 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ASHR_l3r),
529 MVT::i32, 2, 0, 1,
530 0,
531 0,
532 0,
533 31|128,4, TARGET_VAL(ISD::INTRINSIC_VOID),
534 OPC_RecordNode,
535 OPC_Scope, 46,
536 OPC_CheckChild1Integer, 64|128,89|128,1,
537 OPC_RecordChild2,
538 OPC_CheckChild2TypeI32,
539 OPC_RecordChild3,
540 OPC_Scope, 28,
541 OPC_MoveChild3,
542 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
543 OPC_Scope, 10,
544 OPC_CheckPredicate4,
545 OPC_MoveParent,
546 OPC_EmitMergeInputChains1_0,
547 OPC_EmitConvertToTarget2,
548 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETC_ru6),
549 2, 1, 3,
550 10,
551 OPC_CheckPredicate5,
552 OPC_MoveParent,
553 OPC_EmitMergeInputChains1_0,
554 OPC_EmitConvertToTarget2,
555 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETC_lru6),
556 2, 1, 3,
557 0,
558 7,
559 OPC_EmitMergeInputChains1_0,
560 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETC_l2r),
561 2, 1, 2,
562 0,
563 31,
564 OPC_CheckChild1Integer, 80|128,89|128,1,
565 OPC_RecordChild2,
566 OPC_MoveChild2,
567 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
568 OPC_Scope, 9,
569 OPC_CheckPredicate4,
570 OPC_MoveParent,
571 OPC_EmitMergeInputChains1_0,
572 OPC_EmitConvertToTarget1,
573 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETSR_u6),
574 1, 2,
575 9,
576 OPC_CheckPredicate5,
577 OPC_MoveParent,
578 OPC_EmitMergeInputChains1_0,
579 OPC_EmitConvertToTarget1,
580 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETSR_lu6),
581 1, 2,
582 0,
583 31,
584 OPC_CheckChild1Integer, 4|128,89|128,1,
585 OPC_RecordChild2,
586 OPC_MoveChild2,
587 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
588 OPC_Scope, 9,
589 OPC_CheckPredicate4,
590 OPC_MoveParent,
591 OPC_EmitMergeInputChains1_0,
592 OPC_EmitConvertToTarget1,
593 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::CLRSR_u6),
594 1, 2,
595 9,
596 OPC_CheckPredicate5,
597 OPC_MoveParent,
598 OPC_EmitMergeInputChains1_0,
599 OPC_EmitConvertToTarget1,
600 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::CLRSR_lu6),
601 1, 2,
602 0,
603 32,
604 OPC_CheckChild1Integer, 56|128,89|128,1,
605 OPC_RecordChild2,
606 OPC_CheckChild2TypeI32,
607 OPC_RecordChild3,
608 OPC_Scope, 14,
609 OPC_MoveChild3,
610 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
611 OPC_CheckPredicate2,
612 OPC_MoveParent,
613 OPC_EmitMergeInputChains1_0,
614 OPC_EmitConvertToTarget2,
615 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::OUTCT_rus),
616 2, 1, 3,
617 7,
618 OPC_EmitMergeInputChains1_0,
619 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::OUTCT_2r),
620 2, 1, 2,
621 0,
622 32,
623 OPC_CheckChild1Integer, 126|128,88|128,1,
624 OPC_RecordChild2,
625 OPC_CheckChild2TypeI32,
626 OPC_RecordChild3,
627 OPC_Scope, 14,
628 OPC_MoveChild3,
629 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
630 OPC_CheckPredicate2,
631 OPC_MoveParent,
632 OPC_EmitMergeInputChains1_0,
633 OPC_EmitConvertToTarget2,
634 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::CHKCT_rus),
635 2, 1, 3,
636 7,
637 OPC_EmitMergeInputChains1_0,
638 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::CHKCT_2r),
639 2, 1, 2,
640 0,
641 14,
642 OPC_CheckChild1Integer, 76|128,89|128,1,
643 OPC_RecordChild2,
644 OPC_CheckChild2TypeI32,
645 OPC_RecordChild3,
646 OPC_EmitMergeInputChains1_0,
647 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETPT_2r),
648 2, 1, 2,
649 14,
650 OPC_CheckChild1Integer, 60|128,89|128,1,
651 OPC_RecordChild2,
652 OPC_CheckChild2TypeI32,
653 OPC_RecordChild3,
654 OPC_EmitMergeInputChains1_0,
655 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::OUTT_2r),
656 2, 1, 2,
657 14,
658 OPC_CheckChild1Integer, 54|128,89|128,1,
659 OPC_RecordChild2,
660 OPC_CheckChild2TypeI32,
661 OPC_RecordChild3,
662 OPC_EmitMergeInputChains1_0,
663 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::OUT_2r),
664 2, 1, 2,
665 14,
666 OPC_CheckChild1Integer, 68|128,89|128,1,
667 OPC_RecordChild2,
668 OPC_CheckChild2TypeI32,
669 OPC_RecordChild3,
670 OPC_EmitMergeInputChains1_0,
671 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETD_2r),
672 2, 1, 2,
673 14,
674 OPC_CheckChild1Integer, 74|128,89|128,1,
675 OPC_RecordChild2,
676 OPC_CheckChild2TypeI32,
677 OPC_RecordChild3,
678 OPC_EmitMergeInputChains1_0,
679 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETPSC_2r),
680 2, 1, 2,
681 15,
682 OPC_CheckChild1Integer, 44|128,89|128,1,
683 OPC_RecordChild2,
684 OPC_CheckChild2TypeI32,
685 OPC_RecordChild3,
686 OPC_CheckChild3TypeI32,
687 OPC_EmitMergeInputChains1_0,
688 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::INITSP_2r),
689 2, 2, 1,
690 15,
691 OPC_CheckChild1Integer, 42|128,89|128,1,
692 OPC_RecordChild2,
693 OPC_CheckChild2TypeI32,
694 OPC_RecordChild3,
695 OPC_CheckChild3TypeI32,
696 OPC_EmitMergeInputChains1_0,
697 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::INITPC_2r),
698 2, 2, 1,
699 15,
700 OPC_CheckChild1Integer, 36|128,89|128,1,
701 OPC_RecordChild2,
702 OPC_CheckChild2TypeI32,
703 OPC_RecordChild3,
704 OPC_CheckChild3TypeI32,
705 OPC_EmitMergeInputChains1_0,
706 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::INITCP_2r),
707 2, 2, 1,
708 15,
709 OPC_CheckChild1Integer, 38|128,89|128,1,
710 OPC_RecordChild2,
711 OPC_CheckChild2TypeI32,
712 OPC_RecordChild3,
713 OPC_CheckChild3TypeI32,
714 OPC_EmitMergeInputChains1_0,
715 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::INITDP_2r),
716 2, 2, 1,
717 14,
718 OPC_CheckChild1Integer, 82|128,89|128,1,
719 OPC_RecordChild2,
720 OPC_CheckChild2TypeI32,
721 OPC_RecordChild3,
722 OPC_EmitMergeInputChains1_0,
723 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETTW_l2r),
724 2, 1, 2,
725 13,
726 OPC_CheckChild1Integer, 72|128,89|128,1,
727 OPC_RecordChild2,
728 OPC_RecordChild3,
729 OPC_EmitMergeInputChains1_0,
730 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETPS_l2r),
731 2, 1, 2,
732 15,
733 OPC_CheckChild1Integer, 40|128,89|128,1,
734 OPC_RecordChild2,
735 OPC_CheckChild2TypeI32,
736 OPC_RecordChild3,
737 OPC_CheckChild3TypeI32,
738 OPC_EmitMergeInputChains1_0,
739 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::INITLR_l2r),
740 2, 2, 1,
741 15,
742 OPC_CheckChild1Integer, 66|128,89|128,1,
743 OPC_RecordChild2,
744 OPC_CheckChild2TypeI32,
745 OPC_RecordChild3,
746 OPC_CheckChild3TypeI32,
747 OPC_EmitMergeInputChains1_0,
748 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETCLK_l2r),
749 2, 1, 2,
750 15,
751 OPC_CheckChild1Integer, 78|128,89|128,1,
752 OPC_RecordChild2,
753 OPC_CheckChild2TypeI32,
754 OPC_RecordChild3,
755 OPC_CheckChild3TypeI32,
756 OPC_EmitMergeInputChains1_0,
757 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SETRDY_l2r),
758 2, 1, 2,
759 12,
760 OPC_CheckChild1Integer, 52|128,89|128,1,
761 OPC_RecordChild2,
762 OPC_CheckChild2TypeI32,
763 OPC_EmitMergeInputChains1_0,
764 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::MSYNC_1r),
765 1, 1,
766 12,
767 OPC_CheckChild1Integer, 50|128,89|128,1,
768 OPC_RecordChild2,
769 OPC_CheckChild2TypeI32,
770 OPC_EmitMergeInputChains1_0,
771 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::MJOIN_1r),
772 1, 1,
773 12,
774 OPC_CheckChild1Integer, 90|128,89|128,1,
775 OPC_RecordChild2,
776 OPC_CheckChild2TypeI32,
777 OPC_EmitMergeInputChains1_0,
778 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SYNCR_1r),
779 1, 1,
780 12,
781 OPC_CheckChild1Integer, 16|128,89|128,1,
782 OPC_RecordChild2,
783 OPC_CheckChild2TypeI32,
784 OPC_EmitMergeInputChains1_0,
785 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::FREER_1r),
786 1, 1,
787 17,
788 OPC_CheckChild1Integer, 84|128,89|128,1,
789 OPC_RecordChild2,
790 OPC_CheckChild2TypeI32,
791 OPC_RecordChild3,
792 OPC_CheckChild3TypeI32,
793 OPC_EmitMergeInputChains1_0,
794 OPC_EmitCopyToReg2, XCore::R11,
795 OPC_MorphNodeTo0, TARGET_VAL(XCore::SETV_1r), 0|OPFL_Chain|OPFL_GlueInput,
796 1, 1,
797 17,
798 OPC_CheckChild1Integer, 70|128,89|128,1,
799 OPC_RecordChild2,
800 OPC_CheckChild2TypeI32,
801 OPC_RecordChild3,
802 OPC_CheckChild3TypeI32,
803 OPC_EmitMergeInputChains1_0,
804 OPC_EmitCopyToReg2, XCore::R11,
805 OPC_MorphNodeTo0, TARGET_VAL(XCore::SETEV_1r), 0|OPFL_Chain|OPFL_GlueInput,
806 1, 1,
807 12,
808 OPC_CheckChild1Integer, 10|128,89|128,1,
809 OPC_RecordChild2,
810 OPC_CheckChild2TypeI32,
811 OPC_EmitMergeInputChains1_0,
812 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::EDU_1r),
813 1, 1,
814 12,
815 OPC_CheckChild1Integer, 12|128,89|128,1,
816 OPC_RecordChild2,
817 OPC_CheckChild2TypeI32,
818 OPC_EmitMergeInputChains1_0,
819 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::EEU_1r),
820 1, 1,
821 12,
822 OPC_CheckChild1Integer, 2|128,89|128,1,
823 OPC_RecordChild2,
824 OPC_CheckChild2TypeI32,
825 OPC_EmitMergeInputChains1_0,
826 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::CLRPT_1R),
827 1, 1,
828 9,
829 OPC_CheckChild1Integer, 0|128,89|128,1,
830 OPC_EmitMergeInputChains1_0,
831 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::CLRE_0R),
832 0,
833 9,
834 OPC_CheckChild1Integer, 88|128,89|128,1,
835 OPC_EmitMergeInputChains1_0,
836 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::SSYNC_0r),
837 0,
838 0,
839 106, TARGET_VAL(ISD::INTRINSIC_WO_CHAIN),
840 OPC_Scope, 32,
841 OPC_CheckChild0Integer, 86|128,89|128,1,
842 OPC_RecordChild1,
843 OPC_RecordChild2,
844 OPC_Scope, 15,
845 OPC_MoveChild2,
846 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
847 OPC_CheckPredicate, 8,
848 OPC_MoveParent,
849 OPC_EmitConvertToTarget1,
850 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SEXT_rus),
851 MVT::i32, 2, 0, 2,
852 7,
853 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SEXT_2r),
854 MVT::i32, 2, 0, 1,
855 0,
856 32,
857 OPC_CheckChild0Integer, 98|128,89|128,1,
858 OPC_RecordChild1,
859 OPC_RecordChild2,
860 OPC_Scope, 15,
861 OPC_MoveChild2,
862 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
863 OPC_CheckPredicate, 8,
864 OPC_MoveParent,
865 OPC_EmitConvertToTarget1,
866 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ZEXT_rus),
867 MVT::i32, 2, 0, 2,
868 7,
869 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ZEXT_2r),
870 MVT::i32, 2, 0, 1,
871 0,
872 15,
873 OPC_CheckChild0Integer, 6|128,89|128,1,
874 OPC_RecordChild1,
875 OPC_RecordChild2,
876 OPC_RecordChild3,
877 OPC_MorphNodeTo1None, TARGET_VAL(XCore::CRC_l3r),
878 MVT::i32, 3, 0, 1, 2,
879 11,
880 OPC_CheckChild0Integer, 122|128,88|128,1,
881 OPC_RecordChild1,
882 OPC_MorphNodeTo1None, TARGET_VAL(XCore::BITREV_l2r),
883 MVT::i32, 1, 0,
884 9,
885 OPC_CheckChild0Integer, 22|128,89|128,1,
886 OPC_MorphNodeTo1None, TARGET_VAL(XCore::GETID_0R),
887 MVT::i32, 0,
888 0,
889 90|128,1, TARGET_VAL(ISD::INTRINSIC_W_CHAIN),
890 OPC_RecordNode,
891 OPC_Scope, 20,
892 OPC_CheckChild1Integer, 26|128,89|128,1,
893 OPC_RecordChild2,
894 OPC_MoveChild2,
895 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
896 OPC_CheckPredicate2,
897 OPC_MoveParent,
898 OPC_CheckTypeI32,
899 OPC_EmitMergeInputChains1_0,
900 OPC_EmitConvertToTarget1,
901 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::GETR_rus),
902 MVT::i32, 1, 2,
903 13,
904 OPC_CheckChild1Integer, 30|128,89|128,1,
905 OPC_RecordChild2,
906 OPC_CheckChild2TypeI32,
907 OPC_EmitMergeInputChains1_0,
908 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::GETTS_2r),
909 MVT::i32, 1, 1,
910 15,
911 OPC_CheckChild1Integer, 58|128,89|128,1,
912 OPC_RecordChild2,
913 OPC_CheckChild2TypeI32,
914 OPC_RecordChild3,
915 OPC_EmitMergeInputChains1_0,
916 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::OUTSHR_2r),
917 MVT::i32, 2, 2, 1,
918 13,
919 OPC_CheckChild1Integer, 34|128,89|128,1,
920 OPC_RecordChild2,
921 OPC_CheckChild2TypeI32,
922 OPC_EmitMergeInputChains1_0,
923 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::INCT_2r),
924 MVT::i32, 1, 1,
925 13,
926 OPC_CheckChild1Integer, 48|128,89|128,1,
927 OPC_RecordChild2,
928 OPC_CheckChild2TypeI32,
929 OPC_EmitMergeInputChains1_0,
930 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::INT_2r),
931 MVT::i32, 1, 1,
932 13,
933 OPC_CheckChild1Integer, 32|128,89|128,1,
934 OPC_RecordChild2,
935 OPC_CheckChild2TypeI32,
936 OPC_EmitMergeInputChains1_0,
937 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::IN_2r),
938 MVT::i32, 1, 1,
939 15,
940 OPC_CheckChild1Integer, 46|128,89|128,1,
941 OPC_RecordChild2,
942 OPC_CheckChild2TypeI32,
943 OPC_RecordChild3,
944 OPC_EmitMergeInputChains1_0,
945 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::INSHR_2r),
946 MVT::i32, 2, 2, 1,
947 13,
948 OPC_CheckChild1Integer, 92|128,89|128,1,
949 OPC_RecordChild2,
950 OPC_CheckChild2TypeI32,
951 OPC_EmitMergeInputChains1_0,
952 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::TESTCT_2r),
953 MVT::i32, 1, 1,
954 13,
955 OPC_CheckChild1Integer, 94|128,89|128,1,
956 OPC_RecordChild2,
957 OPC_CheckChild2TypeI32,
958 OPC_EmitMergeInputChains1_0,
959 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::TESTWCT_2r),
960 MVT::i32, 1, 1,
961 14,
962 OPC_CheckChild1Integer, 28|128,89|128,1,
963 OPC_RecordChild2,
964 OPC_CheckChild2TypeI32,
965 OPC_CheckTypeI32,
966 OPC_EmitMergeInputChains1_0,
967 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::GETST_2r),
968 MVT::i32, 1, 1,
969 13,
970 OPC_CheckChild1Integer, 62|128,89|128,1,
971 OPC_RecordChild2,
972 OPC_CheckChild2TypeI32,
973 OPC_EmitMergeInputChains1_0,
974 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::PEEK_2r),
975 MVT::i32, 1, 1,
976 13,
977 OPC_CheckChild1Integer, 14|128,89|128,1,
978 OPC_RecordChild2,
979 OPC_CheckChild2TypeI32,
980 OPC_EmitMergeInputChains1_0,
981 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::ENDIN_2r),
982 MVT::i32, 1, 1,
983 12,
984 OPC_CheckChild1Integer, 24|128,89|128,1,
985 OPC_RecordChild2,
986 OPC_EmitMergeInputChains1_0,
987 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::GETPS_l2r),
988 MVT::i32, 1, 1,
989 10,
990 OPC_CheckChild1Integer, 18|128,89|128,1,
991 OPC_EmitMergeInputChains1_0,
992 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::GETED_0R),
993 MVT::i32, 0,
994 10,
995 OPC_CheckChild1Integer, 20|128,89|128,1,
996 OPC_EmitMergeInputChains1_0,
997 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::GETET_0R),
998 MVT::i32, 0,
999 0,
1000 89, TARGET_VAL(ISD::SUB),
1001 OPC_Scope, 30,
1002 OPC_RecordChild0,
1003 OPC_MoveChild1,
1004 OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
1005 OPC_RecordChild0,
1006 OPC_Scope, 10,
1007 OPC_CheckChild1Integer, 4,
1008 OPC_MoveParent,
1009 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWB_l3r),
1010 MVT::i32, 2, 0, 1,
1011 10,
1012 OPC_CheckChild1Integer, 2,
1013 OPC_MoveParent,
1014 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDA16B_l3r),
1015 MVT::i32, 2, 0, 1,
1016 0,
1017 9,
1018 OPC_CheckChild0Integer, 0,
1019 OPC_RecordChild1,
1020 OPC_MorphNodeTo1None, TARGET_VAL(XCore::NEG),
1021 MVT::i32, 1, 0,
1022 45,
1023 OPC_RecordChild0,
1024 OPC_RecordChild1,
1025 OPC_Scope, 32,
1026 OPC_MoveChild1,
1027 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1028 OPC_Scope, 10,
1029 OPC_CheckPredicate2,
1030 OPC_MoveParent,
1031 OPC_EmitConvertToTarget1,
1032 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SUB_2rus),
1033 MVT::i32, 2, 0, 2,
1034 14,
1035 OPC_CheckPredicate, 9,
1036 OPC_MoveParent,
1037 OPC_EmitConvertToTarget1,
1038 OPC_EmitNodeXForm, 0, 2,
1039 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWB_l2rus),
1040 MVT::i32, 2, 0, 3,
1041 0,
1042 7,
1043 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SUB_3r),
1044 MVT::i32, 2, 0, 1,
1045 0,
1046 0,
1047 68, TARGET_VAL(ISD::AND),
1048 OPC_Scope, 16,
1049 OPC_RecordChild0,
1050 OPC_MoveChild1,
1051 OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
1052 OPC_RecordChild0,
1053 OPC_CheckChild1Integer, 3,
1054 OPC_MoveParent,
1055 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ANDNOT_2r),
1056 MVT::i32, 2, 0, 1,
1057 16,
1058 OPC_MoveChild0,
1059 OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
1060 OPC_RecordChild0,
1061 OPC_CheckChild1Integer, 3,
1062 OPC_MoveParent,
1063 OPC_RecordChild1,
1064 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ANDNOT_2r),
1065 MVT::i32, 2, 1, 0,
1066 31,
1067 OPC_RecordChild0,
1068 OPC_RecordChild1,
1069 OPC_Scope, 18,
1070 OPC_MoveChild1,
1071 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1072 OPC_CheckPredicate, 20,
1073 OPC_MoveParent,
1074 OPC_EmitConvertToTarget1,
1075 OPC_EmitNodeXForm, 4, 2,
1076 OPC_MorphNodeTo1None, TARGET_VAL(XCore::ZEXT_rus),
1077 MVT::i32, 2, 0, 3,
1078 7,
1079 OPC_MorphNodeTo1None, TARGET_VAL(XCore::AND_3r),
1080 MVT::i32, 2, 0, 1,
1081 0,
1082 0,
1083 32, TARGET_VAL(ISD::BRIND),
1084 OPC_RecordNode,
1085 OPC_Scope, 19,
1086 OPC_MoveChild1,
1087 OPC_CheckOpcode, TARGET_VAL(ISD::INTRINSIC_W_CHAIN),
1088 OPC_RecordNode,
1089 OPC_CheckFoldableChainNode,
1090 OPC_CheckChild1Integer, 96|128,89|128,1,
1091 OPC_MoveParent,
1092 OPC_EmitMergeInputChains, 2, 0, 1,
1093 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::WAITEU_0R),
1094 0,
1095 8,
1096 OPC_RecordChild1,
1097 OPC_CheckChild1TypeI32,
1098 OPC_EmitMergeInputChains1_0,
1099 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BAU_1r),
1100 1, 1,
1101 0,
1102 11|128,2, TARGET_VAL(ISD::BRCOND),
1103 OPC_RecordNode,
1104 OPC_Scope, 119|128,1,
1105 OPC_MoveChild1,
1106 OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
1107 OPC_RecordChild0,
1108 OPC_Scope, 61,
1109 OPC_CheckChild1Integer, 0,
1110 OPC_Scope, 15,
1111 OPC_CheckChild2CondCode, ISD::SETNE,
1112 OPC_MoveSibling2,
1113 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1114 OPC_RecordNode,
1115 OPC_MoveParent,
1116 OPC_EmitMergeInputChains1_0,
1117 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFT_lru6),
1118 2, 1, 2,
1119 15,
1120 OPC_CheckChild2CondCode, ISD::SETEQ,
1121 OPC_MoveSibling2,
1122 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1123 OPC_RecordNode,
1124 OPC_MoveParent,
1125 OPC_EmitMergeInputChains1_0,
1126 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFF_lru6),
1127 2, 1, 2,
1128 24,
1129 OPC_CheckChild2CondCode, ISD::SETLT,
1130 OPC_MoveSibling2,
1131 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1132 OPC_RecordNode,
1133 OPC_MoveParent,
1134 OPC_EmitMergeInputChains1_0,
1135 OPC_EmitInteger32, 64,
1136 OPC_EmitNode1None, TARGET_VAL(XCore::ASHR_l2rus),
1137 MVT::i32, 2, 1, 3,
1138 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFT_lru6),
1139 2, 4, 2,
1140 0,
1141 26,
1142 OPC_CheckChild1Integer, 3,
1143 OPC_CheckChild2CondCode, ISD::SETGT,
1144 OPC_MoveSibling2,
1145 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1146 OPC_RecordNode,
1147 OPC_MoveParent,
1148 OPC_EmitMergeInputChains1_0,
1149 OPC_EmitInteger32, 64,
1150 OPC_EmitNode1None, TARGET_VAL(XCore::ASHR_l2rus),
1151 MVT::i32, 2, 1, 3,
1152 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFF_lru6),
1153 2, 4, 2,
1154 30,
1155 OPC_RecordChild1,
1156 OPC_MoveChild1,
1157 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1158 OPC_CheckPredicate2,
1159 OPC_MoveParent,
1160 OPC_CheckChild2CondCode, ISD::SETNE,
1161 OPC_MoveSibling2,
1162 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1163 OPC_RecordNode,
1164 OPC_MoveParent,
1165 OPC_EmitMergeInputChains1_0,
1166 OPC_EmitConvertToTarget2,
1167 OPC_EmitNode1None, TARGET_VAL(XCore::EQ_2rus),
1168 MVT::i32, 2, 1, 4,
1169 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFF_lru6),
1170 2, 5, 3,
1171 119,
1172 OPC_CheckChild0TypeI32,
1173 OPC_RecordChild1,
1174 OPC_Scope, 22,
1175 OPC_CheckChild2CondCode, ISD::SETLE,
1176 OPC_MoveSibling2,
1177 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1178 OPC_RecordNode,
1179 OPC_MoveParent,
1180 OPC_EmitMergeInputChains1_0,
1181 OPC_EmitNode1None, TARGET_VAL(XCore::LSS_3r),
1182 MVT::i32, 2, 2, 1,
1183 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFF_lru6),
1184 2, 4, 3,
1185 22,
1186 OPC_CheckChild2CondCode, ISD::SETULE,
1187 OPC_MoveSibling2,
1188 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1189 OPC_RecordNode,
1190 OPC_MoveParent,
1191 OPC_EmitMergeInputChains1_0,
1192 OPC_EmitNode1None, TARGET_VAL(XCore::LSU_3r),
1193 MVT::i32, 2, 2, 1,
1194 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFF_lru6),
1195 2, 4, 3,
1196 22,
1197 OPC_CheckChild2CondCode, ISD::SETGE,
1198 OPC_MoveSibling2,
1199 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1200 OPC_RecordNode,
1201 OPC_MoveParent,
1202 OPC_EmitMergeInputChains1_0,
1203 OPC_EmitNode1None, TARGET_VAL(XCore::LSS_3r),
1204 MVT::i32, 2, 1, 2,
1205 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFF_lru6),
1206 2, 4, 3,
1207 22,
1208 OPC_CheckChild2CondCode, ISD::SETUGE,
1209 OPC_MoveSibling2,
1210 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1211 OPC_RecordNode,
1212 OPC_MoveParent,
1213 OPC_EmitMergeInputChains1_0,
1214 OPC_EmitNode1None, TARGET_VAL(XCore::LSU_3r),
1215 MVT::i32, 2, 1, 2,
1216 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFF_lru6),
1217 2, 4, 3,
1218 22,
1219 OPC_CheckChild2CondCode, ISD::SETNE,
1220 OPC_MoveSibling2,
1221 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1222 OPC_RecordNode,
1223 OPC_MoveParent,
1224 OPC_EmitMergeInputChains1_0,
1225 OPC_EmitNode1None, TARGET_VAL(XCore::EQ_3r),
1226 MVT::i32, 2, 1, 2,
1227 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFF_lru6),
1228 2, 4, 3,
1229 0,
1230 0,
1231 14,
1232 OPC_RecordChild1,
1233 OPC_RecordChild2,
1234 OPC_MoveChild2,
1235 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1236 OPC_MoveParent,
1237 OPC_EmitMergeInputChains1_0,
1238 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFT_lru6),
1239 2, 1, 2,
1240 0,
1241 126|128,1, TARGET_VAL(ISD::SELECT),
1242 OPC_Scope, 109|128,1,
1243 OPC_MoveChild0,
1244 OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
1245 OPC_RecordChild0,
1246 OPC_Scope, 58,
1247 OPC_CheckChild1Integer, 0,
1248 OPC_Scope, 14,
1249 OPC_CheckChild2CondCode, ISD::SETNE,
1250 OPC_MoveParent,
1251 OPC_RecordChild1,
1252 OPC_RecordChild2,
1253 OPC_CheckTypeI32,
1254 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1255 MVT::i32, 3, 0, 1, 2,
1256 14,
1257 OPC_CheckChild2CondCode, ISD::SETEQ,
1258 OPC_MoveParent,
1259 OPC_RecordChild1,
1260 OPC_RecordChild2,
1261 OPC_CheckTypeI32,
1262 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1263 MVT::i32, 3, 0, 2, 1,
1264 23,
1265 OPC_CheckChild2CondCode, ISD::SETLT,
1266 OPC_MoveParent,
1267 OPC_RecordChild1,
1268 OPC_RecordChild2,
1269 OPC_CheckTypeI32,
1270 OPC_EmitInteger32, 64,
1271 OPC_EmitNode1None, TARGET_VAL(XCore::ASHR_l2rus),
1272 MVT::i32, 2, 0, 3,
1273 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1274 MVT::i32, 3, 4, 1, 2,
1275 0,
1276 25,
1277 OPC_CheckChild1Integer, 3,
1278 OPC_CheckChild2CondCode, ISD::SETGT,
1279 OPC_MoveParent,
1280 OPC_RecordChild1,
1281 OPC_RecordChild2,
1282 OPC_CheckTypeI32,
1283 OPC_EmitInteger32, 64,
1284 OPC_EmitNode1None, TARGET_VAL(XCore::ASHR_l2rus),
1285 MVT::i32, 2, 0, 3,
1286 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1287 MVT::i32, 3, 4, 2, 1,
1288 29,
1289 OPC_RecordChild1,
1290 OPC_MoveChild1,
1291 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1292 OPC_CheckPredicate2,
1293 OPC_MoveParent,
1294 OPC_CheckChild2CondCode, ISD::SETNE,
1295 OPC_MoveParent,
1296 OPC_RecordChild1,
1297 OPC_RecordChild2,
1298 OPC_CheckTypeI32,
1299 OPC_EmitConvertToTarget1,
1300 OPC_EmitNode1None, TARGET_VAL(XCore::EQ_2rus),
1301 MVT::i32, 2, 0, 4,
1302 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1303 MVT::i32, 3, 5, 3, 2,
1304 114,
1305 OPC_CheckChild0TypeI32,
1306 OPC_RecordChild1,
1307 OPC_Scope, 21,
1308 OPC_CheckChild2CondCode, ISD::SETLE,
1309 OPC_MoveParent,
1310 OPC_RecordChild1,
1311 OPC_RecordChild2,
1312 OPC_CheckTypeI32,
1313 OPC_EmitNode1None, TARGET_VAL(XCore::LSS_3r),
1314 MVT::i32, 2, 1, 0,
1315 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1316 MVT::i32, 3, 4, 3, 2,
1317 21,
1318 OPC_CheckChild2CondCode, ISD::SETULE,
1319 OPC_MoveParent,
1320 OPC_RecordChild1,
1321 OPC_RecordChild2,
1322 OPC_CheckTypeI32,
1323 OPC_EmitNode1None, TARGET_VAL(XCore::LSU_3r),
1324 MVT::i32, 2, 1, 0,
1325 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1326 MVT::i32, 3, 4, 3, 2,
1327 21,
1328 OPC_CheckChild2CondCode, ISD::SETGE,
1329 OPC_MoveParent,
1330 OPC_RecordChild1,
1331 OPC_RecordChild2,
1332 OPC_CheckTypeI32,
1333 OPC_EmitNode1None, TARGET_VAL(XCore::LSS_3r),
1334 MVT::i32, 2, 0, 1,
1335 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1336 MVT::i32, 3, 4, 3, 2,
1337 21,
1338 OPC_CheckChild2CondCode, ISD::SETUGE,
1339 OPC_MoveParent,
1340 OPC_RecordChild1,
1341 OPC_RecordChild2,
1342 OPC_CheckTypeI32,
1343 OPC_EmitNode1None, TARGET_VAL(XCore::LSU_3r),
1344 MVT::i32, 2, 0, 1,
1345 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1346 MVT::i32, 3, 4, 3, 2,
1347 21,
1348 OPC_CheckChild2CondCode, ISD::SETNE,
1349 OPC_MoveParent,
1350 OPC_RecordChild1,
1351 OPC_RecordChild2,
1352 OPC_CheckTypeI32,
1353 OPC_EmitNode1None, TARGET_VAL(XCore::EQ_3r),
1354 MVT::i32, 2, 0, 1,
1355 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1356 MVT::i32, 3, 4, 3, 2,
1357 0,
1358 0,
1359 12,
1360 OPC_RecordChild0,
1361 OPC_RecordChild1,
1362 OPC_RecordChild2,
1363 OPC_CheckTypeI32,
1364 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SELECT_CC),
1365 MVT::i32, 3, 0, 1, 2,
1366 0,
1367 21, TARGET_VAL(ISD::CALLSEQ_START),
1368 OPC_RecordNode,
1369 OPC_RecordChild1,
1370 OPC_MoveChild1,
1371 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1372 OPC_MoveSibling2,
1373 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1374 OPC_RecordNode,
1375 OPC_MoveParent,
1376 OPC_EmitMergeInputChains1_0,
1377 OPC_MorphNodeTo1, TARGET_VAL(XCore::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_GlueOutput,
1378 MVT::i32, 2, 1, 2,
1379 22, TARGET_VAL(ISD::CALLSEQ_END),
1380 OPC_RecordNode,
1381 OPC_CaptureGlueInput,
1382 OPC_RecordChild1,
1383 OPC_MoveChild1,
1384 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1385 OPC_MoveSibling2,
1386 OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
1387 OPC_RecordNode,
1388 OPC_MoveParent,
1389 OPC_EmitMergeInputChains1_0,
1390 OPC_MorphNodeTo1, TARGET_VAL(XCore::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
1391 MVT::i32, 2, 1, 2,
1392 11, TARGET_VAL(ISD::FrameIndex),
1393 OPC_RecordNode,
1394 OPC_CheckTypeI32,
1395 OPC_CheckComplexPat0, /*#*/0,
1396 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWFI),
1397 MVT::i32, 2, 1, 2,
1398 21, TARGET_VAL(ISD::XOR),
1399 OPC_RecordChild0,
1400 OPC_Scope, 8,
1401 OPC_CheckChild1Integer, 3,
1402 OPC_MorphNodeTo1None, TARGET_VAL(XCore::NOT),
1403 MVT::i32, 1, 0,
1404 8,
1405 OPC_RecordChild1,
1406 OPC_MorphNodeTo1None, TARGET_VAL(XCore::XOR_l3r),
1407 MVT::i32, 2, 0, 1,
1408 0,
1409 42, TARGET_VAL(ISD::MUL),
1410 OPC_RecordChild0,
1411 OPC_Scope, 9,
1412 OPC_CheckChild1Integer, 6,
1413 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDA16F_l3r),
1414 MVT::i32, 2, 0, 0,
1415 9,
1416 OPC_CheckChild1Integer, 10,
1417 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWF_l3r),
1418 MVT::i32, 2, 0, 0,
1419 9,
1420 OPC_CheckChild1Integer, 7,
1421 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWB_l3r),
1422 MVT::i32, 2, 0, 0,
1423 8,
1424 OPC_RecordChild1,
1425 OPC_MorphNodeTo1None, TARGET_VAL(XCore::MUL_l3r),
1426 MVT::i32, 2, 0, 1,
1427 0,
1428 90|128,1, TARGET_VAL(ISD::SETCC),
1429 OPC_RecordChild0,
1430 OPC_Scope, 22,
1431 OPC_CheckChild1Integer, 3,
1432 OPC_CheckChild2CondCode, ISD::SETGT,
1433 OPC_EmitInteger32, 64,
1434 OPC_EmitNode1None, TARGET_VAL(XCore::ASHR_l2rus),
1435 MVT::i32, 2, 0, 1,
1436 OPC_EmitInteger32, 0,
1437 OPC_MorphNodeTo1None, TARGET_VAL(XCore::EQ_2rus),
1438 MVT::i32, 2, 2, 3,
1439 40,
1440 OPC_RecordChild1,
1441 OPC_MoveChild1,
1442 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1443 OPC_CheckPredicate2,
1444 OPC_MoveParent,
1445 OPC_Scope, 10,
1446 OPC_CheckChild2CondCode, ISD::SETEQ,
1447 OPC_EmitConvertToTarget1,
1448 OPC_MorphNodeTo1None, TARGET_VAL(XCore::EQ_2rus),
1449 MVT::i32, 2, 0, 2,
1450 19,
1451 OPC_CheckChild2CondCode, ISD::SETNE,
1452 OPC_EmitConvertToTarget1,
1453 OPC_EmitNode1None, TARGET_VAL(XCore::EQ_2rus),
1454 MVT::i32, 2, 0, 2,
1455 OPC_EmitInteger32, 0,
1456 OPC_MorphNodeTo1None, TARGET_VAL(XCore::EQ_2rus),
1457 MVT::i32, 2, 3, 4,
1458 0,
1459 21|128,1,
1460 OPC_CheckChild0TypeI32,
1461 OPC_RecordChild1,
1462 OPC_Scope, 9,
1463 OPC_CheckChild2CondCode, ISD::SETGT,
1464 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LSS_3r),
1465 MVT::i32, 2, 1, 0,
1466 9,
1467 OPC_CheckChild2CondCode, ISD::SETUGT,
1468 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LSU_3r),
1469 MVT::i32, 2, 1, 0,
1470 9,
1471 OPC_CheckChild2CondCode, ISD::SETLT,
1472 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LSS_3r),
1473 MVT::i32, 2, 0, 1,
1474 9,
1475 OPC_CheckChild2CondCode, ISD::SETULT,
1476 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LSU_3r),
1477 MVT::i32, 2, 0, 1,
1478 9,
1479 OPC_CheckChild2CondCode, ISD::SETEQ,
1480 OPC_MorphNodeTo1None, TARGET_VAL(XCore::EQ_3r),
1481 MVT::i32, 2, 0, 1,
1482 18,
1483 OPC_CheckChild2CondCode, ISD::SETLE,
1484 OPC_EmitNode1None, TARGET_VAL(XCore::LSS_3r),
1485 MVT::i32, 2, 1, 0,
1486 OPC_EmitInteger32, 0,
1487 OPC_MorphNodeTo1None, TARGET_VAL(XCore::EQ_2rus),
1488 MVT::i32, 2, 2, 3,
1489 18,
1490 OPC_CheckChild2CondCode, ISD::SETULE,
1491 OPC_EmitNode1None, TARGET_VAL(XCore::LSU_3r),
1492 MVT::i32, 2, 1, 0,
1493 OPC_EmitInteger32, 0,
1494 OPC_MorphNodeTo1None, TARGET_VAL(XCore::EQ_2rus),
1495 MVT::i32, 2, 2, 3,
1496 18,
1497 OPC_CheckChild2CondCode, ISD::SETGE,
1498 OPC_EmitNode1None, TARGET_VAL(XCore::LSS_3r),
1499 MVT::i32, 2, 0, 1,
1500 OPC_EmitInteger32, 0,
1501 OPC_MorphNodeTo1None, TARGET_VAL(XCore::EQ_2rus),
1502 MVT::i32, 2, 2, 3,
1503 18,
1504 OPC_CheckChild2CondCode, ISD::SETUGE,
1505 OPC_EmitNode1None, TARGET_VAL(XCore::LSU_3r),
1506 MVT::i32, 2, 0, 1,
1507 OPC_EmitInteger32, 0,
1508 OPC_MorphNodeTo1None, TARGET_VAL(XCore::EQ_2rus),
1509 MVT::i32, 2, 2, 3,
1510 18,
1511 OPC_CheckChild2CondCode, ISD::SETNE,
1512 OPC_EmitNode1None, TARGET_VAL(XCore::EQ_3r),
1513 MVT::i32, 2, 0, 1,
1514 OPC_EmitInteger32, 0,
1515 OPC_MorphNodeTo1None, TARGET_VAL(XCore::EQ_2rus),
1516 MVT::i32, 2, 2, 3,
1517 0,
1518 0,
1519 28, TARGET_VAL(ISD::SHL),
1520 OPC_RecordChild0,
1521 OPC_RecordChild1,
1522 OPC_Scope, 15,
1523 OPC_MoveChild1,
1524 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1525 OPC_CheckPredicate, 8,
1526 OPC_MoveParent,
1527 OPC_EmitConvertToTarget1,
1528 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SHL_2rus),
1529 MVT::i32, 2, 0, 2,
1530 7,
1531 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SHL_3r),
1532 MVT::i32, 2, 0, 1,
1533 0,
1534 28, TARGET_VAL(ISD::SRL),
1535 OPC_RecordChild0,
1536 OPC_RecordChild1,
1537 OPC_Scope, 15,
1538 OPC_MoveChild1,
1539 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1540 OPC_CheckPredicate, 8,
1541 OPC_MoveParent,
1542 OPC_EmitConvertToTarget1,
1543 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SHR_2rus),
1544 MVT::i32, 2, 0, 2,
1545 7,
1546 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SHR_3r),
1547 MVT::i32, 2, 0, 1,
1548 0,
1549 32, TARGET_VAL(XCoreISD::STWSP),
1550 OPC_RecordNode,
1551 OPC_RecordChild1,
1552 OPC_CheckChild1TypeI32,
1553 OPC_RecordChild2,
1554 OPC_MoveChild2,
1555 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1556 OPC_Scope, 10,
1557 OPC_CheckPredicate4,
1558 OPC_MoveParent,
1559 OPC_EmitMergeInputChains1_0,
1560 OPC_EmitConvertToTarget2,
1561 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::STWSP_ru6),
1562 2, 1, 3,
1563 10,
1564 OPC_CheckPredicate5,
1565 OPC_MoveParent,
1566 OPC_EmitMergeInputChains1_0,
1567 OPC_EmitConvertToTarget2,
1568 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::STWSP_lru6),
1569 2, 1, 3,
1570 0,
1571 32, TARGET_VAL(XCoreISD::LDWSP),
1572 OPC_RecordNode,
1573 OPC_RecordChild1,
1574 OPC_MoveChild1,
1575 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1576 OPC_Scope, 11,
1577 OPC_CheckPredicate4,
1578 OPC_MoveParent,
1579 OPC_CheckTypeI32,
1580 OPC_EmitMergeInputChains1_0,
1581 OPC_EmitConvertToTarget1,
1582 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::LDWSP_ru6),
1583 MVT::i32, 1, 2,
1584 11,
1585 OPC_CheckPredicate5,
1586 OPC_MoveParent,
1587 OPC_CheckTypeI32,
1588 OPC_EmitMergeInputChains1_0,
1589 OPC_EmitConvertToTarget1,
1590 OPC_MorphNodeTo1Chain, TARGET_VAL(XCore::LDWSP_lru6),
1591 MVT::i32, 1, 2,
1592 0,
1593 33, TARGET_VAL(XCoreISD::RETSP),
1594 OPC_RecordNode,
1595 OPC_CaptureGlueInput,
1596 OPC_RecordChild1,
1597 OPC_MoveChild1,
1598 OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1599 OPC_Scope, 11,
1600 OPC_CheckPredicate4,
1601 OPC_MoveParent,
1602 OPC_EmitMergeInputChains1_0,
1603 OPC_EmitConvertToTarget1,
1604 OPC_MorphNodeTo1, TARGET_VAL(XCore::RETSP_u6), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
1605 MVT::i32, 1, 2,
1606 11,
1607 OPC_CheckPredicate5,
1608 OPC_MoveParent,
1609 OPC_EmitMergeInputChains1_0,
1610 OPC_EmitConvertToTarget1,
1611 OPC_MorphNodeTo1, TARGET_VAL(XCore::RETSP_lu6), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic1,
1612 MVT::i32, 1, 2,
1613 0,
1614 13, TARGET_VAL(XCoreISD::DPRelativeWrapper),
1615 OPC_RecordChild0,
1616 OPC_MoveChild0,
1617 OPC_CheckOpcode, TARGET_VAL(ISD::TargetGlobalAddress),
1618 OPC_MoveParent,
1619 OPC_CheckTypeI32,
1620 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWDP_lru6),
1621 MVT::i32, 1, 0,
1622 26, TARGET_VAL(XCoreISD::CPRelativeWrapper),
1623 OPC_RecordChild0,
1624 OPC_MoveChild0,
1625 OPC_SwitchOpcode , 8, TARGET_VAL(ISD::TargetGlobalAddress),
1626 OPC_MoveParent,
1627 OPC_CheckTypeI32,
1628 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWCP_lu6),
1629 MVT::i32, 1, 0,
1630 8, TARGET_VAL(ISD::TargetConstantPool),
1631 OPC_MoveParent,
1632 OPC_CheckTypeI32,
1633 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAWCP_lu6),
1634 MVT::i32, 1, 0,
1635 0,
1636 36, TARGET_VAL(XCoreISD::PCRelativeWrapper),
1637 OPC_RecordChild0,
1638 OPC_MoveChild0,
1639 OPC_SwitchOpcode , 18, TARGET_VAL(ISD::TargetGlobalAddress),
1640 OPC_MoveParent,
1641 OPC_CheckTypeI32,
1642 OPC_Scope, 6,
1643 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAPF_lu10),
1644 MVT::i32, 1, 0,
1645 6,
1646 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAPB_lu10),
1647 MVT::i32, 1, 0,
1648 0,
1649 8, TARGET_VAL(ISD::TargetBlockAddress),
1650 OPC_MoveParent,
1651 OPC_CheckTypeI32,
1652 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDAPF_lu10_ba),
1653 MVT::i32, 1, 0,
1654 0,
1655 43, TARGET_VAL(XCoreISD::BL),
1656 OPC_RecordNode,
1657 OPC_CaptureGlueInput,
1658 OPC_RecordChild1,
1659 OPC_Scope, 27,
1660 OPC_MoveChild1,
1661 OPC_SwitchOpcode , 9, TARGET_VAL(ISD::TargetGlobalAddress),
1662 OPC_MoveParent,
1663 OPC_EmitMergeInputChains1_0,
1664 OPC_MorphNodeTo1, TARGET_VAL(XCore::BLRF_lu10), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1665 MVT::i32, 1, 1,
1666 9, TARGET_VAL(ISD::TargetExternalSymbol),
1667 OPC_MoveParent,
1668 OPC_EmitMergeInputChains1_0,
1669 OPC_MorphNodeTo1, TARGET_VAL(XCore::BLRF_lu10), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1670 MVT::i32, 1, 1,
1671 0,
1672 9,
1673 OPC_CheckChild1TypeI32,
1674 OPC_EmitMergeInputChains1_0,
1675 OPC_MorphNodeTo1, TARGET_VAL(XCore::BLA_1r), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
1676 MVT::i32, 1, 1,
1677 0,
1678 15, TARGET_VAL(XCoreISD::BR_JT),
1679 OPC_RecordNode,
1680 OPC_RecordChild1,
1681 OPC_MoveChild1,
1682 OPC_CheckOpcode, TARGET_VAL(ISD::TargetJumpTable),
1683 OPC_MoveParent,
1684 OPC_RecordChild2,
1685 OPC_EmitMergeInputChains1_0,
1686 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BR_JT),
1687 2, 1, 2,
1688 15, TARGET_VAL(XCoreISD::BR_JT32),
1689 OPC_RecordNode,
1690 OPC_RecordChild1,
1691 OPC_MoveChild1,
1692 OPC_CheckOpcode, TARGET_VAL(ISD::TargetJumpTable),
1693 OPC_MoveParent,
1694 OPC_RecordChild2,
1695 OPC_EmitMergeInputChains1_0,
1696 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BR_JT32),
1697 2, 1, 2,
1698 21, TARGET_VAL(ISD::Constant),
1699 OPC_RecordNode,
1700 OPC_Scope, 8,
1701 OPC_CheckPredicate4,
1702 OPC_EmitConvertToTarget0,
1703 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDC_ru6),
1704 MVT::i32, 1, 1,
1705 8,
1706 OPC_CheckPredicate5,
1707 OPC_EmitConvertToTarget0,
1708 OPC_MorphNodeTo1None, TARGET_VAL(XCore::LDC_lru6),
1709 MVT::i32, 1, 1,
1710 0,
1711 5, TARGET_VAL(XCoreISD::FRAME_TO_ARGS_OFFSET),
1712 OPC_MorphNodeTo1None, TARGET_VAL(XCore::FRAME_TO_ARGS_OFFSET),
1713 MVT::i32, 0,
1714 13, TARGET_VAL(XCoreISD::EH_RETURN),
1715 OPC_RecordNode,
1716 OPC_CaptureGlueInput,
1717 OPC_RecordChild1,
1718 OPC_CheckChild1TypeI32,
1719 OPC_RecordChild2,
1720 OPC_EmitMergeInputChains1_0,
1721 OPC_MorphNodeTo0, TARGET_VAL(XCore::EH_RETURN), 0|OPFL_Chain|OPFL_GlueInput,
1722 2, 1, 2,
1723 9, TARGET_VAL(ISD::OR),
1724 OPC_RecordChild0,
1725 OPC_RecordChild1,
1726 OPC_MorphNodeTo1None, TARGET_VAL(XCore::OR_3r),
1727 MVT::i32, 2, 0, 1,
1728 9, TARGET_VAL(ISD::SDIV),
1729 OPC_RecordChild0,
1730 OPC_RecordChild1,
1731 OPC_MorphNodeTo1None, TARGET_VAL(XCore::DIVS_l3r),
1732 MVT::i32, 2, 0, 1,
1733 9, TARGET_VAL(ISD::UDIV),
1734 OPC_RecordChild0,
1735 OPC_RecordChild1,
1736 OPC_MorphNodeTo1None, TARGET_VAL(XCore::DIVU_l3r),
1737 MVT::i32, 2, 0, 1,
1738 9, TARGET_VAL(ISD::SREM),
1739 OPC_RecordChild0,
1740 OPC_RecordChild1,
1741 OPC_MorphNodeTo1None, TARGET_VAL(XCore::REMS_l3r),
1742 MVT::i32, 2, 0, 1,
1743 9, TARGET_VAL(ISD::UREM),
1744 OPC_RecordChild0,
1745 OPC_RecordChild1,
1746 OPC_MorphNodeTo1None, TARGET_VAL(XCore::REMU_l3r),
1747 MVT::i32, 2, 0, 1,
1748 7, TARGET_VAL(ISD::BSWAP),
1749 OPC_RecordChild0,
1750 OPC_MorphNodeTo1None, TARGET_VAL(XCore::BYTEREV_l2r),
1751 MVT::i32, 1, 0,
1752 7, TARGET_VAL(ISD::CTLZ),
1753 OPC_RecordChild0,
1754 OPC_MorphNodeTo1None, TARGET_VAL(XCore::CLZ_l2r),
1755 MVT::i32, 1, 0,
1756 43, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
1757 OPC_RecordChild0,
1758 OPC_MoveChild1,
1759 OPC_Scope, 12,
1760 OPC_CheckValueType, MVT::i1,
1761 OPC_MoveParent,
1762 OPC_EmitInteger32, 2,
1763 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SEXT_rus),
1764 MVT::i32, 2, 0, 1,
1765 12,
1766 OPC_CheckValueType, MVT::i8,
1767 OPC_MoveParent,
1768 OPC_EmitInteger32, 16,
1769 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SEXT_rus),
1770 MVT::i32, 2, 0, 1,
1771 12,
1772 OPC_CheckValueType, MVT::i16,
1773 OPC_MoveParent,
1774 OPC_EmitInteger32, 32,
1775 OPC_MorphNodeTo1None, TARGET_VAL(XCore::SEXT_rus),
1776 MVT::i32, 2, 0, 1,
1777 0,
1778 7, TARGET_VAL(ISD::BITREVERSE),
1779 OPC_RecordChild0,
1780 OPC_MorphNodeTo1None, TARGET_VAL(XCore::BITREV_l2r),
1781 MVT::i32, 1, 0,
1782 13, TARGET_VAL(ISD::BR),
1783 OPC_RecordNode,
1784 OPC_RecordChild1,
1785 OPC_MoveChild1,
1786 OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
1787 OPC_MoveParent,
1788 OPC_EmitMergeInputChains1_0,
1789 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::BRFU_lu6),
1790 1, 1,
1791 13, TARGET_VAL(ISD::CTTZ),
1792 OPC_RecordChild0,
1793 OPC_EmitNode1None, TARGET_VAL(XCore::BITREV_l2r),
1794 MVT::i32, 1, 0,
1795 OPC_MorphNodeTo1None, TARGET_VAL(XCore::CLZ_l2r),
1796 MVT::i32, 1, 1,
1797 15, TARGET_VAL(ISD::TRAP),
1798 OPC_RecordNode,
1799 OPC_EmitMergeInputChains1_0,
1800 OPC_EmitInteger32, 0,
1801 OPC_EmitNode1None, TARGET_VAL(XCore::LDC_ru6),
1802 MVT::i32, 1, 1,
1803 OPC_MorphNodeTo0Chain, TARGET_VAL(XCore::ECALLF_1r),
1804 1, 2,
1805 0,
1806 0
1807 }; // Total Array size is 3432 bytes
1808
1809 #undef TARGET_VAL
1810 SelectCodeCommon(NodeToMatch: N, MatcherTable, TableSize: sizeof(MatcherTable));
1811}
1812#endif // GET_DAGISEL_BODY
1813
1814#ifdef GET_DAGISEL_DECL
1815bool CheckNodePredicate(SDNode *Node, unsigned PredNo) const override;
1816#endif
1817#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
1818bool DAGISEL_CLASS_COLONCOLON CheckNodePredicate(SDNode *Node, unsigned PredNo) const
1819#if DAGISEL_INLINE
1820 override
1821#endif
1822{
1823 switch (PredNo) {
1824 default: llvm_unreachable("Invalid predicate in table?");
1825 case 0: {
1826 // Predicate_unindexedload
1827 SDNode *N = Node;
1828 (void)N;
1829if (cast<LoadSDNode>(Val: N)->getAddressingMode() != ISD::UNINDEXED) return false;
1830return true;
1831
1832 }
1833 case 1: {
1834 // Predicate_unindexedstore
1835 SDNode *N = Node;
1836 (void)N;
1837if (cast<StoreSDNode>(Val: N)->getAddressingMode() != ISD::UNINDEXED) return false;
1838return true;
1839
1840 }
1841 case 2: {
1842 // Predicate_immUs
1843 auto *N = cast<ConstantSDNode>(Val: Node);
1844 (void)N;
1845
1846 return (uint32_t)N->getZExtValue() <= 11;
1847
1848 }
1849 case 3: {
1850 // Predicate_load
1851 SDNode *N = Node;
1852 (void)N;
1853if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
1854return true;
1855
1856 }
1857 case 4: {
1858 // Predicate_immU6
1859 auto *N = cast<ConstantSDNode>(Val: Node);
1860 (void)N;
1861
1862 return (uint32_t)N->getZExtValue() < (1 << 6);
1863
1864 }
1865 case 5: {
1866 // Predicate_immU16
1867 auto *N = cast<ConstantSDNode>(Val: Node);
1868 (void)N;
1869
1870 return (uint32_t)N->getZExtValue() < (1 << 16);
1871
1872 }
1873 case 6: {
1874 // Predicate_extloadi16
1875 // Predicate_sextloadi16
1876 SDNode *N = Node;
1877 (void)N;
1878if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i16) return false;
1879return true;
1880
1881 }
1882 case 7: {
1883 // Predicate_store
1884 SDNode *N = Node;
1885 (void)N;
1886 if (cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
1887return true;
1888
1889 }
1890 case 8: {
1891 // Predicate_immBitp
1892 auto *N = cast<ConstantSDNode>(Val: Node);
1893 (void)N;
1894
1895 uint32_t value = (uint32_t)N->getZExtValue();
1896 return (value >= 1 && value <= 8)
1897 || value == 16
1898 || value == 24
1899 || value == 32;
1900
1901 }
1902 case 9: {
1903 // Predicate_immUs4
1904 auto *N = cast<ConstantSDNode>(Val: Node);
1905 (void)N;
1906
1907 uint32_t value = (uint32_t)N->getZExtValue();
1908 return value%4 == 0 && value/4 <= 11;
1909
1910 }
1911 case 10: {
1912 // Predicate_extload
1913 SDNode *N = Node;
1914 (void)N;
1915if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::EXTLOAD) return false;
1916return true;
1917
1918 }
1919 case 11: {
1920 // Predicate_extloadi8
1921 // Predicate_zextloadi8
1922 SDNode *N = Node;
1923 (void)N;
1924if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i8) return false;
1925return true;
1926
1927 }
1928 case 12: {
1929 // Predicate_truncstore
1930 SDNode *N = Node;
1931 (void)N;
1932 if (!cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
1933return true;
1934
1935 }
1936 case 13: {
1937 // Predicate_sextload
1938 SDNode *N = Node;
1939 (void)N;
1940if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::SEXTLOAD) return false;
1941return true;
1942
1943 }
1944 case 14: {
1945 // Predicate_truncstorei16
1946 SDNode *N = Node;
1947 (void)N;
1948if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i16) return false;
1949 if (!cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
1950return true;
1951
1952 }
1953 case 15: {
1954 // Predicate_zextload
1955 SDNode *N = Node;
1956 (void)N;
1957if (cast<LoadSDNode>(Val: N)->getExtensionType() != ISD::ZEXTLOAD) return false;
1958return true;
1959
1960 }
1961 case 16: {
1962 // Predicate_truncstorei8
1963 SDNode *N = Node;
1964 (void)N;
1965if (cast<MemSDNode>(Val: N)->getMemoryVT() != MVT::i8) return false;
1966 if (!cast<StoreSDNode>(Val: N)->isTruncatingStore()) return false;
1967return true;
1968
1969 }
1970 case 17: {
1971 // Predicate_immUsNeg
1972 auto *N = cast<ConstantSDNode>(Val: Node);
1973 (void)N;
1974
1975 return -((uint32_t)N->getZExtValue()) <= 11;
1976
1977 }
1978 case 18: {
1979 // Predicate_immUs4Neg
1980 auto *N = cast<ConstantSDNode>(Val: Node);
1981 (void)N;
1982
1983 uint32_t value = (uint32_t)N->getZExtValue();
1984 return (-value)%4 == 0 && (-value)/4 <= 11;
1985
1986 }
1987 case 19: {
1988 // Predicate_immBpwSubBitp
1989 auto *N = cast<ConstantSDNode>(Val: Node);
1990 (void)N;
1991
1992 uint32_t value = (uint32_t)N->getZExtValue();
1993 return (value >= 24 && value <= 31)
1994 || value == 16
1995 || value == 8
1996 || value == 0;
1997
1998 }
1999 case 20: {
2000 // Predicate_immMskBitp
2001 auto *N = cast<ConstantSDNode>(Val: Node);
2002 (void)N;
2003 return immMskBitp(inN: N);
2004 }
2005 }
2006}
2007#endif // GET_DAGISEL_BODY
2008
2009#ifdef GET_DAGISEL_DECL
2010bool CheckComplexPattern(SDNode *Root, SDNode *Parent,
2011 SDValue N, unsigned PatternNo,
2012 SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result) override;
2013#endif
2014#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2015bool DAGISEL_CLASS_COLONCOLON CheckComplexPattern(SDNode *Root, SDNode *Parent,
2016 SDValue N, unsigned PatternNo,
2017 SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result)
2018#if DAGISEL_INLINE
2019 override
2020#endif
2021{
2022 unsigned NextRes = Result.size();
2023 switch (PatternNo) {
2024 default: llvm_unreachable("Invalid pattern # in table?");
2025 case 0:
2026 Result.resize(N: NextRes+2);
2027 return SelectADDRspii(Addr: N, Base&: Result[NextRes+0].first, Offset&: Result[NextRes+1].first);
2028 }
2029}
2030#endif // GET_DAGISEL_BODY
2031
2032#ifdef GET_DAGISEL_DECL
2033SDValue RunSDNodeXForm(SDValue V, unsigned XFormNo) override;
2034#endif
2035#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
2036SDValue DAGISEL_CLASS_COLONCOLON RunSDNodeXForm(SDValue V, unsigned XFormNo)
2037#if DAGISEL_INLINE
2038 override
2039#endif
2040{
2041 switch (XFormNo) {
2042 default: llvm_unreachable("Invalid xform # in table?");
2043 case 0: {
2044 ConstantSDNode *N = cast<ConstantSDNode>(Val: V.getNode());
2045
2046 // Transformation function: imm/4
2047 assert(N->getZExtValue() % 4 == 0);
2048 return getI32Imm(Imm: N->getZExtValue()/4, dl: SDLoc(N));
2049
2050 }
2051 case 1: {
2052 ConstantSDNode *N = cast<ConstantSDNode>(Val: V.getNode());
2053
2054 // Transformation function: -imm
2055 uint32_t value = N->getZExtValue();
2056 return getI32Imm(Imm: -value, dl: SDLoc(N));
2057
2058 }
2059 case 2: {
2060 ConstantSDNode *N = cast<ConstantSDNode>(Val: V.getNode());
2061
2062 // Transformation function: -imm/4
2063 uint32_t value = N->getZExtValue();
2064 assert(-value % 4 == 0);
2065 return getI32Imm(Imm: -value/4, dl: SDLoc(N));
2066
2067 }
2068 case 3: {
2069 ConstantSDNode *N = cast<ConstantSDNode>(Val: V.getNode());
2070
2071 // Transformation function: 32-imm
2072 uint32_t value = N->getZExtValue();
2073 return getI32Imm(Imm: 32 - value, dl: SDLoc(N));
2074
2075 }
2076 case 4: {
2077 ConstantSDNode *N = cast<ConstantSDNode>(Val: V.getNode());
2078
2079 // Transformation function: get the size of a mask
2080 assert(isMask_32(N->getZExtValue()));
2081 // look for the first non-zero bit
2082 return getI32Imm(Imm: llvm::bit_width(Value: (uint32_t)N->getZExtValue()),
2083 dl: SDLoc(N));
2084
2085 }
2086 }
2087}
2088#endif // GET_DAGISEL_BODY
2089
2090
2091#ifdef DAGISEL_INLINE
2092#undef DAGISEL_INLINE
2093#endif
2094#ifdef DAGISEL_CLASS_COLONCOLON
2095#undef DAGISEL_CLASS_COLONCOLON
2096#endif
2097#ifdef GET_DAGISEL_DECL
2098#undef GET_DAGISEL_DECL
2099#endif
2100#ifdef GET_DAGISEL_BODY
2101#undef GET_DAGISEL_BODY
2102#endif
2103