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