• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|*                                                                            *|
3|* DAG Instruction Selector for the LoongArch 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 , 127, TARGET_VAL(ISD::MUL),
58  OPC_Scope, 67,
59   OPC_MoveChild0,
60   OPC_SwitchOpcode , 32, TARGET_VAL(LoongArchISD::BSTRPICK),
61    OPC_RecordChild0,
62    OPC_CheckChild1Integer, 62,
63    OPC_CheckChild1Type, MVT::i64,
64    OPC_CheckChild2Integer, 0,
65    OPC_MoveParent,
66    OPC_MoveChild1,
67    OPC_CheckOpcode, TARGET_VAL(LoongArchISD::BSTRPICK),
68    OPC_RecordChild0,
69    OPC_CheckChild1Integer, 62,
70    OPC_CheckChild1Type, MVT::i64,
71    OPC_CheckChild2Integer, 0,
72    OPC_MoveParent,
73    OPC_CheckType, MVT::i64,
74    OPC_CheckPatternPredicate, 0,
75    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULW_D_WU), 0,
76                  MVT::i64, 2, 0, 1,
77   26, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
78    OPC_RecordChild0,
79    OPC_MoveChild1,
80    OPC_CheckValueType, MVT::i32,
81    OPC_MoveParent,
82    OPC_MoveParent,
83    OPC_MoveChild1,
84    OPC_CheckOpcode, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
85    OPC_RecordChild0,
86    OPC_MoveChild1,
87    OPC_CheckValueType, MVT::i32,
88    OPC_MoveParent,
89    OPC_MoveParent,
90    OPC_CheckPatternPredicate, 0,
91    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULW_D_W), 0,
92                  MVT::i64, 2, 0, 1,
93   0,
94  56,
95   OPC_RecordChild0,
96   OPC_RecordChild1,
97   OPC_SwitchType , 24, MVT::i64,
98    OPC_Scope, 10,
99     OPC_CheckPatternPredicate, 1,
100     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MUL_W), 0,
101                   MVT::i64, 2, 0, 1,
102    10,
103     OPC_CheckPatternPredicate, 0,
104     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MUL_D), 0,
105                   MVT::i64, 2, 0, 1,
106    0,
107   24, MVT::i32,
108    OPC_Scope, 10,
109     OPC_CheckPatternPredicate, 2,
110     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MUL_W), 0,
111                   MVT::i32, 2, 0, 1,
112    10,
113     OPC_CheckPatternPredicate, 3,
114     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MUL_D), 0,
115                   MVT::i32, 2, 0, 1,
116    0,
117   0,
118  0,
119 23|128,2, TARGET_VAL(LoongArchISD::BSTRPICK),
120  OPC_Scope, 15|128,1,
121   OPC_MoveChild0,
122   OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
123   OPC_Scope, 67,
124    OPC_RecordChild0,
125    OPC_MoveChild1,
126    OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
127    OPC_RecordChild0,
128    OPC_RecordChild1,
129    OPC_MoveChild1,
130    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
131    OPC_CheckPredicate, 0,
132    OPC_SwitchType , 24, MVT::i64,
133     OPC_MoveParent,
134     OPC_MoveParent,
135     OPC_MoveParent,
136     OPC_CheckChild1Integer, 62,
137     OPC_CheckChild1Type, MVT::i64,
138     OPC_CheckChild2Integer, 0,
139     OPC_CheckType, MVT::i64,
140     OPC_CheckPatternPredicate, 0,
141     OPC_EmitConvertToTarget, 2,
142     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_WU), 0,
143                   MVT::i64, 3, 1, 0, 3,
144    24, MVT::i32,
145     OPC_MoveParent,
146     OPC_MoveParent,
147     OPC_MoveParent,
148     OPC_CheckChild1Integer, 62,
149     OPC_CheckChild1Type, MVT::i64,
150     OPC_CheckChild2Integer, 0,
151     OPC_CheckType, MVT::i32,
152     OPC_CheckPatternPredicate, 3,
153     OPC_EmitConvertToTarget, 2,
154     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_WU), 0,
155                   MVT::i32, 3, 1, 0, 3,
156    0,
157   68,
158    OPC_MoveChild0,
159    OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
160    OPC_RecordChild0,
161    OPC_RecordChild1,
162    OPC_MoveChild1,
163    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
164    OPC_CheckPredicate, 0,
165    OPC_SwitchType , 25, MVT::i64,
166     OPC_MoveParent,
167     OPC_MoveParent,
168     OPC_RecordChild1,
169     OPC_MoveParent,
170     OPC_CheckChild1Integer, 62,
171     OPC_CheckChild1Type, MVT::i64,
172     OPC_CheckChild2Integer, 0,
173     OPC_CheckType, MVT::i64,
174     OPC_CheckPatternPredicate, 0,
175     OPC_EmitConvertToTarget, 1,
176     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_WU), 0,
177                   MVT::i64, 3, 0, 2, 3,
178    25, MVT::i32,
179     OPC_MoveParent,
180     OPC_MoveParent,
181     OPC_RecordChild1,
182     OPC_MoveParent,
183     OPC_CheckChild1Integer, 62,
184     OPC_CheckChild1Type, MVT::i64,
185     OPC_CheckChild2Integer, 0,
186     OPC_CheckType, MVT::i32,
187     OPC_CheckPatternPredicate, 3,
188     OPC_EmitConvertToTarget, 1,
189     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_WU), 0,
190                   MVT::i32, 3, 0, 2, 3,
191    0,
192   0,
193  2|128,1,
194   OPC_RecordChild0,
195   OPC_RecordChild1,
196   OPC_MoveChild1,
197   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
198   OPC_Scope, 60,
199    OPC_CheckPredicate, 1,
200    OPC_SwitchType , 26, MVT::i64,
201     OPC_MoveParent,
202     OPC_RecordChild2,
203     OPC_MoveChild2,
204     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
205     OPC_CheckPredicate, 1,
206     OPC_MoveParent,
207     OPC_CheckType, MVT::i64,
208     OPC_CheckPatternPredicate, 1,
209     OPC_EmitConvertToTarget, 1,
210     OPC_EmitConvertToTarget, 2,
211     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRPICK_W), 0,
212                   MVT::i64, 3, 0, 3, 4,
213    26, MVT::i32,
214     OPC_MoveParent,
215     OPC_RecordChild2,
216     OPC_MoveChild2,
217     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
218     OPC_CheckPredicate, 1,
219     OPC_MoveParent,
220     OPC_CheckType, MVT::i32,
221     OPC_CheckPatternPredicate, 2,
222     OPC_EmitConvertToTarget, 1,
223     OPC_EmitConvertToTarget, 2,
224     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRPICK_W), 0,
225                   MVT::i32, 3, 0, 3, 4,
226    0,
227   60,
228    OPC_CheckPredicate, 2,
229    OPC_SwitchType , 26, MVT::i64,
230     OPC_MoveParent,
231     OPC_RecordChild2,
232     OPC_MoveChild2,
233     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
234     OPC_CheckPredicate, 2,
235     OPC_MoveParent,
236     OPC_CheckType, MVT::i64,
237     OPC_CheckPatternPredicate, 0,
238     OPC_EmitConvertToTarget, 1,
239     OPC_EmitConvertToTarget, 2,
240     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRPICK_D), 0,
241                   MVT::i64, 3, 0, 3, 4,
242    26, MVT::i32,
243     OPC_MoveParent,
244     OPC_RecordChild2,
245     OPC_MoveChild2,
246     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
247     OPC_CheckPredicate, 2,
248     OPC_MoveParent,
249     OPC_CheckType, MVT::i32,
250     OPC_CheckPatternPredicate, 3,
251     OPC_EmitConvertToTarget, 1,
252     OPC_EmitConvertToTarget, 2,
253     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRPICK_D), 0,
254                   MVT::i32, 3, 0, 3, 4,
255    0,
256   0,
257  0,
258 36|128,17, TARGET_VAL(ISD::LOAD),
259  OPC_RecordMemRef,
260  OPC_RecordNode,
261  OPC_Scope, 54|128,10,
262   OPC_MoveChild1,
263   OPC_SwitchOpcode , 89|128,6, TARGET_VAL(ISD::ADD),
264    OPC_RecordChild0,
265    OPC_RecordChild1,
266    OPC_Scope, 80|128,3,
267     OPC_MoveChild1,
268     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
269     OPC_Scope, 17|128,3,
270      OPC_CheckPredicate, 3,
271      OPC_MoveParent,
272      OPC_CheckPredicate, 4,
273      OPC_SwitchType , 107|128,1, MVT::i64,
274       OPC_MoveParent,
275       OPC_CheckPredicate, 5,
276       OPC_CheckType, MVT::i64,
277       OPC_Scope, 20,
278        OPC_CheckPredicate, 6,
279        OPC_CheckPredicate, 7,
280        OPC_CheckPatternPredicate, 4,
281        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
282        OPC_EmitMergeInputChains1_0,
283        OPC_EmitConvertToTarget, 2,
284        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
285                      MVT::i64, 2, 3, 4,
286       20,
287        OPC_CheckPredicate, 8,
288        OPC_CheckPredicate, 7,
289        OPC_CheckPatternPredicate, 4,
290        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
291        OPC_EmitMergeInputChains1_0,
292        OPC_EmitConvertToTarget, 2,
293        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
294                      MVT::i64, 2, 3, 4,
295       20,
296        OPC_CheckPredicate, 6,
297        OPC_CheckPredicate, 9,
298        OPC_CheckPatternPredicate, 4,
299        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
300        OPC_EmitMergeInputChains1_0,
301        OPC_EmitConvertToTarget, 2,
302        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
303                      MVT::i64, 2, 3, 4,
304       20,
305        OPC_CheckPredicate, 8,
306        OPC_CheckPredicate, 9,
307        OPC_CheckPatternPredicate, 4,
308        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
309        OPC_EmitMergeInputChains1_0,
310        OPC_EmitConvertToTarget, 2,
311        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
312                      MVT::i64, 2, 3, 4,
313       18,
314        OPC_CheckPredicate, 10,
315        OPC_CheckPatternPredicate, 1,
316        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
317        OPC_EmitMergeInputChains1_0,
318        OPC_EmitConvertToTarget, 2,
319        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
320                      MVT::i64, 2, 3, 4,
321       42,
322        OPC_CheckPredicate, 11,
323        OPC_Scope, 18,
324         OPC_CheckPredicate, 7,
325         OPC_CheckPatternPredicate, 4,
326         OPC_CheckComplexPat, /*CP*/0, /*#*/1,
327         OPC_EmitMergeInputChains1_0,
328         OPC_EmitConvertToTarget, 2,
329         OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
330                       MVT::i64, 2, 3, 4,
331        18,
332         OPC_CheckPredicate, 9,
333         OPC_CheckPatternPredicate, 4,
334         OPC_CheckComplexPat, /*CP*/0, /*#*/1,
335         OPC_EmitMergeInputChains1_0,
336         OPC_EmitConvertToTarget, 2,
337         OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
338                       MVT::i64, 2, 3, 4,
339        0,
340       20,
341        OPC_CheckPredicate, 6,
342        OPC_CheckPredicate, 12,
343        OPC_CheckPatternPredicate, 0,
344        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
345        OPC_EmitMergeInputChains1_0,
346        OPC_EmitConvertToTarget, 2,
347        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
348                      MVT::i64, 2, 3, 4,
349       20,
350        OPC_CheckPredicate, 8,
351        OPC_CheckPredicate, 12,
352        OPC_CheckPatternPredicate, 0,
353        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
354        OPC_EmitMergeInputChains1_0,
355        OPC_EmitConvertToTarget, 2,
356        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
357                      MVT::i64, 2, 3, 4,
358       20,
359        OPC_CheckPredicate, 11,
360        OPC_CheckPredicate, 12,
361        OPC_CheckPatternPredicate, 0,
362        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
363        OPC_EmitMergeInputChains1_0,
364        OPC_EmitConvertToTarget, 2,
365        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_WU), 0|OPFL_Chain|OPFL_MemRefs,
366                      MVT::i64, 2, 3, 4,
367       18,
368        OPC_CheckPredicate, 10,
369        OPC_CheckPatternPredicate, 0,
370        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
371        OPC_EmitMergeInputChains1_0,
372        OPC_EmitConvertToTarget, 2,
373        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
374                      MVT::i64, 2, 3, 4,
375       0,
376      25|128,1, MVT::i32,
377       OPC_MoveParent,
378       OPC_CheckPredicate, 5,
379       OPC_CheckType, MVT::i32,
380       OPC_Scope, 20,
381        OPC_CheckPredicate, 6,
382        OPC_CheckPredicate, 7,
383        OPC_CheckPatternPredicate, 5,
384        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
385        OPC_EmitMergeInputChains1_0,
386        OPC_EmitConvertToTarget, 2,
387        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
388                      MVT::i32, 2, 3, 4,
389       20,
390        OPC_CheckPredicate, 8,
391        OPC_CheckPredicate, 7,
392        OPC_CheckPatternPredicate, 5,
393        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
394        OPC_EmitMergeInputChains1_0,
395        OPC_EmitConvertToTarget, 2,
396        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
397                      MVT::i32, 2, 3, 4,
398       20,
399        OPC_CheckPredicate, 6,
400        OPC_CheckPredicate, 9,
401        OPC_CheckPatternPredicate, 5,
402        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
403        OPC_EmitMergeInputChains1_0,
404        OPC_EmitConvertToTarget, 2,
405        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
406                      MVT::i32, 2, 3, 4,
407       20,
408        OPC_CheckPredicate, 8,
409        OPC_CheckPredicate, 9,
410        OPC_CheckPatternPredicate, 5,
411        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
412        OPC_EmitMergeInputChains1_0,
413        OPC_EmitConvertToTarget, 2,
414        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
415                      MVT::i32, 2, 3, 4,
416       18,
417        OPC_CheckPredicate, 10,
418        OPC_CheckPatternPredicate, 2,
419        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
420        OPC_EmitMergeInputChains1_0,
421        OPC_EmitConvertToTarget, 2,
422        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
423                      MVT::i32, 2, 3, 4,
424       42,
425        OPC_CheckPredicate, 11,
426        OPC_Scope, 18,
427         OPC_CheckPredicate, 7,
428         OPC_CheckPatternPredicate, 5,
429         OPC_CheckComplexPat, /*CP*/0, /*#*/1,
430         OPC_EmitMergeInputChains1_0,
431         OPC_EmitConvertToTarget, 2,
432         OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
433                       MVT::i32, 2, 3, 4,
434        18,
435         OPC_CheckPredicate, 9,
436         OPC_CheckPatternPredicate, 5,
437         OPC_CheckComplexPat, /*CP*/0, /*#*/1,
438         OPC_EmitMergeInputChains1_0,
439         OPC_EmitConvertToTarget, 2,
440         OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
441                       MVT::i32, 2, 3, 4,
442        0,
443       0,
444      0,
445     54,
446      OPC_CheckPredicate, 13,
447      OPC_MoveParent,
448      OPC_CheckPredicate, 4,
449      OPC_CheckType, MVT::i64,
450      OPC_MoveParent,
451      OPC_CheckPredicate, 5,
452      OPC_CheckType, MVT::i64,
453      OPC_Scope, 20,
454       OPC_CheckPredicate, 6,
455       OPC_CheckPredicate, 12,
456       OPC_CheckPatternPredicate, 0,
457       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
458       OPC_EmitMergeInputChains1_0,
459       OPC_EmitConvertToTarget, 2,
460       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDPTR_W), 0|OPFL_Chain|OPFL_MemRefs,
461                     MVT::i64, 2, 3, 4,
462      18,
463       OPC_CheckPredicate, 10,
464       OPC_CheckPatternPredicate, 0,
465       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
466       OPC_EmitMergeInputChains1_0,
467       OPC_EmitConvertToTarget, 2,
468       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDPTR_D), 0|OPFL_Chain|OPFL_MemRefs,
469                     MVT::i64, 2, 3, 4,
470      0,
471     0,
472    1|128,3,
473     OPC_CheckType, MVT::i64,
474     OPC_MoveParent,
475     OPC_CheckPredicate, 5,
476     OPC_CheckType, MVT::i64,
477     OPC_Scope, 18,
478      OPC_CheckPredicate, 8,
479      OPC_CheckPredicate, 7,
480      OPC_CheckPatternPredicate, 0,
481      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
482      OPC_EmitMergeInputChains1_0,
483      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_B), 0|OPFL_Chain|OPFL_MemRefs,
484                    MVT::i64, 2, 3, 2,
485     18,
486      OPC_CheckPredicate, 6,
487      OPC_CheckPredicate, 7,
488      OPC_CheckPatternPredicate, 0,
489      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
490      OPC_EmitMergeInputChains1_0,
491      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_B), 0|OPFL_Chain|OPFL_MemRefs,
492                    MVT::i64, 2, 3, 2,
493     18,
494      OPC_CheckPredicate, 11,
495      OPC_CheckPredicate, 7,
496      OPC_CheckPatternPredicate, 0,
497      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
498      OPC_EmitMergeInputChains1_0,
499      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_BU), 0|OPFL_Chain|OPFL_MemRefs,
500                    MVT::i64, 2, 3, 2,
501     18,
502      OPC_CheckPredicate, 8,
503      OPC_CheckPredicate, 9,
504      OPC_CheckPatternPredicate, 0,
505      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
506      OPC_EmitMergeInputChains1_0,
507      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_H), 0|OPFL_Chain|OPFL_MemRefs,
508                    MVT::i64, 2, 3, 2,
509     18,
510      OPC_CheckPredicate, 6,
511      OPC_CheckPredicate, 9,
512      OPC_CheckPatternPredicate, 0,
513      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
514      OPC_EmitMergeInputChains1_0,
515      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_H), 0|OPFL_Chain|OPFL_MemRefs,
516                    MVT::i64, 2, 3, 2,
517     18,
518      OPC_CheckPredicate, 11,
519      OPC_CheckPredicate, 9,
520      OPC_CheckPatternPredicate, 0,
521      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
522      OPC_EmitMergeInputChains1_0,
523      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_HU), 0|OPFL_Chain|OPFL_MemRefs,
524                    MVT::i64, 2, 3, 2,
525     18,
526      OPC_CheckPredicate, 8,
527      OPC_CheckPredicate, 12,
528      OPC_CheckPatternPredicate, 0,
529      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
530      OPC_EmitMergeInputChains1_0,
531      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_W), 0|OPFL_Chain|OPFL_MemRefs,
532                    MVT::i64, 2, 3, 2,
533     18,
534      OPC_CheckPredicate, 6,
535      OPC_CheckPredicate, 12,
536      OPC_CheckPatternPredicate, 0,
537      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
538      OPC_EmitMergeInputChains1_0,
539      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_W), 0|OPFL_Chain|OPFL_MemRefs,
540                    MVT::i64, 2, 3, 2,
541     18,
542      OPC_CheckPredicate, 11,
543      OPC_CheckPredicate, 12,
544      OPC_CheckPatternPredicate, 0,
545      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
546      OPC_EmitMergeInputChains1_0,
547      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_WU), 0|OPFL_Chain|OPFL_MemRefs,
548                    MVT::i64, 2, 3, 2,
549     16,
550      OPC_CheckPredicate, 10,
551      OPC_CheckPatternPredicate, 0,
552      OPC_CheckComplexPat, /*CP*/1, /*#*/1,
553      OPC_EmitMergeInputChains1_0,
554      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_D), 0|OPFL_Chain|OPFL_MemRefs,
555                    MVT::i64, 2, 3, 2,
556     18,
557      OPC_CheckPredicate, 8,
558      OPC_CheckPredicate, 7,
559      OPC_CheckPatternPredicate, 0,
560      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
561      OPC_EmitMergeInputChains1_0,
562      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_B), 0|OPFL_Chain|OPFL_MemRefs,
563                    MVT::i64, 2, 3, 1,
564     18,
565      OPC_CheckPredicate, 6,
566      OPC_CheckPredicate, 7,
567      OPC_CheckPatternPredicate, 0,
568      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
569      OPC_EmitMergeInputChains1_0,
570      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_B), 0|OPFL_Chain|OPFL_MemRefs,
571                    MVT::i64, 2, 3, 1,
572     18,
573      OPC_CheckPredicate, 11,
574      OPC_CheckPredicate, 7,
575      OPC_CheckPatternPredicate, 0,
576      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
577      OPC_EmitMergeInputChains1_0,
578      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_BU), 0|OPFL_Chain|OPFL_MemRefs,
579                    MVT::i64, 2, 3, 1,
580     18,
581      OPC_CheckPredicate, 8,
582      OPC_CheckPredicate, 9,
583      OPC_CheckPatternPredicate, 0,
584      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
585      OPC_EmitMergeInputChains1_0,
586      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_H), 0|OPFL_Chain|OPFL_MemRefs,
587                    MVT::i64, 2, 3, 1,
588     18,
589      OPC_CheckPredicate, 6,
590      OPC_CheckPredicate, 9,
591      OPC_CheckPatternPredicate, 0,
592      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
593      OPC_EmitMergeInputChains1_0,
594      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_H), 0|OPFL_Chain|OPFL_MemRefs,
595                    MVT::i64, 2, 3, 1,
596     18,
597      OPC_CheckPredicate, 11,
598      OPC_CheckPredicate, 9,
599      OPC_CheckPatternPredicate, 0,
600      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
601      OPC_EmitMergeInputChains1_0,
602      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_HU), 0|OPFL_Chain|OPFL_MemRefs,
603                    MVT::i64, 2, 3, 1,
604     18,
605      OPC_CheckPredicate, 8,
606      OPC_CheckPredicate, 12,
607      OPC_CheckPatternPredicate, 0,
608      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
609      OPC_EmitMergeInputChains1_0,
610      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_W), 0|OPFL_Chain|OPFL_MemRefs,
611                    MVT::i64, 2, 3, 1,
612     18,
613      OPC_CheckPredicate, 6,
614      OPC_CheckPredicate, 12,
615      OPC_CheckPatternPredicate, 0,
616      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
617      OPC_EmitMergeInputChains1_0,
618      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_W), 0|OPFL_Chain|OPFL_MemRefs,
619                    MVT::i64, 2, 3, 1,
620     18,
621      OPC_CheckPredicate, 11,
622      OPC_CheckPredicate, 12,
623      OPC_CheckPatternPredicate, 0,
624      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
625      OPC_EmitMergeInputChains1_0,
626      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_WU), 0|OPFL_Chain|OPFL_MemRefs,
627                    MVT::i64, 2, 3, 1,
628     16,
629      OPC_CheckPredicate, 10,
630      OPC_CheckPatternPredicate, 0,
631      OPC_CheckComplexPat, /*CP*/1, /*#*/2,
632      OPC_EmitMergeInputChains1_0,
633      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDX_D), 0|OPFL_Chain|OPFL_MemRefs,
634                    MVT::i64, 2, 3, 1,
635     0,
636    0,
637   82|128,3, TARGET_VAL(ISD::OR),
638    OPC_RecordChild0,
639    OPC_RecordChild1,
640    OPC_MoveChild1,
641    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
642    OPC_Scope, 17|128,3,
643     OPC_CheckPredicate, 3,
644     OPC_MoveParent,
645     OPC_CheckPredicate, 4,
646     OPC_SwitchType , 107|128,1, MVT::i64,
647      OPC_MoveParent,
648      OPC_CheckPredicate, 5,
649      OPC_CheckType, MVT::i64,
650      OPC_Scope, 20,
651       OPC_CheckPredicate, 6,
652       OPC_CheckPredicate, 7,
653       OPC_CheckPatternPredicate, 4,
654       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
655       OPC_EmitMergeInputChains1_0,
656       OPC_EmitConvertToTarget, 2,
657       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
658                     MVT::i64, 2, 3, 4,
659      20,
660       OPC_CheckPredicate, 8,
661       OPC_CheckPredicate, 7,
662       OPC_CheckPatternPredicate, 4,
663       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
664       OPC_EmitMergeInputChains1_0,
665       OPC_EmitConvertToTarget, 2,
666       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
667                     MVT::i64, 2, 3, 4,
668      20,
669       OPC_CheckPredicate, 6,
670       OPC_CheckPredicate, 9,
671       OPC_CheckPatternPredicate, 4,
672       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
673       OPC_EmitMergeInputChains1_0,
674       OPC_EmitConvertToTarget, 2,
675       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
676                     MVT::i64, 2, 3, 4,
677      20,
678       OPC_CheckPredicate, 8,
679       OPC_CheckPredicate, 9,
680       OPC_CheckPatternPredicate, 4,
681       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
682       OPC_EmitMergeInputChains1_0,
683       OPC_EmitConvertToTarget, 2,
684       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
685                     MVT::i64, 2, 3, 4,
686      18,
687       OPC_CheckPredicate, 10,
688       OPC_CheckPatternPredicate, 1,
689       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
690       OPC_EmitMergeInputChains1_0,
691       OPC_EmitConvertToTarget, 2,
692       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
693                     MVT::i64, 2, 3, 4,
694      42,
695       OPC_CheckPredicate, 11,
696       OPC_Scope, 18,
697        OPC_CheckPredicate, 7,
698        OPC_CheckPatternPredicate, 4,
699        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
700        OPC_EmitMergeInputChains1_0,
701        OPC_EmitConvertToTarget, 2,
702        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
703                      MVT::i64, 2, 3, 4,
704       18,
705        OPC_CheckPredicate, 9,
706        OPC_CheckPatternPredicate, 4,
707        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
708        OPC_EmitMergeInputChains1_0,
709        OPC_EmitConvertToTarget, 2,
710        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
711                      MVT::i64, 2, 3, 4,
712       0,
713      20,
714       OPC_CheckPredicate, 6,
715       OPC_CheckPredicate, 12,
716       OPC_CheckPatternPredicate, 0,
717       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
718       OPC_EmitMergeInputChains1_0,
719       OPC_EmitConvertToTarget, 2,
720       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
721                     MVT::i64, 2, 3, 4,
722      20,
723       OPC_CheckPredicate, 8,
724       OPC_CheckPredicate, 12,
725       OPC_CheckPatternPredicate, 0,
726       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
727       OPC_EmitMergeInputChains1_0,
728       OPC_EmitConvertToTarget, 2,
729       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
730                     MVT::i64, 2, 3, 4,
731      20,
732       OPC_CheckPredicate, 11,
733       OPC_CheckPredicate, 12,
734       OPC_CheckPatternPredicate, 0,
735       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
736       OPC_EmitMergeInputChains1_0,
737       OPC_EmitConvertToTarget, 2,
738       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_WU), 0|OPFL_Chain|OPFL_MemRefs,
739                     MVT::i64, 2, 3, 4,
740      18,
741       OPC_CheckPredicate, 10,
742       OPC_CheckPatternPredicate, 0,
743       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
744       OPC_EmitMergeInputChains1_0,
745       OPC_EmitConvertToTarget, 2,
746       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
747                     MVT::i64, 2, 3, 4,
748      0,
749     25|128,1, MVT::i32,
750      OPC_MoveParent,
751      OPC_CheckPredicate, 5,
752      OPC_CheckType, MVT::i32,
753      OPC_Scope, 20,
754       OPC_CheckPredicate, 6,
755       OPC_CheckPredicate, 7,
756       OPC_CheckPatternPredicate, 5,
757       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
758       OPC_EmitMergeInputChains1_0,
759       OPC_EmitConvertToTarget, 2,
760       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
761                     MVT::i32, 2, 3, 4,
762      20,
763       OPC_CheckPredicate, 8,
764       OPC_CheckPredicate, 7,
765       OPC_CheckPatternPredicate, 5,
766       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
767       OPC_EmitMergeInputChains1_0,
768       OPC_EmitConvertToTarget, 2,
769       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
770                     MVT::i32, 2, 3, 4,
771      20,
772       OPC_CheckPredicate, 6,
773       OPC_CheckPredicate, 9,
774       OPC_CheckPatternPredicate, 5,
775       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
776       OPC_EmitMergeInputChains1_0,
777       OPC_EmitConvertToTarget, 2,
778       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
779                     MVT::i32, 2, 3, 4,
780      20,
781       OPC_CheckPredicate, 8,
782       OPC_CheckPredicate, 9,
783       OPC_CheckPatternPredicate, 5,
784       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
785       OPC_EmitMergeInputChains1_0,
786       OPC_EmitConvertToTarget, 2,
787       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
788                     MVT::i32, 2, 3, 4,
789      18,
790       OPC_CheckPredicate, 10,
791       OPC_CheckPatternPredicate, 2,
792       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
793       OPC_EmitMergeInputChains1_0,
794       OPC_EmitConvertToTarget, 2,
795       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
796                     MVT::i32, 2, 3, 4,
797      42,
798       OPC_CheckPredicate, 11,
799       OPC_Scope, 18,
800        OPC_CheckPredicate, 7,
801        OPC_CheckPatternPredicate, 5,
802        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
803        OPC_EmitMergeInputChains1_0,
804        OPC_EmitConvertToTarget, 2,
805        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
806                      MVT::i32, 2, 3, 4,
807       18,
808        OPC_CheckPredicate, 9,
809        OPC_CheckPatternPredicate, 5,
810        OPC_CheckComplexPat, /*CP*/0, /*#*/1,
811        OPC_EmitMergeInputChains1_0,
812        OPC_EmitConvertToTarget, 2,
813        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
814                      MVT::i32, 2, 3, 4,
815       0,
816      0,
817     0,
818    54,
819     OPC_CheckPredicate, 13,
820     OPC_MoveParent,
821     OPC_CheckPredicate, 4,
822     OPC_CheckType, MVT::i64,
823     OPC_MoveParent,
824     OPC_CheckPredicate, 5,
825     OPC_CheckType, MVT::i64,
826     OPC_Scope, 20,
827      OPC_CheckPredicate, 6,
828      OPC_CheckPredicate, 12,
829      OPC_CheckPatternPredicate, 0,
830      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
831      OPC_EmitMergeInputChains1_0,
832      OPC_EmitConvertToTarget, 2,
833      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDPTR_W), 0|OPFL_Chain|OPFL_MemRefs,
834                    MVT::i64, 2, 3, 4,
835     18,
836      OPC_CheckPredicate, 10,
837      OPC_CheckPatternPredicate, 0,
838      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
839      OPC_EmitMergeInputChains1_0,
840      OPC_EmitConvertToTarget, 2,
841      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDPTR_D), 0|OPFL_Chain|OPFL_MemRefs,
842                    MVT::i64, 2, 3, 4,
843     0,
844    0,
845   0,
846  29|128,3,
847   OPC_RecordChild1,
848   OPC_CheckPredicate, 5,
849   OPC_Scope, 44,
850    OPC_CheckPredicate, 6,
851    OPC_CheckPredicate, 7,
852    OPC_SwitchType , 17, MVT::i64,
853     OPC_CheckPatternPredicate, 4,
854     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
855     OPC_EmitMergeInputChains1_0,
856     OPC_EmitInteger, MVT::i64, 0,
857     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
858                   MVT::i64, 2, 2, 3,
859    17, MVT::i32,
860     OPC_CheckPatternPredicate, 5,
861     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
862     OPC_EmitMergeInputChains1_0,
863     OPC_EmitInteger, MVT::i32, 0,
864     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
865                   MVT::i32, 2, 2, 3,
866    0,
867   44,
868    OPC_CheckPredicate, 8,
869    OPC_CheckPredicate, 7,
870    OPC_SwitchType , 17, MVT::i64,
871     OPC_CheckPatternPredicate, 4,
872     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
873     OPC_EmitMergeInputChains1_0,
874     OPC_EmitInteger, MVT::i64, 0,
875     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
876                   MVT::i64, 2, 2, 3,
877    17, MVT::i32,
878     OPC_CheckPatternPredicate, 5,
879     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
880     OPC_EmitMergeInputChains1_0,
881     OPC_EmitInteger, MVT::i32, 0,
882     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
883                   MVT::i32, 2, 2, 3,
884    0,
885   44,
886    OPC_CheckPredicate, 6,
887    OPC_CheckPredicate, 9,
888    OPC_SwitchType , 17, MVT::i64,
889     OPC_CheckPatternPredicate, 4,
890     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
891     OPC_EmitMergeInputChains1_0,
892     OPC_EmitInteger, MVT::i64, 0,
893     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
894                   MVT::i64, 2, 2, 3,
895    17, MVT::i32,
896     OPC_CheckPatternPredicate, 5,
897     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
898     OPC_EmitMergeInputChains1_0,
899     OPC_EmitInteger, MVT::i32, 0,
900     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
901                   MVT::i32, 2, 2, 3,
902    0,
903   44,
904    OPC_CheckPredicate, 8,
905    OPC_CheckPredicate, 9,
906    OPC_SwitchType , 17, MVT::i64,
907     OPC_CheckPatternPredicate, 4,
908     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
909     OPC_EmitMergeInputChains1_0,
910     OPC_EmitInteger, MVT::i64, 0,
911     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
912                   MVT::i64, 2, 2, 3,
913    17, MVT::i32,
914     OPC_CheckPatternPredicate, 5,
915     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
916     OPC_EmitMergeInputChains1_0,
917     OPC_EmitInteger, MVT::i32, 0,
918     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
919                   MVT::i32, 2, 2, 3,
920    0,
921   42,
922    OPC_CheckPredicate, 10,
923    OPC_SwitchType , 17, MVT::i64,
924     OPC_CheckPatternPredicate, 1,
925     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
926     OPC_EmitMergeInputChains1_0,
927     OPC_EmitInteger, MVT::i64, 0,
928     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
929                   MVT::i64, 2, 2, 3,
930    17, MVT::i32,
931     OPC_CheckPatternPredicate, 2,
932     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
933     OPC_EmitMergeInputChains1_0,
934     OPC_EmitInteger, MVT::i32, 0,
935     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
936                   MVT::i32, 2, 2, 3,
937    0,
938   90,
939    OPC_CheckPredicate, 11,
940    OPC_Scope, 42,
941     OPC_CheckPredicate, 7,
942     OPC_SwitchType , 17, MVT::i64,
943      OPC_CheckPatternPredicate, 4,
944      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
945      OPC_EmitMergeInputChains1_0,
946      OPC_EmitInteger, MVT::i64, 0,
947      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
948                    MVT::i64, 2, 2, 3,
949     17, MVT::i32,
950      OPC_CheckPatternPredicate, 5,
951      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
952      OPC_EmitMergeInputChains1_0,
953      OPC_EmitInteger, MVT::i32, 0,
954      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_BU), 0|OPFL_Chain|OPFL_MemRefs,
955                    MVT::i32, 2, 2, 3,
956     0,
957    42,
958     OPC_CheckPredicate, 9,
959     OPC_SwitchType , 17, MVT::i64,
960      OPC_CheckPatternPredicate, 4,
961      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
962      OPC_EmitMergeInputChains1_0,
963      OPC_EmitInteger, MVT::i64, 0,
964      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
965                    MVT::i64, 2, 2, 3,
966     17, MVT::i32,
967      OPC_CheckPatternPredicate, 5,
968      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
969      OPC_EmitMergeInputChains1_0,
970      OPC_EmitInteger, MVT::i32, 0,
971      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_HU), 0|OPFL_Chain|OPFL_MemRefs,
972                    MVT::i32, 2, 2, 3,
973     0,
974    0,
975   23,
976    OPC_CheckPredicate, 6,
977    OPC_CheckPredicate, 12,
978    OPC_CheckType, MVT::i64,
979    OPC_CheckPatternPredicate, 0,
980    OPC_CheckComplexPat, /*CP*/0, /*#*/1,
981    OPC_EmitMergeInputChains1_0,
982    OPC_EmitInteger, MVT::i64, 0,
983    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
984                  MVT::i64, 2, 2, 3,
985   23,
986    OPC_CheckPredicate, 8,
987    OPC_CheckPredicate, 12,
988    OPC_CheckType, MVT::i64,
989    OPC_CheckPatternPredicate, 0,
990    OPC_CheckComplexPat, /*CP*/0, /*#*/1,
991    OPC_EmitMergeInputChains1_0,
992    OPC_EmitInteger, MVT::i64, 0,
993    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
994                  MVT::i64, 2, 2, 3,
995   23,
996    OPC_CheckPredicate, 11,
997    OPC_CheckPredicate, 12,
998    OPC_CheckType, MVT::i64,
999    OPC_CheckPatternPredicate, 0,
1000    OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1001    OPC_EmitMergeInputChains1_0,
1002    OPC_EmitInteger, MVT::i64, 0,
1003    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_WU), 0|OPFL_Chain|OPFL_MemRefs,
1004                  MVT::i64, 2, 2, 3,
1005   21,
1006    OPC_CheckPredicate, 10,
1007    OPC_CheckType, MVT::i64,
1008    OPC_CheckPatternPredicate, 0,
1009    OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1010    OPC_EmitMergeInputChains1_0,
1011    OPC_EmitInteger, MVT::i64, 0,
1012    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
1013                  MVT::i64, 2, 2, 3,
1014   0,
1015  111|128,2,
1016   OPC_MoveChild1,
1017   OPC_SwitchOpcode , 126|128,1, TARGET_VAL(ISD::ADD),
1018    OPC_RecordChild0,
1019    OPC_RecordChild1,
1020    OPC_Scope, 101,
1021     OPC_MoveChild1,
1022     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1023     OPC_CheckPredicate, 3,
1024     OPC_MoveParent,
1025     OPC_CheckPredicate, 4,
1026     OPC_SwitchType , 43, MVT::i64,
1027      OPC_MoveParent,
1028      OPC_CheckPredicate, 5,
1029      OPC_CheckPredicate, 10,
1030      OPC_SwitchType , 16, MVT::f32,
1031       OPC_CheckPatternPredicate, 6,
1032       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1033       OPC_EmitMergeInputChains1_0,
1034       OPC_EmitConvertToTarget, 2,
1035       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
1036                     MVT::f32, 2, 3, 4,
1037      16, MVT::f64,
1038       OPC_CheckPatternPredicate, 7,
1039       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1040       OPC_EmitMergeInputChains1_0,
1041       OPC_EmitConvertToTarget, 2,
1042       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
1043                     MVT::f64, 2, 3, 4,
1044      0,
1045     43, MVT::i32,
1046      OPC_MoveParent,
1047      OPC_CheckPredicate, 5,
1048      OPC_CheckPredicate, 10,
1049      OPC_SwitchType , 16, MVT::f32,
1050       OPC_CheckPatternPredicate, 8,
1051       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1052       OPC_EmitMergeInputChains1_0,
1053       OPC_EmitConvertToTarget, 2,
1054       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
1055                     MVT::f32, 2, 3, 4,
1056      16, MVT::f64,
1057       OPC_CheckPatternPredicate, 9,
1058       OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1059       OPC_EmitMergeInputChains1_0,
1060       OPC_EmitConvertToTarget, 2,
1061       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
1062                     MVT::f64, 2, 3, 4,
1063      0,
1064     0,
1065    73,
1066     OPC_CheckType, MVT::i64,
1067     OPC_MoveParent,
1068     OPC_CheckPredicate, 5,
1069     OPC_CheckPredicate, 10,
1070     OPC_SwitchType , 30, MVT::f32,
1071      OPC_CheckPatternPredicate, 6,
1072      OPC_Scope, 12,
1073       OPC_CheckComplexPat, /*CP*/1, /*#*/1,
1074       OPC_EmitMergeInputChains1_0,
1075       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_S), 0|OPFL_Chain|OPFL_MemRefs,
1076                     MVT::f32, 2, 3, 2,
1077      12,
1078       OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1079       OPC_EmitMergeInputChains1_0,
1080       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_S), 0|OPFL_Chain|OPFL_MemRefs,
1081                     MVT::f32, 2, 3, 1,
1082      0,
1083     30, MVT::f64,
1084      OPC_CheckPatternPredicate, 7,
1085      OPC_Scope, 12,
1086       OPC_CheckComplexPat, /*CP*/1, /*#*/1,
1087       OPC_EmitMergeInputChains1_0,
1088       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_D), 0|OPFL_Chain|OPFL_MemRefs,
1089                     MVT::f64, 2, 3, 2,
1090      12,
1091       OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1092       OPC_EmitMergeInputChains1_0,
1093       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_D), 0|OPFL_Chain|OPFL_MemRefs,
1094                     MVT::f64, 2, 3, 1,
1095      0,
1096     0,
1097    73,
1098     OPC_CheckType, MVT::i32,
1099     OPC_MoveParent,
1100     OPC_CheckPredicate, 5,
1101     OPC_CheckPredicate, 10,
1102     OPC_SwitchType , 30, MVT::f32,
1103      OPC_CheckPatternPredicate, 8,
1104      OPC_Scope, 12,
1105       OPC_CheckComplexPat, /*CP*/1, /*#*/1,
1106       OPC_EmitMergeInputChains1_0,
1107       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_S), 0|OPFL_Chain|OPFL_MemRefs,
1108                     MVT::f32, 2, 3, 2,
1109      12,
1110       OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1111       OPC_EmitMergeInputChains1_0,
1112       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_S), 0|OPFL_Chain|OPFL_MemRefs,
1113                     MVT::f32, 2, 3, 1,
1114      0,
1115     30, MVT::f64,
1116      OPC_CheckPatternPredicate, 9,
1117      OPC_Scope, 12,
1118       OPC_CheckComplexPat, /*CP*/1, /*#*/1,
1119       OPC_EmitMergeInputChains1_0,
1120       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_D), 0|OPFL_Chain|OPFL_MemRefs,
1121                     MVT::f64, 2, 3, 2,
1122      12,
1123       OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1124       OPC_EmitMergeInputChains1_0,
1125       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLDX_D), 0|OPFL_Chain|OPFL_MemRefs,
1126                     MVT::f64, 2, 3, 1,
1127      0,
1128     0,
1129    0,
1130   103, TARGET_VAL(ISD::OR),
1131    OPC_RecordChild0,
1132    OPC_RecordChild1,
1133    OPC_MoveChild1,
1134    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1135    OPC_CheckPredicate, 3,
1136    OPC_MoveParent,
1137    OPC_CheckPredicate, 4,
1138    OPC_SwitchType , 43, MVT::i64,
1139     OPC_MoveParent,
1140     OPC_CheckPredicate, 5,
1141     OPC_CheckPredicate, 10,
1142     OPC_SwitchType , 16, MVT::f32,
1143      OPC_CheckPatternPredicate, 6,
1144      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1145      OPC_EmitMergeInputChains1_0,
1146      OPC_EmitConvertToTarget, 2,
1147      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
1148                    MVT::f32, 2, 3, 4,
1149     16, MVT::f64,
1150      OPC_CheckPatternPredicate, 7,
1151      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1152      OPC_EmitMergeInputChains1_0,
1153      OPC_EmitConvertToTarget, 2,
1154      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
1155                    MVT::f64, 2, 3, 4,
1156     0,
1157    43, MVT::i32,
1158     OPC_MoveParent,
1159     OPC_CheckPredicate, 5,
1160     OPC_CheckPredicate, 10,
1161     OPC_SwitchType , 16, MVT::f32,
1162      OPC_CheckPatternPredicate, 8,
1163      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1164      OPC_EmitMergeInputChains1_0,
1165      OPC_EmitConvertToTarget, 2,
1166      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
1167                    MVT::f32, 2, 3, 4,
1168     16, MVT::f64,
1169      OPC_CheckPatternPredicate, 9,
1170      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1171      OPC_EmitMergeInputChains1_0,
1172      OPC_EmitConvertToTarget, 2,
1173      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
1174                    MVT::f64, 2, 3, 4,
1175     0,
1176    0,
1177   0,
1178  87,
1179   OPC_RecordChild1,
1180   OPC_CheckPredicate, 5,
1181   OPC_CheckPredicate, 10,
1182   OPC_SwitchType , 38, MVT::f32,
1183    OPC_Scope, 17,
1184     OPC_CheckPatternPredicate, 6,
1185     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1186     OPC_EmitMergeInputChains1_0,
1187     OPC_EmitInteger, MVT::i64, 0,
1188     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
1189                   MVT::f32, 2, 2, 3,
1190    17,
1191     OPC_CheckPatternPredicate, 8,
1192     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1193     OPC_EmitMergeInputChains1_0,
1194     OPC_EmitInteger, MVT::i32, 0,
1195     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_S), 0|OPFL_Chain|OPFL_MemRefs,
1196                   MVT::f32, 2, 2, 3,
1197    0,
1198   38, MVT::f64,
1199    OPC_Scope, 17,
1200     OPC_CheckPatternPredicate, 7,
1201     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1202     OPC_EmitMergeInputChains1_0,
1203     OPC_EmitInteger, MVT::i64, 0,
1204     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
1205                   MVT::f64, 2, 2, 3,
1206    17,
1207     OPC_CheckPatternPredicate, 9,
1208     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1209     OPC_EmitMergeInputChains1_0,
1210     OPC_EmitInteger, MVT::i32, 0,
1211     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FLD_D), 0|OPFL_Chain|OPFL_MemRefs,
1212                   MVT::f64, 2, 2, 3,
1213    0,
1214   0,
1215  0,
1216 70|128,10, TARGET_VAL(ISD::STORE),
1217  OPC_RecordMemRef,
1218  OPC_RecordNode,
1219  OPC_RecordChild1,
1220  OPC_Scope, 65|128,4,
1221   OPC_CheckChild1Type, MVT::i64,
1222   OPC_Scope, 96|128,3,
1223    OPC_MoveChild2,
1224    OPC_SwitchOpcode , 58|128,2, TARGET_VAL(ISD::ADD),
1225     OPC_RecordChild0,
1226     OPC_RecordChild1,
1227     OPC_Scope, 25|128,1,
1228      OPC_MoveChild1,
1229      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1230      OPC_Scope, 93,
1231       OPC_CheckPredicate, 3,
1232       OPC_MoveParent,
1233       OPC_CheckPredicate, 4,
1234       OPC_CheckType, MVT::i64,
1235       OPC_MoveParent,
1236       OPC_CheckPredicate, 14,
1237       OPC_Scope, 61,
1238        OPC_CheckPredicate, 15,
1239        OPC_Scope, 18,
1240         OPC_CheckPredicate, 16,
1241         OPC_CheckPatternPredicate, 4,
1242         OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1243         OPC_EmitMergeInputChains1_0,
1244         OPC_EmitConvertToTarget, 3,
1245         OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
1246                       3, 1, 4, 5,
1247        18,
1248         OPC_CheckPredicate, 17,
1249         OPC_CheckPatternPredicate, 4,
1250         OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1251         OPC_EmitMergeInputChains1_0,
1252         OPC_EmitConvertToTarget, 3,
1253         OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
1254                       3, 1, 4, 5,
1255        18,
1256         OPC_CheckPredicate, 18,
1257         OPC_CheckPatternPredicate, 0,
1258         OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1259         OPC_EmitMergeInputChains1_0,
1260         OPC_EmitConvertToTarget, 3,
1261         OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
1262                       3, 1, 4, 5,
1263        0,
1264       18,
1265        OPC_CheckPredicate, 19,
1266        OPC_CheckPatternPredicate, 0,
1267        OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1268        OPC_EmitMergeInputChains1_0,
1269        OPC_EmitConvertToTarget, 3,
1270        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
1271                      3, 1, 4, 5,
1272       0,
1273      52,
1274       OPC_CheckPredicate, 13,
1275       OPC_MoveParent,
1276       OPC_CheckPredicate, 4,
1277       OPC_CheckType, MVT::i64,
1278       OPC_MoveParent,
1279       OPC_CheckPredicate, 14,
1280       OPC_Scope, 20,
1281        OPC_CheckPredicate, 15,
1282        OPC_CheckPredicate, 18,
1283        OPC_CheckPatternPredicate, 0,
1284        OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1285        OPC_EmitMergeInputChains1_0,
1286        OPC_EmitConvertToTarget, 3,
1287        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STPTR_W), 0|OPFL_Chain|OPFL_MemRefs,
1288                      3, 1, 4, 5,
1289       18,
1290        OPC_CheckPredicate, 19,
1291        OPC_CheckPatternPredicate, 0,
1292        OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1293        OPC_EmitMergeInputChains1_0,
1294        OPC_EmitConvertToTarget, 3,
1295        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STPTR_D), 0|OPFL_Chain|OPFL_MemRefs,
1296                      3, 1, 4, 5,
1297       0,
1298      0,
1299     25|128,1,
1300      OPC_CheckType, MVT::i64,
1301      OPC_MoveParent,
1302      OPC_CheckPredicate, 14,
1303      OPC_Scope, 55,
1304       OPC_CheckPredicate, 15,
1305       OPC_Scope, 16,
1306        OPC_CheckPredicate, 16,
1307        OPC_CheckPatternPredicate, 0,
1308        OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1309        OPC_EmitMergeInputChains1_0,
1310        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_B), 0|OPFL_Chain|OPFL_MemRefs,
1311                      3, 1, 4, 3,
1312       16,
1313        OPC_CheckPredicate, 17,
1314        OPC_CheckPatternPredicate, 0,
1315        OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1316        OPC_EmitMergeInputChains1_0,
1317        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_H), 0|OPFL_Chain|OPFL_MemRefs,
1318                      3, 1, 4, 3,
1319       16,
1320        OPC_CheckPredicate, 18,
1321        OPC_CheckPatternPredicate, 0,
1322        OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1323        OPC_EmitMergeInputChains1_0,
1324        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_W), 0|OPFL_Chain|OPFL_MemRefs,
1325                      3, 1, 4, 3,
1326       0,
1327      16,
1328       OPC_CheckPredicate, 19,
1329       OPC_CheckPatternPredicate, 0,
1330       OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1331       OPC_EmitMergeInputChains1_0,
1332       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_D), 0|OPFL_Chain|OPFL_MemRefs,
1333                     3, 1, 4, 3,
1334      55,
1335       OPC_CheckPredicate, 15,
1336       OPC_Scope, 16,
1337        OPC_CheckPredicate, 16,
1338        OPC_CheckPatternPredicate, 0,
1339        OPC_CheckComplexPat, /*CP*/1, /*#*/3,
1340        OPC_EmitMergeInputChains1_0,
1341        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_B), 0|OPFL_Chain|OPFL_MemRefs,
1342                      3, 1, 4, 2,
1343       16,
1344        OPC_CheckPredicate, 17,
1345        OPC_CheckPatternPredicate, 0,
1346        OPC_CheckComplexPat, /*CP*/1, /*#*/3,
1347        OPC_EmitMergeInputChains1_0,
1348        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_H), 0|OPFL_Chain|OPFL_MemRefs,
1349                      3, 1, 4, 2,
1350       16,
1351        OPC_CheckPredicate, 18,
1352        OPC_CheckPatternPredicate, 0,
1353        OPC_CheckComplexPat, /*CP*/1, /*#*/3,
1354        OPC_EmitMergeInputChains1_0,
1355        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_W), 0|OPFL_Chain|OPFL_MemRefs,
1356                      3, 1, 4, 2,
1357       0,
1358      16,
1359       OPC_CheckPredicate, 19,
1360       OPC_CheckPatternPredicate, 0,
1361       OPC_CheckComplexPat, /*CP*/1, /*#*/3,
1362       OPC_EmitMergeInputChains1_0,
1363       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STX_D), 0|OPFL_Chain|OPFL_MemRefs,
1364                     3, 1, 4, 2,
1365      0,
1366     0,
1367    27|128,1, TARGET_VAL(ISD::OR),
1368     OPC_RecordChild0,
1369     OPC_RecordChild1,
1370     OPC_MoveChild1,
1371     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1372     OPC_Scope, 93,
1373      OPC_CheckPredicate, 3,
1374      OPC_MoveParent,
1375      OPC_CheckPredicate, 4,
1376      OPC_CheckType, MVT::i64,
1377      OPC_MoveParent,
1378      OPC_CheckPredicate, 14,
1379      OPC_Scope, 61,
1380       OPC_CheckPredicate, 15,
1381       OPC_Scope, 18,
1382        OPC_CheckPredicate, 16,
1383        OPC_CheckPatternPredicate, 4,
1384        OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1385        OPC_EmitMergeInputChains1_0,
1386        OPC_EmitConvertToTarget, 3,
1387        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
1388                      3, 1, 4, 5,
1389       18,
1390        OPC_CheckPredicate, 17,
1391        OPC_CheckPatternPredicate, 4,
1392        OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1393        OPC_EmitMergeInputChains1_0,
1394        OPC_EmitConvertToTarget, 3,
1395        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
1396                      3, 1, 4, 5,
1397       18,
1398        OPC_CheckPredicate, 18,
1399        OPC_CheckPatternPredicate, 0,
1400        OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1401        OPC_EmitMergeInputChains1_0,
1402        OPC_EmitConvertToTarget, 3,
1403        OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
1404                      3, 1, 4, 5,
1405       0,
1406      18,
1407       OPC_CheckPredicate, 19,
1408       OPC_CheckPatternPredicate, 0,
1409       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1410       OPC_EmitMergeInputChains1_0,
1411       OPC_EmitConvertToTarget, 3,
1412       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
1413                     3, 1, 4, 5,
1414      0,
1415     52,
1416      OPC_CheckPredicate, 13,
1417      OPC_MoveParent,
1418      OPC_CheckPredicate, 4,
1419      OPC_CheckType, MVT::i64,
1420      OPC_MoveParent,
1421      OPC_CheckPredicate, 14,
1422      OPC_Scope, 20,
1423       OPC_CheckPredicate, 15,
1424       OPC_CheckPredicate, 18,
1425       OPC_CheckPatternPredicate, 0,
1426       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1427       OPC_EmitMergeInputChains1_0,
1428       OPC_EmitConvertToTarget, 3,
1429       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STPTR_W), 0|OPFL_Chain|OPFL_MemRefs,
1430                     3, 1, 4, 5,
1431      18,
1432       OPC_CheckPredicate, 19,
1433       OPC_CheckPatternPredicate, 0,
1434       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1435       OPC_EmitMergeInputChains1_0,
1436       OPC_EmitConvertToTarget, 3,
1437       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::STPTR_D), 0|OPFL_Chain|OPFL_MemRefs,
1438                     3, 1, 4, 5,
1439      0,
1440     0,
1441    0,
1442   90,
1443    OPC_RecordChild2,
1444    OPC_CheckPredicate, 14,
1445    OPC_Scope, 64,
1446     OPC_CheckPredicate, 15,
1447     OPC_Scope, 19,
1448      OPC_CheckPredicate, 16,
1449      OPC_CheckPatternPredicate, 4,
1450      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1451      OPC_EmitMergeInputChains1_0,
1452      OPC_EmitInteger, MVT::i64, 0,
1453      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
1454                    3, 1, 3, 4,
1455     19,
1456      OPC_CheckPredicate, 17,
1457      OPC_CheckPatternPredicate, 4,
1458      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1459      OPC_EmitMergeInputChains1_0,
1460      OPC_EmitInteger, MVT::i64, 0,
1461      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
1462                    3, 1, 3, 4,
1463     19,
1464      OPC_CheckPredicate, 18,
1465      OPC_CheckPatternPredicate, 0,
1466      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1467      OPC_EmitMergeInputChains1_0,
1468      OPC_EmitInteger, MVT::i64, 0,
1469      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
1470                    3, 1, 3, 4,
1471     0,
1472    19,
1473     OPC_CheckPredicate, 19,
1474     OPC_CheckPatternPredicate, 0,
1475     OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1476     OPC_EmitMergeInputChains1_0,
1477     OPC_EmitInteger, MVT::i64, 0,
1478     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
1479                   3, 1, 3, 4,
1480    0,
1481   0,
1482  118|128,1,
1483   OPC_CheckChild1Type, MVT::i32,
1484   OPC_Scope, 41|128,1,
1485    OPC_MoveChild2,
1486    OPC_SwitchOpcode , 80, TARGET_VAL(ISD::ADD),
1487     OPC_RecordChild0,
1488     OPC_RecordChild1,
1489     OPC_MoveChild1,
1490     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1491     OPC_CheckPredicate, 3,
1492     OPC_MoveParent,
1493     OPC_CheckPredicate, 4,
1494     OPC_CheckType, MVT::i32,
1495     OPC_MoveParent,
1496     OPC_CheckPredicate, 14,
1497     OPC_Scope, 42,
1498      OPC_CheckPredicate, 15,
1499      OPC_Scope, 18,
1500       OPC_CheckPredicate, 16,
1501       OPC_CheckPatternPredicate, 5,
1502       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1503       OPC_EmitMergeInputChains1_0,
1504       OPC_EmitConvertToTarget, 3,
1505       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
1506                     3, 1, 4, 5,
1507      18,
1508       OPC_CheckPredicate, 17,
1509       OPC_CheckPatternPredicate, 5,
1510       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1511       OPC_EmitMergeInputChains1_0,
1512       OPC_EmitConvertToTarget, 3,
1513       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
1514                     3, 1, 4, 5,
1515      0,
1516     18,
1517      OPC_CheckPredicate, 19,
1518      OPC_CheckPatternPredicate, 2,
1519      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1520      OPC_EmitMergeInputChains1_0,
1521      OPC_EmitConvertToTarget, 3,
1522      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
1523                    3, 1, 4, 5,
1524     0,
1525    80, TARGET_VAL(ISD::OR),
1526     OPC_RecordChild0,
1527     OPC_RecordChild1,
1528     OPC_MoveChild1,
1529     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1530     OPC_CheckPredicate, 3,
1531     OPC_MoveParent,
1532     OPC_CheckPredicate, 4,
1533     OPC_CheckType, MVT::i32,
1534     OPC_MoveParent,
1535     OPC_CheckPredicate, 14,
1536     OPC_Scope, 42,
1537      OPC_CheckPredicate, 15,
1538      OPC_Scope, 18,
1539       OPC_CheckPredicate, 16,
1540       OPC_CheckPatternPredicate, 5,
1541       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1542       OPC_EmitMergeInputChains1_0,
1543       OPC_EmitConvertToTarget, 3,
1544       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
1545                     3, 1, 4, 5,
1546      18,
1547       OPC_CheckPredicate, 17,
1548       OPC_CheckPatternPredicate, 5,
1549       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1550       OPC_EmitMergeInputChains1_0,
1551       OPC_EmitConvertToTarget, 3,
1552       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
1553                     3, 1, 4, 5,
1554      0,
1555     18,
1556      OPC_CheckPredicate, 19,
1557      OPC_CheckPatternPredicate, 2,
1558      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1559      OPC_EmitMergeInputChains1_0,
1560      OPC_EmitConvertToTarget, 3,
1561      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
1562                    3, 1, 4, 5,
1563     0,
1564    0,
1565   70,
1566    OPC_RecordChild2,
1567    OPC_CheckPredicate, 14,
1568    OPC_Scope, 44,
1569     OPC_CheckPredicate, 15,
1570     OPC_Scope, 19,
1571      OPC_CheckPredicate, 16,
1572      OPC_CheckPatternPredicate, 5,
1573      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1574      OPC_EmitMergeInputChains1_0,
1575      OPC_EmitInteger, MVT::i32, 0,
1576      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
1577                    3, 1, 3, 4,
1578     19,
1579      OPC_CheckPredicate, 17,
1580      OPC_CheckPatternPredicate, 5,
1581      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1582      OPC_EmitMergeInputChains1_0,
1583      OPC_EmitInteger, MVT::i32, 0,
1584      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
1585                    3, 1, 3, 4,
1586     0,
1587    19,
1588     OPC_CheckPredicate, 19,
1589     OPC_CheckPatternPredicate, 2,
1590     OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1591     OPC_EmitMergeInputChains1_0,
1592     OPC_EmitInteger, MVT::i32, 0,
1593     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
1594                   3, 1, 3, 4,
1595    0,
1596   0,
1597  1|128,2,
1598   OPC_CheckChild1Type, MVT::f32,
1599   OPC_Scope, 79|128,1,
1600    OPC_MoveChild2,
1601    OPC_SwitchOpcode , 10|128,1, TARGET_VAL(ISD::ADD),
1602     OPC_RecordChild0,
1603     OPC_RecordChild1,
1604     OPC_Scope, 57,
1605      OPC_MoveChild1,
1606      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1607      OPC_CheckPredicate, 3,
1608      OPC_MoveParent,
1609      OPC_CheckPredicate, 4,
1610      OPC_SwitchType , 21, MVT::i64,
1611       OPC_MoveParent,
1612       OPC_CheckPredicate, 14,
1613       OPC_CheckPredicate, 19,
1614       OPC_CheckPatternPredicate, 6,
1615       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1616       OPC_EmitMergeInputChains1_0,
1617       OPC_EmitConvertToTarget, 3,
1618       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
1619                     3, 1, 4, 5,
1620      21, MVT::i32,
1621       OPC_MoveParent,
1622       OPC_CheckPredicate, 14,
1623       OPC_CheckPredicate, 19,
1624       OPC_CheckPatternPredicate, 8,
1625       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1626       OPC_EmitMergeInputChains1_0,
1627       OPC_EmitConvertToTarget, 3,
1628       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
1629                     3, 1, 4, 5,
1630      0,
1631     37,
1632      OPC_CheckType, MVT::i64,
1633      OPC_MoveParent,
1634      OPC_CheckPredicate, 14,
1635      OPC_CheckPredicate, 19,
1636      OPC_CheckPatternPredicate, 6,
1637      OPC_Scope, 12,
1638       OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1639       OPC_EmitMergeInputChains1_0,
1640       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_S), 0|OPFL_Chain|OPFL_MemRefs,
1641                     3, 1, 4, 3,
1642      12,
1643       OPC_CheckComplexPat, /*CP*/1, /*#*/3,
1644       OPC_EmitMergeInputChains1_0,
1645       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_S), 0|OPFL_Chain|OPFL_MemRefs,
1646                     3, 1, 4, 2,
1647      0,
1648     37,
1649      OPC_CheckType, MVT::i32,
1650      OPC_MoveParent,
1651      OPC_CheckPredicate, 14,
1652      OPC_CheckPredicate, 19,
1653      OPC_CheckPatternPredicate, 8,
1654      OPC_Scope, 12,
1655       OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1656       OPC_EmitMergeInputChains1_0,
1657       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_S), 0|OPFL_Chain|OPFL_MemRefs,
1658                     3, 1, 4, 3,
1659      12,
1660       OPC_CheckComplexPat, /*CP*/1, /*#*/3,
1661       OPC_EmitMergeInputChains1_0,
1662       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_S), 0|OPFL_Chain|OPFL_MemRefs,
1663                     3, 1, 4, 2,
1664      0,
1665     0,
1666    59, TARGET_VAL(ISD::OR),
1667     OPC_RecordChild0,
1668     OPC_RecordChild1,
1669     OPC_MoveChild1,
1670     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1671     OPC_CheckPredicate, 3,
1672     OPC_MoveParent,
1673     OPC_CheckPredicate, 4,
1674     OPC_SwitchType , 21, MVT::i64,
1675      OPC_MoveParent,
1676      OPC_CheckPredicate, 14,
1677      OPC_CheckPredicate, 19,
1678      OPC_CheckPatternPredicate, 6,
1679      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1680      OPC_EmitMergeInputChains1_0,
1681      OPC_EmitConvertToTarget, 3,
1682      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
1683                    3, 1, 4, 5,
1684     21, MVT::i32,
1685      OPC_MoveParent,
1686      OPC_CheckPredicate, 14,
1687      OPC_CheckPredicate, 19,
1688      OPC_CheckPatternPredicate, 8,
1689      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1690      OPC_EmitMergeInputChains1_0,
1691      OPC_EmitConvertToTarget, 3,
1692      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
1693                    3, 1, 4, 5,
1694     0,
1695    0,
1696   43,
1697    OPC_RecordChild2,
1698    OPC_CheckPredicate, 14,
1699    OPC_CheckPredicate, 19,
1700    OPC_Scope, 17,
1701     OPC_CheckPatternPredicate, 6,
1702     OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1703     OPC_EmitMergeInputChains1_0,
1704     OPC_EmitInteger, MVT::i64, 0,
1705     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
1706                   3, 1, 3, 4,
1707    17,
1708     OPC_CheckPatternPredicate, 8,
1709     OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1710     OPC_EmitMergeInputChains1_0,
1711     OPC_EmitInteger, MVT::i32, 0,
1712     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_S), 0|OPFL_Chain|OPFL_MemRefs,
1713                   3, 1, 3, 4,
1714    0,
1715   0,
1716  1|128,2,
1717   OPC_CheckChild1Type, MVT::f64,
1718   OPC_Scope, 79|128,1,
1719    OPC_MoveChild2,
1720    OPC_SwitchOpcode , 10|128,1, TARGET_VAL(ISD::ADD),
1721     OPC_RecordChild0,
1722     OPC_RecordChild1,
1723     OPC_Scope, 57,
1724      OPC_MoveChild1,
1725      OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1726      OPC_CheckPredicate, 3,
1727      OPC_MoveParent,
1728      OPC_CheckPredicate, 4,
1729      OPC_SwitchType , 21, MVT::i64,
1730       OPC_MoveParent,
1731       OPC_CheckPredicate, 14,
1732       OPC_CheckPredicate, 19,
1733       OPC_CheckPatternPredicate, 7,
1734       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1735       OPC_EmitMergeInputChains1_0,
1736       OPC_EmitConvertToTarget, 3,
1737       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
1738                     3, 1, 4, 5,
1739      21, MVT::i32,
1740       OPC_MoveParent,
1741       OPC_CheckPredicate, 14,
1742       OPC_CheckPredicate, 19,
1743       OPC_CheckPatternPredicate, 9,
1744       OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1745       OPC_EmitMergeInputChains1_0,
1746       OPC_EmitConvertToTarget, 3,
1747       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
1748                     3, 1, 4, 5,
1749      0,
1750     37,
1751      OPC_CheckType, MVT::i64,
1752      OPC_MoveParent,
1753      OPC_CheckPredicate, 14,
1754      OPC_CheckPredicate, 19,
1755      OPC_CheckPatternPredicate, 7,
1756      OPC_Scope, 12,
1757       OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1758       OPC_EmitMergeInputChains1_0,
1759       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_D), 0|OPFL_Chain|OPFL_MemRefs,
1760                     3, 1, 4, 3,
1761      12,
1762       OPC_CheckComplexPat, /*CP*/1, /*#*/3,
1763       OPC_EmitMergeInputChains1_0,
1764       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_D), 0|OPFL_Chain|OPFL_MemRefs,
1765                     3, 1, 4, 2,
1766      0,
1767     37,
1768      OPC_CheckType, MVT::i32,
1769      OPC_MoveParent,
1770      OPC_CheckPredicate, 14,
1771      OPC_CheckPredicate, 19,
1772      OPC_CheckPatternPredicate, 9,
1773      OPC_Scope, 12,
1774       OPC_CheckComplexPat, /*CP*/1, /*#*/2,
1775       OPC_EmitMergeInputChains1_0,
1776       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_D), 0|OPFL_Chain|OPFL_MemRefs,
1777                     3, 1, 4, 3,
1778      12,
1779       OPC_CheckComplexPat, /*CP*/1, /*#*/3,
1780       OPC_EmitMergeInputChains1_0,
1781       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FSTX_D), 0|OPFL_Chain|OPFL_MemRefs,
1782                     3, 1, 4, 2,
1783      0,
1784     0,
1785    59, TARGET_VAL(ISD::OR),
1786     OPC_RecordChild0,
1787     OPC_RecordChild1,
1788     OPC_MoveChild1,
1789     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1790     OPC_CheckPredicate, 3,
1791     OPC_MoveParent,
1792     OPC_CheckPredicate, 4,
1793     OPC_SwitchType , 21, MVT::i64,
1794      OPC_MoveParent,
1795      OPC_CheckPredicate, 14,
1796      OPC_CheckPredicate, 19,
1797      OPC_CheckPatternPredicate, 7,
1798      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1799      OPC_EmitMergeInputChains1_0,
1800      OPC_EmitConvertToTarget, 3,
1801      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
1802                    3, 1, 4, 5,
1803     21, MVT::i32,
1804      OPC_MoveParent,
1805      OPC_CheckPredicate, 14,
1806      OPC_CheckPredicate, 19,
1807      OPC_CheckPatternPredicate, 9,
1808      OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1809      OPC_EmitMergeInputChains1_0,
1810      OPC_EmitConvertToTarget, 3,
1811      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
1812                    3, 1, 4, 5,
1813     0,
1814    0,
1815   43,
1816    OPC_RecordChild2,
1817    OPC_CheckPredicate, 14,
1818    OPC_CheckPredicate, 19,
1819    OPC_Scope, 17,
1820     OPC_CheckPatternPredicate, 7,
1821     OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1822     OPC_EmitMergeInputChains1_0,
1823     OPC_EmitInteger, MVT::i64, 0,
1824     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
1825                   3, 1, 3, 4,
1826    17,
1827     OPC_CheckPatternPredicate, 9,
1828     OPC_CheckComplexPat, /*CP*/0, /*#*/2,
1829     OPC_EmitMergeInputChains1_0,
1830     OPC_EmitInteger, MVT::i32, 0,
1831     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::FST_D), 0|OPFL_Chain|OPFL_MemRefs,
1832                   3, 1, 3, 4,
1833    0,
1834   0,
1835  0,
1836 40|128,4, TARGET_VAL(ISD::ATOMIC_LOAD),
1837  OPC_RecordMemRef,
1838  OPC_RecordNode,
1839  OPC_Scope, 113|128,2,
1840   OPC_MoveChild1,
1841   OPC_SwitchOpcode , 51|128,1, TARGET_VAL(ISD::ADD),
1842    OPC_RecordChild0,
1843    OPC_RecordChild1,
1844    OPC_MoveChild1,
1845    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1846    OPC_CheckPredicate, 3,
1847    OPC_MoveParent,
1848    OPC_CheckPredicate, 4,
1849    OPC_SwitchType , 81, MVT::i64,
1850     OPC_MoveParent,
1851     OPC_CheckType, MVT::i64,
1852     OPC_Scope, 18,
1853      OPC_CheckPredicate, 7,
1854      OPC_CheckPatternPredicate, 4,
1855      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1856      OPC_EmitMergeInputChains1_0,
1857      OPC_EmitConvertToTarget, 2,
1858      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
1859                    MVT::i64, 2, 3, 4,
1860     18,
1861      OPC_CheckPredicate, 9,
1862      OPC_CheckPatternPredicate, 4,
1863      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1864      OPC_EmitMergeInputChains1_0,
1865      OPC_EmitConvertToTarget, 2,
1866      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
1867                    MVT::i64, 2, 3, 4,
1868     18,
1869      OPC_CheckPredicate, 12,
1870      OPC_CheckPatternPredicate, 4,
1871      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1872      OPC_EmitMergeInputChains1_0,
1873      OPC_EmitConvertToTarget, 2,
1874      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
1875                    MVT::i64, 2, 3, 4,
1876     18,
1877      OPC_CheckPredicate, 20,
1878      OPC_CheckPatternPredicate, 0,
1879      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1880      OPC_EmitMergeInputChains1_0,
1881      OPC_EmitConvertToTarget, 2,
1882      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
1883                    MVT::i64, 2, 3, 4,
1884     0,
1885    81, MVT::i32,
1886     OPC_MoveParent,
1887     OPC_CheckType, MVT::i32,
1888     OPC_Scope, 18,
1889      OPC_CheckPredicate, 7,
1890      OPC_CheckPatternPredicate, 5,
1891      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1892      OPC_EmitMergeInputChains1_0,
1893      OPC_EmitConvertToTarget, 2,
1894      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
1895                    MVT::i32, 2, 3, 4,
1896     18,
1897      OPC_CheckPredicate, 9,
1898      OPC_CheckPatternPredicate, 5,
1899      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1900      OPC_EmitMergeInputChains1_0,
1901      OPC_EmitConvertToTarget, 2,
1902      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
1903                    MVT::i32, 2, 3, 4,
1904     18,
1905      OPC_CheckPredicate, 12,
1906      OPC_CheckPatternPredicate, 5,
1907      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1908      OPC_EmitMergeInputChains1_0,
1909      OPC_EmitConvertToTarget, 2,
1910      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
1911                    MVT::i32, 2, 3, 4,
1912     18,
1913      OPC_CheckPredicate, 20,
1914      OPC_CheckPatternPredicate, 3,
1915      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1916      OPC_EmitMergeInputChains1_0,
1917      OPC_EmitConvertToTarget, 2,
1918      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
1919                    MVT::i32, 2, 3, 4,
1920     0,
1921    0,
1922   51|128,1, TARGET_VAL(ISD::OR),
1923    OPC_RecordChild0,
1924    OPC_RecordChild1,
1925    OPC_MoveChild1,
1926    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
1927    OPC_CheckPredicate, 3,
1928    OPC_MoveParent,
1929    OPC_CheckPredicate, 4,
1930    OPC_SwitchType , 81, MVT::i64,
1931     OPC_MoveParent,
1932     OPC_CheckType, MVT::i64,
1933     OPC_Scope, 18,
1934      OPC_CheckPredicate, 7,
1935      OPC_CheckPatternPredicate, 4,
1936      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1937      OPC_EmitMergeInputChains1_0,
1938      OPC_EmitConvertToTarget, 2,
1939      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
1940                    MVT::i64, 2, 3, 4,
1941     18,
1942      OPC_CheckPredicate, 9,
1943      OPC_CheckPatternPredicate, 4,
1944      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1945      OPC_EmitMergeInputChains1_0,
1946      OPC_EmitConvertToTarget, 2,
1947      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
1948                    MVT::i64, 2, 3, 4,
1949     18,
1950      OPC_CheckPredicate, 12,
1951      OPC_CheckPatternPredicate, 4,
1952      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1953      OPC_EmitMergeInputChains1_0,
1954      OPC_EmitConvertToTarget, 2,
1955      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
1956                    MVT::i64, 2, 3, 4,
1957     18,
1958      OPC_CheckPredicate, 20,
1959      OPC_CheckPatternPredicate, 0,
1960      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1961      OPC_EmitMergeInputChains1_0,
1962      OPC_EmitConvertToTarget, 2,
1963      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
1964                    MVT::i64, 2, 3, 4,
1965     0,
1966    81, MVT::i32,
1967     OPC_MoveParent,
1968     OPC_CheckType, MVT::i32,
1969     OPC_Scope, 18,
1970      OPC_CheckPredicate, 7,
1971      OPC_CheckPatternPredicate, 5,
1972      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1973      OPC_EmitMergeInputChains1_0,
1974      OPC_EmitConvertToTarget, 2,
1975      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
1976                    MVT::i32, 2, 3, 4,
1977     18,
1978      OPC_CheckPredicate, 9,
1979      OPC_CheckPatternPredicate, 5,
1980      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1981      OPC_EmitMergeInputChains1_0,
1982      OPC_EmitConvertToTarget, 2,
1983      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
1984                    MVT::i32, 2, 3, 4,
1985     18,
1986      OPC_CheckPredicate, 12,
1987      OPC_CheckPatternPredicate, 5,
1988      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1989      OPC_EmitMergeInputChains1_0,
1990      OPC_EmitConvertToTarget, 2,
1991      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
1992                    MVT::i32, 2, 3, 4,
1993     18,
1994      OPC_CheckPredicate, 20,
1995      OPC_CheckPatternPredicate, 3,
1996      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
1997      OPC_EmitMergeInputChains1_0,
1998      OPC_EmitConvertToTarget, 2,
1999      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
2000                    MVT::i32, 2, 3, 4,
2001     0,
2002    0,
2003   0,
2004  47|128,1,
2005   OPC_RecordChild1,
2006   OPC_Scope, 42,
2007    OPC_CheckPredicate, 7,
2008    OPC_SwitchType , 17, MVT::i64,
2009     OPC_CheckPatternPredicate, 4,
2010     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2011     OPC_EmitMergeInputChains1_0,
2012     OPC_EmitInteger, MVT::i64, 0,
2013     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
2014                   MVT::i64, 2, 2, 3,
2015    17, MVT::i32,
2016     OPC_CheckPatternPredicate, 5,
2017     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2018     OPC_EmitMergeInputChains1_0,
2019     OPC_EmitInteger, MVT::i32, 0,
2020     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_B), 0|OPFL_Chain|OPFL_MemRefs,
2021                   MVT::i32, 2, 2, 3,
2022    0,
2023   42,
2024    OPC_CheckPredicate, 9,
2025    OPC_SwitchType , 17, MVT::i64,
2026     OPC_CheckPatternPredicate, 4,
2027     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2028     OPC_EmitMergeInputChains1_0,
2029     OPC_EmitInteger, MVT::i64, 0,
2030     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
2031                   MVT::i64, 2, 2, 3,
2032    17, MVT::i32,
2033     OPC_CheckPatternPredicate, 5,
2034     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2035     OPC_EmitMergeInputChains1_0,
2036     OPC_EmitInteger, MVT::i32, 0,
2037     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_H), 0|OPFL_Chain|OPFL_MemRefs,
2038                   MVT::i32, 2, 2, 3,
2039    0,
2040   42,
2041    OPC_CheckPredicate, 12,
2042    OPC_SwitchType , 17, MVT::i64,
2043     OPC_CheckPatternPredicate, 4,
2044     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2045     OPC_EmitMergeInputChains1_0,
2046     OPC_EmitInteger, MVT::i64, 0,
2047     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
2048                   MVT::i64, 2, 2, 3,
2049    17, MVT::i32,
2050     OPC_CheckPatternPredicate, 5,
2051     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2052     OPC_EmitMergeInputChains1_0,
2053     OPC_EmitInteger, MVT::i32, 0,
2054     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_W), 0|OPFL_Chain|OPFL_MemRefs,
2055                   MVT::i32, 2, 2, 3,
2056    0,
2057   42,
2058    OPC_CheckPredicate, 20,
2059    OPC_SwitchType , 17, MVT::i64,
2060     OPC_CheckPatternPredicate, 0,
2061     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2062     OPC_EmitMergeInputChains1_0,
2063     OPC_EmitInteger, MVT::i64, 0,
2064     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
2065                   MVT::i64, 2, 2, 3,
2066    17, MVT::i32,
2067     OPC_CheckPatternPredicate, 3,
2068     OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2069     OPC_EmitMergeInputChains1_0,
2070     OPC_EmitInteger, MVT::i32, 0,
2071     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LD_D), 0|OPFL_Chain|OPFL_MemRefs,
2072                   MVT::i32, 2, 2, 3,
2073    0,
2074   0,
2075  0,
2076 87|128,4, TARGET_VAL(ISD::ATOMIC_STORE),
2077  OPC_RecordMemRef,
2078  OPC_RecordNode,
2079  OPC_Scope, 91|128,2,
2080   OPC_MoveChild1,
2081   OPC_SwitchOpcode , 40|128,1, TARGET_VAL(ISD::ADD),
2082    OPC_RecordChild0,
2083    OPC_RecordChild1,
2084    OPC_MoveChild1,
2085    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2086    OPC_CheckPredicate, 3,
2087    OPC_MoveParent,
2088    OPC_CheckPredicate, 4,
2089    OPC_SwitchType , 86, MVT::i64,
2090     OPC_MoveParent,
2091     OPC_RecordChild2,
2092     OPC_CheckChild2Type, MVT::i64,
2093     OPC_Scope, 18,
2094      OPC_CheckPredicate, 7,
2095      OPC_CheckPatternPredicate, 4,
2096      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2097      OPC_EmitMergeInputChains1_0,
2098      OPC_EmitConvertToTarget, 2,
2099      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
2100                    3, 3, 4, 5,
2101     18,
2102      OPC_CheckPredicate, 9,
2103      OPC_CheckPatternPredicate, 4,
2104      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2105      OPC_EmitMergeInputChains1_0,
2106      OPC_EmitConvertToTarget, 2,
2107      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
2108                    3, 3, 4, 5,
2109     20,
2110      OPC_CheckPredicate, 12,
2111      OPC_CheckPredicate, 21,
2112      OPC_CheckPatternPredicate, 0,
2113      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2114      OPC_EmitMergeInputChains1_0,
2115      OPC_EmitConvertToTarget, 2,
2116      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
2117                    3, 3, 4, 5,
2118     20,
2119      OPC_CheckPredicate, 20,
2120      OPC_CheckPredicate, 21,
2121      OPC_CheckPatternPredicate, 0,
2122      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2123      OPC_EmitMergeInputChains1_0,
2124      OPC_EmitConvertToTarget, 2,
2125      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
2126                    3, 3, 4, 5,
2127     0,
2128    65, MVT::i32,
2129     OPC_MoveParent,
2130     OPC_RecordChild2,
2131     OPC_CheckChild2Type, MVT::i32,
2132     OPC_Scope, 18,
2133      OPC_CheckPredicate, 7,
2134      OPC_CheckPatternPredicate, 5,
2135      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2136      OPC_EmitMergeInputChains1_0,
2137      OPC_EmitConvertToTarget, 2,
2138      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
2139                    3, 3, 4, 5,
2140     18,
2141      OPC_CheckPredicate, 9,
2142      OPC_CheckPatternPredicate, 5,
2143      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2144      OPC_EmitMergeInputChains1_0,
2145      OPC_EmitConvertToTarget, 2,
2146      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
2147                    3, 3, 4, 5,
2148     20,
2149      OPC_CheckPredicate, 12,
2150      OPC_CheckPredicate, 21,
2151      OPC_CheckPatternPredicate, 2,
2152      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2153      OPC_EmitMergeInputChains1_0,
2154      OPC_EmitConvertToTarget, 2,
2155      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
2156                    3, 3, 4, 5,
2157     0,
2158    0,
2159   40|128,1, TARGET_VAL(ISD::OR),
2160    OPC_RecordChild0,
2161    OPC_RecordChild1,
2162    OPC_MoveChild1,
2163    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2164    OPC_CheckPredicate, 3,
2165    OPC_MoveParent,
2166    OPC_CheckPredicate, 4,
2167    OPC_SwitchType , 86, MVT::i64,
2168     OPC_MoveParent,
2169     OPC_RecordChild2,
2170     OPC_CheckChild2Type, MVT::i64,
2171     OPC_Scope, 18,
2172      OPC_CheckPredicate, 7,
2173      OPC_CheckPatternPredicate, 4,
2174      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2175      OPC_EmitMergeInputChains1_0,
2176      OPC_EmitConvertToTarget, 2,
2177      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
2178                    3, 3, 4, 5,
2179     18,
2180      OPC_CheckPredicate, 9,
2181      OPC_CheckPatternPredicate, 4,
2182      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2183      OPC_EmitMergeInputChains1_0,
2184      OPC_EmitConvertToTarget, 2,
2185      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
2186                    3, 3, 4, 5,
2187     20,
2188      OPC_CheckPredicate, 12,
2189      OPC_CheckPredicate, 21,
2190      OPC_CheckPatternPredicate, 0,
2191      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2192      OPC_EmitMergeInputChains1_0,
2193      OPC_EmitConvertToTarget, 2,
2194      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
2195                    3, 3, 4, 5,
2196     20,
2197      OPC_CheckPredicate, 20,
2198      OPC_CheckPredicate, 21,
2199      OPC_CheckPatternPredicate, 0,
2200      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2201      OPC_EmitMergeInputChains1_0,
2202      OPC_EmitConvertToTarget, 2,
2203      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
2204                    3, 3, 4, 5,
2205     0,
2206    65, MVT::i32,
2207     OPC_MoveParent,
2208     OPC_RecordChild2,
2209     OPC_CheckChild2Type, MVT::i32,
2210     OPC_Scope, 18,
2211      OPC_CheckPredicate, 7,
2212      OPC_CheckPatternPredicate, 5,
2213      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2214      OPC_EmitMergeInputChains1_0,
2215      OPC_EmitConvertToTarget, 2,
2216      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
2217                    3, 3, 4, 5,
2218     18,
2219      OPC_CheckPredicate, 9,
2220      OPC_CheckPatternPredicate, 5,
2221      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2222      OPC_EmitMergeInputChains1_0,
2223      OPC_EmitConvertToTarget, 2,
2224      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
2225                    3, 3, 4, 5,
2226     20,
2227      OPC_CheckPredicate, 12,
2228      OPC_CheckPredicate, 21,
2229      OPC_CheckPatternPredicate, 2,
2230      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2231      OPC_EmitMergeInputChains1_0,
2232      OPC_EmitConvertToTarget, 2,
2233      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
2234                    3, 3, 4, 5,
2235     0,
2236    0,
2237   0,
2238  116|128,1,
2239   OPC_RecordChild1,
2240   OPC_Scope, 31|128,1,
2241    OPC_RecordChild2,
2242    OPC_Scope, 88,
2243     OPC_CheckChild2Type, MVT::i64,
2244     OPC_Scope, 19,
2245      OPC_CheckPredicate, 7,
2246      OPC_CheckPatternPredicate, 4,
2247      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2248      OPC_EmitMergeInputChains1_0,
2249      OPC_EmitInteger, MVT::i64, 0,
2250      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
2251                    3, 2, 3, 4,
2252     19,
2253      OPC_CheckPredicate, 9,
2254      OPC_CheckPatternPredicate, 4,
2255      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2256      OPC_EmitMergeInputChains1_0,
2257      OPC_EmitInteger, MVT::i64, 0,
2258      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
2259                    3, 2, 3, 4,
2260     21,
2261      OPC_CheckPredicate, 12,
2262      OPC_CheckPredicate, 21,
2263      OPC_CheckPatternPredicate, 0,
2264      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2265      OPC_EmitMergeInputChains1_0,
2266      OPC_EmitInteger, MVT::i64, 0,
2267      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
2268                    3, 2, 3, 4,
2269     21,
2270      OPC_CheckPredicate, 20,
2271      OPC_CheckPredicate, 21,
2272      OPC_CheckPatternPredicate, 0,
2273      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2274      OPC_EmitMergeInputChains1_0,
2275      OPC_EmitInteger, MVT::i64, 0,
2276      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_D), 0|OPFL_Chain|OPFL_MemRefs,
2277                    3, 2, 3, 4,
2278     0,
2279    66,
2280     OPC_CheckChild2Type, MVT::i32,
2281     OPC_Scope, 19,
2282      OPC_CheckPredicate, 7,
2283      OPC_CheckPatternPredicate, 5,
2284      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2285      OPC_EmitMergeInputChains1_0,
2286      OPC_EmitInteger, MVT::i32, 0,
2287      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_B), 0|OPFL_Chain|OPFL_MemRefs,
2288                    3, 2, 3, 4,
2289     19,
2290      OPC_CheckPredicate, 9,
2291      OPC_CheckPatternPredicate, 5,
2292      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2293      OPC_EmitMergeInputChains1_0,
2294      OPC_EmitInteger, MVT::i32, 0,
2295      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_H), 0|OPFL_Chain|OPFL_MemRefs,
2296                    3, 2, 3, 4,
2297     21,
2298      OPC_CheckPredicate, 12,
2299      OPC_CheckPredicate, 21,
2300      OPC_CheckPatternPredicate, 2,
2301      OPC_CheckComplexPat, /*CP*/0, /*#*/1,
2302      OPC_EmitMergeInputChains1_0,
2303      OPC_EmitInteger, MVT::i32, 0,
2304      OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ST_W), 0|OPFL_Chain|OPFL_MemRefs,
2305                    3, 2, 3, 4,
2306     0,
2307    0,
2308   39,
2309    OPC_CheckChild1Type, MVT::i64,
2310    OPC_RecordChild2,
2311    OPC_CheckChild2Type, MVT::i64,
2312    OPC_Scope, 15,
2313     OPC_CheckPredicate, 12,
2314     OPC_CheckPredicate, 22,
2315     OPC_CheckPatternPredicate, 4,
2316     OPC_EmitMergeInputChains1_0,
2317     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::PseudoAtomicStoreW), 0|OPFL_Chain|OPFL_MemRefs,
2318                   MVT::i64, 2, 1, 2,
2319    15,
2320     OPC_CheckPredicate, 20,
2321     OPC_CheckPredicate, 22,
2322     OPC_CheckPatternPredicate, 0,
2323     OPC_EmitMergeInputChains1_0,
2324     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::PseudoAtomicStoreD), 0|OPFL_Chain|OPFL_MemRefs,
2325                   MVT::i64, 2, 1, 2,
2326    0,
2327   39,
2328    OPC_CheckChild1Type, MVT::i32,
2329    OPC_RecordChild2,
2330    OPC_CheckChild2Type, MVT::i32,
2331    OPC_Scope, 15,
2332     OPC_CheckPredicate, 12,
2333     OPC_CheckPredicate, 22,
2334     OPC_CheckPatternPredicate, 5,
2335     OPC_EmitMergeInputChains1_0,
2336     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::PseudoAtomicStoreW), 0|OPFL_Chain|OPFL_MemRefs,
2337                   MVT::i32, 2, 1, 2,
2338    15,
2339     OPC_CheckPredicate, 20,
2340     OPC_CheckPredicate, 22,
2341     OPC_CheckPatternPredicate, 3,
2342     OPC_EmitMergeInputChains1_0,
2343     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::PseudoAtomicStoreD), 0|OPFL_Chain|OPFL_MemRefs,
2344                   MVT::i32, 2, 1, 2,
2345    0,
2346   0,
2347  0,
2348 104|128,2, TARGET_VAL(ISD::ADD),
2349  OPC_Scope, 9|128,1,
2350   OPC_RecordChild0,
2351   OPC_Scope, 46,
2352    OPC_RecordChild1,
2353    OPC_MoveChild1,
2354    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2355    OPC_CheckPredicate, 3,
2356    OPC_MoveParent,
2357    OPC_CheckPredicate, 4,
2358    OPC_SwitchType , 15, MVT::i32,
2359     OPC_CheckPatternPredicate, 2,
2360     OPC_CheckComplexPat, /*CP*/0, /*#*/0,
2361     OPC_EmitConvertToTarget, 1,
2362     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
2363                   MVT::i32, 2, 2, 3,
2364    15, MVT::i64,
2365     OPC_CheckPatternPredicate, 0,
2366     OPC_CheckComplexPat, /*CP*/0, /*#*/0,
2367     OPC_EmitConvertToTarget, 1,
2368     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_D), 0,
2369                   MVT::i64, 2, 2, 3,
2370    0,
2371   86,
2372    OPC_MoveChild1,
2373    OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
2374    OPC_RecordChild0,
2375    OPC_RecordChild1,
2376    OPC_MoveChild1,
2377    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2378    OPC_CheckPredicate, 0,
2379    OPC_SwitchType , 34, MVT::i64,
2380     OPC_MoveParent,
2381     OPC_MoveParent,
2382     OPC_CheckType, MVT::i64,
2383     OPC_Scope, 13,
2384      OPC_CheckPatternPredicate, 1,
2385      OPC_EmitConvertToTarget, 2,
2386      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_W), 0,
2387                    MVT::i64, 3, 1, 0, 3,
2388     13,
2389      OPC_CheckPatternPredicate, 0,
2390      OPC_EmitConvertToTarget, 2,
2391      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_D), 0,
2392                    MVT::i64, 3, 1, 0, 3,
2393     0,
2394    34, MVT::i32,
2395     OPC_MoveParent,
2396     OPC_MoveParent,
2397     OPC_CheckType, MVT::i32,
2398     OPC_Scope, 13,
2399      OPC_CheckPatternPredicate, 2,
2400      OPC_EmitConvertToTarget, 2,
2401      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_W), 0,
2402                    MVT::i32, 3, 1, 0, 3,
2403     13,
2404      OPC_CheckPatternPredicate, 3,
2405      OPC_EmitConvertToTarget, 2,
2406      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_D), 0,
2407                    MVT::i32, 3, 1, 0, 3,
2408     0,
2409    0,
2410   0,
2411  88,
2412   OPC_MoveChild0,
2413   OPC_CheckOpcode, TARGET_VAL(ISD::SHL),
2414   OPC_RecordChild0,
2415   OPC_RecordChild1,
2416   OPC_MoveChild1,
2417   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2418   OPC_CheckPredicate, 0,
2419   OPC_SwitchType , 35, MVT::i64,
2420    OPC_MoveParent,
2421    OPC_MoveParent,
2422    OPC_RecordChild1,
2423    OPC_CheckType, MVT::i64,
2424    OPC_Scope, 13,
2425     OPC_CheckPatternPredicate, 1,
2426     OPC_EmitConvertToTarget, 1,
2427     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_W), 0,
2428                   MVT::i64, 3, 0, 2, 3,
2429    13,
2430     OPC_CheckPatternPredicate, 0,
2431     OPC_EmitConvertToTarget, 1,
2432     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_D), 0,
2433                   MVT::i64, 3, 0, 2, 3,
2434    0,
2435   35, MVT::i32,
2436    OPC_MoveParent,
2437    OPC_MoveParent,
2438    OPC_RecordChild1,
2439    OPC_CheckType, MVT::i32,
2440    OPC_Scope, 13,
2441     OPC_CheckPatternPredicate, 2,
2442     OPC_EmitConvertToTarget, 1,
2443     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_W), 0,
2444                   MVT::i32, 3, 0, 2, 3,
2445    13,
2446     OPC_CheckPatternPredicate, 3,
2447     OPC_EmitConvertToTarget, 1,
2448     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ALSL_D), 0,
2449                   MVT::i32, 3, 0, 2, 3,
2450    0,
2451   0,
2452  0|128,1,
2453   OPC_RecordChild0,
2454   OPC_RecordChild1,
2455   OPC_Scope, 69,
2456    OPC_MoveChild1,
2457    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2458    OPC_CheckPredicate, 3,
2459    OPC_MoveParent,
2460    OPC_SwitchType , 28, MVT::i64,
2461     OPC_Scope, 12,
2462      OPC_CheckPatternPredicate, 1,
2463      OPC_EmitConvertToTarget, 1,
2464      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
2465                    MVT::i64, 2, 0, 2,
2466     12,
2467      OPC_CheckPatternPredicate, 0,
2468      OPC_EmitConvertToTarget, 1,
2469      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_D), 0,
2470                    MVT::i64, 2, 0, 2,
2471     0,
2472    28, MVT::i32,
2473     OPC_Scope, 12,
2474      OPC_CheckPatternPredicate, 2,
2475      OPC_EmitConvertToTarget, 1,
2476      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
2477                    MVT::i32, 2, 0, 2,
2478     12,
2479      OPC_CheckPatternPredicate, 3,
2480      OPC_EmitConvertToTarget, 1,
2481      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_D), 0,
2482                    MVT::i32, 2, 0, 2,
2483     0,
2484    0,
2485   26,
2486    OPC_CheckType, MVT::i64,
2487    OPC_Scope, 10,
2488     OPC_CheckPatternPredicate, 1,
2489     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_W), 0,
2490                   MVT::i64, 2, 0, 1,
2491    10,
2492     OPC_CheckPatternPredicate, 0,
2493     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_D), 0,
2494                   MVT::i64, 2, 0, 1,
2495    0,
2496   26,
2497    OPC_CheckType, MVT::i32,
2498    OPC_Scope, 10,
2499     OPC_CheckPatternPredicate, 2,
2500     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_W), 0,
2501                   MVT::i32, 2, 0, 1,
2502    10,
2503     OPC_CheckPatternPredicate, 3,
2504     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_D), 0,
2505                   MVT::i32, 2, 0, 1,
2506    0,
2507   0,
2508  0,
2509 65|128,1, TARGET_VAL(ISD::OR),
2510  OPC_Scope, 85,
2511   OPC_RecordChild0,
2512   OPC_Scope, 46,
2513    OPC_RecordChild1,
2514    OPC_MoveChild1,
2515    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2516    OPC_CheckPredicate, 3,
2517    OPC_MoveParent,
2518    OPC_CheckPredicate, 4,
2519    OPC_SwitchType , 15, MVT::i32,
2520     OPC_CheckPatternPredicate, 2,
2521     OPC_CheckComplexPat, /*CP*/0, /*#*/0,
2522     OPC_EmitConvertToTarget, 1,
2523     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
2524                   MVT::i32, 2, 2, 3,
2525    15, MVT::i64,
2526     OPC_CheckPatternPredicate, 0,
2527     OPC_CheckComplexPat, /*CP*/0, /*#*/0,
2528     OPC_EmitConvertToTarget, 1,
2529     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_D), 0,
2530                   MVT::i64, 2, 2, 3,
2531    0,
2532   34,
2533    OPC_MoveChild1,
2534    OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
2535    OPC_RecordChild0,
2536    OPC_CheckChild1Integer, 3,
2537    OPC_MoveParent,
2538    OPC_SwitchType , 10, MVT::i64,
2539     OPC_CheckPatternPredicate, 4,
2540     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORN), 0,
2541                   MVT::i64, 2, 0, 1,
2542    10, MVT::i32,
2543     OPC_CheckPatternPredicate, 5,
2544     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORN), 0,
2545                   MVT::i32, 2, 0, 1,
2546    0,
2547   0,
2548  35,
2549   OPC_MoveChild0,
2550   OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
2551   OPC_RecordChild0,
2552   OPC_CheckChild1Integer, 3,
2553   OPC_MoveParent,
2554   OPC_RecordChild1,
2555   OPC_SwitchType , 10, MVT::i64,
2556    OPC_CheckPatternPredicate, 4,
2557    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORN), 0,
2558                  MVT::i64, 2, 1, 0,
2559   10, MVT::i32,
2560    OPC_CheckPatternPredicate, 5,
2561    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORN), 0,
2562                  MVT::i32, 2, 1, 0,
2563   0,
2564  68,
2565   OPC_RecordChild0,
2566   OPC_RecordChild1,
2567   OPC_Scope, 37,
2568    OPC_MoveChild1,
2569    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
2570    OPC_CheckPredicate, 23,
2571    OPC_MoveParent,
2572    OPC_SwitchType , 12, MVT::i64,
2573     OPC_CheckPatternPredicate, 4,
2574     OPC_EmitConvertToTarget, 1,
2575     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORI), 0,
2576                   MVT::i64, 2, 0, 2,
2577    12, MVT::i32,
2578     OPC_CheckPatternPredicate, 5,
2579     OPC_EmitConvertToTarget, 1,
2580     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ORI), 0,
2581                   MVT::i32, 2, 0, 2,
2582    0,
2583   12,
2584    OPC_CheckType, MVT::i64,
2585    OPC_CheckPatternPredicate, 4,
2586    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::OR), 0,
2587                  MVT::i64, 2, 0, 1,
2588   12,
2589    OPC_CheckType, MVT::i32,
2590    OPC_CheckPatternPredicate, 5,
2591    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::OR), 0,
2592                  MVT::i32, 2, 0, 1,
2593   0,
2594  0,
2595 112, TARGET_VAL(ISD::INTRINSIC_VOID),
2596  OPC_RecordNode,
2597  OPC_Scope, 31,
2598   OPC_CheckChild1Integer, 14|128,75,
2599   OPC_RecordChild2,
2600   OPC_MoveChild2,
2601   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
2602   OPC_MoveParent,
2603   OPC_RecordChild3,
2604   OPC_RecordChild4,
2605   OPC_MoveChild4,
2606   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
2607   OPC_MoveParent,
2608   OPC_CheckPatternPredicate, 4,
2609   OPC_EmitMergeInputChains1_0,
2610   OPC_EmitConvertToTarget, 1,
2611   OPC_EmitConvertToTarget, 3,
2612   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::CACOP), 0|OPFL_Chain,
2613                 3, 4, 2, 5,
2614  22,
2615   OPC_CheckChild1Integer, 70|128,75,
2616   OPC_RecordChild2,
2617   OPC_RecordChild3,
2618   OPC_MoveChild3,
2619   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
2620   OPC_MoveParent,
2621   OPC_CheckPatternPredicate, 0,
2622   OPC_EmitMergeInputChains1_0,
2623   OPC_EmitConvertToTarget, 2,
2624   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::LDPTE), 0|OPFL_Chain,
2625                 2, 1, 3,
2626  21,
2627   OPC_CheckChild1Integer, 16|128,75,
2628   OPC_RecordChild2,
2629   OPC_RecordChild3,
2630   OPC_RecordChild4,
2631   OPC_CheckPatternPredicate, 5,
2632   OPC_EmitMergeInputChains1_0,
2633   OPC_EmitConvertToTarget, 1,
2634   OPC_EmitConvertToTarget, 3,
2635   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::CACOP), 0|OPFL_Chain,
2636                 3, 4, 2, 5,
2637  15,
2638   OPC_CheckChild1Integer, 10|128,75,
2639   OPC_RecordChild2,
2640   OPC_RecordChild3,
2641   OPC_CheckPatternPredicate, 0,
2642   OPC_EmitMergeInputChains1_0,
2643   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ASRTLE_D), 0|OPFL_Chain,
2644                 2, 1, 2,
2645  15,
2646   OPC_CheckChild1Integer, 8|128,75,
2647   OPC_RecordChild2,
2648   OPC_RecordChild3,
2649   OPC_CheckPatternPredicate, 0,
2650   OPC_EmitMergeInputChains1_0,
2651   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ASRTGT_D), 0|OPFL_Chain,
2652                 2, 1, 2,
2653  0,
2654 94|128,25, TARGET_VAL(ISD::BRCOND),
2655  OPC_RecordNode,
2656  OPC_Scope, 47|128,25,
2657   OPC_MoveChild1,
2658   OPC_SwitchOpcode , 105|128,10, TARGET_VAL(ISD::XOR),
2659    OPC_MoveChild0,
2660    OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
2661    OPC_RecordChild0,
2662    OPC_Scope, 47|128,5,
2663     OPC_CheckChild0Type, MVT::f32,
2664     OPC_RecordChild1,
2665     OPC_Scope, 61,
2666      OPC_CheckChild2CondCode, ISD::SETOEQ,
2667      OPC_MoveParent,
2668      OPC_CheckChild1Integer, 3,
2669      OPC_SwitchType , 25, MVT::i64,
2670       OPC_MoveParent,
2671       OPC_RecordChild2,
2672       OPC_MoveChild2,
2673       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2674       OPC_MoveParent,
2675       OPC_CheckPatternPredicate, 6,
2676       OPC_EmitMergeInputChains1_0,
2677       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
2678                     MVT::i64, 2, 1, 2,
2679       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2680                     2, 4, 3,
2681      25, MVT::i32,
2682       OPC_MoveParent,
2683       OPC_RecordChild2,
2684       OPC_MoveChild2,
2685       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2686       OPC_MoveParent,
2687       OPC_CheckPatternPredicate, 8,
2688       OPC_EmitMergeInputChains1_0,
2689       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
2690                     MVT::i32, 2, 1, 2,
2691       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2692                     2, 4, 3,
2693      0,
2694     61,
2695      OPC_CheckChild2CondCode, ISD::SETOLT,
2696      OPC_MoveParent,
2697      OPC_CheckChild1Integer, 3,
2698      OPC_SwitchType , 25, MVT::i64,
2699       OPC_MoveParent,
2700       OPC_RecordChild2,
2701       OPC_MoveChild2,
2702       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2703       OPC_MoveParent,
2704       OPC_CheckPatternPredicate, 6,
2705       OPC_EmitMergeInputChains1_0,
2706       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
2707                     MVT::i64, 2, 1, 2,
2708       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2709                     2, 4, 3,
2710      25, MVT::i32,
2711       OPC_MoveParent,
2712       OPC_RecordChild2,
2713       OPC_MoveChild2,
2714       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2715       OPC_MoveParent,
2716       OPC_CheckPatternPredicate, 8,
2717       OPC_EmitMergeInputChains1_0,
2718       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
2719                     MVT::i32, 2, 1, 2,
2720       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2721                     2, 4, 3,
2722      0,
2723     61,
2724      OPC_CheckChild2CondCode, ISD::SETOLE,
2725      OPC_MoveParent,
2726      OPC_CheckChild1Integer, 3,
2727      OPC_SwitchType , 25, MVT::i64,
2728       OPC_MoveParent,
2729       OPC_RecordChild2,
2730       OPC_MoveChild2,
2731       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2732       OPC_MoveParent,
2733       OPC_CheckPatternPredicate, 6,
2734       OPC_EmitMergeInputChains1_0,
2735       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
2736                     MVT::i64, 2, 1, 2,
2737       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2738                     2, 4, 3,
2739      25, MVT::i32,
2740       OPC_MoveParent,
2741       OPC_RecordChild2,
2742       OPC_MoveChild2,
2743       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2744       OPC_MoveParent,
2745       OPC_CheckPatternPredicate, 8,
2746       OPC_EmitMergeInputChains1_0,
2747       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
2748                     MVT::i32, 2, 1, 2,
2749       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2750                     2, 4, 3,
2751      0,
2752     61,
2753      OPC_CheckChild2CondCode, ISD::SETONE,
2754      OPC_MoveParent,
2755      OPC_CheckChild1Integer, 3,
2756      OPC_SwitchType , 25, MVT::i64,
2757       OPC_MoveParent,
2758       OPC_RecordChild2,
2759       OPC_MoveChild2,
2760       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2761       OPC_MoveParent,
2762       OPC_CheckPatternPredicate, 6,
2763       OPC_EmitMergeInputChains1_0,
2764       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
2765                     MVT::i64, 2, 1, 2,
2766       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2767                     2, 4, 3,
2768      25, MVT::i32,
2769       OPC_MoveParent,
2770       OPC_RecordChild2,
2771       OPC_MoveChild2,
2772       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2773       OPC_MoveParent,
2774       OPC_CheckPatternPredicate, 8,
2775       OPC_EmitMergeInputChains1_0,
2776       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
2777                     MVT::i32, 2, 1, 2,
2778       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2779                     2, 4, 3,
2780      0,
2781     61,
2782      OPC_CheckChild2CondCode, ISD::SETO,
2783      OPC_MoveParent,
2784      OPC_CheckChild1Integer, 3,
2785      OPC_SwitchType , 25, MVT::i64,
2786       OPC_MoveParent,
2787       OPC_RecordChild2,
2788       OPC_MoveChild2,
2789       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2790       OPC_MoveParent,
2791       OPC_CheckPatternPredicate, 6,
2792       OPC_EmitMergeInputChains1_0,
2793       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
2794                     MVT::i64, 2, 1, 2,
2795       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2796                     2, 4, 3,
2797      25, MVT::i32,
2798       OPC_MoveParent,
2799       OPC_RecordChild2,
2800       OPC_MoveChild2,
2801       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2802       OPC_MoveParent,
2803       OPC_CheckPatternPredicate, 8,
2804       OPC_EmitMergeInputChains1_0,
2805       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
2806                     MVT::i32, 2, 1, 2,
2807       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2808                     2, 4, 3,
2809      0,
2810     61,
2811      OPC_CheckChild2CondCode, ISD::SETUEQ,
2812      OPC_MoveParent,
2813      OPC_CheckChild1Integer, 3,
2814      OPC_SwitchType , 25, MVT::i64,
2815       OPC_MoveParent,
2816       OPC_RecordChild2,
2817       OPC_MoveChild2,
2818       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2819       OPC_MoveParent,
2820       OPC_CheckPatternPredicate, 6,
2821       OPC_EmitMergeInputChains1_0,
2822       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
2823                     MVT::i64, 2, 1, 2,
2824       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2825                     2, 4, 3,
2826      25, MVT::i32,
2827       OPC_MoveParent,
2828       OPC_RecordChild2,
2829       OPC_MoveChild2,
2830       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2831       OPC_MoveParent,
2832       OPC_CheckPatternPredicate, 8,
2833       OPC_EmitMergeInputChains1_0,
2834       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
2835                     MVT::i32, 2, 1, 2,
2836       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2837                     2, 4, 3,
2838      0,
2839     61,
2840      OPC_CheckChild2CondCode, ISD::SETULT,
2841      OPC_MoveParent,
2842      OPC_CheckChild1Integer, 3,
2843      OPC_SwitchType , 25, MVT::i64,
2844       OPC_MoveParent,
2845       OPC_RecordChild2,
2846       OPC_MoveChild2,
2847       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2848       OPC_MoveParent,
2849       OPC_CheckPatternPredicate, 6,
2850       OPC_EmitMergeInputChains1_0,
2851       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
2852                     MVT::i64, 2, 1, 2,
2853       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2854                     2, 4, 3,
2855      25, MVT::i32,
2856       OPC_MoveParent,
2857       OPC_RecordChild2,
2858       OPC_MoveChild2,
2859       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2860       OPC_MoveParent,
2861       OPC_CheckPatternPredicate, 8,
2862       OPC_EmitMergeInputChains1_0,
2863       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
2864                     MVT::i32, 2, 1, 2,
2865       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2866                     2, 4, 3,
2867      0,
2868     61,
2869      OPC_CheckChild2CondCode, ISD::SETULE,
2870      OPC_MoveParent,
2871      OPC_CheckChild1Integer, 3,
2872      OPC_SwitchType , 25, MVT::i64,
2873       OPC_MoveParent,
2874       OPC_RecordChild2,
2875       OPC_MoveChild2,
2876       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2877       OPC_MoveParent,
2878       OPC_CheckPatternPredicate, 6,
2879       OPC_EmitMergeInputChains1_0,
2880       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
2881                     MVT::i64, 2, 1, 2,
2882       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2883                     2, 4, 3,
2884      25, MVT::i32,
2885       OPC_MoveParent,
2886       OPC_RecordChild2,
2887       OPC_MoveChild2,
2888       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2889       OPC_MoveParent,
2890       OPC_CheckPatternPredicate, 8,
2891       OPC_EmitMergeInputChains1_0,
2892       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
2893                     MVT::i32, 2, 1, 2,
2894       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2895                     2, 4, 3,
2896      0,
2897     61,
2898      OPC_CheckChild2CondCode, ISD::SETUNE,
2899      OPC_MoveParent,
2900      OPC_CheckChild1Integer, 3,
2901      OPC_SwitchType , 25, MVT::i64,
2902       OPC_MoveParent,
2903       OPC_RecordChild2,
2904       OPC_MoveChild2,
2905       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2906       OPC_MoveParent,
2907       OPC_CheckPatternPredicate, 6,
2908       OPC_EmitMergeInputChains1_0,
2909       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
2910                     MVT::i64, 2, 1, 2,
2911       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2912                     2, 4, 3,
2913      25, MVT::i32,
2914       OPC_MoveParent,
2915       OPC_RecordChild2,
2916       OPC_MoveChild2,
2917       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2918       OPC_MoveParent,
2919       OPC_CheckPatternPredicate, 8,
2920       OPC_EmitMergeInputChains1_0,
2921       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
2922                     MVT::i32, 2, 1, 2,
2923       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2924                     2, 4, 3,
2925      0,
2926     61,
2927      OPC_CheckChild2CondCode, ISD::SETUO,
2928      OPC_MoveParent,
2929      OPC_CheckChild1Integer, 3,
2930      OPC_SwitchType , 25, MVT::i64,
2931       OPC_MoveParent,
2932       OPC_RecordChild2,
2933       OPC_MoveChild2,
2934       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2935       OPC_MoveParent,
2936       OPC_CheckPatternPredicate, 6,
2937       OPC_EmitMergeInputChains1_0,
2938       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
2939                     MVT::i64, 2, 1, 2,
2940       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2941                     2, 4, 3,
2942      25, MVT::i32,
2943       OPC_MoveParent,
2944       OPC_RecordChild2,
2945       OPC_MoveChild2,
2946       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2947       OPC_MoveParent,
2948       OPC_CheckPatternPredicate, 8,
2949       OPC_EmitMergeInputChains1_0,
2950       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
2951                     MVT::i32, 2, 1, 2,
2952       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2953                     2, 4, 3,
2954      0,
2955     61,
2956      OPC_CheckChild2CondCode, ISD::SETLT,
2957      OPC_MoveParent,
2958      OPC_CheckChild1Integer, 3,
2959      OPC_SwitchType , 25, MVT::i64,
2960       OPC_MoveParent,
2961       OPC_RecordChild2,
2962       OPC_MoveChild2,
2963       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2964       OPC_MoveParent,
2965       OPC_CheckPatternPredicate, 6,
2966       OPC_EmitMergeInputChains1_0,
2967       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
2968                     MVT::i64, 2, 1, 2,
2969       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2970                     2, 4, 3,
2971      25, MVT::i32,
2972       OPC_MoveParent,
2973       OPC_RecordChild2,
2974       OPC_MoveChild2,
2975       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2976       OPC_MoveParent,
2977       OPC_CheckPatternPredicate, 8,
2978       OPC_EmitMergeInputChains1_0,
2979       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
2980                     MVT::i32, 2, 1, 2,
2981       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
2982                     2, 4, 3,
2983      0,
2984     0,
2985    47|128,5,
2986     OPC_CheckChild0Type, MVT::f64,
2987     OPC_RecordChild1,
2988     OPC_Scope, 61,
2989      OPC_CheckChild2CondCode, ISD::SETOEQ,
2990      OPC_MoveParent,
2991      OPC_CheckChild1Integer, 3,
2992      OPC_SwitchType , 25, MVT::i64,
2993       OPC_MoveParent,
2994       OPC_RecordChild2,
2995       OPC_MoveChild2,
2996       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
2997       OPC_MoveParent,
2998       OPC_CheckPatternPredicate, 7,
2999       OPC_EmitMergeInputChains1_0,
3000       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
3001                     MVT::i64, 2, 1, 2,
3002       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3003                     2, 4, 3,
3004      25, MVT::i32,
3005       OPC_MoveParent,
3006       OPC_RecordChild2,
3007       OPC_MoveChild2,
3008       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3009       OPC_MoveParent,
3010       OPC_CheckPatternPredicate, 9,
3011       OPC_EmitMergeInputChains1_0,
3012       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
3013                     MVT::i32, 2, 1, 2,
3014       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3015                     2, 4, 3,
3016      0,
3017     61,
3018      OPC_CheckChild2CondCode, ISD::SETOLT,
3019      OPC_MoveParent,
3020      OPC_CheckChild1Integer, 3,
3021      OPC_SwitchType , 25, MVT::i64,
3022       OPC_MoveParent,
3023       OPC_RecordChild2,
3024       OPC_MoveChild2,
3025       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3026       OPC_MoveParent,
3027       OPC_CheckPatternPredicate, 7,
3028       OPC_EmitMergeInputChains1_0,
3029       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
3030                     MVT::i64, 2, 1, 2,
3031       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3032                     2, 4, 3,
3033      25, MVT::i32,
3034       OPC_MoveParent,
3035       OPC_RecordChild2,
3036       OPC_MoveChild2,
3037       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3038       OPC_MoveParent,
3039       OPC_CheckPatternPredicate, 9,
3040       OPC_EmitMergeInputChains1_0,
3041       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
3042                     MVT::i32, 2, 1, 2,
3043       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3044                     2, 4, 3,
3045      0,
3046     61,
3047      OPC_CheckChild2CondCode, ISD::SETOLE,
3048      OPC_MoveParent,
3049      OPC_CheckChild1Integer, 3,
3050      OPC_SwitchType , 25, MVT::i64,
3051       OPC_MoveParent,
3052       OPC_RecordChild2,
3053       OPC_MoveChild2,
3054       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3055       OPC_MoveParent,
3056       OPC_CheckPatternPredicate, 7,
3057       OPC_EmitMergeInputChains1_0,
3058       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
3059                     MVT::i64, 2, 1, 2,
3060       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3061                     2, 4, 3,
3062      25, MVT::i32,
3063       OPC_MoveParent,
3064       OPC_RecordChild2,
3065       OPC_MoveChild2,
3066       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3067       OPC_MoveParent,
3068       OPC_CheckPatternPredicate, 9,
3069       OPC_EmitMergeInputChains1_0,
3070       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
3071                     MVT::i32, 2, 1, 2,
3072       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3073                     2, 4, 3,
3074      0,
3075     61,
3076      OPC_CheckChild2CondCode, ISD::SETONE,
3077      OPC_MoveParent,
3078      OPC_CheckChild1Integer, 3,
3079      OPC_SwitchType , 25, MVT::i64,
3080       OPC_MoveParent,
3081       OPC_RecordChild2,
3082       OPC_MoveChild2,
3083       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3084       OPC_MoveParent,
3085       OPC_CheckPatternPredicate, 7,
3086       OPC_EmitMergeInputChains1_0,
3087       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
3088                     MVT::i64, 2, 1, 2,
3089       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3090                     2, 4, 3,
3091      25, MVT::i32,
3092       OPC_MoveParent,
3093       OPC_RecordChild2,
3094       OPC_MoveChild2,
3095       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3096       OPC_MoveParent,
3097       OPC_CheckPatternPredicate, 9,
3098       OPC_EmitMergeInputChains1_0,
3099       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
3100                     MVT::i32, 2, 1, 2,
3101       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3102                     2, 4, 3,
3103      0,
3104     61,
3105      OPC_CheckChild2CondCode, ISD::SETO,
3106      OPC_MoveParent,
3107      OPC_CheckChild1Integer, 3,
3108      OPC_SwitchType , 25, MVT::i64,
3109       OPC_MoveParent,
3110       OPC_RecordChild2,
3111       OPC_MoveChild2,
3112       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3113       OPC_MoveParent,
3114       OPC_CheckPatternPredicate, 7,
3115       OPC_EmitMergeInputChains1_0,
3116       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
3117                     MVT::i64, 2, 1, 2,
3118       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3119                     2, 4, 3,
3120      25, MVT::i32,
3121       OPC_MoveParent,
3122       OPC_RecordChild2,
3123       OPC_MoveChild2,
3124       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3125       OPC_MoveParent,
3126       OPC_CheckPatternPredicate, 9,
3127       OPC_EmitMergeInputChains1_0,
3128       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
3129                     MVT::i32, 2, 1, 2,
3130       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3131                     2, 4, 3,
3132      0,
3133     61,
3134      OPC_CheckChild2CondCode, ISD::SETUEQ,
3135      OPC_MoveParent,
3136      OPC_CheckChild1Integer, 3,
3137      OPC_SwitchType , 25, MVT::i64,
3138       OPC_MoveParent,
3139       OPC_RecordChild2,
3140       OPC_MoveChild2,
3141       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3142       OPC_MoveParent,
3143       OPC_CheckPatternPredicate, 7,
3144       OPC_EmitMergeInputChains1_0,
3145       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
3146                     MVT::i64, 2, 1, 2,
3147       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3148                     2, 4, 3,
3149      25, MVT::i32,
3150       OPC_MoveParent,
3151       OPC_RecordChild2,
3152       OPC_MoveChild2,
3153       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3154       OPC_MoveParent,
3155       OPC_CheckPatternPredicate, 9,
3156       OPC_EmitMergeInputChains1_0,
3157       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
3158                     MVT::i32, 2, 1, 2,
3159       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3160                     2, 4, 3,
3161      0,
3162     61,
3163      OPC_CheckChild2CondCode, ISD::SETULT,
3164      OPC_MoveParent,
3165      OPC_CheckChild1Integer, 3,
3166      OPC_SwitchType , 25, MVT::i64,
3167       OPC_MoveParent,
3168       OPC_RecordChild2,
3169       OPC_MoveChild2,
3170       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3171       OPC_MoveParent,
3172       OPC_CheckPatternPredicate, 7,
3173       OPC_EmitMergeInputChains1_0,
3174       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
3175                     MVT::i64, 2, 1, 2,
3176       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3177                     2, 4, 3,
3178      25, MVT::i32,
3179       OPC_MoveParent,
3180       OPC_RecordChild2,
3181       OPC_MoveChild2,
3182       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3183       OPC_MoveParent,
3184       OPC_CheckPatternPredicate, 9,
3185       OPC_EmitMergeInputChains1_0,
3186       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
3187                     MVT::i32, 2, 1, 2,
3188       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3189                     2, 4, 3,
3190      0,
3191     61,
3192      OPC_CheckChild2CondCode, ISD::SETULE,
3193      OPC_MoveParent,
3194      OPC_CheckChild1Integer, 3,
3195      OPC_SwitchType , 25, MVT::i64,
3196       OPC_MoveParent,
3197       OPC_RecordChild2,
3198       OPC_MoveChild2,
3199       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3200       OPC_MoveParent,
3201       OPC_CheckPatternPredicate, 7,
3202       OPC_EmitMergeInputChains1_0,
3203       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
3204                     MVT::i64, 2, 1, 2,
3205       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3206                     2, 4, 3,
3207      25, MVT::i32,
3208       OPC_MoveParent,
3209       OPC_RecordChild2,
3210       OPC_MoveChild2,
3211       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3212       OPC_MoveParent,
3213       OPC_CheckPatternPredicate, 9,
3214       OPC_EmitMergeInputChains1_0,
3215       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
3216                     MVT::i32, 2, 1, 2,
3217       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3218                     2, 4, 3,
3219      0,
3220     61,
3221      OPC_CheckChild2CondCode, ISD::SETUNE,
3222      OPC_MoveParent,
3223      OPC_CheckChild1Integer, 3,
3224      OPC_SwitchType , 25, MVT::i64,
3225       OPC_MoveParent,
3226       OPC_RecordChild2,
3227       OPC_MoveChild2,
3228       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3229       OPC_MoveParent,
3230       OPC_CheckPatternPredicate, 7,
3231       OPC_EmitMergeInputChains1_0,
3232       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
3233                     MVT::i64, 2, 1, 2,
3234       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3235                     2, 4, 3,
3236      25, MVT::i32,
3237       OPC_MoveParent,
3238       OPC_RecordChild2,
3239       OPC_MoveChild2,
3240       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3241       OPC_MoveParent,
3242       OPC_CheckPatternPredicate, 9,
3243       OPC_EmitMergeInputChains1_0,
3244       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
3245                     MVT::i32, 2, 1, 2,
3246       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3247                     2, 4, 3,
3248      0,
3249     61,
3250      OPC_CheckChild2CondCode, ISD::SETUO,
3251      OPC_MoveParent,
3252      OPC_CheckChild1Integer, 3,
3253      OPC_SwitchType , 25, MVT::i64,
3254       OPC_MoveParent,
3255       OPC_RecordChild2,
3256       OPC_MoveChild2,
3257       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3258       OPC_MoveParent,
3259       OPC_CheckPatternPredicate, 7,
3260       OPC_EmitMergeInputChains1_0,
3261       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
3262                     MVT::i64, 2, 1, 2,
3263       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3264                     2, 4, 3,
3265      25, MVT::i32,
3266       OPC_MoveParent,
3267       OPC_RecordChild2,
3268       OPC_MoveChild2,
3269       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3270       OPC_MoveParent,
3271       OPC_CheckPatternPredicate, 9,
3272       OPC_EmitMergeInputChains1_0,
3273       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
3274                     MVT::i32, 2, 1, 2,
3275       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3276                     2, 4, 3,
3277      0,
3278     61,
3279      OPC_CheckChild2CondCode, ISD::SETLT,
3280      OPC_MoveParent,
3281      OPC_CheckChild1Integer, 3,
3282      OPC_SwitchType , 25, MVT::i64,
3283       OPC_MoveParent,
3284       OPC_RecordChild2,
3285       OPC_MoveChild2,
3286       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3287       OPC_MoveParent,
3288       OPC_CheckPatternPredicate, 7,
3289       OPC_EmitMergeInputChains1_0,
3290       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
3291                     MVT::i64, 2, 1, 2,
3292       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3293                     2, 4, 3,
3294      25, MVT::i32,
3295       OPC_MoveParent,
3296       OPC_RecordChild2,
3297       OPC_MoveChild2,
3298       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3299       OPC_MoveParent,
3300       OPC_CheckPatternPredicate, 9,
3301       OPC_EmitMergeInputChains1_0,
3302       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
3303                     MVT::i32, 2, 1, 2,
3304       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCEQZ), 0|OPFL_Chain,
3305                     2, 4, 3,
3306      0,
3307     0,
3308    0,
3309   59|128,14, TARGET_VAL(ISD::SETCC),
3310    OPC_RecordChild0,
3311    OPC_Scope, 10|128,2,
3312     OPC_CheckChild0Type, MVT::i64,
3313     OPC_CheckType, MVT::i64,
3314     OPC_Scope, 44,
3315      OPC_CheckChild1Integer, 0,
3316      OPC_Scope, 19,
3317       OPC_CheckChild2CondCode, ISD::SETEQ,
3318       OPC_MoveParent,
3319       OPC_RecordChild2,
3320       OPC_MoveChild2,
3321       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3322       OPC_MoveParent,
3323       OPC_CheckPatternPredicate, 4,
3324       OPC_EmitMergeInputChains1_0,
3325       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BEQZ), 0|OPFL_Chain,
3326                     2, 1, 2,
3327      19,
3328       OPC_CheckChild2CondCode, ISD::SETNE,
3329       OPC_MoveParent,
3330       OPC_RecordChild2,
3331       OPC_MoveChild2,
3332       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3333       OPC_MoveParent,
3334       OPC_CheckPatternPredicate, 4,
3335       OPC_EmitMergeInputChains1_0,
3336       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNEZ), 0|OPFL_Chain,
3337                     2, 1, 2,
3338      0,
3339     85|128,1,
3340      OPC_RecordChild1,
3341      OPC_Scope, 20,
3342       OPC_CheckChild2CondCode, ISD::SETEQ,
3343       OPC_MoveParent,
3344       OPC_RecordChild2,
3345       OPC_MoveChild2,
3346       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3347       OPC_MoveParent,
3348       OPC_CheckPatternPredicate, 4,
3349       OPC_EmitMergeInputChains1_0,
3350       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BEQ), 0|OPFL_Chain,
3351                     3, 1, 2, 3,
3352      20,
3353       OPC_CheckChild2CondCode, ISD::SETNE,
3354       OPC_MoveParent,
3355       OPC_RecordChild2,
3356       OPC_MoveChild2,
3357       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3358       OPC_MoveParent,
3359       OPC_CheckPatternPredicate, 4,
3360       OPC_EmitMergeInputChains1_0,
3361       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNE), 0|OPFL_Chain,
3362                     3, 1, 2, 3,
3363      20,
3364       OPC_CheckChild2CondCode, ISD::SETLT,
3365       OPC_MoveParent,
3366       OPC_RecordChild2,
3367       OPC_MoveChild2,
3368       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3369       OPC_MoveParent,
3370       OPC_CheckPatternPredicate, 4,
3371       OPC_EmitMergeInputChains1_0,
3372       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLT), 0|OPFL_Chain,
3373                     3, 1, 2, 3,
3374      20,
3375       OPC_CheckChild2CondCode, ISD::SETGE,
3376       OPC_MoveParent,
3377       OPC_RecordChild2,
3378       OPC_MoveChild2,
3379       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3380       OPC_MoveParent,
3381       OPC_CheckPatternPredicate, 4,
3382       OPC_EmitMergeInputChains1_0,
3383       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGE), 0|OPFL_Chain,
3384                     3, 1, 2, 3,
3385      20,
3386       OPC_CheckChild2CondCode, ISD::SETULT,
3387       OPC_MoveParent,
3388       OPC_RecordChild2,
3389       OPC_MoveChild2,
3390       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3391       OPC_MoveParent,
3392       OPC_CheckPatternPredicate, 4,
3393       OPC_EmitMergeInputChains1_0,
3394       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLTU), 0|OPFL_Chain,
3395                     3, 1, 2, 3,
3396      20,
3397       OPC_CheckChild2CondCode, ISD::SETUGE,
3398       OPC_MoveParent,
3399       OPC_RecordChild2,
3400       OPC_MoveChild2,
3401       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3402       OPC_MoveParent,
3403       OPC_CheckPatternPredicate, 4,
3404       OPC_EmitMergeInputChains1_0,
3405       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGEU), 0|OPFL_Chain,
3406                     3, 1, 2, 3,
3407      20,
3408       OPC_CheckChild2CondCode, ISD::SETGT,
3409       OPC_MoveParent,
3410       OPC_RecordChild2,
3411       OPC_MoveChild2,
3412       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3413       OPC_MoveParent,
3414       OPC_CheckPatternPredicate, 4,
3415       OPC_EmitMergeInputChains1_0,
3416       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLT), 0|OPFL_Chain,
3417                     3, 2, 1, 3,
3418      20,
3419       OPC_CheckChild2CondCode, ISD::SETLE,
3420       OPC_MoveParent,
3421       OPC_RecordChild2,
3422       OPC_MoveChild2,
3423       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3424       OPC_MoveParent,
3425       OPC_CheckPatternPredicate, 4,
3426       OPC_EmitMergeInputChains1_0,
3427       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGE), 0|OPFL_Chain,
3428                     3, 2, 1, 3,
3429      20,
3430       OPC_CheckChild2CondCode, ISD::SETUGT,
3431       OPC_MoveParent,
3432       OPC_RecordChild2,
3433       OPC_MoveChild2,
3434       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3435       OPC_MoveParent,
3436       OPC_CheckPatternPredicate, 4,
3437       OPC_EmitMergeInputChains1_0,
3438       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLTU), 0|OPFL_Chain,
3439                     3, 2, 1, 3,
3440      20,
3441       OPC_CheckChild2CondCode, ISD::SETULE,
3442       OPC_MoveParent,
3443       OPC_RecordChild2,
3444       OPC_MoveChild2,
3445       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3446       OPC_MoveParent,
3447       OPC_CheckPatternPredicate, 4,
3448       OPC_EmitMergeInputChains1_0,
3449       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGEU), 0|OPFL_Chain,
3450                     3, 2, 1, 3,
3451      0,
3452     0,
3453    10|128,2,
3454     OPC_CheckChild0Type, MVT::i32,
3455     OPC_CheckType, MVT::i32,
3456     OPC_Scope, 44,
3457      OPC_CheckChild1Integer, 0,
3458      OPC_Scope, 19,
3459       OPC_CheckChild2CondCode, ISD::SETEQ,
3460       OPC_MoveParent,
3461       OPC_RecordChild2,
3462       OPC_MoveChild2,
3463       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3464       OPC_MoveParent,
3465       OPC_CheckPatternPredicate, 5,
3466       OPC_EmitMergeInputChains1_0,
3467       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BEQZ), 0|OPFL_Chain,
3468                     2, 1, 2,
3469      19,
3470       OPC_CheckChild2CondCode, ISD::SETNE,
3471       OPC_MoveParent,
3472       OPC_RecordChild2,
3473       OPC_MoveChild2,
3474       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3475       OPC_MoveParent,
3476       OPC_CheckPatternPredicate, 5,
3477       OPC_EmitMergeInputChains1_0,
3478       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNEZ), 0|OPFL_Chain,
3479                     2, 1, 2,
3480      0,
3481     85|128,1,
3482      OPC_RecordChild1,
3483      OPC_Scope, 20,
3484       OPC_CheckChild2CondCode, ISD::SETEQ,
3485       OPC_MoveParent,
3486       OPC_RecordChild2,
3487       OPC_MoveChild2,
3488       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3489       OPC_MoveParent,
3490       OPC_CheckPatternPredicate, 5,
3491       OPC_EmitMergeInputChains1_0,
3492       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BEQ), 0|OPFL_Chain,
3493                     3, 1, 2, 3,
3494      20,
3495       OPC_CheckChild2CondCode, ISD::SETNE,
3496       OPC_MoveParent,
3497       OPC_RecordChild2,
3498       OPC_MoveChild2,
3499       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3500       OPC_MoveParent,
3501       OPC_CheckPatternPredicate, 5,
3502       OPC_EmitMergeInputChains1_0,
3503       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNE), 0|OPFL_Chain,
3504                     3, 1, 2, 3,
3505      20,
3506       OPC_CheckChild2CondCode, ISD::SETLT,
3507       OPC_MoveParent,
3508       OPC_RecordChild2,
3509       OPC_MoveChild2,
3510       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3511       OPC_MoveParent,
3512       OPC_CheckPatternPredicate, 5,
3513       OPC_EmitMergeInputChains1_0,
3514       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLT), 0|OPFL_Chain,
3515                     3, 1, 2, 3,
3516      20,
3517       OPC_CheckChild2CondCode, ISD::SETGE,
3518       OPC_MoveParent,
3519       OPC_RecordChild2,
3520       OPC_MoveChild2,
3521       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3522       OPC_MoveParent,
3523       OPC_CheckPatternPredicate, 5,
3524       OPC_EmitMergeInputChains1_0,
3525       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGE), 0|OPFL_Chain,
3526                     3, 1, 2, 3,
3527      20,
3528       OPC_CheckChild2CondCode, ISD::SETULT,
3529       OPC_MoveParent,
3530       OPC_RecordChild2,
3531       OPC_MoveChild2,
3532       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3533       OPC_MoveParent,
3534       OPC_CheckPatternPredicate, 5,
3535       OPC_EmitMergeInputChains1_0,
3536       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLTU), 0|OPFL_Chain,
3537                     3, 1, 2, 3,
3538      20,
3539       OPC_CheckChild2CondCode, ISD::SETUGE,
3540       OPC_MoveParent,
3541       OPC_RecordChild2,
3542       OPC_MoveChild2,
3543       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3544       OPC_MoveParent,
3545       OPC_CheckPatternPredicate, 5,
3546       OPC_EmitMergeInputChains1_0,
3547       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGEU), 0|OPFL_Chain,
3548                     3, 1, 2, 3,
3549      20,
3550       OPC_CheckChild2CondCode, ISD::SETGT,
3551       OPC_MoveParent,
3552       OPC_RecordChild2,
3553       OPC_MoveChild2,
3554       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3555       OPC_MoveParent,
3556       OPC_CheckPatternPredicate, 5,
3557       OPC_EmitMergeInputChains1_0,
3558       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLT), 0|OPFL_Chain,
3559                     3, 2, 1, 3,
3560      20,
3561       OPC_CheckChild2CondCode, ISD::SETLE,
3562       OPC_MoveParent,
3563       OPC_RecordChild2,
3564       OPC_MoveChild2,
3565       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3566       OPC_MoveParent,
3567       OPC_CheckPatternPredicate, 5,
3568       OPC_EmitMergeInputChains1_0,
3569       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGE), 0|OPFL_Chain,
3570                     3, 2, 1, 3,
3571      20,
3572       OPC_CheckChild2CondCode, ISD::SETUGT,
3573       OPC_MoveParent,
3574       OPC_RecordChild2,
3575       OPC_MoveChild2,
3576       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3577       OPC_MoveParent,
3578       OPC_CheckPatternPredicate, 5,
3579       OPC_EmitMergeInputChains1_0,
3580       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BLTU), 0|OPFL_Chain,
3581                     3, 2, 1, 3,
3582      20,
3583       OPC_CheckChild2CondCode, ISD::SETULE,
3584       OPC_MoveParent,
3585       OPC_RecordChild2,
3586       OPC_MoveChild2,
3587       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3588       OPC_MoveParent,
3589       OPC_CheckPatternPredicate, 5,
3590       OPC_EmitMergeInputChains1_0,
3591       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BGEU), 0|OPFL_Chain,
3592                     3, 2, 1, 3,
3593      0,
3594     0,
3595    14|128,5,
3596     OPC_CheckChild0Type, MVT::f32,
3597     OPC_RecordChild1,
3598     OPC_Scope, 58,
3599      OPC_CheckChild2CondCode, ISD::SETOEQ,
3600      OPC_SwitchType , 25, MVT::i64,
3601       OPC_MoveParent,
3602       OPC_RecordChild2,
3603       OPC_MoveChild2,
3604       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3605       OPC_MoveParent,
3606       OPC_CheckPatternPredicate, 6,
3607       OPC_EmitMergeInputChains1_0,
3608       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
3609                     MVT::i64, 2, 1, 2,
3610       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3611                     2, 4, 3,
3612      25, MVT::i32,
3613       OPC_MoveParent,
3614       OPC_RecordChild2,
3615       OPC_MoveChild2,
3616       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3617       OPC_MoveParent,
3618       OPC_CheckPatternPredicate, 8,
3619       OPC_EmitMergeInputChains1_0,
3620       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
3621                     MVT::i32, 2, 1, 2,
3622       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3623                     2, 4, 3,
3624      0,
3625     58,
3626      OPC_CheckChild2CondCode, ISD::SETOLT,
3627      OPC_SwitchType , 25, MVT::i64,
3628       OPC_MoveParent,
3629       OPC_RecordChild2,
3630       OPC_MoveChild2,
3631       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3632       OPC_MoveParent,
3633       OPC_CheckPatternPredicate, 6,
3634       OPC_EmitMergeInputChains1_0,
3635       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
3636                     MVT::i64, 2, 1, 2,
3637       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3638                     2, 4, 3,
3639      25, MVT::i32,
3640       OPC_MoveParent,
3641       OPC_RecordChild2,
3642       OPC_MoveChild2,
3643       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3644       OPC_MoveParent,
3645       OPC_CheckPatternPredicate, 8,
3646       OPC_EmitMergeInputChains1_0,
3647       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
3648                     MVT::i32, 2, 1, 2,
3649       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3650                     2, 4, 3,
3651      0,
3652     58,
3653      OPC_CheckChild2CondCode, ISD::SETOLE,
3654      OPC_SwitchType , 25, MVT::i64,
3655       OPC_MoveParent,
3656       OPC_RecordChild2,
3657       OPC_MoveChild2,
3658       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3659       OPC_MoveParent,
3660       OPC_CheckPatternPredicate, 6,
3661       OPC_EmitMergeInputChains1_0,
3662       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
3663                     MVT::i64, 2, 1, 2,
3664       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3665                     2, 4, 3,
3666      25, MVT::i32,
3667       OPC_MoveParent,
3668       OPC_RecordChild2,
3669       OPC_MoveChild2,
3670       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3671       OPC_MoveParent,
3672       OPC_CheckPatternPredicate, 8,
3673       OPC_EmitMergeInputChains1_0,
3674       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
3675                     MVT::i32, 2, 1, 2,
3676       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3677                     2, 4, 3,
3678      0,
3679     58,
3680      OPC_CheckChild2CondCode, ISD::SETONE,
3681      OPC_SwitchType , 25, MVT::i64,
3682       OPC_MoveParent,
3683       OPC_RecordChild2,
3684       OPC_MoveChild2,
3685       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3686       OPC_MoveParent,
3687       OPC_CheckPatternPredicate, 6,
3688       OPC_EmitMergeInputChains1_0,
3689       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
3690                     MVT::i64, 2, 1, 2,
3691       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3692                     2, 4, 3,
3693      25, MVT::i32,
3694       OPC_MoveParent,
3695       OPC_RecordChild2,
3696       OPC_MoveChild2,
3697       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3698       OPC_MoveParent,
3699       OPC_CheckPatternPredicate, 8,
3700       OPC_EmitMergeInputChains1_0,
3701       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
3702                     MVT::i32, 2, 1, 2,
3703       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3704                     2, 4, 3,
3705      0,
3706     58,
3707      OPC_CheckChild2CondCode, ISD::SETO,
3708      OPC_SwitchType , 25, MVT::i64,
3709       OPC_MoveParent,
3710       OPC_RecordChild2,
3711       OPC_MoveChild2,
3712       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3713       OPC_MoveParent,
3714       OPC_CheckPatternPredicate, 6,
3715       OPC_EmitMergeInputChains1_0,
3716       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
3717                     MVT::i64, 2, 1, 2,
3718       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3719                     2, 4, 3,
3720      25, MVT::i32,
3721       OPC_MoveParent,
3722       OPC_RecordChild2,
3723       OPC_MoveChild2,
3724       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3725       OPC_MoveParent,
3726       OPC_CheckPatternPredicate, 8,
3727       OPC_EmitMergeInputChains1_0,
3728       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
3729                     MVT::i32, 2, 1, 2,
3730       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3731                     2, 4, 3,
3732      0,
3733     58,
3734      OPC_CheckChild2CondCode, ISD::SETUEQ,
3735      OPC_SwitchType , 25, MVT::i64,
3736       OPC_MoveParent,
3737       OPC_RecordChild2,
3738       OPC_MoveChild2,
3739       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3740       OPC_MoveParent,
3741       OPC_CheckPatternPredicate, 6,
3742       OPC_EmitMergeInputChains1_0,
3743       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
3744                     MVT::i64, 2, 1, 2,
3745       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3746                     2, 4, 3,
3747      25, MVT::i32,
3748       OPC_MoveParent,
3749       OPC_RecordChild2,
3750       OPC_MoveChild2,
3751       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3752       OPC_MoveParent,
3753       OPC_CheckPatternPredicate, 8,
3754       OPC_EmitMergeInputChains1_0,
3755       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
3756                     MVT::i32, 2, 1, 2,
3757       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3758                     2, 4, 3,
3759      0,
3760     58,
3761      OPC_CheckChild2CondCode, ISD::SETULT,
3762      OPC_SwitchType , 25, MVT::i64,
3763       OPC_MoveParent,
3764       OPC_RecordChild2,
3765       OPC_MoveChild2,
3766       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3767       OPC_MoveParent,
3768       OPC_CheckPatternPredicate, 6,
3769       OPC_EmitMergeInputChains1_0,
3770       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
3771                     MVT::i64, 2, 1, 2,
3772       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3773                     2, 4, 3,
3774      25, MVT::i32,
3775       OPC_MoveParent,
3776       OPC_RecordChild2,
3777       OPC_MoveChild2,
3778       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3779       OPC_MoveParent,
3780       OPC_CheckPatternPredicate, 8,
3781       OPC_EmitMergeInputChains1_0,
3782       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
3783                     MVT::i32, 2, 1, 2,
3784       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3785                     2, 4, 3,
3786      0,
3787     58,
3788      OPC_CheckChild2CondCode, ISD::SETULE,
3789      OPC_SwitchType , 25, MVT::i64,
3790       OPC_MoveParent,
3791       OPC_RecordChild2,
3792       OPC_MoveChild2,
3793       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3794       OPC_MoveParent,
3795       OPC_CheckPatternPredicate, 6,
3796       OPC_EmitMergeInputChains1_0,
3797       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
3798                     MVT::i64, 2, 1, 2,
3799       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3800                     2, 4, 3,
3801      25, MVT::i32,
3802       OPC_MoveParent,
3803       OPC_RecordChild2,
3804       OPC_MoveChild2,
3805       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3806       OPC_MoveParent,
3807       OPC_CheckPatternPredicate, 8,
3808       OPC_EmitMergeInputChains1_0,
3809       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
3810                     MVT::i32, 2, 1, 2,
3811       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3812                     2, 4, 3,
3813      0,
3814     58,
3815      OPC_CheckChild2CondCode, ISD::SETUNE,
3816      OPC_SwitchType , 25, MVT::i64,
3817       OPC_MoveParent,
3818       OPC_RecordChild2,
3819       OPC_MoveChild2,
3820       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3821       OPC_MoveParent,
3822       OPC_CheckPatternPredicate, 6,
3823       OPC_EmitMergeInputChains1_0,
3824       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
3825                     MVT::i64, 2, 1, 2,
3826       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3827                     2, 4, 3,
3828      25, MVT::i32,
3829       OPC_MoveParent,
3830       OPC_RecordChild2,
3831       OPC_MoveChild2,
3832       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3833       OPC_MoveParent,
3834       OPC_CheckPatternPredicate, 8,
3835       OPC_EmitMergeInputChains1_0,
3836       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
3837                     MVT::i32, 2, 1, 2,
3838       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3839                     2, 4, 3,
3840      0,
3841     58,
3842      OPC_CheckChild2CondCode, ISD::SETUO,
3843      OPC_SwitchType , 25, MVT::i64,
3844       OPC_MoveParent,
3845       OPC_RecordChild2,
3846       OPC_MoveChild2,
3847       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3848       OPC_MoveParent,
3849       OPC_CheckPatternPredicate, 6,
3850       OPC_EmitMergeInputChains1_0,
3851       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
3852                     MVT::i64, 2, 1, 2,
3853       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3854                     2, 4, 3,
3855      25, MVT::i32,
3856       OPC_MoveParent,
3857       OPC_RecordChild2,
3858       OPC_MoveChild2,
3859       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3860       OPC_MoveParent,
3861       OPC_CheckPatternPredicate, 8,
3862       OPC_EmitMergeInputChains1_0,
3863       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
3864                     MVT::i32, 2, 1, 2,
3865       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3866                     2, 4, 3,
3867      0,
3868     58,
3869      OPC_CheckChild2CondCode, ISD::SETLT,
3870      OPC_SwitchType , 25, MVT::i64,
3871       OPC_MoveParent,
3872       OPC_RecordChild2,
3873       OPC_MoveChild2,
3874       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3875       OPC_MoveParent,
3876       OPC_CheckPatternPredicate, 6,
3877       OPC_EmitMergeInputChains1_0,
3878       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
3879                     MVT::i64, 2, 1, 2,
3880       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3881                     2, 4, 3,
3882      25, MVT::i32,
3883       OPC_MoveParent,
3884       OPC_RecordChild2,
3885       OPC_MoveChild2,
3886       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3887       OPC_MoveParent,
3888       OPC_CheckPatternPredicate, 8,
3889       OPC_EmitMergeInputChains1_0,
3890       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
3891                     MVT::i32, 2, 1, 2,
3892       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3893                     2, 4, 3,
3894      0,
3895     0,
3896    14|128,5,
3897     OPC_CheckChild0Type, MVT::f64,
3898     OPC_RecordChild1,
3899     OPC_Scope, 58,
3900      OPC_CheckChild2CondCode, ISD::SETOEQ,
3901      OPC_SwitchType , 25, MVT::i64,
3902       OPC_MoveParent,
3903       OPC_RecordChild2,
3904       OPC_MoveChild2,
3905       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3906       OPC_MoveParent,
3907       OPC_CheckPatternPredicate, 7,
3908       OPC_EmitMergeInputChains1_0,
3909       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
3910                     MVT::i64, 2, 1, 2,
3911       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3912                     2, 4, 3,
3913      25, MVT::i32,
3914       OPC_MoveParent,
3915       OPC_RecordChild2,
3916       OPC_MoveChild2,
3917       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3918       OPC_MoveParent,
3919       OPC_CheckPatternPredicate, 9,
3920       OPC_EmitMergeInputChains1_0,
3921       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
3922                     MVT::i32, 2, 1, 2,
3923       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3924                     2, 4, 3,
3925      0,
3926     58,
3927      OPC_CheckChild2CondCode, ISD::SETOLT,
3928      OPC_SwitchType , 25, MVT::i64,
3929       OPC_MoveParent,
3930       OPC_RecordChild2,
3931       OPC_MoveChild2,
3932       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3933       OPC_MoveParent,
3934       OPC_CheckPatternPredicate, 7,
3935       OPC_EmitMergeInputChains1_0,
3936       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
3937                     MVT::i64, 2, 1, 2,
3938       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3939                     2, 4, 3,
3940      25, MVT::i32,
3941       OPC_MoveParent,
3942       OPC_RecordChild2,
3943       OPC_MoveChild2,
3944       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3945       OPC_MoveParent,
3946       OPC_CheckPatternPredicate, 9,
3947       OPC_EmitMergeInputChains1_0,
3948       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
3949                     MVT::i32, 2, 1, 2,
3950       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3951                     2, 4, 3,
3952      0,
3953     58,
3954      OPC_CheckChild2CondCode, ISD::SETOLE,
3955      OPC_SwitchType , 25, MVT::i64,
3956       OPC_MoveParent,
3957       OPC_RecordChild2,
3958       OPC_MoveChild2,
3959       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3960       OPC_MoveParent,
3961       OPC_CheckPatternPredicate, 7,
3962       OPC_EmitMergeInputChains1_0,
3963       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
3964                     MVT::i64, 2, 1, 2,
3965       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3966                     2, 4, 3,
3967      25, MVT::i32,
3968       OPC_MoveParent,
3969       OPC_RecordChild2,
3970       OPC_MoveChild2,
3971       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3972       OPC_MoveParent,
3973       OPC_CheckPatternPredicate, 9,
3974       OPC_EmitMergeInputChains1_0,
3975       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
3976                     MVT::i32, 2, 1, 2,
3977       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3978                     2, 4, 3,
3979      0,
3980     58,
3981      OPC_CheckChild2CondCode, ISD::SETONE,
3982      OPC_SwitchType , 25, MVT::i64,
3983       OPC_MoveParent,
3984       OPC_RecordChild2,
3985       OPC_MoveChild2,
3986       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3987       OPC_MoveParent,
3988       OPC_CheckPatternPredicate, 7,
3989       OPC_EmitMergeInputChains1_0,
3990       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
3991                     MVT::i64, 2, 1, 2,
3992       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
3993                     2, 4, 3,
3994      25, MVT::i32,
3995       OPC_MoveParent,
3996       OPC_RecordChild2,
3997       OPC_MoveChild2,
3998       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
3999       OPC_MoveParent,
4000       OPC_CheckPatternPredicate, 9,
4001       OPC_EmitMergeInputChains1_0,
4002       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
4003                     MVT::i32, 2, 1, 2,
4004       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4005                     2, 4, 3,
4006      0,
4007     58,
4008      OPC_CheckChild2CondCode, ISD::SETO,
4009      OPC_SwitchType , 25, MVT::i64,
4010       OPC_MoveParent,
4011       OPC_RecordChild2,
4012       OPC_MoveChild2,
4013       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4014       OPC_MoveParent,
4015       OPC_CheckPatternPredicate, 7,
4016       OPC_EmitMergeInputChains1_0,
4017       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
4018                     MVT::i64, 2, 1, 2,
4019       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4020                     2, 4, 3,
4021      25, MVT::i32,
4022       OPC_MoveParent,
4023       OPC_RecordChild2,
4024       OPC_MoveChild2,
4025       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4026       OPC_MoveParent,
4027       OPC_CheckPatternPredicate, 9,
4028       OPC_EmitMergeInputChains1_0,
4029       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
4030                     MVT::i32, 2, 1, 2,
4031       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4032                     2, 4, 3,
4033      0,
4034     58,
4035      OPC_CheckChild2CondCode, ISD::SETUEQ,
4036      OPC_SwitchType , 25, MVT::i64,
4037       OPC_MoveParent,
4038       OPC_RecordChild2,
4039       OPC_MoveChild2,
4040       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4041       OPC_MoveParent,
4042       OPC_CheckPatternPredicate, 7,
4043       OPC_EmitMergeInputChains1_0,
4044       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
4045                     MVT::i64, 2, 1, 2,
4046       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4047                     2, 4, 3,
4048      25, MVT::i32,
4049       OPC_MoveParent,
4050       OPC_RecordChild2,
4051       OPC_MoveChild2,
4052       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4053       OPC_MoveParent,
4054       OPC_CheckPatternPredicate, 9,
4055       OPC_EmitMergeInputChains1_0,
4056       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
4057                     MVT::i32, 2, 1, 2,
4058       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4059                     2, 4, 3,
4060      0,
4061     58,
4062      OPC_CheckChild2CondCode, ISD::SETULT,
4063      OPC_SwitchType , 25, MVT::i64,
4064       OPC_MoveParent,
4065       OPC_RecordChild2,
4066       OPC_MoveChild2,
4067       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4068       OPC_MoveParent,
4069       OPC_CheckPatternPredicate, 7,
4070       OPC_EmitMergeInputChains1_0,
4071       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
4072                     MVT::i64, 2, 1, 2,
4073       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4074                     2, 4, 3,
4075      25, MVT::i32,
4076       OPC_MoveParent,
4077       OPC_RecordChild2,
4078       OPC_MoveChild2,
4079       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4080       OPC_MoveParent,
4081       OPC_CheckPatternPredicate, 9,
4082       OPC_EmitMergeInputChains1_0,
4083       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
4084                     MVT::i32, 2, 1, 2,
4085       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4086                     2, 4, 3,
4087      0,
4088     58,
4089      OPC_CheckChild2CondCode, ISD::SETULE,
4090      OPC_SwitchType , 25, MVT::i64,
4091       OPC_MoveParent,
4092       OPC_RecordChild2,
4093       OPC_MoveChild2,
4094       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4095       OPC_MoveParent,
4096       OPC_CheckPatternPredicate, 7,
4097       OPC_EmitMergeInputChains1_0,
4098       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
4099                     MVT::i64, 2, 1, 2,
4100       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4101                     2, 4, 3,
4102      25, MVT::i32,
4103       OPC_MoveParent,
4104       OPC_RecordChild2,
4105       OPC_MoveChild2,
4106       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4107       OPC_MoveParent,
4108       OPC_CheckPatternPredicate, 9,
4109       OPC_EmitMergeInputChains1_0,
4110       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
4111                     MVT::i32, 2, 1, 2,
4112       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4113                     2, 4, 3,
4114      0,
4115     58,
4116      OPC_CheckChild2CondCode, ISD::SETUNE,
4117      OPC_SwitchType , 25, MVT::i64,
4118       OPC_MoveParent,
4119       OPC_RecordChild2,
4120       OPC_MoveChild2,
4121       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4122       OPC_MoveParent,
4123       OPC_CheckPatternPredicate, 7,
4124       OPC_EmitMergeInputChains1_0,
4125       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
4126                     MVT::i64, 2, 1, 2,
4127       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4128                     2, 4, 3,
4129      25, MVT::i32,
4130       OPC_MoveParent,
4131       OPC_RecordChild2,
4132       OPC_MoveChild2,
4133       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4134       OPC_MoveParent,
4135       OPC_CheckPatternPredicate, 9,
4136       OPC_EmitMergeInputChains1_0,
4137       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
4138                     MVT::i32, 2, 1, 2,
4139       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4140                     2, 4, 3,
4141      0,
4142     58,
4143      OPC_CheckChild2CondCode, ISD::SETUO,
4144      OPC_SwitchType , 25, MVT::i64,
4145       OPC_MoveParent,
4146       OPC_RecordChild2,
4147       OPC_MoveChild2,
4148       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4149       OPC_MoveParent,
4150       OPC_CheckPatternPredicate, 7,
4151       OPC_EmitMergeInputChains1_0,
4152       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
4153                     MVT::i64, 2, 1, 2,
4154       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4155                     2, 4, 3,
4156      25, MVT::i32,
4157       OPC_MoveParent,
4158       OPC_RecordChild2,
4159       OPC_MoveChild2,
4160       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4161       OPC_MoveParent,
4162       OPC_CheckPatternPredicate, 9,
4163       OPC_EmitMergeInputChains1_0,
4164       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
4165                     MVT::i32, 2, 1, 2,
4166       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4167                     2, 4, 3,
4168      0,
4169     58,
4170      OPC_CheckChild2CondCode, ISD::SETLT,
4171      OPC_SwitchType , 25, MVT::i64,
4172       OPC_MoveParent,
4173       OPC_RecordChild2,
4174       OPC_MoveChild2,
4175       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4176       OPC_MoveParent,
4177       OPC_CheckPatternPredicate, 7,
4178       OPC_EmitMergeInputChains1_0,
4179       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
4180                     MVT::i64, 2, 1, 2,
4181       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4182                     2, 4, 3,
4183      25, MVT::i32,
4184       OPC_MoveParent,
4185       OPC_RecordChild2,
4186       OPC_MoveChild2,
4187       OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4188       OPC_MoveParent,
4189       OPC_CheckPatternPredicate, 9,
4190       OPC_EmitMergeInputChains1_0,
4191       OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
4192                     MVT::i32, 2, 1, 2,
4193       OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BCNEZ), 0|OPFL_Chain,
4194                     2, 4, 3,
4195      0,
4196     0,
4197    0,
4198   0,
4199  41,
4200   OPC_RecordChild1,
4201   OPC_Scope, 18,
4202    OPC_CheckChild1Type, MVT::i64,
4203    OPC_RecordChild2,
4204    OPC_MoveChild2,
4205    OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4206    OPC_MoveParent,
4207    OPC_CheckPatternPredicate, 4,
4208    OPC_EmitMergeInputChains1_0,
4209    OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNEZ), 0|OPFL_Chain,
4210                  2, 1, 2,
4211   18,
4212    OPC_CheckChild1Type, MVT::i32,
4213    OPC_RecordChild2,
4214    OPC_MoveChild2,
4215    OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
4216    OPC_MoveParent,
4217    OPC_CheckPatternPredicate, 5,
4218    OPC_EmitMergeInputChains1_0,
4219    OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BNEZ), 0|OPFL_Chain,
4220                  2, 1, 2,
4221   0,
4222  0,
4223 17|128,1, TARGET_VAL(ISD::XOR),
4224  OPC_Scope, 35,
4225   OPC_MoveChild0,
4226   OPC_CheckOpcode, TARGET_VAL(ISD::OR),
4227   OPC_RecordChild0,
4228   OPC_RecordChild1,
4229   OPC_MoveParent,
4230   OPC_CheckChild1Integer, 3,
4231   OPC_SwitchType , 10, MVT::i64,
4232    OPC_CheckPatternPredicate, 4,
4233    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::NOR), 0,
4234                  MVT::i64, 2, 0, 1,
4235   10, MVT::i32,
4236    OPC_CheckPatternPredicate, 5,
4237    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::NOR), 0,
4238                  MVT::i32, 2, 0, 1,
4239   0,
4240  106,
4241   OPC_RecordChild0,
4242   OPC_Scope, 34,
4243    OPC_CheckChild1Integer, 3,
4244    OPC_SwitchType , 13, MVT::i64,
4245     OPC_CheckPatternPredicate, 4,
4246     OPC_EmitRegister, MVT::i64, LoongArch::R0,
4247     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::NOR), 0,
4248                   MVT::i64, 2, 0, 1,
4249    13, MVT::i32,
4250     OPC_CheckPatternPredicate, 5,
4251     OPC_EmitRegister, MVT::i32, LoongArch::R0,
4252     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::NOR), 0,
4253                   MVT::i32, 2, 0, 1,
4254    0,
4255   67,
4256    OPC_RecordChild1,
4257    OPC_Scope, 37,
4258     OPC_MoveChild1,
4259     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4260     OPC_CheckPredicate, 23,
4261     OPC_MoveParent,
4262     OPC_SwitchType , 12, MVT::i64,
4263      OPC_CheckPatternPredicate, 4,
4264      OPC_EmitConvertToTarget, 1,
4265      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
4266                    MVT::i64, 2, 0, 2,
4267     12, MVT::i32,
4268      OPC_CheckPatternPredicate, 5,
4269      OPC_EmitConvertToTarget, 1,
4270      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
4271                    MVT::i32, 2, 0, 2,
4272     0,
4273    12,
4274     OPC_CheckType, MVT::i64,
4275     OPC_CheckPatternPredicate, 4,
4276     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XOR), 0,
4277                   MVT::i64, 2, 0, 1,
4278    12,
4279     OPC_CheckType, MVT::i32,
4280     OPC_CheckPatternPredicate, 5,
4281     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XOR), 0,
4282                   MVT::i32, 2, 0, 1,
4283    0,
4284   0,
4285  0,
4286 15|128,1, TARGET_VAL(ISD::AND),
4287  OPC_Scope, 35,
4288   OPC_RecordChild0,
4289   OPC_MoveChild1,
4290   OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
4291   OPC_RecordChild0,
4292   OPC_CheckChild1Integer, 3,
4293   OPC_MoveParent,
4294   OPC_SwitchType , 10, MVT::i64,
4295    OPC_CheckPatternPredicate, 4,
4296    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDN), 0,
4297                  MVT::i64, 2, 0, 1,
4298   10, MVT::i32,
4299    OPC_CheckPatternPredicate, 5,
4300    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDN), 0,
4301                  MVT::i32, 2, 0, 1,
4302   0,
4303  35,
4304   OPC_MoveChild0,
4305   OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
4306   OPC_RecordChild0,
4307   OPC_CheckChild1Integer, 3,
4308   OPC_MoveParent,
4309   OPC_RecordChild1,
4310   OPC_SwitchType , 10, MVT::i64,
4311    OPC_CheckPatternPredicate, 4,
4312    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDN), 0,
4313                  MVT::i64, 2, 1, 0,
4314   10, MVT::i32,
4315    OPC_CheckPatternPredicate, 5,
4316    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDN), 0,
4317                  MVT::i32, 2, 1, 0,
4318   0,
4319  68,
4320   OPC_RecordChild0,
4321   OPC_RecordChild1,
4322   OPC_Scope, 37,
4323    OPC_MoveChild1,
4324    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4325    OPC_CheckPredicate, 23,
4326    OPC_MoveParent,
4327    OPC_SwitchType , 12, MVT::i64,
4328     OPC_CheckPatternPredicate, 4,
4329     OPC_EmitConvertToTarget, 1,
4330     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDI), 0,
4331                   MVT::i64, 2, 0, 2,
4332    12, MVT::i32,
4333     OPC_CheckPatternPredicate, 5,
4334     OPC_EmitConvertToTarget, 1,
4335     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ANDI), 0,
4336                   MVT::i32, 2, 0, 2,
4337    0,
4338   12,
4339    OPC_CheckType, MVT::i64,
4340    OPC_CheckPatternPredicate, 4,
4341    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AND), 0,
4342                  MVT::i64, 2, 0, 1,
4343   12,
4344    OPC_CheckType, MVT::i32,
4345    OPC_CheckPatternPredicate, 5,
4346    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AND), 0,
4347                  MVT::i32, 2, 0, 1,
4348   0,
4349  0,
4350 122, TARGET_VAL(ISD::CTLZ),
4351  OPC_Scope, 63,
4352   OPC_MoveChild0,
4353   OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
4354   OPC_RecordChild0,
4355   OPC_CheckChild1Integer, 3,
4356   OPC_SwitchType , 25, MVT::i64,
4357    OPC_MoveParent,
4358    OPC_CheckType, MVT::i64,
4359    OPC_Scope, 9,
4360     OPC_CheckPatternPredicate, 0,
4361     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_D), 0,
4362                   MVT::i64, 1, 0,
4363    9,
4364     OPC_CheckPatternPredicate, 1,
4365     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_W), 0,
4366                   MVT::i64, 1, 0,
4367    0,
4368   25, MVT::i32,
4369    OPC_MoveParent,
4370    OPC_CheckType, MVT::i32,
4371    OPC_Scope, 9,
4372     OPC_CheckPatternPredicate, 3,
4373     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_D), 0,
4374                   MVT::i32, 1, 0,
4375    9,
4376     OPC_CheckPatternPredicate, 2,
4377     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_W), 0,
4378                   MVT::i32, 1, 0,
4379    0,
4380   0,
4381  55,
4382   OPC_RecordChild0,
4383   OPC_SwitchType , 24, MVT::i64,
4384    OPC_CheckChild0Type, MVT::i64,
4385    OPC_Scope, 9,
4386     OPC_CheckPatternPredicate, 0,
4387     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_D), 0,
4388                   MVT::i64, 1, 0,
4389    9,
4390     OPC_CheckPatternPredicate, 1,
4391     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_W), 0,
4392                   MVT::i64, 1, 0,
4393    0,
4394   24, MVT::i32,
4395    OPC_CheckChild0Type, MVT::i32,
4396    OPC_Scope, 9,
4397     OPC_CheckPatternPredicate, 3,
4398     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_D), 0,
4399                   MVT::i32, 1, 0,
4400    9,
4401     OPC_CheckPatternPredicate, 2,
4402     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_W), 0,
4403                   MVT::i32, 1, 0,
4404    0,
4405   0,
4406  0,
4407 122, TARGET_VAL(ISD::CTTZ),
4408  OPC_Scope, 63,
4409   OPC_MoveChild0,
4410   OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
4411   OPC_RecordChild0,
4412   OPC_CheckChild1Integer, 3,
4413   OPC_SwitchType , 25, MVT::i64,
4414    OPC_MoveParent,
4415    OPC_CheckType, MVT::i64,
4416    OPC_Scope, 9,
4417     OPC_CheckPatternPredicate, 0,
4418     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_D), 0,
4419                   MVT::i64, 1, 0,
4420    9,
4421     OPC_CheckPatternPredicate, 1,
4422     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_W), 0,
4423                   MVT::i64, 1, 0,
4424    0,
4425   25, MVT::i32,
4426    OPC_MoveParent,
4427    OPC_CheckType, MVT::i32,
4428    OPC_Scope, 9,
4429     OPC_CheckPatternPredicate, 3,
4430     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_D), 0,
4431                   MVT::i32, 1, 0,
4432    9,
4433     OPC_CheckPatternPredicate, 2,
4434     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_W), 0,
4435                   MVT::i32, 1, 0,
4436    0,
4437   0,
4438  55,
4439   OPC_RecordChild0,
4440   OPC_SwitchType , 24, MVT::i64,
4441    OPC_CheckChild0Type, MVT::i64,
4442    OPC_Scope, 9,
4443     OPC_CheckPatternPredicate, 0,
4444     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_D), 0,
4445                   MVT::i64, 1, 0,
4446    9,
4447     OPC_CheckPatternPredicate, 1,
4448     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_W), 0,
4449                   MVT::i64, 1, 0,
4450    0,
4451   24, MVT::i32,
4452    OPC_CheckChild0Type, MVT::i32,
4453    OPC_Scope, 9,
4454     OPC_CheckPatternPredicate, 3,
4455     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_D), 0,
4456                   MVT::i32, 1, 0,
4457    9,
4458     OPC_CheckPatternPredicate, 2,
4459     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_W), 0,
4460                   MVT::i32, 1, 0,
4461    0,
4462   0,
4463  0,
4464 70, TARGET_VAL(LoongArchISD::CLZ_W),
4465  OPC_Scope, 37,
4466   OPC_MoveChild0,
4467   OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
4468   OPC_RecordChild0,
4469   OPC_CheckChild1Integer, 3,
4470   OPC_SwitchType , 12, MVT::i64,
4471    OPC_MoveParent,
4472    OPC_CheckType, MVT::i64,
4473    OPC_CheckPatternPredicate, 0,
4474    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_W), 0,
4475                  MVT::i64, 1, 0,
4476   12, MVT::i32,
4477    OPC_MoveParent,
4478    OPC_CheckType, MVT::i32,
4479    OPC_CheckPatternPredicate, 3,
4480    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLO_W), 0,
4481                  MVT::i32, 1, 0,
4482   0,
4483  29,
4484   OPC_RecordChild0,
4485   OPC_SwitchType , 11, MVT::i64,
4486    OPC_CheckChild0Type, MVT::i64,
4487    OPC_CheckPatternPredicate, 0,
4488    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_W), 0,
4489                  MVT::i64, 1, 0,
4490   11, MVT::i32,
4491    OPC_CheckChild0Type, MVT::i32,
4492    OPC_CheckPatternPredicate, 3,
4493    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CLZ_W), 0,
4494                  MVT::i32, 1, 0,
4495   0,
4496  0,
4497 70, TARGET_VAL(LoongArchISD::CTZ_W),
4498  OPC_Scope, 37,
4499   OPC_MoveChild0,
4500   OPC_CheckOpcode, TARGET_VAL(ISD::XOR),
4501   OPC_RecordChild0,
4502   OPC_CheckChild1Integer, 3,
4503   OPC_SwitchType , 12, MVT::i64,
4504    OPC_MoveParent,
4505    OPC_CheckType, MVT::i64,
4506    OPC_CheckPatternPredicate, 0,
4507    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_W), 0,
4508                  MVT::i64, 1, 0,
4509   12, MVT::i32,
4510    OPC_MoveParent,
4511    OPC_CheckType, MVT::i32,
4512    OPC_CheckPatternPredicate, 3,
4513    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTO_W), 0,
4514                  MVT::i32, 1, 0,
4515   0,
4516  29,
4517   OPC_RecordChild0,
4518   OPC_SwitchType , 11, MVT::i64,
4519    OPC_CheckChild0Type, MVT::i64,
4520    OPC_CheckPatternPredicate, 0,
4521    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_W), 0,
4522                  MVT::i64, 1, 0,
4523   11, MVT::i32,
4524    OPC_CheckChild0Type, MVT::i32,
4525    OPC_CheckPatternPredicate, 3,
4526    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CTZ_W), 0,
4527                  MVT::i32, 1, 0,
4528   0,
4529  0,
4530 7|128,1, TARGET_VAL(LoongArchISD::BSTRINS),
4531  OPC_RecordChild0,
4532  OPC_RecordChild1,
4533  OPC_RecordChild2,
4534  OPC_MoveChild2,
4535  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4536  OPC_Scope, 62,
4537   OPC_CheckPredicate, 1,
4538   OPC_SwitchType , 27, MVT::i64,
4539    OPC_MoveParent,
4540    OPC_RecordChild3,
4541    OPC_MoveChild3,
4542    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4543    OPC_CheckPredicate, 1,
4544    OPC_MoveParent,
4545    OPC_CheckType, MVT::i64,
4546    OPC_CheckPatternPredicate, 1,
4547    OPC_EmitConvertToTarget, 2,
4548    OPC_EmitConvertToTarget, 3,
4549    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRINS_W), 0,
4550                  MVT::i64, 4, 0, 1, 4, 5,
4551   27, MVT::i32,
4552    OPC_MoveParent,
4553    OPC_RecordChild3,
4554    OPC_MoveChild3,
4555    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4556    OPC_CheckPredicate, 1,
4557    OPC_MoveParent,
4558    OPC_CheckType, MVT::i32,
4559    OPC_CheckPatternPredicate, 2,
4560    OPC_EmitConvertToTarget, 2,
4561    OPC_EmitConvertToTarget, 3,
4562    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRINS_W), 0,
4563                  MVT::i32, 4, 0, 1, 4, 5,
4564   0,
4565  62,
4566   OPC_CheckPredicate, 2,
4567   OPC_SwitchType , 27, MVT::i64,
4568    OPC_MoveParent,
4569    OPC_RecordChild3,
4570    OPC_MoveChild3,
4571    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4572    OPC_CheckPredicate, 2,
4573    OPC_MoveParent,
4574    OPC_CheckType, MVT::i64,
4575    OPC_CheckPatternPredicate, 0,
4576    OPC_EmitConvertToTarget, 2,
4577    OPC_EmitConvertToTarget, 3,
4578    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRINS_D), 0,
4579                  MVT::i64, 4, 0, 1, 4, 5,
4580   27, MVT::i32,
4581    OPC_MoveParent,
4582    OPC_RecordChild3,
4583    OPC_MoveChild3,
4584    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4585    OPC_CheckPredicate, 2,
4586    OPC_MoveParent,
4587    OPC_CheckType, MVT::i32,
4588    OPC_CheckPatternPredicate, 3,
4589    OPC_EmitConvertToTarget, 2,
4590    OPC_EmitConvertToTarget, 3,
4591    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BSTRINS_D), 0,
4592                  MVT::i32, 4, 0, 1, 4, 5,
4593   0,
4594  0,
4595 34|128,3, TARGET_VAL(ISD::INTRINSIC_W_CHAIN),
4596  OPC_RecordNode,
4597  OPC_Scope, 28,
4598   OPC_CheckChild1Integer, 98|128,75,
4599   OPC_RecordChild2,
4600   OPC_CheckChild2Type, MVT::i64,
4601   OPC_RecordChild3,
4602   OPC_RecordChild4,
4603   OPC_RecordChild5,
4604   OPC_MoveChild5,
4605   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4606   OPC_MoveParent,
4607   OPC_CheckPatternPredicate, 0,
4608   OPC_EmitMergeInputChains1_0,
4609   OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicSwap32), 0|OPFL_Chain,
4610                 MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
4611  28,
4612   OPC_CheckChild1Integer, 74|128,75,
4613   OPC_RecordChild2,
4614   OPC_CheckChild2Type, MVT::i64,
4615   OPC_RecordChild3,
4616   OPC_RecordChild4,
4617   OPC_RecordChild5,
4618   OPC_MoveChild5,
4619   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4620   OPC_MoveParent,
4621   OPC_CheckPatternPredicate, 0,
4622   OPC_EmitMergeInputChains1_0,
4623   OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadAdd32), 0|OPFL_Chain,
4624                 MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
4625  28,
4626   OPC_CheckChild1Integer, 86|128,75,
4627   OPC_RecordChild2,
4628   OPC_CheckChild2Type, MVT::i64,
4629   OPC_RecordChild3,
4630   OPC_RecordChild4,
4631   OPC_RecordChild5,
4632   OPC_MoveChild5,
4633   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4634   OPC_MoveParent,
4635   OPC_CheckPatternPredicate, 0,
4636   OPC_EmitMergeInputChains1_0,
4637   OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadSub32), 0|OPFL_Chain,
4638                 MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
4639  28,
4640   OPC_CheckChild1Integer, 82|128,75,
4641   OPC_RecordChild2,
4642   OPC_CheckChild2Type, MVT::i64,
4643   OPC_RecordChild3,
4644   OPC_RecordChild4,
4645   OPC_RecordChild5,
4646   OPC_MoveChild5,
4647   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4648   OPC_MoveParent,
4649   OPC_CheckPatternPredicate, 0,
4650   OPC_EmitMergeInputChains1_0,
4651   OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadNand32), 0|OPFL_Chain,
4652                 MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
4653  30,
4654   OPC_CheckChild1Integer, 90|128,75,
4655   OPC_RecordChild2,
4656   OPC_CheckChild2Type, MVT::i64,
4657   OPC_RecordChild3,
4658   OPC_RecordChild4,
4659   OPC_RecordChild5,
4660   OPC_MoveChild5,
4661   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4662   OPC_MoveParent,
4663   OPC_CheckPatternPredicate, 0,
4664   OPC_EmitMergeInputChains1_0,
4665   OPC_MorphNodeTo, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadUMax32), 0|OPFL_Chain,
4666                 3, MVT::i64, MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
4667  30,
4668   OPC_CheckChild1Integer, 94|128,75,
4669   OPC_RecordChild2,
4670   OPC_CheckChild2Type, MVT::i64,
4671   OPC_RecordChild3,
4672   OPC_RecordChild4,
4673   OPC_RecordChild5,
4674   OPC_MoveChild5,
4675   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4676   OPC_MoveParent,
4677   OPC_CheckPatternPredicate, 0,
4678   OPC_EmitMergeInputChains1_0,
4679   OPC_MorphNodeTo, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadUMin32), 0|OPFL_Chain,
4680                 3, MVT::i64, MVT::i64, MVT::i64, 4, 1, 2, 3, 4,
4681  30,
4682   OPC_CheckChild1Integer, 100|128,75,
4683   OPC_RecordChild2,
4684   OPC_CheckChild2Type, MVT::i64,
4685   OPC_RecordChild3,
4686   OPC_RecordChild4,
4687   OPC_RecordChild5,
4688   OPC_RecordChild6,
4689   OPC_MoveChild6,
4690   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4691   OPC_MoveParent,
4692   OPC_CheckPatternPredicate, 0,
4693   OPC_EmitMergeInputChains1_0,
4694   OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedCmpXchg32), 0|OPFL_Chain,
4695                 MVT::i64, MVT::i64, 5, 1, 2, 3, 4, 5,
4696  32,
4697   OPC_CheckChild1Integer, 76|128,75,
4698   OPC_RecordChild2,
4699   OPC_CheckChild2Type, MVT::i64,
4700   OPC_RecordChild3,
4701   OPC_RecordChild4,
4702   OPC_RecordChild5,
4703   OPC_RecordChild6,
4704   OPC_MoveChild6,
4705   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4706   OPC_MoveParent,
4707   OPC_CheckPatternPredicate, 0,
4708   OPC_EmitMergeInputChains1_0,
4709   OPC_MorphNodeTo, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadMax32), 0|OPFL_Chain,
4710                 3, MVT::i64, MVT::i64, MVT::i64, 5, 1, 2, 3, 4, 5,
4711  32,
4712   OPC_CheckChild1Integer, 78|128,75,
4713   OPC_RecordChild2,
4714   OPC_CheckChild2Type, MVT::i64,
4715   OPC_RecordChild3,
4716   OPC_RecordChild4,
4717   OPC_RecordChild5,
4718   OPC_RecordChild6,
4719   OPC_MoveChild6,
4720   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4721   OPC_MoveParent,
4722   OPC_CheckPatternPredicate, 0,
4723   OPC_EmitMergeInputChains1_0,
4724   OPC_MorphNodeTo, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadMin32), 0|OPFL_Chain,
4725                 3, MVT::i64, MVT::i64, MVT::i64, 5, 1, 2, 3, 4, 5,
4726  28,
4727   OPC_CheckChild1Integer, 96|128,75,
4728   OPC_RecordChild2,
4729   OPC_CheckChild2Type, MVT::i32,
4730   OPC_RecordChild3,
4731   OPC_RecordChild4,
4732   OPC_RecordChild5,
4733   OPC_MoveChild5,
4734   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4735   OPC_MoveParent,
4736   OPC_CheckPatternPredicate, 2,
4737   OPC_EmitMergeInputChains1_0,
4738   OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicSwap32), 0|OPFL_Chain,
4739                 MVT::i32, MVT::i32, 4, 1, 2, 3, 4,
4740  28,
4741   OPC_CheckChild1Integer, 72|128,75,
4742   OPC_RecordChild2,
4743   OPC_CheckChild2Type, MVT::i32,
4744   OPC_RecordChild3,
4745   OPC_RecordChild4,
4746   OPC_RecordChild5,
4747   OPC_MoveChild5,
4748   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4749   OPC_MoveParent,
4750   OPC_CheckPatternPredicate, 2,
4751   OPC_EmitMergeInputChains1_0,
4752   OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadAdd32), 0|OPFL_Chain,
4753                 MVT::i32, MVT::i32, 4, 1, 2, 3, 4,
4754  28,
4755   OPC_CheckChild1Integer, 84|128,75,
4756   OPC_RecordChild2,
4757   OPC_CheckChild2Type, MVT::i32,
4758   OPC_RecordChild3,
4759   OPC_RecordChild4,
4760   OPC_RecordChild5,
4761   OPC_MoveChild5,
4762   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4763   OPC_MoveParent,
4764   OPC_CheckPatternPredicate, 2,
4765   OPC_EmitMergeInputChains1_0,
4766   OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadSub32), 0|OPFL_Chain,
4767                 MVT::i32, MVT::i32, 4, 1, 2, 3, 4,
4768  28,
4769   OPC_CheckChild1Integer, 80|128,75,
4770   OPC_RecordChild2,
4771   OPC_CheckChild2Type, MVT::i32,
4772   OPC_RecordChild3,
4773   OPC_RecordChild4,
4774   OPC_RecordChild5,
4775   OPC_MoveChild5,
4776   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4777   OPC_MoveParent,
4778   OPC_CheckPatternPredicate, 2,
4779   OPC_EmitMergeInputChains1_0,
4780   OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoMaskedAtomicLoadNand32), 0|OPFL_Chain,
4781                 MVT::i32, MVT::i32, 4, 1, 2, 3, 4,
4782  23,
4783   OPC_CheckChild1Integer, 68|128,75,
4784   OPC_RecordChild2,
4785   OPC_RecordChild3,
4786   OPC_MoveChild3,
4787   OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4788   OPC_MoveParent,
4789   OPC_CheckPatternPredicate, 0,
4790   OPC_EmitMergeInputChains1_0,
4791   OPC_EmitConvertToTarget, 2,
4792   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::LDDIR), 0|OPFL_Chain,
4793                 MVT::i64, 2, 1, 3,
4794  0,
4795 88|128,1, TARGET_VAL(ISD::SIGN_EXTEND_INREG),
4796  OPC_Scope, 6|128,1,
4797   OPC_MoveChild0,
4798   OPC_SwitchOpcode , 45, TARGET_VAL(ISD::ADD),
4799    OPC_RecordChild0,
4800    OPC_RecordChild1,
4801    OPC_Scope, 24,
4802     OPC_MoveChild1,
4803     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4804     OPC_CheckPredicate, 3,
4805     OPC_MoveParent,
4806     OPC_MoveParent,
4807     OPC_MoveChild1,
4808     OPC_CheckValueType, MVT::i32,
4809     OPC_MoveParent,
4810     OPC_CheckPatternPredicate, 0,
4811     OPC_EmitConvertToTarget, 1,
4812     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
4813                   MVT::i64, 2, 0, 2,
4814    15,
4815     OPC_MoveParent,
4816     OPC_MoveChild1,
4817     OPC_CheckValueType, MVT::i32,
4818     OPC_MoveParent,
4819     OPC_CheckPatternPredicate, 0,
4820     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADD_W), 0,
4821                   MVT::i64, 2, 0, 1,
4822    0,
4823   28, TARGET_VAL(ISD::ROTR),
4824    OPC_RecordChild0,
4825    OPC_RecordChild1,
4826    OPC_MoveChild1,
4827    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4828    OPC_CheckPredicate, 1,
4829    OPC_CheckType, MVT::i64,
4830    OPC_MoveParent,
4831    OPC_MoveParent,
4832    OPC_MoveChild1,
4833    OPC_CheckValueType, MVT::i32,
4834    OPC_MoveParent,
4835    OPC_CheckPatternPredicate, 0,
4836    OPC_EmitConvertToTarget, 1,
4837    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
4838                  MVT::i64, 2, 0, 2,
4839   29, TARGET_VAL(LoongArchISD::ROTL_W),
4840    OPC_RecordChild0,
4841    OPC_RecordChild1,
4842    OPC_MoveChild1,
4843    OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4844    OPC_CheckPredicate, 1,
4845    OPC_MoveParent,
4846    OPC_MoveParent,
4847    OPC_MoveChild1,
4848    OPC_CheckValueType, MVT::i32,
4849    OPC_MoveParent,
4850    OPC_CheckPatternPredicate, 0,
4851    OPC_EmitConvertToTarget, 1,
4852    OPC_EmitNodeXForm, 0, 2,
4853    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
4854                  MVT::i64, 2, 0, 3,
4855   17, TARGET_VAL(ISD::SUB),
4856    OPC_RecordChild0,
4857    OPC_RecordChild1,
4858    OPC_MoveParent,
4859    OPC_MoveChild1,
4860    OPC_CheckValueType, MVT::i32,
4861    OPC_MoveParent,
4862    OPC_CheckPatternPredicate, 0,
4863    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_W), 0,
4864                  MVT::i64, 2, 0, 1,
4865   0,
4866  77,
4867   OPC_RecordChild0,
4868   OPC_MoveChild1,
4869   OPC_Scope, 27,
4870    OPC_CheckValueType, MVT::i8,
4871    OPC_MoveParent,
4872    OPC_SwitchType , 9, MVT::i64,
4873     OPC_CheckPatternPredicate, 4,
4874     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::EXT_W_B), 0,
4875                   MVT::i64, 1, 0,
4876    9, MVT::i32,
4877     OPC_CheckPatternPredicate, 5,
4878     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::EXT_W_B), 0,
4879                   MVT::i32, 1, 0,
4880    0,
4881   27,
4882    OPC_CheckValueType, MVT::i16,
4883    OPC_MoveParent,
4884    OPC_SwitchType , 9, MVT::i64,
4885     OPC_CheckPatternPredicate, 4,
4886     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::EXT_W_H), 0,
4887                   MVT::i64, 1, 0,
4888    9, MVT::i32,
4889     OPC_CheckPatternPredicate, 5,
4890     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::EXT_W_H), 0,
4891                   MVT::i32, 1, 0,
4892    0,
4893   16,
4894    OPC_CheckValueType, MVT::i32,
4895    OPC_MoveParent,
4896    OPC_CheckPatternPredicate, 0,
4897    OPC_EmitInteger, MVT::i64, 0,
4898    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ADDI_W), 0,
4899                  MVT::i64, 2, 0, 1,
4900   0,
4901  0,
4902 85, TARGET_VAL(ISD::BRIND),
4903  OPC_RecordNode,
4904  OPC_Scope, 45,
4905   OPC_MoveChild1,
4906   OPC_CheckOpcode, TARGET_VAL(ISD::ADD),
4907   OPC_RecordChild0,
4908   OPC_RecordChild1,
4909   OPC_MoveChild1,
4910   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
4911   OPC_CheckPredicate, 24,
4912   OPC_MoveParent,
4913   OPC_SwitchType , 13, MVT::i64,
4914    OPC_MoveParent,
4915    OPC_CheckPatternPredicate, 4,
4916    OPC_EmitMergeInputChains1_0,
4917    OPC_EmitConvertToTarget, 2,
4918    OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBRIND), 0|OPFL_Chain,
4919                  2, 1, 3,
4920   13, MVT::i32,
4921    OPC_MoveParent,
4922    OPC_CheckPatternPredicate, 5,
4923    OPC_EmitMergeInputChains1_0,
4924    OPC_EmitConvertToTarget, 2,
4925    OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBRIND), 0|OPFL_Chain,
4926                  2, 1, 3,
4927   0,
4928  35,
4929   OPC_RecordChild1,
4930   OPC_Scope, 15,
4931    OPC_CheckChild1Type, MVT::i64,
4932    OPC_CheckPatternPredicate, 4,
4933    OPC_EmitMergeInputChains1_0,
4934    OPC_EmitInteger, MVT::i64, 0,
4935    OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBRIND), 0|OPFL_Chain,
4936                  2, 1, 2,
4937   15,
4938    OPC_CheckChild1Type, MVT::i32,
4939    OPC_CheckPatternPredicate, 5,
4940    OPC_EmitMergeInputChains1_0,
4941    OPC_EmitInteger, MVT::i32, 0,
4942    OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBRIND), 0|OPFL_Chain,
4943                  2, 1, 2,
4944   0,
4945  0,
4946 21, TARGET_VAL(ISD::CALLSEQ_START),
4947  OPC_RecordNode,
4948  OPC_RecordChild1,
4949  OPC_MoveChild1,
4950  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4951  OPC_MoveParent,
4952  OPC_RecordChild2,
4953  OPC_MoveChild2,
4954  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4955  OPC_MoveParent,
4956  OPC_EmitMergeInputChains1_0,
4957  OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ADJCALLSTACKDOWN), 0|OPFL_Chain|OPFL_GlueOutput,
4958                2, 1, 2,
4959 22, TARGET_VAL(ISD::CALLSEQ_END),
4960  OPC_RecordNode,
4961  OPC_CaptureGlueInput,
4962  OPC_RecordChild1,
4963  OPC_MoveChild1,
4964  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4965  OPC_MoveParent,
4966  OPC_RecordChild2,
4967  OPC_MoveChild2,
4968  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4969  OPC_MoveParent,
4970  OPC_EmitMergeInputChains1_0,
4971  OPC_MorphNodeTo0, TARGET_VAL(LoongArch::ADJCALLSTACKUP), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput,
4972                2, 1, 2,
4973 39, TARGET_VAL(ISD::ATOMIC_FENCE),
4974  OPC_RecordNode,
4975  OPC_MoveChild1,
4976  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4977  OPC_MoveParent,
4978  OPC_MoveChild2,
4979  OPC_CheckOpcode, TARGET_VAL(ISD::TargetConstant),
4980  OPC_MoveParent,
4981  OPC_Scope, 12,
4982   OPC_CheckPatternPredicate, 4,
4983   OPC_EmitMergeInputChains1_0,
4984   OPC_EmitInteger, MVT::i64, 0,
4985   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::DBAR), 0|OPFL_Chain,
4986                 1, 1,
4987  12,
4988   OPC_CheckPatternPredicate, 5,
4989   OPC_EmitMergeInputChains1_0,
4990   OPC_EmitInteger, MVT::i32, 0,
4991   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::DBAR), 0|OPFL_Chain,
4992                 1, 1,
4993  0,
4994 111|128,12, TARGET_VAL(ISD::SETCC),
4995  OPC_RecordChild0,
4996  OPC_Scope, 52|128,3,
4997   OPC_CheckChild0Type, MVT::i64,
4998   OPC_Scope, 38,
4999    OPC_CheckChild1Integer, 0,
5000    OPC_CheckType, MVT::i64,
5001    OPC_Scope, 15,
5002     OPC_CheckChild2CondCode, ISD::SETEQ,
5003     OPC_CheckPatternPredicate, 4,
5004     OPC_EmitInteger, MVT::i64, 2,
5005     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5006                   MVT::i64, 2, 0, 1,
5007    15,
5008     OPC_CheckChild2CondCode, ISD::SETNE,
5009     OPC_CheckPatternPredicate, 4,
5010     OPC_EmitRegister, MVT::i64, LoongArch::R0,
5011     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5012                   MVT::i64, 2, 1, 0,
5013    0,
5014   7|128,3,
5015    OPC_RecordChild1,
5016    OPC_Scope, 42|128,1,
5017     OPC_MoveChild1,
5018     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5019     OPC_Scope, 37,
5020      OPC_CheckPredicate, 3,
5021      OPC_MoveParent,
5022      OPC_CheckType, MVT::i64,
5023      OPC_Scope, 14,
5024       OPC_CheckChild2CondCode, ISD::SETLT,
5025       OPC_CheckPatternPredicate, 4,
5026       OPC_EmitConvertToTarget, 1,
5027       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTI), 0,
5028                     MVT::i64, 2, 0, 2,
5029      14,
5030       OPC_CheckChild2CondCode, ISD::SETULT,
5031       OPC_CheckPatternPredicate, 4,
5032       OPC_EmitConvertToTarget, 1,
5033       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5034                     MVT::i64, 2, 0, 2,
5035      0,
5036     125,
5037      OPC_CheckPredicate, 25,
5038      OPC_MoveParent,
5039      OPC_CheckType, MVT::i64,
5040      OPC_Scope, 58,
5041       OPC_CheckChild2CondCode, ISD::SETEQ,
5042       OPC_Scope, 26,
5043        OPC_CheckPatternPredicate, 1,
5044        OPC_EmitConvertToTarget, 1,
5045        OPC_EmitNodeXForm, 1, 2,
5046        OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
5047                      MVT::i64, 2, 0, 3,
5048        OPC_EmitInteger, MVT::i64, 2,
5049        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5050                      MVT::i64, 2, 4, 5,
5051       26,
5052        OPC_CheckPatternPredicate, 0,
5053        OPC_EmitConvertToTarget, 1,
5054        OPC_EmitNodeXForm, 1, 2,
5055        OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
5056                      MVT::i64, 2, 0, 3,
5057        OPC_EmitInteger, MVT::i64, 2,
5058        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5059                      MVT::i64, 2, 4, 5,
5060       0,
5061      58,
5062       OPC_CheckChild2CondCode, ISD::SETNE,
5063       OPC_Scope, 26,
5064        OPC_CheckPatternPredicate, 1,
5065        OPC_EmitRegister, MVT::i64, LoongArch::R0,
5066        OPC_EmitConvertToTarget, 1,
5067        OPC_EmitNodeXForm, 1, 3,
5068        OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
5069                      MVT::i64, 2, 0, 4,
5070        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5071                      MVT::i64, 2, 2, 5,
5072       26,
5073        OPC_CheckPatternPredicate, 0,
5074        OPC_EmitRegister, MVT::i64, LoongArch::R0,
5075        OPC_EmitConvertToTarget, 1,
5076        OPC_EmitNodeXForm, 1, 3,
5077        OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
5078                      MVT::i64, 2, 0, 4,
5079        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5080                      MVT::i64, 2, 2, 5,
5081       0,
5082      0,
5083     0,
5084    14,
5085     OPC_CheckChild2CondCode, ISD::SETLT,
5086     OPC_CheckType, MVT::i64,
5087     OPC_CheckPatternPredicate, 4,
5088     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLT), 0,
5089                   MVT::i64, 2, 0, 1,
5090    14,
5091     OPC_CheckChild2CondCode, ISD::SETULT,
5092     OPC_CheckType, MVT::i64,
5093     OPC_CheckPatternPredicate, 4,
5094     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5095                   MVT::i64, 2, 0, 1,
5096    14,
5097     OPC_CheckChild2CondCode, ISD::SETUGT,
5098     OPC_CheckType, MVT::i64,
5099     OPC_CheckPatternPredicate, 4,
5100     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5101                   MVT::i64, 2, 1, 0,
5102    14,
5103     OPC_CheckChild2CondCode, ISD::SETGT,
5104     OPC_CheckType, MVT::i64,
5105     OPC_CheckPatternPredicate, 4,
5106     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLT), 0,
5107                   MVT::i64, 2, 1, 0,
5108    25,
5109     OPC_CheckChild2CondCode, ISD::SETEQ,
5110     OPC_CheckType, MVT::i64,
5111     OPC_CheckPatternPredicate, 4,
5112     OPC_EmitNode1, TARGET_VAL(LoongArch::XOR), 0,
5113                   MVT::i64, 2, 0, 1,
5114     OPC_EmitInteger, MVT::i64, 2,
5115     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5116                   MVT::i64, 2, 2, 3,
5117    25,
5118     OPC_CheckChild2CondCode, ISD::SETNE,
5119     OPC_CheckType, MVT::i64,
5120     OPC_CheckPatternPredicate, 4,
5121     OPC_EmitRegister, MVT::i64, LoongArch::R0,
5122     OPC_EmitNode1, TARGET_VAL(LoongArch::XOR), 0,
5123                   MVT::i64, 2, 0, 1,
5124     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5125                   MVT::i64, 2, 2, 3,
5126    25,
5127     OPC_CheckChild2CondCode, ISD::SETUGE,
5128     OPC_CheckType, MVT::i64,
5129     OPC_CheckPatternPredicate, 4,
5130     OPC_EmitNode1, TARGET_VAL(LoongArch::SLTU), 0,
5131                   MVT::i64, 2, 0, 1,
5132     OPC_EmitInteger, MVT::i64, 2,
5133     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
5134                   MVT::i64, 2, 2, 3,
5135    25,
5136     OPC_CheckChild2CondCode, ISD::SETULE,
5137     OPC_CheckType, MVT::i64,
5138     OPC_CheckPatternPredicate, 4,
5139     OPC_EmitNode1, TARGET_VAL(LoongArch::SLTU), 0,
5140                   MVT::i64, 2, 1, 0,
5141     OPC_EmitInteger, MVT::i64, 2,
5142     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
5143                   MVT::i64, 2, 2, 3,
5144    25,
5145     OPC_CheckChild2CondCode, ISD::SETGE,
5146     OPC_CheckType, MVT::i64,
5147     OPC_CheckPatternPredicate, 4,
5148     OPC_EmitNode1, TARGET_VAL(LoongArch::SLT), 0,
5149                   MVT::i64, 2, 0, 1,
5150     OPC_EmitInteger, MVT::i64, 2,
5151     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
5152                   MVT::i64, 2, 2, 3,
5153    25,
5154     OPC_CheckChild2CondCode, ISD::SETLE,
5155     OPC_CheckType, MVT::i64,
5156     OPC_CheckPatternPredicate, 4,
5157     OPC_EmitNode1, TARGET_VAL(LoongArch::SLT), 0,
5158                   MVT::i64, 2, 1, 0,
5159     OPC_EmitInteger, MVT::i64, 2,
5160     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
5161                   MVT::i64, 2, 2, 3,
5162    0,
5163   0,
5164  52|128,3,
5165   OPC_CheckChild0Type, MVT::i32,
5166   OPC_Scope, 38,
5167    OPC_CheckChild1Integer, 0,
5168    OPC_CheckType, MVT::i32,
5169    OPC_Scope, 15,
5170     OPC_CheckChild2CondCode, ISD::SETEQ,
5171     OPC_CheckPatternPredicate, 5,
5172     OPC_EmitInteger, MVT::i32, 2,
5173     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5174                   MVT::i32, 2, 0, 1,
5175    15,
5176     OPC_CheckChild2CondCode, ISD::SETNE,
5177     OPC_CheckPatternPredicate, 5,
5178     OPC_EmitRegister, MVT::i32, LoongArch::R0,
5179     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5180                   MVT::i32, 2, 1, 0,
5181    0,
5182   7|128,3,
5183    OPC_RecordChild1,
5184    OPC_Scope, 42|128,1,
5185     OPC_MoveChild1,
5186     OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5187     OPC_Scope, 37,
5188      OPC_CheckPredicate, 3,
5189      OPC_MoveParent,
5190      OPC_CheckType, MVT::i32,
5191      OPC_Scope, 14,
5192       OPC_CheckChild2CondCode, ISD::SETLT,
5193       OPC_CheckPatternPredicate, 5,
5194       OPC_EmitConvertToTarget, 1,
5195       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTI), 0,
5196                     MVT::i32, 2, 0, 2,
5197      14,
5198       OPC_CheckChild2CondCode, ISD::SETULT,
5199       OPC_CheckPatternPredicate, 5,
5200       OPC_EmitConvertToTarget, 1,
5201       OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5202                     MVT::i32, 2, 0, 2,
5203      0,
5204     125,
5205      OPC_CheckPredicate, 25,
5206      OPC_MoveParent,
5207      OPC_CheckType, MVT::i32,
5208      OPC_Scope, 58,
5209       OPC_CheckChild2CondCode, ISD::SETEQ,
5210       OPC_Scope, 26,
5211        OPC_CheckPatternPredicate, 2,
5212        OPC_EmitConvertToTarget, 1,
5213        OPC_EmitNodeXForm, 1, 2,
5214        OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
5215                      MVT::i32, 2, 0, 3,
5216        OPC_EmitInteger, MVT::i32, 2,
5217        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5218                      MVT::i32, 2, 4, 5,
5219       26,
5220        OPC_CheckPatternPredicate, 3,
5221        OPC_EmitConvertToTarget, 1,
5222        OPC_EmitNodeXForm, 1, 2,
5223        OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
5224                      MVT::i32, 2, 0, 3,
5225        OPC_EmitInteger, MVT::i32, 2,
5226        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5227                      MVT::i32, 2, 4, 5,
5228       0,
5229      58,
5230       OPC_CheckChild2CondCode, ISD::SETNE,
5231       OPC_Scope, 26,
5232        OPC_CheckPatternPredicate, 2,
5233        OPC_EmitRegister, MVT::i32, LoongArch::R0,
5234        OPC_EmitConvertToTarget, 1,
5235        OPC_EmitNodeXForm, 1, 3,
5236        OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
5237                      MVT::i32, 2, 0, 4,
5238        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5239                      MVT::i32, 2, 2, 5,
5240       26,
5241        OPC_CheckPatternPredicate, 3,
5242        OPC_EmitRegister, MVT::i32, LoongArch::R0,
5243        OPC_EmitConvertToTarget, 1,
5244        OPC_EmitNodeXForm, 1, 3,
5245        OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
5246                      MVT::i32, 2, 0, 4,
5247        OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5248                      MVT::i32, 2, 2, 5,
5249       0,
5250      0,
5251     0,
5252    14,
5253     OPC_CheckChild2CondCode, ISD::SETLT,
5254     OPC_CheckType, MVT::i32,
5255     OPC_CheckPatternPredicate, 5,
5256     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLT), 0,
5257                   MVT::i32, 2, 0, 1,
5258    14,
5259     OPC_CheckChild2CondCode, ISD::SETULT,
5260     OPC_CheckType, MVT::i32,
5261     OPC_CheckPatternPredicate, 5,
5262     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5263                   MVT::i32, 2, 0, 1,
5264    14,
5265     OPC_CheckChild2CondCode, ISD::SETUGT,
5266     OPC_CheckType, MVT::i32,
5267     OPC_CheckPatternPredicate, 5,
5268     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5269                   MVT::i32, 2, 1, 0,
5270    14,
5271     OPC_CheckChild2CondCode, ISD::SETGT,
5272     OPC_CheckType, MVT::i32,
5273     OPC_CheckPatternPredicate, 5,
5274     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLT), 0,
5275                   MVT::i32, 2, 1, 0,
5276    25,
5277     OPC_CheckChild2CondCode, ISD::SETEQ,
5278     OPC_CheckType, MVT::i32,
5279     OPC_CheckPatternPredicate, 5,
5280     OPC_EmitNode1, TARGET_VAL(LoongArch::XOR), 0,
5281                   MVT::i32, 2, 0, 1,
5282     OPC_EmitInteger, MVT::i32, 2,
5283     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTUI), 0,
5284                   MVT::i32, 2, 2, 3,
5285    25,
5286     OPC_CheckChild2CondCode, ISD::SETNE,
5287     OPC_CheckType, MVT::i32,
5288     OPC_CheckPatternPredicate, 5,
5289     OPC_EmitRegister, MVT::i32, LoongArch::R0,
5290     OPC_EmitNode1, TARGET_VAL(LoongArch::XOR), 0,
5291                   MVT::i32, 2, 0, 1,
5292     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLTU), 0,
5293                   MVT::i32, 2, 2, 3,
5294    25,
5295     OPC_CheckChild2CondCode, ISD::SETUGE,
5296     OPC_CheckType, MVT::i32,
5297     OPC_CheckPatternPredicate, 5,
5298     OPC_EmitNode1, TARGET_VAL(LoongArch::SLTU), 0,
5299                   MVT::i32, 2, 0, 1,
5300     OPC_EmitInteger, MVT::i32, 2,
5301     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
5302                   MVT::i32, 2, 2, 3,
5303    25,
5304     OPC_CheckChild2CondCode, ISD::SETULE,
5305     OPC_CheckType, MVT::i32,
5306     OPC_CheckPatternPredicate, 5,
5307     OPC_EmitNode1, TARGET_VAL(LoongArch::SLTU), 0,
5308                   MVT::i32, 2, 1, 0,
5309     OPC_EmitInteger, MVT::i32, 2,
5310     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
5311                   MVT::i32, 2, 2, 3,
5312    25,
5313     OPC_CheckChild2CondCode, ISD::SETGE,
5314     OPC_CheckType, MVT::i32,
5315     OPC_CheckPatternPredicate, 5,
5316     OPC_EmitNode1, TARGET_VAL(LoongArch::SLT), 0,
5317                   MVT::i32, 2, 0, 1,
5318     OPC_EmitInteger, MVT::i32, 2,
5319     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
5320                   MVT::i32, 2, 2, 3,
5321    25,
5322     OPC_CheckChild2CondCode, ISD::SETLE,
5323     OPC_CheckType, MVT::i32,
5324     OPC_CheckPatternPredicate, 5,
5325     OPC_EmitNode1, TARGET_VAL(LoongArch::SLT), 0,
5326                   MVT::i32, 2, 1, 0,
5327     OPC_EmitInteger, MVT::i32, 2,
5328     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::XORI), 0,
5329                   MVT::i32, 2, 2, 3,
5330    0,
5331   0,
5332  126|128,2,
5333   OPC_CheckChild0Type, MVT::f32,
5334   OPC_RecordChild1,
5335   OPC_Scope, 28,
5336    OPC_CheckChild2CondCode, ISD::SETOEQ,
5337    OPC_SwitchType , 10, MVT::i64,
5338     OPC_CheckPatternPredicate, 6,
5339     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
5340                   MVT::i64, 2, 0, 1,
5341    10, MVT::i32,
5342     OPC_CheckPatternPredicate, 8,
5343     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
5344                   MVT::i32, 2, 0, 1,
5345    0,
5346   28,
5347    OPC_CheckChild2CondCode, ISD::SETEQ,
5348    OPC_SwitchType , 10, MVT::i64,
5349     OPC_CheckPatternPredicate, 6,
5350     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
5351                   MVT::i64, 2, 0, 1,
5352    10, MVT::i32,
5353     OPC_CheckPatternPredicate, 8,
5354     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
5355                   MVT::i32, 2, 0, 1,
5356    0,
5357   28,
5358    OPC_CheckChild2CondCode, ISD::SETOLT,
5359    OPC_SwitchType , 10, MVT::i64,
5360     OPC_CheckPatternPredicate, 6,
5361     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
5362                   MVT::i64, 2, 0, 1,
5363    10, MVT::i32,
5364     OPC_CheckPatternPredicate, 8,
5365     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
5366                   MVT::i32, 2, 0, 1,
5367    0,
5368   28,
5369    OPC_CheckChild2CondCode, ISD::SETOLE,
5370    OPC_SwitchType , 10, MVT::i64,
5371     OPC_CheckPatternPredicate, 6,
5372     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
5373                   MVT::i64, 2, 0, 1,
5374    10, MVT::i32,
5375     OPC_CheckPatternPredicate, 8,
5376     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
5377                   MVT::i32, 2, 0, 1,
5378    0,
5379   28,
5380    OPC_CheckChild2CondCode, ISD::SETLE,
5381    OPC_SwitchType , 10, MVT::i64,
5382     OPC_CheckPatternPredicate, 6,
5383     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
5384                   MVT::i64, 2, 0, 1,
5385    10, MVT::i32,
5386     OPC_CheckPatternPredicate, 8,
5387     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
5388                   MVT::i32, 2, 0, 1,
5389    0,
5390   28,
5391    OPC_CheckChild2CondCode, ISD::SETONE,
5392    OPC_SwitchType , 10, MVT::i64,
5393     OPC_CheckPatternPredicate, 6,
5394     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
5395                   MVT::i64, 2, 0, 1,
5396    10, MVT::i32,
5397     OPC_CheckPatternPredicate, 8,
5398     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
5399                   MVT::i32, 2, 0, 1,
5400    0,
5401   28,
5402    OPC_CheckChild2CondCode, ISD::SETO,
5403    OPC_SwitchType , 10, MVT::i64,
5404     OPC_CheckPatternPredicate, 6,
5405     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
5406                   MVT::i64, 2, 0, 1,
5407    10, MVT::i32,
5408     OPC_CheckPatternPredicate, 8,
5409     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
5410                   MVT::i32, 2, 0, 1,
5411    0,
5412   28,
5413    OPC_CheckChild2CondCode, ISD::SETUEQ,
5414    OPC_SwitchType , 10, MVT::i64,
5415     OPC_CheckPatternPredicate, 6,
5416     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
5417                   MVT::i64, 2, 0, 1,
5418    10, MVT::i32,
5419     OPC_CheckPatternPredicate, 8,
5420     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
5421                   MVT::i32, 2, 0, 1,
5422    0,
5423   28,
5424    OPC_CheckChild2CondCode, ISD::SETULT,
5425    OPC_SwitchType , 10, MVT::i64,
5426     OPC_CheckPatternPredicate, 6,
5427     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
5428                   MVT::i64, 2, 0, 1,
5429    10, MVT::i32,
5430     OPC_CheckPatternPredicate, 8,
5431     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
5432                   MVT::i32, 2, 0, 1,
5433    0,
5434   28,
5435    OPC_CheckChild2CondCode, ISD::SETULE,
5436    OPC_SwitchType , 10, MVT::i64,
5437     OPC_CheckPatternPredicate, 6,
5438     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
5439                   MVT::i64, 2, 0, 1,
5440    10, MVT::i32,
5441     OPC_CheckPatternPredicate, 8,
5442     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
5443                   MVT::i32, 2, 0, 1,
5444    0,
5445   28,
5446    OPC_CheckChild2CondCode, ISD::SETUNE,
5447    OPC_SwitchType , 10, MVT::i64,
5448     OPC_CheckPatternPredicate, 6,
5449     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
5450                   MVT::i64, 2, 0, 1,
5451    10, MVT::i32,
5452     OPC_CheckPatternPredicate, 8,
5453     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
5454                   MVT::i32, 2, 0, 1,
5455    0,
5456   28,
5457    OPC_CheckChild2CondCode, ISD::SETUO,
5458    OPC_SwitchType , 10, MVT::i64,
5459     OPC_CheckPatternPredicate, 6,
5460     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
5461                   MVT::i64, 2, 0, 1,
5462    10, MVT::i32,
5463     OPC_CheckPatternPredicate, 8,
5464     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
5465                   MVT::i32, 2, 0, 1,
5466    0,
5467   28,
5468    OPC_CheckChild2CondCode, ISD::SETLT,
5469    OPC_SwitchType , 10, MVT::i64,
5470     OPC_CheckPatternPredicate, 6,
5471     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
5472                   MVT::i64, 2, 0, 1,
5473    10, MVT::i32,
5474     OPC_CheckPatternPredicate, 8,
5475     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
5476                   MVT::i32, 2, 0, 1,
5477    0,
5478   0,
5479  126|128,2,
5480   OPC_CheckChild0Type, MVT::f64,
5481   OPC_RecordChild1,
5482   OPC_Scope, 28,
5483    OPC_CheckChild2CondCode, ISD::SETOEQ,
5484    OPC_SwitchType , 10, MVT::i64,
5485     OPC_CheckPatternPredicate, 7,
5486     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
5487                   MVT::i64, 2, 0, 1,
5488    10, MVT::i32,
5489     OPC_CheckPatternPredicate, 9,
5490     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
5491                   MVT::i32, 2, 0, 1,
5492    0,
5493   28,
5494    OPC_CheckChild2CondCode, ISD::SETEQ,
5495    OPC_SwitchType , 10, MVT::i64,
5496     OPC_CheckPatternPredicate, 7,
5497     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
5498                   MVT::i64, 2, 0, 1,
5499    10, MVT::i32,
5500     OPC_CheckPatternPredicate, 9,
5501     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
5502                   MVT::i32, 2, 0, 1,
5503    0,
5504   28,
5505    OPC_CheckChild2CondCode, ISD::SETOLT,
5506    OPC_SwitchType , 10, MVT::i64,
5507     OPC_CheckPatternPredicate, 7,
5508     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
5509                   MVT::i64, 2, 0, 1,
5510    10, MVT::i32,
5511     OPC_CheckPatternPredicate, 9,
5512     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
5513                   MVT::i32, 2, 0, 1,
5514    0,
5515   28,
5516    OPC_CheckChild2CondCode, ISD::SETOLE,
5517    OPC_SwitchType , 10, MVT::i64,
5518     OPC_CheckPatternPredicate, 7,
5519     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
5520                   MVT::i64, 2, 0, 1,
5521    10, MVT::i32,
5522     OPC_CheckPatternPredicate, 9,
5523     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
5524                   MVT::i32, 2, 0, 1,
5525    0,
5526   28,
5527    OPC_CheckChild2CondCode, ISD::SETLE,
5528    OPC_SwitchType , 10, MVT::i64,
5529     OPC_CheckPatternPredicate, 7,
5530     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
5531                   MVT::i64, 2, 0, 1,
5532    10, MVT::i32,
5533     OPC_CheckPatternPredicate, 9,
5534     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
5535                   MVT::i32, 2, 0, 1,
5536    0,
5537   28,
5538    OPC_CheckChild2CondCode, ISD::SETONE,
5539    OPC_SwitchType , 10, MVT::i64,
5540     OPC_CheckPatternPredicate, 7,
5541     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
5542                   MVT::i64, 2, 0, 1,
5543    10, MVT::i32,
5544     OPC_CheckPatternPredicate, 9,
5545     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
5546                   MVT::i32, 2, 0, 1,
5547    0,
5548   28,
5549    OPC_CheckChild2CondCode, ISD::SETO,
5550    OPC_SwitchType , 10, MVT::i64,
5551     OPC_CheckPatternPredicate, 7,
5552     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
5553                   MVT::i64, 2, 0, 1,
5554    10, MVT::i32,
5555     OPC_CheckPatternPredicate, 9,
5556     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
5557                   MVT::i32, 2, 0, 1,
5558    0,
5559   28,
5560    OPC_CheckChild2CondCode, ISD::SETUEQ,
5561    OPC_SwitchType , 10, MVT::i64,
5562     OPC_CheckPatternPredicate, 7,
5563     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
5564                   MVT::i64, 2, 0, 1,
5565    10, MVT::i32,
5566     OPC_CheckPatternPredicate, 9,
5567     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
5568                   MVT::i32, 2, 0, 1,
5569    0,
5570   28,
5571    OPC_CheckChild2CondCode, ISD::SETULT,
5572    OPC_SwitchType , 10, MVT::i64,
5573     OPC_CheckPatternPredicate, 7,
5574     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
5575                   MVT::i64, 2, 0, 1,
5576    10, MVT::i32,
5577     OPC_CheckPatternPredicate, 9,
5578     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
5579                   MVT::i32, 2, 0, 1,
5580    0,
5581   28,
5582    OPC_CheckChild2CondCode, ISD::SETULE,
5583    OPC_SwitchType , 10, MVT::i64,
5584     OPC_CheckPatternPredicate, 7,
5585     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
5586                   MVT::i64, 2, 0, 1,
5587    10, MVT::i32,
5588     OPC_CheckPatternPredicate, 9,
5589     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
5590                   MVT::i32, 2, 0, 1,
5591    0,
5592   28,
5593    OPC_CheckChild2CondCode, ISD::SETUNE,
5594    OPC_SwitchType , 10, MVT::i64,
5595     OPC_CheckPatternPredicate, 7,
5596     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
5597                   MVT::i64, 2, 0, 1,
5598    10, MVT::i32,
5599     OPC_CheckPatternPredicate, 9,
5600     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
5601                   MVT::i32, 2, 0, 1,
5602    0,
5603   28,
5604    OPC_CheckChild2CondCode, ISD::SETUO,
5605    OPC_SwitchType , 10, MVT::i64,
5606     OPC_CheckPatternPredicate, 7,
5607     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
5608                   MVT::i64, 2, 0, 1,
5609    10, MVT::i32,
5610     OPC_CheckPatternPredicate, 9,
5611     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
5612                   MVT::i32, 2, 0, 1,
5613    0,
5614   28,
5615    OPC_CheckChild2CondCode, ISD::SETLT,
5616    OPC_SwitchType , 10, MVT::i64,
5617     OPC_CheckPatternPredicate, 7,
5618     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
5619                   MVT::i64, 2, 0, 1,
5620    10, MVT::i32,
5621     OPC_CheckPatternPredicate, 9,
5622     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
5623                   MVT::i32, 2, 0, 1,
5624    0,
5625   0,
5626  0,
5627 19|128,1, TARGET_VAL(ISD::ROTR),
5628  OPC_RecordChild0,
5629  OPC_RecordChild1,
5630  OPC_Scope, 84,
5631   OPC_MoveChild1,
5632   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5633   OPC_Scope, 38,
5634    OPC_CheckPredicate, 1,
5635    OPC_SwitchType , 15, MVT::i64,
5636     OPC_MoveParent,
5637     OPC_CheckType, MVT::i64,
5638     OPC_CheckPatternPredicate, 1,
5639     OPC_EmitConvertToTarget, 1,
5640     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
5641                   MVT::i64, 2, 0, 2,
5642    15, MVT::i32,
5643     OPC_MoveParent,
5644     OPC_CheckType, MVT::i32,
5645     OPC_CheckPatternPredicate, 2,
5646     OPC_EmitConvertToTarget, 1,
5647     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
5648                   MVT::i32, 2, 0, 2,
5649    0,
5650   38,
5651    OPC_CheckPredicate, 2,
5652    OPC_SwitchType , 15, MVT::i64,
5653     OPC_MoveParent,
5654     OPC_CheckType, MVT::i64,
5655     OPC_CheckPatternPredicate, 0,
5656     OPC_EmitConvertToTarget, 1,
5657     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_D), 0,
5658                   MVT::i64, 2, 0, 2,
5659    15, MVT::i32,
5660     OPC_MoveParent,
5661     OPC_CheckType, MVT::i32,
5662     OPC_CheckPatternPredicate, 3,
5663     OPC_EmitConvertToTarget, 1,
5664     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_D), 0,
5665                   MVT::i32, 2, 0, 2,
5666    0,
5667   0,
5668  28,
5669   OPC_CheckChild1Type, MVT::i64,
5670   OPC_CheckType, MVT::i64,
5671   OPC_Scope, 10,
5672    OPC_CheckPatternPredicate, 1,
5673    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_W), 0,
5674                  MVT::i64, 2, 0, 1,
5675   10,
5676    OPC_CheckPatternPredicate, 0,
5677    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_D), 0,
5678                  MVT::i64, 2, 0, 1,
5679   0,
5680  28,
5681   OPC_CheckChild1Type, MVT::i32,
5682   OPC_CheckType, MVT::i32,
5683   OPC_Scope, 10,
5684    OPC_CheckPatternPredicate, 2,
5685    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_W), 0,
5686                  MVT::i32, 2, 0, 1,
5687   10,
5688    OPC_CheckPatternPredicate, 3,
5689    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_D), 0,
5690                  MVT::i32, 2, 0, 1,
5691   0,
5692  0,
5693 24, TARGET_VAL(LoongArchISD::ROTL_W),
5694  OPC_RecordChild0,
5695  OPC_RecordChild1,
5696  OPC_MoveChild1,
5697  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5698  OPC_CheckPredicate, 1,
5699  OPC_MoveParent,
5700  OPC_CheckPatternPredicate, 0,
5701  OPC_EmitConvertToTarget, 1,
5702  OPC_EmitNodeXForm, 0, 2,
5703  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
5704                MVT::i64, 2, 0, 3,
5705 31|128,1, TARGET_VAL(ISD::SHL),
5706  OPC_RecordChild0,
5707  OPC_RecordChild1,
5708  OPC_Scope, 84,
5709   OPC_MoveChild1,
5710   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5711   OPC_Scope, 38,
5712    OPC_CheckPredicate, 1,
5713    OPC_SwitchType , 15, MVT::i64,
5714     OPC_MoveParent,
5715     OPC_CheckType, MVT::i64,
5716     OPC_CheckPatternPredicate, 1,
5717     OPC_EmitConvertToTarget, 1,
5718     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLLI_W), 0,
5719                   MVT::i64, 2, 0, 2,
5720    15, MVT::i32,
5721     OPC_MoveParent,
5722     OPC_CheckType, MVT::i32,
5723     OPC_CheckPatternPredicate, 2,
5724     OPC_EmitConvertToTarget, 1,
5725     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLLI_W), 0,
5726                   MVT::i32, 2, 0, 2,
5727    0,
5728   38,
5729    OPC_CheckPredicate, 2,
5730    OPC_SwitchType , 15, MVT::i64,
5731     OPC_MoveParent,
5732     OPC_CheckType, MVT::i64,
5733     OPC_CheckPatternPredicate, 0,
5734     OPC_EmitConvertToTarget, 1,
5735     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLLI_D), 0,
5736                   MVT::i64, 2, 0, 2,
5737    15, MVT::i32,
5738     OPC_MoveParent,
5739     OPC_CheckType, MVT::i32,
5740     OPC_CheckPatternPredicate, 3,
5741     OPC_EmitConvertToTarget, 1,
5742     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLLI_D), 0,
5743                   MVT::i32, 2, 0, 2,
5744    0,
5745   0,
5746  34,
5747   OPC_CheckChild1Type, MVT::i64,
5748   OPC_CheckType, MVT::i64,
5749   OPC_Scope, 13,
5750    OPC_CheckPatternPredicate, 1,
5751    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5752    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_W), 0,
5753                  MVT::i64, 2, 0, 2,
5754   13,
5755    OPC_CheckPatternPredicate, 0,
5756    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5757    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_D), 0,
5758                  MVT::i64, 2, 0, 2,
5759   0,
5760  34,
5761   OPC_CheckChild1Type, MVT::i32,
5762   OPC_CheckType, MVT::i32,
5763   OPC_Scope, 13,
5764    OPC_CheckPatternPredicate, 2,
5765    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5766    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_W), 0,
5767                  MVT::i32, 2, 0, 2,
5768   13,
5769    OPC_CheckPatternPredicate, 3,
5770    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5771    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_D), 0,
5772                  MVT::i32, 2, 0, 2,
5773   0,
5774  0,
5775 31|128,1, TARGET_VAL(ISD::SRA),
5776  OPC_RecordChild0,
5777  OPC_RecordChild1,
5778  OPC_Scope, 84,
5779   OPC_MoveChild1,
5780   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5781   OPC_Scope, 38,
5782    OPC_CheckPredicate, 1,
5783    OPC_SwitchType , 15, MVT::i64,
5784     OPC_MoveParent,
5785     OPC_CheckType, MVT::i64,
5786     OPC_CheckPatternPredicate, 1,
5787     OPC_EmitConvertToTarget, 1,
5788     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRAI_W), 0,
5789                   MVT::i64, 2, 0, 2,
5790    15, MVT::i32,
5791     OPC_MoveParent,
5792     OPC_CheckType, MVT::i32,
5793     OPC_CheckPatternPredicate, 2,
5794     OPC_EmitConvertToTarget, 1,
5795     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRAI_W), 0,
5796                   MVT::i32, 2, 0, 2,
5797    0,
5798   38,
5799    OPC_CheckPredicate, 2,
5800    OPC_SwitchType , 15, MVT::i64,
5801     OPC_MoveParent,
5802     OPC_CheckType, MVT::i64,
5803     OPC_CheckPatternPredicate, 0,
5804     OPC_EmitConvertToTarget, 1,
5805     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRAI_D), 0,
5806                   MVT::i64, 2, 0, 2,
5807    15, MVT::i32,
5808     OPC_MoveParent,
5809     OPC_CheckType, MVT::i32,
5810     OPC_CheckPatternPredicate, 3,
5811     OPC_EmitConvertToTarget, 1,
5812     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRAI_D), 0,
5813                   MVT::i32, 2, 0, 2,
5814    0,
5815   0,
5816  34,
5817   OPC_CheckChild1Type, MVT::i64,
5818   OPC_CheckType, MVT::i64,
5819   OPC_Scope, 13,
5820    OPC_CheckPatternPredicate, 1,
5821    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5822    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_W), 0,
5823                  MVT::i64, 2, 0, 2,
5824   13,
5825    OPC_CheckPatternPredicate, 0,
5826    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5827    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_D), 0,
5828                  MVT::i64, 2, 0, 2,
5829   0,
5830  34,
5831   OPC_CheckChild1Type, MVT::i32,
5832   OPC_CheckType, MVT::i32,
5833   OPC_Scope, 13,
5834    OPC_CheckPatternPredicate, 2,
5835    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5836    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_W), 0,
5837                  MVT::i32, 2, 0, 2,
5838   13,
5839    OPC_CheckPatternPredicate, 3,
5840    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5841    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_D), 0,
5842                  MVT::i32, 2, 0, 2,
5843   0,
5844  0,
5845 31|128,1, TARGET_VAL(ISD::SRL),
5846  OPC_RecordChild0,
5847  OPC_RecordChild1,
5848  OPC_Scope, 84,
5849   OPC_MoveChild1,
5850   OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5851   OPC_Scope, 38,
5852    OPC_CheckPredicate, 1,
5853    OPC_SwitchType , 15, MVT::i64,
5854     OPC_MoveParent,
5855     OPC_CheckType, MVT::i64,
5856     OPC_CheckPatternPredicate, 1,
5857     OPC_EmitConvertToTarget, 1,
5858     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRLI_W), 0,
5859                   MVT::i64, 2, 0, 2,
5860    15, MVT::i32,
5861     OPC_MoveParent,
5862     OPC_CheckType, MVT::i32,
5863     OPC_CheckPatternPredicate, 2,
5864     OPC_EmitConvertToTarget, 1,
5865     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRLI_W), 0,
5866                   MVT::i32, 2, 0, 2,
5867    0,
5868   38,
5869    OPC_CheckPredicate, 2,
5870    OPC_SwitchType , 15, MVT::i64,
5871     OPC_MoveParent,
5872     OPC_CheckType, MVT::i64,
5873     OPC_CheckPatternPredicate, 0,
5874     OPC_EmitConvertToTarget, 1,
5875     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRLI_D), 0,
5876                   MVT::i64, 2, 0, 2,
5877    15, MVT::i32,
5878     OPC_MoveParent,
5879     OPC_CheckType, MVT::i32,
5880     OPC_CheckPatternPredicate, 3,
5881     OPC_EmitConvertToTarget, 1,
5882     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRLI_D), 0,
5883                   MVT::i32, 2, 0, 2,
5884    0,
5885   0,
5886  34,
5887   OPC_CheckChild1Type, MVT::i64,
5888   OPC_CheckType, MVT::i64,
5889   OPC_Scope, 13,
5890    OPC_CheckPatternPredicate, 1,
5891    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5892    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_W), 0,
5893                  MVT::i64, 2, 0, 2,
5894   13,
5895    OPC_CheckPatternPredicate, 0,
5896    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5897    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_D), 0,
5898                  MVT::i64, 2, 0, 2,
5899   0,
5900  34,
5901   OPC_CheckChild1Type, MVT::i32,
5902   OPC_CheckType, MVT::i32,
5903   OPC_Scope, 13,
5904    OPC_CheckPatternPredicate, 2,
5905    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5906    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_W), 0,
5907                  MVT::i32, 2, 0, 2,
5908   13,
5909    OPC_CheckPatternPredicate, 3,
5910    OPC_CheckComplexPat, /*CP*/2, /*#*/1,
5911    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_D), 0,
5912                  MVT::i32, 2, 0, 2,
5913   0,
5914  0,
5915 38, TARGET_VAL(LoongArchISD::DBAR),
5916  OPC_RecordNode,
5917  OPC_RecordChild1,
5918  OPC_MoveChild1,
5919  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5920  OPC_CheckPredicate, 26,
5921  OPC_SwitchType , 12, MVT::i64,
5922   OPC_MoveParent,
5923   OPC_CheckPatternPredicate, 4,
5924   OPC_EmitMergeInputChains1_0,
5925   OPC_EmitConvertToTarget, 1,
5926   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::DBAR), 0|OPFL_Chain,
5927                 1, 2,
5928  12, MVT::i32,
5929   OPC_MoveParent,
5930   OPC_CheckPatternPredicate, 5,
5931   OPC_EmitMergeInputChains1_0,
5932   OPC_EmitConvertToTarget, 1,
5933   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::DBAR), 0|OPFL_Chain,
5934                 1, 2,
5935  0,
5936 38, TARGET_VAL(LoongArchISD::IBAR),
5937  OPC_RecordNode,
5938  OPC_RecordChild1,
5939  OPC_MoveChild1,
5940  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5941  OPC_CheckPredicate, 26,
5942  OPC_SwitchType , 12, MVT::i64,
5943   OPC_MoveParent,
5944   OPC_CheckPatternPredicate, 4,
5945   OPC_EmitMergeInputChains1_0,
5946   OPC_EmitConvertToTarget, 1,
5947   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IBAR), 0|OPFL_Chain,
5948                 1, 2,
5949  12, MVT::i32,
5950   OPC_MoveParent,
5951   OPC_CheckPatternPredicate, 5,
5952   OPC_EmitMergeInputChains1_0,
5953   OPC_EmitConvertToTarget, 1,
5954   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IBAR), 0|OPFL_Chain,
5955                 1, 2,
5956  0,
5957 38, TARGET_VAL(LoongArchISD::BREAK),
5958  OPC_RecordNode,
5959  OPC_RecordChild1,
5960  OPC_MoveChild1,
5961  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5962  OPC_CheckPredicate, 26,
5963  OPC_SwitchType , 12, MVT::i64,
5964   OPC_MoveParent,
5965   OPC_CheckPatternPredicate, 4,
5966   OPC_EmitMergeInputChains1_0,
5967   OPC_EmitConvertToTarget, 1,
5968   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BREAK), 0|OPFL_Chain,
5969                 1, 2,
5970  12, MVT::i32,
5971   OPC_MoveParent,
5972   OPC_CheckPatternPredicate, 5,
5973   OPC_EmitMergeInputChains1_0,
5974   OPC_EmitConvertToTarget, 1,
5975   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BREAK), 0|OPFL_Chain,
5976                 1, 2,
5977  0,
5978 38, TARGET_VAL(LoongArchISD::SYSCALL),
5979  OPC_RecordNode,
5980  OPC_RecordChild1,
5981  OPC_MoveChild1,
5982  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
5983  OPC_CheckPredicate, 26,
5984  OPC_SwitchType , 12, MVT::i64,
5985   OPC_MoveParent,
5986   OPC_CheckPatternPredicate, 4,
5987   OPC_EmitMergeInputChains1_0,
5988   OPC_EmitConvertToTarget, 1,
5989   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::SYSCALL), 0|OPFL_Chain,
5990                 1, 2,
5991  12, MVT::i32,
5992   OPC_MoveParent,
5993   OPC_CheckPatternPredicate, 5,
5994   OPC_EmitMergeInputChains1_0,
5995   OPC_EmitConvertToTarget, 1,
5996   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::SYSCALL), 0|OPFL_Chain,
5997                 1, 2,
5998  0,
5999 44, TARGET_VAL(LoongArchISD::CSRRD),
6000  OPC_RecordNode,
6001  OPC_RecordChild1,
6002  OPC_MoveChild1,
6003  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
6004  OPC_CheckPredicate, 27,
6005  OPC_SwitchType , 15, MVT::i64,
6006   OPC_MoveParent,
6007   OPC_CheckType, MVT::i64,
6008   OPC_CheckPatternPredicate, 4,
6009   OPC_EmitMergeInputChains1_0,
6010   OPC_EmitConvertToTarget, 1,
6011   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRRD), 0|OPFL_Chain,
6012                 MVT::i64, 1, 2,
6013  15, MVT::i32,
6014   OPC_MoveParent,
6015   OPC_CheckType, MVT::i32,
6016   OPC_CheckPatternPredicate, 5,
6017   OPC_EmitMergeInputChains1_0,
6018   OPC_EmitConvertToTarget, 1,
6019   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRRD), 0|OPFL_Chain,
6020                 MVT::i32, 1, 2,
6021  0,
6022 47, TARGET_VAL(LoongArchISD::CSRWR),
6023  OPC_RecordNode,
6024  OPC_RecordChild1,
6025  OPC_RecordChild2,
6026  OPC_MoveChild2,
6027  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
6028  OPC_CheckPredicate, 27,
6029  OPC_SwitchType , 16, MVT::i64,
6030   OPC_MoveParent,
6031   OPC_CheckType, MVT::i64,
6032   OPC_CheckPatternPredicate, 4,
6033   OPC_EmitMergeInputChains1_0,
6034   OPC_EmitConvertToTarget, 2,
6035   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRWR), 0|OPFL_Chain,
6036                 MVT::i64, 2, 1, 3,
6037  16, MVT::i32,
6038   OPC_MoveParent,
6039   OPC_CheckType, MVT::i32,
6040   OPC_CheckPatternPredicate, 5,
6041   OPC_EmitMergeInputChains1_0,
6042   OPC_EmitConvertToTarget, 2,
6043   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRWR), 0|OPFL_Chain,
6044                 MVT::i32, 2, 1, 3,
6045  0,
6046 50, TARGET_VAL(LoongArchISD::CSRXCHG),
6047  OPC_RecordNode,
6048  OPC_RecordChild1,
6049  OPC_RecordChild2,
6050  OPC_RecordChild3,
6051  OPC_MoveChild3,
6052  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
6053  OPC_CheckPredicate, 27,
6054  OPC_SwitchType , 17, MVT::i64,
6055   OPC_MoveParent,
6056   OPC_CheckType, MVT::i64,
6057   OPC_CheckPatternPredicate, 4,
6058   OPC_EmitMergeInputChains1_0,
6059   OPC_EmitConvertToTarget, 3,
6060   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRXCHG), 0|OPFL_Chain,
6061                 MVT::i64, 3, 1, 2, 4,
6062  17, MVT::i32,
6063   OPC_MoveParent,
6064   OPC_CheckType, MVT::i32,
6065   OPC_CheckPatternPredicate, 5,
6066   OPC_EmitMergeInputChains1_0,
6067   OPC_EmitConvertToTarget, 3,
6068   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CSRXCHG), 0|OPFL_Chain,
6069                 MVT::i32, 3, 1, 2, 4,
6070  0,
6071 46, TARGET_VAL(LoongArchISD::MOVGR2FCSR),
6072  OPC_RecordNode,
6073  OPC_RecordChild1,
6074  OPC_MoveChild1,
6075  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
6076  OPC_CheckPredicate, 28,
6077  OPC_SwitchType , 16, MVT::i64,
6078   OPC_MoveParent,
6079   OPC_RecordChild2,
6080   OPC_CheckChild2Type, MVT::i64,
6081   OPC_CheckPatternPredicate, 6,
6082   OPC_EmitMergeInputChains1_0,
6083   OPC_EmitConvertToTarget, 1,
6084   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::WRFCSR), 0|OPFL_Chain,
6085                 2, 3, 2,
6086  16, MVT::i32,
6087   OPC_MoveParent,
6088   OPC_RecordChild2,
6089   OPC_CheckChild2Type, MVT::i32,
6090   OPC_CheckPatternPredicate, 8,
6091   OPC_EmitMergeInputChains1_0,
6092   OPC_EmitConvertToTarget, 1,
6093   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::WRFCSR), 0|OPFL_Chain,
6094                 2, 3, 2,
6095  0,
6096 41, TARGET_VAL(LoongArchISD::MOVFCSR2GR),
6097  OPC_RecordChild0,
6098  OPC_MoveChild0,
6099  OPC_CheckOpcode, TARGET_VAL(ISD::Constant),
6100  OPC_CheckPredicate, 28,
6101  OPC_SwitchType , 14, MVT::i64,
6102   OPC_MoveParent,
6103   OPC_CheckType, MVT::i64,
6104   OPC_CheckPatternPredicate, 6,
6105   OPC_EmitConvertToTarget, 0,
6106   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::RDFCSR), 0,
6107                 MVT::i64, 1, 1,
6108  14, MVT::i32,
6109   OPC_MoveParent,
6110   OPC_CheckType, MVT::i32,
6111   OPC_CheckPatternPredicate, 8,
6112   OPC_EmitConvertToTarget, 0,
6113   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::RDFCSR), 0,
6114                 MVT::i32, 1, 1,
6115  0,
6116 15, TARGET_VAL(LoongArchISD::SLL_W),
6117  OPC_RecordChild0,
6118  OPC_RecordChild1,
6119  OPC_CheckPatternPredicate, 0,
6120  OPC_CheckComplexPat, /*CP*/3, /*#*/1,
6121  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SLL_W), 0,
6122                MVT::i64, 2, 0, 2,
6123 15, TARGET_VAL(LoongArchISD::SRA_W),
6124  OPC_RecordChild0,
6125  OPC_RecordChild1,
6126  OPC_CheckPatternPredicate, 0,
6127  OPC_CheckComplexPat, /*CP*/3, /*#*/1,
6128  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRA_W), 0,
6129                MVT::i64, 2, 0, 2,
6130 15, TARGET_VAL(LoongArchISD::SRL_W),
6131  OPC_RecordChild0,
6132  OPC_RecordChild1,
6133  OPC_CheckPatternPredicate, 0,
6134  OPC_CheckComplexPat, /*CP*/3, /*#*/1,
6135  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SRL_W), 0,
6136                MVT::i64, 2, 0, 2,
6137 91, TARGET_VAL(LoongArchISD::CALL),
6138  OPC_RecordNode,
6139  OPC_CaptureGlueInput,
6140  OPC_RecordChild1,
6141  OPC_Scope, 61,
6142   OPC_MoveChild1,
6143   OPC_SwitchOpcode , 26, TARGET_VAL(ISD::TargetGlobalAddress),
6144    OPC_SwitchType , 10, MVT::i64,
6145     OPC_MoveParent,
6146     OPC_CheckPatternPredicate, 4,
6147     OPC_EmitMergeInputChains1_0,
6148     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6149                   1, 1,
6150    10, MVT::i32,
6151     OPC_MoveParent,
6152     OPC_CheckPatternPredicate, 5,
6153     OPC_EmitMergeInputChains1_0,
6154     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6155                   1, 1,
6156    0,
6157   26, TARGET_VAL(ISD::TargetExternalSymbol),
6158    OPC_SwitchType , 10, MVT::i64,
6159     OPC_MoveParent,
6160     OPC_CheckPatternPredicate, 4,
6161     OPC_EmitMergeInputChains1_0,
6162     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6163                   1, 1,
6164    10, MVT::i32,
6165     OPC_MoveParent,
6166     OPC_CheckPatternPredicate, 5,
6167     OPC_EmitMergeInputChains1_0,
6168     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6169                   1, 1,
6170    0,
6171   0,
6172  11,
6173   OPC_CheckChild1Type, MVT::i64,
6174   OPC_CheckPatternPredicate, 4,
6175   OPC_EmitMergeInputChains1_0,
6176   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALLIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6177                 1, 1,
6178  11,
6179   OPC_CheckChild1Type, MVT::i32,
6180   OPC_CheckPatternPredicate, 5,
6181   OPC_EmitMergeInputChains1_0,
6182   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoCALLIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6183                 1, 1,
6184  0,
6185 91, TARGET_VAL(LoongArchISD::TAIL),
6186  OPC_RecordNode,
6187  OPC_CaptureGlueInput,
6188  OPC_RecordChild1,
6189  OPC_Scope, 61,
6190   OPC_MoveChild1,
6191   OPC_SwitchOpcode , 26, TARGET_VAL(ISD::TargetGlobalAddress),
6192    OPC_SwitchType , 10, MVT::i64,
6193     OPC_MoveParent,
6194     OPC_CheckPatternPredicate, 4,
6195     OPC_EmitMergeInputChains1_0,
6196     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6197                   1, 1,
6198    10, MVT::i32,
6199     OPC_MoveParent,
6200     OPC_CheckPatternPredicate, 5,
6201     OPC_EmitMergeInputChains1_0,
6202     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6203                   1, 1,
6204    0,
6205   26, TARGET_VAL(ISD::TargetExternalSymbol),
6206    OPC_SwitchType , 10, MVT::i64,
6207     OPC_MoveParent,
6208     OPC_CheckPatternPredicate, 4,
6209     OPC_EmitMergeInputChains1_0,
6210     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6211                   1, 1,
6212    10, MVT::i32,
6213     OPC_MoveParent,
6214     OPC_CheckPatternPredicate, 5,
6215     OPC_EmitMergeInputChains1_0,
6216     OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAIL), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6217                   1, 1,
6218    0,
6219   0,
6220  11,
6221   OPC_CheckChild1Type, MVT::i64,
6222   OPC_CheckPatternPredicate, 4,
6223   OPC_EmitMergeInputChains1_0,
6224   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAILIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6225                 1, 1,
6226  11,
6227   OPC_CheckChild1Type, MVT::i32,
6228   OPC_CheckPatternPredicate, 5,
6229   OPC_EmitMergeInputChains1_0,
6230   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoTAILIndirect), 0|OPFL_Chain|OPFL_GlueInput|OPFL_GlueOutput|OPFL_Variadic1,
6231                 1, 1,
6232  0,
6233 5|128,1, TARGET_VAL(ISD::BSWAP),
6234  OPC_Scope, 56,
6235   OPC_MoveChild0,
6236   OPC_CheckOpcode, TARGET_VAL(ISD::BITREVERSE),
6237   OPC_RecordChild0,
6238   OPC_MoveParent,
6239   OPC_SwitchType , 22, MVT::i64,
6240    OPC_Scope, 9,
6241     OPC_CheckPatternPredicate, 1,
6242     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
6243                   MVT::i64, 1, 0,
6244    9,
6245     OPC_CheckPatternPredicate, 0,
6246     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_8B), 0,
6247                   MVT::i64, 1, 0,
6248    0,
6249   22, MVT::i32,
6250    OPC_Scope, 9,
6251     OPC_CheckPatternPredicate, 2,
6252     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
6253                   MVT::i32, 1, 0,
6254    9,
6255     OPC_CheckPatternPredicate, 3,
6256     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_8B), 0,
6257                   MVT::i32, 1, 0,
6258    0,
6259   0,
6260  73,
6261   OPC_RecordChild0,
6262   OPC_SwitchType , 33, MVT::i64,
6263    OPC_Scope, 9,
6264     OPC_CheckPatternPredicate, 0,
6265     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_D), 0,
6266                   MVT::i64, 1, 0,
6267    20,
6268     OPC_CheckPatternPredicate, 1,
6269     OPC_EmitNode1, TARGET_VAL(LoongArch::REVB_2H), 0,
6270                   MVT::i64, 1, 0,
6271     OPC_EmitInteger, MVT::i64, 32,
6272     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
6273                   MVT::i64, 2, 1, 2,
6274    0,
6275   33, MVT::i32,
6276    OPC_Scope, 9,
6277     OPC_CheckPatternPredicate, 3,
6278     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_D), 0,
6279                   MVT::i32, 1, 0,
6280    20,
6281     OPC_CheckPatternPredicate, 2,
6282     OPC_EmitNode1, TARGET_VAL(LoongArch::REVB_2H), 0,
6283                   MVT::i32, 1, 0,
6284     OPC_EmitInteger, MVT::i32, 32,
6285     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTRI_W), 0,
6286                   MVT::i32, 2, 1, 2,
6287    0,
6288   0,
6289  0,
6290 111, TARGET_VAL(ISD::BITREVERSE),
6291  OPC_Scope, 56,
6292   OPC_MoveChild0,
6293   OPC_CheckOpcode, TARGET_VAL(ISD::BSWAP),
6294   OPC_RecordChild0,
6295   OPC_MoveParent,
6296   OPC_SwitchType , 22, MVT::i64,
6297    OPC_Scope, 9,
6298     OPC_CheckPatternPredicate, 1,
6299     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
6300                   MVT::i64, 1, 0,
6301    9,
6302     OPC_CheckPatternPredicate, 0,
6303     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_8B), 0,
6304                   MVT::i64, 1, 0,
6305    0,
6306   22, MVT::i32,
6307    OPC_Scope, 9,
6308     OPC_CheckPatternPredicate, 2,
6309     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
6310                   MVT::i32, 1, 0,
6311    9,
6312     OPC_CheckPatternPredicate, 3,
6313     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_8B), 0,
6314                   MVT::i32, 1, 0,
6315    0,
6316   0,
6317  51,
6318   OPC_RecordChild0,
6319   OPC_SwitchType , 22, MVT::i64,
6320    OPC_Scope, 9,
6321     OPC_CheckPatternPredicate, 1,
6322     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_W), 0,
6323                   MVT::i64, 1, 0,
6324    9,
6325     OPC_CheckPatternPredicate, 0,
6326     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_D), 0,
6327                   MVT::i64, 1, 0,
6328    0,
6329   22, MVT::i32,
6330    OPC_Scope, 9,
6331     OPC_CheckPatternPredicate, 2,
6332     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_W), 0,
6333                   MVT::i32, 1, 0,
6334    9,
6335     OPC_CheckPatternPredicate, 3,
6336     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_D), 0,
6337                   MVT::i32, 1, 0,
6338    0,
6339   0,
6340  0,
6341 37|128,3, TARGET_VAL(ISD::ATOMIC_LOAD_NAND),
6342  OPC_RecordMemRef,
6343  OPC_RecordNode,
6344  OPC_RecordChild1,
6345  OPC_SwitchType , 77|128,1, MVT::i64,
6346   OPC_CheckChild1Type, MVT::i64,
6347   OPC_RecordChild2,
6348   OPC_Scope, 99,
6349    OPC_CheckPredicate, 20,
6350    OPC_Scope, 18,
6351     OPC_CheckPredicate, 29,
6352     OPC_CheckPatternPredicate, 0,
6353     OPC_EmitMergeInputChains1_0,
6354     OPC_EmitInteger, MVT::i64, 4,
6355     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6356                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6357    18,
6358     OPC_CheckPredicate, 30,
6359     OPC_CheckPatternPredicate, 0,
6360     OPC_EmitMergeInputChains1_0,
6361     OPC_EmitInteger, MVT::i64, 8,
6362     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6363                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6364    18,
6365     OPC_CheckPredicate, 31,
6366     OPC_CheckPatternPredicate, 0,
6367     OPC_EmitMergeInputChains1_0,
6368     OPC_EmitInteger, MVT::i64, 10,
6369     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6370                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6371    18,
6372     OPC_CheckPredicate, 32,
6373     OPC_CheckPatternPredicate, 0,
6374     OPC_EmitMergeInputChains1_0,
6375     OPC_EmitInteger, MVT::i64, 12,
6376     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6377                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6378    18,
6379     OPC_CheckPredicate, 33,
6380     OPC_CheckPatternPredicate, 0,
6381     OPC_EmitMergeInputChains1_0,
6382     OPC_EmitInteger, MVT::i64, 14,
6383     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6384                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6385    0,
6386   99,
6387    OPC_CheckPredicate, 12,
6388    OPC_Scope, 18,
6389     OPC_CheckPredicate, 29,
6390     OPC_CheckPatternPredicate, 4,
6391     OPC_EmitMergeInputChains1_0,
6392     OPC_EmitInteger, MVT::i64, 4,
6393     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6394                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6395    18,
6396     OPC_CheckPredicate, 30,
6397     OPC_CheckPatternPredicate, 4,
6398     OPC_EmitMergeInputChains1_0,
6399     OPC_EmitInteger, MVT::i64, 8,
6400     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6401                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6402    18,
6403     OPC_CheckPredicate, 31,
6404     OPC_CheckPatternPredicate, 4,
6405     OPC_EmitMergeInputChains1_0,
6406     OPC_EmitInteger, MVT::i64, 10,
6407     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6408                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6409    18,
6410     OPC_CheckPredicate, 32,
6411     OPC_CheckPatternPredicate, 4,
6412     OPC_EmitMergeInputChains1_0,
6413     OPC_EmitInteger, MVT::i64, 12,
6414     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6415                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6416    18,
6417     OPC_CheckPredicate, 33,
6418     OPC_CheckPatternPredicate, 4,
6419     OPC_EmitMergeInputChains1_0,
6420     OPC_EmitInteger, MVT::i64, 14,
6421     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6422                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6423    0,
6424   0,
6425  77|128,1, MVT::i32,
6426   OPC_CheckChild1Type, MVT::i32,
6427   OPC_RecordChild2,
6428   OPC_Scope, 99,
6429    OPC_CheckPredicate, 20,
6430    OPC_Scope, 18,
6431     OPC_CheckPredicate, 29,
6432     OPC_CheckPatternPredicate, 3,
6433     OPC_EmitMergeInputChains1_0,
6434     OPC_EmitInteger, MVT::i32, 4,
6435     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6436                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6437    18,
6438     OPC_CheckPredicate, 30,
6439     OPC_CheckPatternPredicate, 3,
6440     OPC_EmitMergeInputChains1_0,
6441     OPC_EmitInteger, MVT::i32, 8,
6442     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6443                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6444    18,
6445     OPC_CheckPredicate, 31,
6446     OPC_CheckPatternPredicate, 3,
6447     OPC_EmitMergeInputChains1_0,
6448     OPC_EmitInteger, MVT::i32, 10,
6449     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6450                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6451    18,
6452     OPC_CheckPredicate, 32,
6453     OPC_CheckPatternPredicate, 3,
6454     OPC_EmitMergeInputChains1_0,
6455     OPC_EmitInteger, MVT::i32, 12,
6456     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6457                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6458    18,
6459     OPC_CheckPredicate, 33,
6460     OPC_CheckPatternPredicate, 3,
6461     OPC_EmitMergeInputChains1_0,
6462     OPC_EmitInteger, MVT::i32, 14,
6463     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand64), 0|OPFL_Chain|OPFL_MemRefs,
6464                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6465    0,
6466   99,
6467    OPC_CheckPredicate, 12,
6468    OPC_Scope, 18,
6469     OPC_CheckPredicate, 29,
6470     OPC_CheckPatternPredicate, 5,
6471     OPC_EmitMergeInputChains1_0,
6472     OPC_EmitInteger, MVT::i32, 4,
6473     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6474                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6475    18,
6476     OPC_CheckPredicate, 30,
6477     OPC_CheckPatternPredicate, 5,
6478     OPC_EmitMergeInputChains1_0,
6479     OPC_EmitInteger, MVT::i32, 8,
6480     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6481                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6482    18,
6483     OPC_CheckPredicate, 31,
6484     OPC_CheckPatternPredicate, 5,
6485     OPC_EmitMergeInputChains1_0,
6486     OPC_EmitInteger, MVT::i32, 10,
6487     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6488                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6489    18,
6490     OPC_CheckPredicate, 32,
6491     OPC_CheckPatternPredicate, 5,
6492     OPC_EmitMergeInputChains1_0,
6493     OPC_EmitInteger, MVT::i32, 12,
6494     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6495                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6496    18,
6497     OPC_CheckPredicate, 33,
6498     OPC_CheckPatternPredicate, 5,
6499     OPC_EmitMergeInputChains1_0,
6500     OPC_EmitInteger, MVT::i32, 14,
6501     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadNand32), 0|OPFL_Chain|OPFL_MemRefs,
6502                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6503    0,
6504   0,
6505  0,
6506 21|128,2, TARGET_VAL(ISD::ATOMIC_SWAP),
6507  OPC_RecordMemRef,
6508  OPC_RecordNode,
6509  OPC_RecordChild1,
6510  OPC_SwitchType , 5|128,1, MVT::i64,
6511   OPC_CheckChild1Type, MVT::i64,
6512   OPC_RecordChild2,
6513   OPC_Scope, 13,
6514    OPC_CheckPredicate, 12,
6515    OPC_CheckPatternPredicate, 0,
6516    OPC_EmitMergeInputChains1_0,
6517    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMSWAP_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
6518                  MVT::i64, 2, 2, 1,
6519   13,
6520    OPC_CheckPredicate, 20,
6521    OPC_CheckPatternPredicate, 0,
6522    OPC_EmitMergeInputChains1_0,
6523    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMSWAP_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
6524                  MVT::i64, 2, 2, 1,
6525   99,
6526    OPC_CheckPredicate, 12,
6527    OPC_Scope, 18,
6528     OPC_CheckPredicate, 29,
6529     OPC_CheckPatternPredicate, 1,
6530     OPC_EmitMergeInputChains1_0,
6531     OPC_EmitInteger, MVT::i64, 4,
6532     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6533                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6534    18,
6535     OPC_CheckPredicate, 30,
6536     OPC_CheckPatternPredicate, 1,
6537     OPC_EmitMergeInputChains1_0,
6538     OPC_EmitInteger, MVT::i64, 8,
6539     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6540                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6541    18,
6542     OPC_CheckPredicate, 31,
6543     OPC_CheckPatternPredicate, 1,
6544     OPC_EmitMergeInputChains1_0,
6545     OPC_EmitInteger, MVT::i64, 10,
6546     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6547                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6548    18,
6549     OPC_CheckPredicate, 32,
6550     OPC_CheckPatternPredicate, 1,
6551     OPC_EmitMergeInputChains1_0,
6552     OPC_EmitInteger, MVT::i64, 12,
6553     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6554                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6555    18,
6556     OPC_CheckPredicate, 33,
6557     OPC_CheckPatternPredicate, 1,
6558     OPC_EmitMergeInputChains1_0,
6559     OPC_EmitInteger, MVT::i64, 14,
6560     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6561                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6562    0,
6563   0,
6564  5|128,1, MVT::i32,
6565   OPC_CheckChild1Type, MVT::i32,
6566   OPC_RecordChild2,
6567   OPC_Scope, 13,
6568    OPC_CheckPredicate, 12,
6569    OPC_CheckPatternPredicate, 3,
6570    OPC_EmitMergeInputChains1_0,
6571    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMSWAP_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
6572                  MVT::i32, 2, 2, 1,
6573   13,
6574    OPC_CheckPredicate, 20,
6575    OPC_CheckPatternPredicate, 3,
6576    OPC_EmitMergeInputChains1_0,
6577    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMSWAP_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
6578                  MVT::i32, 2, 2, 1,
6579   99,
6580    OPC_CheckPredicate, 12,
6581    OPC_Scope, 18,
6582     OPC_CheckPredicate, 29,
6583     OPC_CheckPatternPredicate, 2,
6584     OPC_EmitMergeInputChains1_0,
6585     OPC_EmitInteger, MVT::i32, 4,
6586     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6587                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6588    18,
6589     OPC_CheckPredicate, 30,
6590     OPC_CheckPatternPredicate, 2,
6591     OPC_EmitMergeInputChains1_0,
6592     OPC_EmitInteger, MVT::i32, 8,
6593     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6594                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6595    18,
6596     OPC_CheckPredicate, 31,
6597     OPC_CheckPatternPredicate, 2,
6598     OPC_EmitMergeInputChains1_0,
6599     OPC_EmitInteger, MVT::i32, 10,
6600     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6601                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6602    18,
6603     OPC_CheckPredicate, 32,
6604     OPC_CheckPatternPredicate, 2,
6605     OPC_EmitMergeInputChains1_0,
6606     OPC_EmitInteger, MVT::i32, 12,
6607     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6608                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6609    18,
6610     OPC_CheckPredicate, 33,
6611     OPC_CheckPatternPredicate, 2,
6612     OPC_EmitMergeInputChains1_0,
6613     OPC_EmitInteger, MVT::i32, 14,
6614     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicSwap32), 0|OPFL_Chain|OPFL_MemRefs,
6615                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6616    0,
6617   0,
6618  0,
6619 17|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_ADD),
6620  OPC_RecordMemRef,
6621  OPC_RecordNode,
6622  OPC_RecordChild1,
6623  OPC_SwitchType , 3|128,1, MVT::i64,
6624   OPC_CheckChild1Type, MVT::i64,
6625   OPC_RecordChild2,
6626   OPC_Scope, 13,
6627    OPC_CheckPredicate, 20,
6628    OPC_CheckPatternPredicate, 0,
6629    OPC_EmitMergeInputChains1_0,
6630    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
6631                  MVT::i64, 2, 2, 1,
6632   111,
6633    OPC_CheckPredicate, 12,
6634    OPC_Scope, 11,
6635     OPC_CheckPatternPredicate, 0,
6636     OPC_EmitMergeInputChains1_0,
6637     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
6638                   MVT::i64, 2, 2, 1,
6639    18,
6640     OPC_CheckPredicate, 29,
6641     OPC_CheckPatternPredicate, 1,
6642     OPC_EmitMergeInputChains1_0,
6643     OPC_EmitInteger, MVT::i64, 4,
6644     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6645                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6646    18,
6647     OPC_CheckPredicate, 30,
6648     OPC_CheckPatternPredicate, 1,
6649     OPC_EmitMergeInputChains1_0,
6650     OPC_EmitInteger, MVT::i64, 8,
6651     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6652                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6653    18,
6654     OPC_CheckPredicate, 31,
6655     OPC_CheckPatternPredicate, 1,
6656     OPC_EmitMergeInputChains1_0,
6657     OPC_EmitInteger, MVT::i64, 10,
6658     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6659                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6660    18,
6661     OPC_CheckPredicate, 32,
6662     OPC_CheckPatternPredicate, 1,
6663     OPC_EmitMergeInputChains1_0,
6664     OPC_EmitInteger, MVT::i64, 12,
6665     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6666                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6667    18,
6668     OPC_CheckPredicate, 33,
6669     OPC_CheckPatternPredicate, 1,
6670     OPC_EmitMergeInputChains1_0,
6671     OPC_EmitInteger, MVT::i64, 14,
6672     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6673                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6674    0,
6675   0,
6676  3|128,1, MVT::i32,
6677   OPC_CheckChild1Type, MVT::i32,
6678   OPC_RecordChild2,
6679   OPC_Scope, 13,
6680    OPC_CheckPredicate, 20,
6681    OPC_CheckPatternPredicate, 3,
6682    OPC_EmitMergeInputChains1_0,
6683    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
6684                  MVT::i32, 2, 2, 1,
6685   111,
6686    OPC_CheckPredicate, 12,
6687    OPC_Scope, 11,
6688     OPC_CheckPatternPredicate, 3,
6689     OPC_EmitMergeInputChains1_0,
6690     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
6691                   MVT::i32, 2, 2, 1,
6692    18,
6693     OPC_CheckPredicate, 29,
6694     OPC_CheckPatternPredicate, 2,
6695     OPC_EmitMergeInputChains1_0,
6696     OPC_EmitInteger, MVT::i32, 4,
6697     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6698                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6699    18,
6700     OPC_CheckPredicate, 30,
6701     OPC_CheckPatternPredicate, 2,
6702     OPC_EmitMergeInputChains1_0,
6703     OPC_EmitInteger, MVT::i32, 8,
6704     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6705                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6706    18,
6707     OPC_CheckPredicate, 31,
6708     OPC_CheckPatternPredicate, 2,
6709     OPC_EmitMergeInputChains1_0,
6710     OPC_EmitInteger, MVT::i32, 10,
6711     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6712                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6713    18,
6714     OPC_CheckPredicate, 32,
6715     OPC_CheckPatternPredicate, 2,
6716     OPC_EmitMergeInputChains1_0,
6717     OPC_EmitInteger, MVT::i32, 12,
6718     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6719                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6720    18,
6721     OPC_CheckPredicate, 33,
6722     OPC_CheckPatternPredicate, 2,
6723     OPC_EmitMergeInputChains1_0,
6724     OPC_EmitInteger, MVT::i32, 14,
6725     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAdd32), 0|OPFL_Chain|OPFL_MemRefs,
6726                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6727    0,
6728   0,
6729  0,
6730 21|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_AND),
6731  OPC_RecordMemRef,
6732  OPC_RecordNode,
6733  OPC_RecordChild1,
6734  OPC_SwitchType , 5|128,1, MVT::i64,
6735   OPC_CheckChild1Type, MVT::i64,
6736   OPC_RecordChild2,
6737   OPC_Scope, 13,
6738    OPC_CheckPredicate, 12,
6739    OPC_CheckPatternPredicate, 0,
6740    OPC_EmitMergeInputChains1_0,
6741    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMAND_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
6742                  MVT::i64, 2, 2, 1,
6743   13,
6744    OPC_CheckPredicate, 20,
6745    OPC_CheckPatternPredicate, 0,
6746    OPC_EmitMergeInputChains1_0,
6747    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMAND_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
6748                  MVT::i64, 2, 2, 1,
6749   99,
6750    OPC_CheckPredicate, 12,
6751    OPC_Scope, 18,
6752     OPC_CheckPredicate, 29,
6753     OPC_CheckPatternPredicate, 1,
6754     OPC_EmitMergeInputChains1_0,
6755     OPC_EmitInteger, MVT::i64, 4,
6756     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6757                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6758    18,
6759     OPC_CheckPredicate, 30,
6760     OPC_CheckPatternPredicate, 1,
6761     OPC_EmitMergeInputChains1_0,
6762     OPC_EmitInteger, MVT::i64, 8,
6763     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6764                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6765    18,
6766     OPC_CheckPredicate, 31,
6767     OPC_CheckPatternPredicate, 1,
6768     OPC_EmitMergeInputChains1_0,
6769     OPC_EmitInteger, MVT::i64, 10,
6770     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6771                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6772    18,
6773     OPC_CheckPredicate, 32,
6774     OPC_CheckPatternPredicate, 1,
6775     OPC_EmitMergeInputChains1_0,
6776     OPC_EmitInteger, MVT::i64, 12,
6777     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6778                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6779    18,
6780     OPC_CheckPredicate, 33,
6781     OPC_CheckPatternPredicate, 1,
6782     OPC_EmitMergeInputChains1_0,
6783     OPC_EmitInteger, MVT::i64, 14,
6784     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6785                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6786    0,
6787   0,
6788  5|128,1, MVT::i32,
6789   OPC_CheckChild1Type, MVT::i32,
6790   OPC_RecordChild2,
6791   OPC_Scope, 13,
6792    OPC_CheckPredicate, 12,
6793    OPC_CheckPatternPredicate, 3,
6794    OPC_EmitMergeInputChains1_0,
6795    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMAND_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
6796                  MVT::i32, 2, 2, 1,
6797   13,
6798    OPC_CheckPredicate, 20,
6799    OPC_CheckPatternPredicate, 3,
6800    OPC_EmitMergeInputChains1_0,
6801    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMAND_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
6802                  MVT::i32, 2, 2, 1,
6803   99,
6804    OPC_CheckPredicate, 12,
6805    OPC_Scope, 18,
6806     OPC_CheckPredicate, 29,
6807     OPC_CheckPatternPredicate, 2,
6808     OPC_EmitMergeInputChains1_0,
6809     OPC_EmitInteger, MVT::i32, 4,
6810     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6811                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6812    18,
6813     OPC_CheckPredicate, 30,
6814     OPC_CheckPatternPredicate, 2,
6815     OPC_EmitMergeInputChains1_0,
6816     OPC_EmitInteger, MVT::i32, 8,
6817     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6818                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6819    18,
6820     OPC_CheckPredicate, 31,
6821     OPC_CheckPatternPredicate, 2,
6822     OPC_EmitMergeInputChains1_0,
6823     OPC_EmitInteger, MVT::i32, 10,
6824     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6825                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6826    18,
6827     OPC_CheckPredicate, 32,
6828     OPC_CheckPatternPredicate, 2,
6829     OPC_EmitMergeInputChains1_0,
6830     OPC_EmitInteger, MVT::i32, 12,
6831     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6832                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6833    18,
6834     OPC_CheckPredicate, 33,
6835     OPC_CheckPatternPredicate, 2,
6836     OPC_EmitMergeInputChains1_0,
6837     OPC_EmitInteger, MVT::i32, 14,
6838     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadAnd32), 0|OPFL_Chain|OPFL_MemRefs,
6839                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6840    0,
6841   0,
6842  0,
6843 21|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_OR),
6844  OPC_RecordMemRef,
6845  OPC_RecordNode,
6846  OPC_RecordChild1,
6847  OPC_SwitchType , 5|128,1, MVT::i64,
6848   OPC_CheckChild1Type, MVT::i64,
6849   OPC_RecordChild2,
6850   OPC_Scope, 13,
6851    OPC_CheckPredicate, 12,
6852    OPC_CheckPatternPredicate, 0,
6853    OPC_EmitMergeInputChains1_0,
6854    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMOR_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
6855                  MVT::i64, 2, 2, 1,
6856   13,
6857    OPC_CheckPredicate, 20,
6858    OPC_CheckPatternPredicate, 0,
6859    OPC_EmitMergeInputChains1_0,
6860    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMOR_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
6861                  MVT::i64, 2, 2, 1,
6862   99,
6863    OPC_CheckPredicate, 12,
6864    OPC_Scope, 18,
6865     OPC_CheckPredicate, 29,
6866     OPC_CheckPatternPredicate, 1,
6867     OPC_EmitMergeInputChains1_0,
6868     OPC_EmitInteger, MVT::i64, 4,
6869     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6870                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6871    18,
6872     OPC_CheckPredicate, 30,
6873     OPC_CheckPatternPredicate, 1,
6874     OPC_EmitMergeInputChains1_0,
6875     OPC_EmitInteger, MVT::i64, 8,
6876     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6877                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6878    18,
6879     OPC_CheckPredicate, 31,
6880     OPC_CheckPatternPredicate, 1,
6881     OPC_EmitMergeInputChains1_0,
6882     OPC_EmitInteger, MVT::i64, 10,
6883     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6884                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6885    18,
6886     OPC_CheckPredicate, 32,
6887     OPC_CheckPatternPredicate, 1,
6888     OPC_EmitMergeInputChains1_0,
6889     OPC_EmitInteger, MVT::i64, 12,
6890     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6891                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6892    18,
6893     OPC_CheckPredicate, 33,
6894     OPC_CheckPatternPredicate, 1,
6895     OPC_EmitMergeInputChains1_0,
6896     OPC_EmitInteger, MVT::i64, 14,
6897     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6898                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6899    0,
6900   0,
6901  5|128,1, MVT::i32,
6902   OPC_CheckChild1Type, MVT::i32,
6903   OPC_RecordChild2,
6904   OPC_Scope, 13,
6905    OPC_CheckPredicate, 12,
6906    OPC_CheckPatternPredicate, 3,
6907    OPC_EmitMergeInputChains1_0,
6908    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMOR_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
6909                  MVT::i32, 2, 2, 1,
6910   13,
6911    OPC_CheckPredicate, 20,
6912    OPC_CheckPatternPredicate, 3,
6913    OPC_EmitMergeInputChains1_0,
6914    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMOR_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
6915                  MVT::i32, 2, 2, 1,
6916   99,
6917    OPC_CheckPredicate, 12,
6918    OPC_Scope, 18,
6919     OPC_CheckPredicate, 29,
6920     OPC_CheckPatternPredicate, 2,
6921     OPC_EmitMergeInputChains1_0,
6922     OPC_EmitInteger, MVT::i32, 4,
6923     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6924                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6925    18,
6926     OPC_CheckPredicate, 30,
6927     OPC_CheckPatternPredicate, 2,
6928     OPC_EmitMergeInputChains1_0,
6929     OPC_EmitInteger, MVT::i32, 8,
6930     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6931                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6932    18,
6933     OPC_CheckPredicate, 31,
6934     OPC_CheckPatternPredicate, 2,
6935     OPC_EmitMergeInputChains1_0,
6936     OPC_EmitInteger, MVT::i32, 10,
6937     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6938                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6939    18,
6940     OPC_CheckPredicate, 32,
6941     OPC_CheckPatternPredicate, 2,
6942     OPC_EmitMergeInputChains1_0,
6943     OPC_EmitInteger, MVT::i32, 12,
6944     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6945                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6946    18,
6947     OPC_CheckPredicate, 33,
6948     OPC_CheckPatternPredicate, 2,
6949     OPC_EmitMergeInputChains1_0,
6950     OPC_EmitInteger, MVT::i32, 14,
6951     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadOr32), 0|OPFL_Chain|OPFL_MemRefs,
6952                   MVT::i32, MVT::i32, 3, 1, 2, 3,
6953    0,
6954   0,
6955  0,
6956 21|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_XOR),
6957  OPC_RecordMemRef,
6958  OPC_RecordNode,
6959  OPC_RecordChild1,
6960  OPC_SwitchType , 5|128,1, MVT::i64,
6961   OPC_CheckChild1Type, MVT::i64,
6962   OPC_RecordChild2,
6963   OPC_Scope, 13,
6964    OPC_CheckPredicate, 12,
6965    OPC_CheckPatternPredicate, 0,
6966    OPC_EmitMergeInputChains1_0,
6967    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMXOR_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
6968                  MVT::i64, 2, 2, 1,
6969   13,
6970    OPC_CheckPredicate, 20,
6971    OPC_CheckPatternPredicate, 0,
6972    OPC_EmitMergeInputChains1_0,
6973    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMXOR_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
6974                  MVT::i64, 2, 2, 1,
6975   99,
6976    OPC_CheckPredicate, 12,
6977    OPC_Scope, 18,
6978     OPC_CheckPredicate, 29,
6979     OPC_CheckPatternPredicate, 1,
6980     OPC_EmitMergeInputChains1_0,
6981     OPC_EmitInteger, MVT::i64, 4,
6982     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
6983                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6984    18,
6985     OPC_CheckPredicate, 30,
6986     OPC_CheckPatternPredicate, 1,
6987     OPC_EmitMergeInputChains1_0,
6988     OPC_EmitInteger, MVT::i64, 8,
6989     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
6990                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6991    18,
6992     OPC_CheckPredicate, 31,
6993     OPC_CheckPatternPredicate, 1,
6994     OPC_EmitMergeInputChains1_0,
6995     OPC_EmitInteger, MVT::i64, 10,
6996     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
6997                   MVT::i64, MVT::i64, 3, 1, 2, 3,
6998    18,
6999     OPC_CheckPredicate, 32,
7000     OPC_CheckPatternPredicate, 1,
7001     OPC_EmitMergeInputChains1_0,
7002     OPC_EmitInteger, MVT::i64, 12,
7003     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
7004                   MVT::i64, MVT::i64, 3, 1, 2, 3,
7005    18,
7006     OPC_CheckPredicate, 33,
7007     OPC_CheckPatternPredicate, 1,
7008     OPC_EmitMergeInputChains1_0,
7009     OPC_EmitInteger, MVT::i64, 14,
7010     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
7011                   MVT::i64, MVT::i64, 3, 1, 2, 3,
7012    0,
7013   0,
7014  5|128,1, MVT::i32,
7015   OPC_CheckChild1Type, MVT::i32,
7016   OPC_RecordChild2,
7017   OPC_Scope, 13,
7018    OPC_CheckPredicate, 12,
7019    OPC_CheckPatternPredicate, 3,
7020    OPC_EmitMergeInputChains1_0,
7021    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMXOR_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
7022                  MVT::i32, 2, 2, 1,
7023   13,
7024    OPC_CheckPredicate, 20,
7025    OPC_CheckPatternPredicate, 3,
7026    OPC_EmitMergeInputChains1_0,
7027    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMXOR_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
7028                  MVT::i32, 2, 2, 1,
7029   99,
7030    OPC_CheckPredicate, 12,
7031    OPC_Scope, 18,
7032     OPC_CheckPredicate, 29,
7033     OPC_CheckPatternPredicate, 2,
7034     OPC_EmitMergeInputChains1_0,
7035     OPC_EmitInteger, MVT::i32, 4,
7036     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
7037                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7038    18,
7039     OPC_CheckPredicate, 30,
7040     OPC_CheckPatternPredicate, 2,
7041     OPC_EmitMergeInputChains1_0,
7042     OPC_EmitInteger, MVT::i32, 8,
7043     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
7044                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7045    18,
7046     OPC_CheckPredicate, 31,
7047     OPC_CheckPatternPredicate, 2,
7048     OPC_EmitMergeInputChains1_0,
7049     OPC_EmitInteger, MVT::i32, 10,
7050     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
7051                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7052    18,
7053     OPC_CheckPredicate, 32,
7054     OPC_CheckPatternPredicate, 2,
7055     OPC_EmitMergeInputChains1_0,
7056     OPC_EmitInteger, MVT::i32, 12,
7057     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
7058                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7059    18,
7060     OPC_CheckPredicate, 33,
7061     OPC_CheckPatternPredicate, 2,
7062     OPC_EmitMergeInputChains1_0,
7063     OPC_EmitInteger, MVT::i32, 14,
7064     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadXor32), 0|OPFL_Chain|OPFL_MemRefs,
7065                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7066    0,
7067   0,
7068  0,
7069 75, TARGET_VAL(ISD::ATOMIC_LOAD_UMIN),
7070  OPC_RecordMemRef,
7071  OPC_RecordNode,
7072  OPC_RecordChild1,
7073  OPC_SwitchType , 33, MVT::i64,
7074   OPC_CheckChild1Type, MVT::i64,
7075   OPC_RecordChild2,
7076   OPC_Scope, 13,
7077    OPC_CheckPredicate, 12,
7078    OPC_CheckPatternPredicate, 0,
7079    OPC_EmitMergeInputChains1_0,
7080    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_WU), 0|OPFL_Chain|OPFL_MemRefs,
7081                  MVT::i64, 2, 2, 1,
7082   13,
7083    OPC_CheckPredicate, 20,
7084    OPC_CheckPatternPredicate, 0,
7085    OPC_EmitMergeInputChains1_0,
7086    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_DU), 0|OPFL_Chain|OPFL_MemRefs,
7087                  MVT::i64, 2, 2, 1,
7088   0,
7089  33, MVT::i32,
7090   OPC_CheckChild1Type, MVT::i32,
7091   OPC_RecordChild2,
7092   OPC_Scope, 13,
7093    OPC_CheckPredicate, 12,
7094    OPC_CheckPatternPredicate, 3,
7095    OPC_EmitMergeInputChains1_0,
7096    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_WU), 0|OPFL_Chain|OPFL_MemRefs,
7097                  MVT::i32, 2, 2, 1,
7098   13,
7099    OPC_CheckPredicate, 20,
7100    OPC_CheckPatternPredicate, 3,
7101    OPC_EmitMergeInputChains1_0,
7102    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_DU), 0|OPFL_Chain|OPFL_MemRefs,
7103                  MVT::i32, 2, 2, 1,
7104   0,
7105  0,
7106 75, TARGET_VAL(ISD::ATOMIC_LOAD_UMAX),
7107  OPC_RecordMemRef,
7108  OPC_RecordNode,
7109  OPC_RecordChild1,
7110  OPC_SwitchType , 33, MVT::i64,
7111   OPC_CheckChild1Type, MVT::i64,
7112   OPC_RecordChild2,
7113   OPC_Scope, 13,
7114    OPC_CheckPredicate, 12,
7115    OPC_CheckPatternPredicate, 0,
7116    OPC_EmitMergeInputChains1_0,
7117    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_WU), 0|OPFL_Chain|OPFL_MemRefs,
7118                  MVT::i64, 2, 2, 1,
7119   13,
7120    OPC_CheckPredicate, 20,
7121    OPC_CheckPatternPredicate, 0,
7122    OPC_EmitMergeInputChains1_0,
7123    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_DU), 0|OPFL_Chain|OPFL_MemRefs,
7124                  MVT::i64, 2, 2, 1,
7125   0,
7126  33, MVT::i32,
7127   OPC_CheckChild1Type, MVT::i32,
7128   OPC_RecordChild2,
7129   OPC_Scope, 13,
7130    OPC_CheckPredicate, 12,
7131    OPC_CheckPatternPredicate, 3,
7132    OPC_EmitMergeInputChains1_0,
7133    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_WU), 0|OPFL_Chain|OPFL_MemRefs,
7134                  MVT::i32, 2, 2, 1,
7135   13,
7136    OPC_CheckPredicate, 20,
7137    OPC_CheckPatternPredicate, 3,
7138    OPC_EmitMergeInputChains1_0,
7139    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_DU), 0|OPFL_Chain|OPFL_MemRefs,
7140                  MVT::i32, 2, 2, 1,
7141   0,
7142  0,
7143 75, TARGET_VAL(ISD::ATOMIC_LOAD_MIN),
7144  OPC_RecordMemRef,
7145  OPC_RecordNode,
7146  OPC_RecordChild1,
7147  OPC_SwitchType , 33, MVT::i64,
7148   OPC_CheckChild1Type, MVT::i64,
7149   OPC_RecordChild2,
7150   OPC_Scope, 13,
7151    OPC_CheckPredicate, 12,
7152    OPC_CheckPatternPredicate, 0,
7153    OPC_EmitMergeInputChains1_0,
7154    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
7155                  MVT::i64, 2, 2, 1,
7156   13,
7157    OPC_CheckPredicate, 20,
7158    OPC_CheckPatternPredicate, 0,
7159    OPC_EmitMergeInputChains1_0,
7160    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
7161                  MVT::i64, 2, 2, 1,
7162   0,
7163  33, MVT::i32,
7164   OPC_CheckChild1Type, MVT::i32,
7165   OPC_RecordChild2,
7166   OPC_Scope, 13,
7167    OPC_CheckPredicate, 12,
7168    OPC_CheckPatternPredicate, 3,
7169    OPC_EmitMergeInputChains1_0,
7170    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
7171                  MVT::i32, 2, 2, 1,
7172   13,
7173    OPC_CheckPredicate, 20,
7174    OPC_CheckPatternPredicate, 3,
7175    OPC_EmitMergeInputChains1_0,
7176    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMIN_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
7177                  MVT::i32, 2, 2, 1,
7178   0,
7179  0,
7180 75, TARGET_VAL(ISD::ATOMIC_LOAD_MAX),
7181  OPC_RecordMemRef,
7182  OPC_RecordNode,
7183  OPC_RecordChild1,
7184  OPC_SwitchType , 33, MVT::i64,
7185   OPC_CheckChild1Type, MVT::i64,
7186   OPC_RecordChild2,
7187   OPC_Scope, 13,
7188    OPC_CheckPredicate, 12,
7189    OPC_CheckPatternPredicate, 0,
7190    OPC_EmitMergeInputChains1_0,
7191    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
7192                  MVT::i64, 2, 2, 1,
7193   13,
7194    OPC_CheckPredicate, 20,
7195    OPC_CheckPatternPredicate, 0,
7196    OPC_EmitMergeInputChains1_0,
7197    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
7198                  MVT::i64, 2, 2, 1,
7199   0,
7200  33, MVT::i32,
7201   OPC_CheckChild1Type, MVT::i32,
7202   OPC_RecordChild2,
7203   OPC_Scope, 13,
7204    OPC_CheckPredicate, 12,
7205    OPC_CheckPatternPredicate, 3,
7206    OPC_EmitMergeInputChains1_0,
7207    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
7208                  MVT::i32, 2, 2, 1,
7209   13,
7210    OPC_CheckPredicate, 20,
7211    OPC_CheckPatternPredicate, 3,
7212    OPC_EmitMergeInputChains1_0,
7213    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMMAX_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
7214                  MVT::i32, 2, 2, 1,
7215   0,
7216  0,
7217 85, TARGET_VAL(ISD::ATOMIC_CMP_SWAP),
7218  OPC_RecordMemRef,
7219  OPC_RecordNode,
7220  OPC_RecordChild1,
7221  OPC_SwitchType , 38, MVT::i64,
7222   OPC_CheckChild1Type, MVT::i64,
7223   OPC_RecordChild2,
7224   OPC_RecordChild3,
7225   OPC_Scope, 15,
7226    OPC_CheckPredicate, 20,
7227    OPC_CheckPatternPredicate, 0,
7228    OPC_EmitMergeInputChains1_0,
7229    OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
7230                  MVT::i64, MVT::i64, 3, 1, 2, 3,
7231   15,
7232    OPC_CheckPredicate, 12,
7233    OPC_CheckPatternPredicate, 0,
7234    OPC_EmitMergeInputChains1_0,
7235    OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
7236                  MVT::i64, MVT::i64, 3, 1, 2, 3,
7237   0,
7238  38, MVT::i32,
7239   OPC_CheckChild1Type, MVT::i32,
7240   OPC_RecordChild2,
7241   OPC_RecordChild3,
7242   OPC_Scope, 15,
7243    OPC_CheckPredicate, 20,
7244    OPC_CheckPatternPredicate, 3,
7245    OPC_EmitMergeInputChains1_0,
7246    OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoCmpXchg64), 0|OPFL_Chain|OPFL_MemRefs,
7247                  MVT::i32, MVT::i32, 3, 1, 2, 3,
7248   15,
7249    OPC_CheckPredicate, 12,
7250    OPC_CheckPatternPredicate, 3,
7251    OPC_EmitMergeInputChains1_0,
7252    OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoCmpXchg32), 0|OPFL_Chain|OPFL_MemRefs,
7253                  MVT::i32, MVT::i32, 3, 1, 2, 3,
7254   0,
7255  0,
7256 61|128,2, TARGET_VAL(ISD::ATOMIC_LOAD_SUB),
7257  OPC_RecordMemRef,
7258  OPC_RecordNode,
7259  OPC_RecordChild1,
7260  OPC_SwitchType , 25|128,1, MVT::i64,
7261   OPC_CheckChild1Type, MVT::i64,
7262   OPC_RecordChild2,
7263   OPC_Scope, 122,
7264    OPC_CheckPredicate, 12,
7265    OPC_Scope, 18,
7266     OPC_CheckPredicate, 29,
7267     OPC_CheckPatternPredicate, 1,
7268     OPC_EmitMergeInputChains1_0,
7269     OPC_EmitInteger, MVT::i64, 4,
7270     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7271                   MVT::i64, MVT::i64, 3, 1, 2, 3,
7272    18,
7273     OPC_CheckPredicate, 30,
7274     OPC_CheckPatternPredicate, 1,
7275     OPC_EmitMergeInputChains1_0,
7276     OPC_EmitInteger, MVT::i64, 8,
7277     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7278                   MVT::i64, MVT::i64, 3, 1, 2, 3,
7279    18,
7280     OPC_CheckPredicate, 31,
7281     OPC_CheckPatternPredicate, 1,
7282     OPC_EmitMergeInputChains1_0,
7283     OPC_EmitInteger, MVT::i64, 10,
7284     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7285                   MVT::i64, MVT::i64, 3, 1, 2, 3,
7286    18,
7287     OPC_CheckPredicate, 32,
7288     OPC_CheckPatternPredicate, 1,
7289     OPC_EmitMergeInputChains1_0,
7290     OPC_EmitInteger, MVT::i64, 12,
7291     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7292                   MVT::i64, MVT::i64, 3, 1, 2, 3,
7293    18,
7294     OPC_CheckPredicate, 33,
7295     OPC_CheckPatternPredicate, 1,
7296     OPC_EmitMergeInputChains1_0,
7297     OPC_EmitInteger, MVT::i64, 14,
7298     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7299                   MVT::i64, MVT::i64, 3, 1, 2, 3,
7300    22,
7301     OPC_CheckPatternPredicate, 0,
7302     OPC_EmitMergeInputChains1_0,
7303     OPC_EmitRegister, MVT::i64, LoongArch::R0,
7304     OPC_EmitNode1, TARGET_VAL(LoongArch::SUB_W), 0,
7305                   MVT::i64, 2, 3, 2,
7306     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
7307                   MVT::i64, 2, 4, 1,
7308    0,
7309   24,
7310    OPC_CheckPredicate, 20,
7311    OPC_CheckPatternPredicate, 0,
7312    OPC_EmitMergeInputChains1_0,
7313    OPC_EmitRegister, MVT::i64, LoongArch::R0,
7314    OPC_EmitNode1, TARGET_VAL(LoongArch::SUB_D), 0,
7315                  MVT::i64, 2, 3, 2,
7316    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
7317                  MVT::i64, 2, 4, 1,
7318   0,
7319  25|128,1, MVT::i32,
7320   OPC_CheckChild1Type, MVT::i32,
7321   OPC_RecordChild2,
7322   OPC_Scope, 122,
7323    OPC_CheckPredicate, 12,
7324    OPC_Scope, 18,
7325     OPC_CheckPredicate, 29,
7326     OPC_CheckPatternPredicate, 2,
7327     OPC_EmitMergeInputChains1_0,
7328     OPC_EmitInteger, MVT::i32, 4,
7329     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7330                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7331    18,
7332     OPC_CheckPredicate, 30,
7333     OPC_CheckPatternPredicate, 2,
7334     OPC_EmitMergeInputChains1_0,
7335     OPC_EmitInteger, MVT::i32, 8,
7336     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7337                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7338    18,
7339     OPC_CheckPredicate, 31,
7340     OPC_CheckPatternPredicate, 2,
7341     OPC_EmitMergeInputChains1_0,
7342     OPC_EmitInteger, MVT::i32, 10,
7343     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7344                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7345    18,
7346     OPC_CheckPredicate, 32,
7347     OPC_CheckPatternPredicate, 2,
7348     OPC_EmitMergeInputChains1_0,
7349     OPC_EmitInteger, MVT::i32, 12,
7350     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7351                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7352    18,
7353     OPC_CheckPredicate, 33,
7354     OPC_CheckPatternPredicate, 2,
7355     OPC_EmitMergeInputChains1_0,
7356     OPC_EmitInteger, MVT::i32, 14,
7357     OPC_MorphNodeTo2, TARGET_VAL(LoongArch::PseudoAtomicLoadSub32), 0|OPFL_Chain|OPFL_MemRefs,
7358                   MVT::i32, MVT::i32, 3, 1, 2, 3,
7359    22,
7360     OPC_CheckPatternPredicate, 3,
7361     OPC_EmitMergeInputChains1_0,
7362     OPC_EmitRegister, MVT::i32, LoongArch::R0,
7363     OPC_EmitNode1, TARGET_VAL(LoongArch::SUB_W), 0,
7364                   MVT::i32, 2, 3, 2,
7365     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_W), 0|OPFL_Chain|OPFL_MemRefs,
7366                   MVT::i32, 2, 4, 1,
7367    0,
7368   24,
7369    OPC_CheckPredicate, 20,
7370    OPC_CheckPatternPredicate, 3,
7371    OPC_EmitMergeInputChains1_0,
7372    OPC_EmitRegister, MVT::i32, LoongArch::R0,
7373    OPC_EmitNode1, TARGET_VAL(LoongArch::SUB_D), 0,
7374                  MVT::i32, 2, 3, 2,
7375    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::AMADD_DB_D), 0|OPFL_Chain|OPFL_MemRefs,
7376                  MVT::i32, 2, 4, 1,
7377   0,
7378  0,
7379 7, TARGET_VAL(ISD::TRAP),
7380  OPC_RecordNode,
7381  OPC_EmitMergeInputChains1_0,
7382  OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoUNIMP), 0|OPFL_Chain,
7383                0,
7384 14, TARGET_VAL(ISD::BR),
7385  OPC_RecordNode,
7386  OPC_RecordChild1,
7387  OPC_MoveChild1,
7388  OPC_CheckOpcode, TARGET_VAL(ISD::BasicBlock),
7389  OPC_MoveParent,
7390  OPC_EmitMergeInputChains1_0,
7391  OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoBR), 0|OPFL_Chain,
7392                1, 1,
7393 8, TARGET_VAL(LoongArchISD::RET),
7394  OPC_RecordNode,
7395  OPC_CaptureGlueInput,
7396  OPC_EmitMergeInputChains1_0,
7397  OPC_MorphNodeTo0, TARGET_VAL(LoongArch::PseudoRET), 0|OPFL_Chain|OPFL_GlueInput|OPFL_Variadic0,
7398                0,
7399 56, TARGET_VAL(ISD::SUB),
7400  OPC_RecordChild0,
7401  OPC_RecordChild1,
7402  OPC_SwitchType , 24, MVT::i64,
7403   OPC_Scope, 10,
7404    OPC_CheckPatternPredicate, 1,
7405    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_W), 0,
7406                  MVT::i64, 2, 0, 1,
7407   10,
7408    OPC_CheckPatternPredicate, 0,
7409    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_D), 0,
7410                  MVT::i64, 2, 0, 1,
7411   0,
7412  24, MVT::i32,
7413   OPC_Scope, 10,
7414    OPC_CheckPatternPredicate, 2,
7415    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_W), 0,
7416                  MVT::i32, 2, 0, 1,
7417   10,
7418    OPC_CheckPatternPredicate, 3,
7419    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::SUB_D), 0,
7420                  MVT::i32, 2, 0, 1,
7421   0,
7422  0,
7423 56, TARGET_VAL(ISD::MULHS),
7424  OPC_RecordChild0,
7425  OPC_RecordChild1,
7426  OPC_SwitchType , 24, MVT::i64,
7427   OPC_Scope, 10,
7428    OPC_CheckPatternPredicate, 1,
7429    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_W), 0,
7430                  MVT::i64, 2, 0, 1,
7431   10,
7432    OPC_CheckPatternPredicate, 0,
7433    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_D), 0,
7434                  MVT::i64, 2, 0, 1,
7435   0,
7436  24, MVT::i32,
7437   OPC_Scope, 10,
7438    OPC_CheckPatternPredicate, 2,
7439    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_W), 0,
7440                  MVT::i32, 2, 0, 1,
7441   10,
7442    OPC_CheckPatternPredicate, 3,
7443    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_D), 0,
7444                  MVT::i32, 2, 0, 1,
7445   0,
7446  0,
7447 56, TARGET_VAL(ISD::MULHU),
7448  OPC_RecordChild0,
7449  OPC_RecordChild1,
7450  OPC_SwitchType , 24, MVT::i64,
7451   OPC_Scope, 10,
7452    OPC_CheckPatternPredicate, 1,
7453    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_WU), 0,
7454                  MVT::i64, 2, 0, 1,
7455   10,
7456    OPC_CheckPatternPredicate, 0,
7457    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_DU), 0,
7458                  MVT::i64, 2, 0, 1,
7459   0,
7460  24, MVT::i32,
7461   OPC_Scope, 10,
7462    OPC_CheckPatternPredicate, 2,
7463    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_WU), 0,
7464                  MVT::i32, 2, 0, 1,
7465   10,
7466    OPC_CheckPatternPredicate, 3,
7467    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MULH_DU), 0,
7468                  MVT::i32, 2, 0, 1,
7469   0,
7470  0,
7471 12, TARGET_VAL(LoongArchISD::ROTR_W),
7472  OPC_RecordChild0,
7473  OPC_RecordChild1,
7474  OPC_CheckPatternPredicate, 0,
7475  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::ROTR_W), 0,
7476                MVT::i64, 2, 0, 1,
7477 29, TARGET_VAL(ISD::DEBUGTRAP),
7478  OPC_RecordNode,
7479  OPC_Scope, 12,
7480   OPC_CheckPatternPredicate, 4,
7481   OPC_EmitMergeInputChains1_0,
7482   OPC_EmitInteger, MVT::i64, 0,
7483   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BREAK), 0|OPFL_Chain,
7484                 1, 1,
7485  12,
7486   OPC_CheckPatternPredicate, 5,
7487   OPC_EmitMergeInputChains1_0,
7488   OPC_EmitInteger, MVT::i32, 0,
7489   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::BREAK), 0|OPFL_Chain,
7490                 1, 1,
7491  0,
7492 29, TARGET_VAL(LoongArchISD::REVB_2H),
7493  OPC_RecordChild0,
7494  OPC_SwitchType , 11, MVT::i64,
7495   OPC_CheckChild0Type, MVT::i64,
7496   OPC_CheckPatternPredicate, 4,
7497   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_2H), 0,
7498                 MVT::i64, 1, 0,
7499  11, MVT::i32,
7500   OPC_CheckChild0Type, MVT::i32,
7501   OPC_CheckPatternPredicate, 5,
7502   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_2H), 0,
7503                 MVT::i32, 1, 0,
7504  0,
7505 29, TARGET_VAL(LoongArchISD::BITREV_4B),
7506  OPC_RecordChild0,
7507  OPC_SwitchType , 11, MVT::i64,
7508   OPC_CheckChild0Type, MVT::i64,
7509   OPC_CheckPatternPredicate, 4,
7510   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
7511                 MVT::i64, 1, 0,
7512  11, MVT::i32,
7513   OPC_CheckChild0Type, MVT::i32,
7514   OPC_CheckPatternPredicate, 5,
7515   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_4B), 0,
7516                 MVT::i32, 1, 0,
7517  0,
7518 29, TARGET_VAL(LoongArchISD::REVB_2W),
7519  OPC_RecordChild0,
7520  OPC_SwitchType , 11, MVT::i64,
7521   OPC_CheckChild0Type, MVT::i64,
7522   OPC_CheckPatternPredicate, 0,
7523   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_2W), 0,
7524                 MVT::i64, 1, 0,
7525  11, MVT::i32,
7526   OPC_CheckChild0Type, MVT::i32,
7527   OPC_CheckPatternPredicate, 3,
7528   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::REVB_2W), 0,
7529                 MVT::i32, 1, 0,
7530  0,
7531 29, TARGET_VAL(LoongArchISD::BITREV_W),
7532  OPC_RecordChild0,
7533  OPC_SwitchType , 11, MVT::i64,
7534   OPC_CheckChild0Type, MVT::i64,
7535   OPC_CheckPatternPredicate, 0,
7536   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_W), 0,
7537                 MVT::i64, 1, 0,
7538  11, MVT::i32,
7539   OPC_CheckChild0Type, MVT::i32,
7540   OPC_CheckPatternPredicate, 3,
7541   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::BITREV_W), 0,
7542                 MVT::i32, 1, 0,
7543  0,
7544 12, TARGET_VAL(LoongArchISD::CRC_W_B_W),
7545  OPC_RecordChild0,
7546  OPC_RecordChild1,
7547  OPC_CheckPatternPredicate, 0,
7548  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRC_W_B_W), 0,
7549                MVT::i64, 2, 0, 1,
7550 12, TARGET_VAL(LoongArchISD::CRC_W_H_W),
7551  OPC_RecordChild0,
7552  OPC_RecordChild1,
7553  OPC_CheckPatternPredicate, 0,
7554  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRC_W_H_W), 0,
7555                MVT::i64, 2, 0, 1,
7556 12, TARGET_VAL(LoongArchISD::CRC_W_W_W),
7557  OPC_RecordChild0,
7558  OPC_RecordChild1,
7559  OPC_CheckPatternPredicate, 0,
7560  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRC_W_W_W), 0,
7561                MVT::i64, 2, 0, 1,
7562 12, TARGET_VAL(LoongArchISD::CRC_W_D_W),
7563  OPC_RecordChild0,
7564  OPC_RecordChild1,
7565  OPC_CheckPatternPredicate, 0,
7566  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRC_W_D_W), 0,
7567                MVT::i64, 2, 0, 1,
7568 12, TARGET_VAL(LoongArchISD::CRCC_W_B_W),
7569  OPC_RecordChild0,
7570  OPC_RecordChild1,
7571  OPC_CheckPatternPredicate, 0,
7572  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRCC_W_B_W), 0,
7573                MVT::i64, 2, 0, 1,
7574 12, TARGET_VAL(LoongArchISD::CRCC_W_H_W),
7575  OPC_RecordChild0,
7576  OPC_RecordChild1,
7577  OPC_CheckPatternPredicate, 0,
7578  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRCC_W_H_W), 0,
7579                MVT::i64, 2, 0, 1,
7580 12, TARGET_VAL(LoongArchISD::CRCC_W_W_W),
7581  OPC_RecordChild0,
7582  OPC_RecordChild1,
7583  OPC_CheckPatternPredicate, 0,
7584  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRCC_W_W_W), 0,
7585                MVT::i64, 2, 0, 1,
7586 12, TARGET_VAL(LoongArchISD::CRCC_W_D_W),
7587  OPC_RecordChild0,
7588  OPC_RecordChild1,
7589  OPC_CheckPatternPredicate, 0,
7590  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CRCC_W_D_W), 0,
7591                MVT::i64, 2, 0, 1,
7592 84|128,6, TARGET_VAL(ISD::STRICT_FSETCC),
7593  OPC_RecordNode,
7594  OPC_RecordChild1,
7595  OPC_Scope, 38|128,3,
7596   OPC_CheckChild1Type, MVT::f32,
7597   OPC_RecordChild2,
7598   OPC_MoveChild3,
7599   OPC_Scope, 31,
7600    OPC_CheckCondCode, ISD::SETOEQ,
7601    OPC_MoveParent,
7602    OPC_SwitchType , 11, MVT::i64,
7603     OPC_CheckPatternPredicate, 6,
7604     OPC_EmitMergeInputChains1_0,
7605     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0|OPFL_Chain,
7606                   MVT::i64, 2, 1, 2,
7607    11, MVT::i32,
7608     OPC_CheckPatternPredicate, 8,
7609     OPC_EmitMergeInputChains1_0,
7610     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0|OPFL_Chain,
7611                   MVT::i32, 2, 1, 2,
7612    0,
7613   31,
7614    OPC_CheckCondCode, ISD::SETEQ,
7615    OPC_MoveParent,
7616    OPC_SwitchType , 11, MVT::i64,
7617     OPC_CheckPatternPredicate, 6,
7618     OPC_EmitMergeInputChains1_0,
7619     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0|OPFL_Chain,
7620                   MVT::i64, 2, 1, 2,
7621    11, MVT::i32,
7622     OPC_CheckPatternPredicate, 8,
7623     OPC_EmitMergeInputChains1_0,
7624     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0|OPFL_Chain,
7625                   MVT::i32, 2, 1, 2,
7626    0,
7627   31,
7628    OPC_CheckCondCode, ISD::SETOLT,
7629    OPC_MoveParent,
7630    OPC_SwitchType , 11, MVT::i64,
7631     OPC_CheckPatternPredicate, 6,
7632     OPC_EmitMergeInputChains1_0,
7633     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0|OPFL_Chain,
7634                   MVT::i64, 2, 1, 2,
7635    11, MVT::i32,
7636     OPC_CheckPatternPredicate, 8,
7637     OPC_EmitMergeInputChains1_0,
7638     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0|OPFL_Chain,
7639                   MVT::i32, 2, 1, 2,
7640    0,
7641   31,
7642    OPC_CheckCondCode, ISD::SETOLE,
7643    OPC_MoveParent,
7644    OPC_SwitchType , 11, MVT::i64,
7645     OPC_CheckPatternPredicate, 6,
7646     OPC_EmitMergeInputChains1_0,
7647     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0|OPFL_Chain,
7648                   MVT::i64, 2, 1, 2,
7649    11, MVT::i32,
7650     OPC_CheckPatternPredicate, 8,
7651     OPC_EmitMergeInputChains1_0,
7652     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0|OPFL_Chain,
7653                   MVT::i32, 2, 1, 2,
7654    0,
7655   31,
7656    OPC_CheckCondCode, ISD::SETLE,
7657    OPC_MoveParent,
7658    OPC_SwitchType , 11, MVT::i64,
7659     OPC_CheckPatternPredicate, 6,
7660     OPC_EmitMergeInputChains1_0,
7661     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0|OPFL_Chain,
7662                   MVT::i64, 2, 1, 2,
7663    11, MVT::i32,
7664     OPC_CheckPatternPredicate, 8,
7665     OPC_EmitMergeInputChains1_0,
7666     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0|OPFL_Chain,
7667                   MVT::i32, 2, 1, 2,
7668    0,
7669   31,
7670    OPC_CheckCondCode, ISD::SETONE,
7671    OPC_MoveParent,
7672    OPC_SwitchType , 11, MVT::i64,
7673     OPC_CheckPatternPredicate, 6,
7674     OPC_EmitMergeInputChains1_0,
7675     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0|OPFL_Chain,
7676                   MVT::i64, 2, 1, 2,
7677    11, MVT::i32,
7678     OPC_CheckPatternPredicate, 8,
7679     OPC_EmitMergeInputChains1_0,
7680     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0|OPFL_Chain,
7681                   MVT::i32, 2, 1, 2,
7682    0,
7683   31,
7684    OPC_CheckCondCode, ISD::SETO,
7685    OPC_MoveParent,
7686    OPC_SwitchType , 11, MVT::i64,
7687     OPC_CheckPatternPredicate, 6,
7688     OPC_EmitMergeInputChains1_0,
7689     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_S), 0|OPFL_Chain,
7690                   MVT::i64, 2, 1, 2,
7691    11, MVT::i32,
7692     OPC_CheckPatternPredicate, 8,
7693     OPC_EmitMergeInputChains1_0,
7694     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_S), 0|OPFL_Chain,
7695                   MVT::i32, 2, 1, 2,
7696    0,
7697   31,
7698    OPC_CheckCondCode, ISD::SETUEQ,
7699    OPC_MoveParent,
7700    OPC_SwitchType , 11, MVT::i64,
7701     OPC_CheckPatternPredicate, 6,
7702     OPC_EmitMergeInputChains1_0,
7703     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0|OPFL_Chain,
7704                   MVT::i64, 2, 1, 2,
7705    11, MVT::i32,
7706     OPC_CheckPatternPredicate, 8,
7707     OPC_EmitMergeInputChains1_0,
7708     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0|OPFL_Chain,
7709                   MVT::i32, 2, 1, 2,
7710    0,
7711   31,
7712    OPC_CheckCondCode, ISD::SETULT,
7713    OPC_MoveParent,
7714    OPC_SwitchType , 11, MVT::i64,
7715     OPC_CheckPatternPredicate, 6,
7716     OPC_EmitMergeInputChains1_0,
7717     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0|OPFL_Chain,
7718                   MVT::i64, 2, 1, 2,
7719    11, MVT::i32,
7720     OPC_CheckPatternPredicate, 8,
7721     OPC_EmitMergeInputChains1_0,
7722     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0|OPFL_Chain,
7723                   MVT::i32, 2, 1, 2,
7724    0,
7725   31,
7726    OPC_CheckCondCode, ISD::SETULE,
7727    OPC_MoveParent,
7728    OPC_SwitchType , 11, MVT::i64,
7729     OPC_CheckPatternPredicate, 6,
7730     OPC_EmitMergeInputChains1_0,
7731     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0|OPFL_Chain,
7732                   MVT::i64, 2, 1, 2,
7733    11, MVT::i32,
7734     OPC_CheckPatternPredicate, 8,
7735     OPC_EmitMergeInputChains1_0,
7736     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0|OPFL_Chain,
7737                   MVT::i32, 2, 1, 2,
7738    0,
7739   31,
7740    OPC_CheckCondCode, ISD::SETUNE,
7741    OPC_MoveParent,
7742    OPC_SwitchType , 11, MVT::i64,
7743     OPC_CheckPatternPredicate, 6,
7744     OPC_EmitMergeInputChains1_0,
7745     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0|OPFL_Chain,
7746                   MVT::i64, 2, 1, 2,
7747    11, MVT::i32,
7748     OPC_CheckPatternPredicate, 8,
7749     OPC_EmitMergeInputChains1_0,
7750     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0|OPFL_Chain,
7751                   MVT::i32, 2, 1, 2,
7752    0,
7753   31,
7754    OPC_CheckCondCode, ISD::SETUO,
7755    OPC_MoveParent,
7756    OPC_SwitchType , 11, MVT::i64,
7757     OPC_CheckPatternPredicate, 6,
7758     OPC_EmitMergeInputChains1_0,
7759     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0|OPFL_Chain,
7760                   MVT::i64, 2, 1, 2,
7761    11, MVT::i32,
7762     OPC_CheckPatternPredicate, 8,
7763     OPC_EmitMergeInputChains1_0,
7764     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0|OPFL_Chain,
7765                   MVT::i32, 2, 1, 2,
7766    0,
7767   31,
7768    OPC_CheckCondCode, ISD::SETLT,
7769    OPC_MoveParent,
7770    OPC_SwitchType , 11, MVT::i64,
7771     OPC_CheckPatternPredicate, 6,
7772     OPC_EmitMergeInputChains1_0,
7773     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0|OPFL_Chain,
7774                   MVT::i64, 2, 1, 2,
7775    11, MVT::i32,
7776     OPC_CheckPatternPredicate, 8,
7777     OPC_EmitMergeInputChains1_0,
7778     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0|OPFL_Chain,
7779                   MVT::i32, 2, 1, 2,
7780    0,
7781   0,
7782  38|128,3,
7783   OPC_CheckChild1Type, MVT::f64,
7784   OPC_RecordChild2,
7785   OPC_MoveChild3,
7786   OPC_Scope, 31,
7787    OPC_CheckCondCode, ISD::SETOEQ,
7788    OPC_MoveParent,
7789    OPC_SwitchType , 11, MVT::i64,
7790     OPC_CheckPatternPredicate, 7,
7791     OPC_EmitMergeInputChains1_0,
7792     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0|OPFL_Chain,
7793                   MVT::i64, 2, 1, 2,
7794    11, MVT::i32,
7795     OPC_CheckPatternPredicate, 9,
7796     OPC_EmitMergeInputChains1_0,
7797     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0|OPFL_Chain,
7798                   MVT::i32, 2, 1, 2,
7799    0,
7800   31,
7801    OPC_CheckCondCode, ISD::SETEQ,
7802    OPC_MoveParent,
7803    OPC_SwitchType , 11, MVT::i64,
7804     OPC_CheckPatternPredicate, 7,
7805     OPC_EmitMergeInputChains1_0,
7806     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0|OPFL_Chain,
7807                   MVT::i64, 2, 1, 2,
7808    11, MVT::i32,
7809     OPC_CheckPatternPredicate, 9,
7810     OPC_EmitMergeInputChains1_0,
7811     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0|OPFL_Chain,
7812                   MVT::i32, 2, 1, 2,
7813    0,
7814   31,
7815    OPC_CheckCondCode, ISD::SETOLT,
7816    OPC_MoveParent,
7817    OPC_SwitchType , 11, MVT::i64,
7818     OPC_CheckPatternPredicate, 7,
7819     OPC_EmitMergeInputChains1_0,
7820     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0|OPFL_Chain,
7821                   MVT::i64, 2, 1, 2,
7822    11, MVT::i32,
7823     OPC_CheckPatternPredicate, 9,
7824     OPC_EmitMergeInputChains1_0,
7825     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0|OPFL_Chain,
7826                   MVT::i32, 2, 1, 2,
7827    0,
7828   31,
7829    OPC_CheckCondCode, ISD::SETOLE,
7830    OPC_MoveParent,
7831    OPC_SwitchType , 11, MVT::i64,
7832     OPC_CheckPatternPredicate, 7,
7833     OPC_EmitMergeInputChains1_0,
7834     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0|OPFL_Chain,
7835                   MVT::i64, 2, 1, 2,
7836    11, MVT::i32,
7837     OPC_CheckPatternPredicate, 9,
7838     OPC_EmitMergeInputChains1_0,
7839     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0|OPFL_Chain,
7840                   MVT::i32, 2, 1, 2,
7841    0,
7842   31,
7843    OPC_CheckCondCode, ISD::SETLE,
7844    OPC_MoveParent,
7845    OPC_SwitchType , 11, MVT::i64,
7846     OPC_CheckPatternPredicate, 7,
7847     OPC_EmitMergeInputChains1_0,
7848     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0|OPFL_Chain,
7849                   MVT::i64, 2, 1, 2,
7850    11, MVT::i32,
7851     OPC_CheckPatternPredicate, 9,
7852     OPC_EmitMergeInputChains1_0,
7853     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0|OPFL_Chain,
7854                   MVT::i32, 2, 1, 2,
7855    0,
7856   31,
7857    OPC_CheckCondCode, ISD::SETONE,
7858    OPC_MoveParent,
7859    OPC_SwitchType , 11, MVT::i64,
7860     OPC_CheckPatternPredicate, 7,
7861     OPC_EmitMergeInputChains1_0,
7862     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0|OPFL_Chain,
7863                   MVT::i64, 2, 1, 2,
7864    11, MVT::i32,
7865     OPC_CheckPatternPredicate, 9,
7866     OPC_EmitMergeInputChains1_0,
7867     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0|OPFL_Chain,
7868                   MVT::i32, 2, 1, 2,
7869    0,
7870   31,
7871    OPC_CheckCondCode, ISD::SETO,
7872    OPC_MoveParent,
7873    OPC_SwitchType , 11, MVT::i64,
7874     OPC_CheckPatternPredicate, 7,
7875     OPC_EmitMergeInputChains1_0,
7876     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_D), 0|OPFL_Chain,
7877                   MVT::i64, 2, 1, 2,
7878    11, MVT::i32,
7879     OPC_CheckPatternPredicate, 9,
7880     OPC_EmitMergeInputChains1_0,
7881     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_COR_D), 0|OPFL_Chain,
7882                   MVT::i32, 2, 1, 2,
7883    0,
7884   31,
7885    OPC_CheckCondCode, ISD::SETUEQ,
7886    OPC_MoveParent,
7887    OPC_SwitchType , 11, MVT::i64,
7888     OPC_CheckPatternPredicate, 7,
7889     OPC_EmitMergeInputChains1_0,
7890     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0|OPFL_Chain,
7891                   MVT::i64, 2, 1, 2,
7892    11, MVT::i32,
7893     OPC_CheckPatternPredicate, 9,
7894     OPC_EmitMergeInputChains1_0,
7895     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0|OPFL_Chain,
7896                   MVT::i32, 2, 1, 2,
7897    0,
7898   31,
7899    OPC_CheckCondCode, ISD::SETULT,
7900    OPC_MoveParent,
7901    OPC_SwitchType , 11, MVT::i64,
7902     OPC_CheckPatternPredicate, 7,
7903     OPC_EmitMergeInputChains1_0,
7904     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0|OPFL_Chain,
7905                   MVT::i64, 2, 1, 2,
7906    11, MVT::i32,
7907     OPC_CheckPatternPredicate, 9,
7908     OPC_EmitMergeInputChains1_0,
7909     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0|OPFL_Chain,
7910                   MVT::i32, 2, 1, 2,
7911    0,
7912   31,
7913    OPC_CheckCondCode, ISD::SETULE,
7914    OPC_MoveParent,
7915    OPC_SwitchType , 11, MVT::i64,
7916     OPC_CheckPatternPredicate, 7,
7917     OPC_EmitMergeInputChains1_0,
7918     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0|OPFL_Chain,
7919                   MVT::i64, 2, 1, 2,
7920    11, MVT::i32,
7921     OPC_CheckPatternPredicate, 9,
7922     OPC_EmitMergeInputChains1_0,
7923     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0|OPFL_Chain,
7924                   MVT::i32, 2, 1, 2,
7925    0,
7926   31,
7927    OPC_CheckCondCode, ISD::SETUNE,
7928    OPC_MoveParent,
7929    OPC_SwitchType , 11, MVT::i64,
7930     OPC_CheckPatternPredicate, 7,
7931     OPC_EmitMergeInputChains1_0,
7932     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0|OPFL_Chain,
7933                   MVT::i64, 2, 1, 2,
7934    11, MVT::i32,
7935     OPC_CheckPatternPredicate, 9,
7936     OPC_EmitMergeInputChains1_0,
7937     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0|OPFL_Chain,
7938                   MVT::i32, 2, 1, 2,
7939    0,
7940   31,
7941    OPC_CheckCondCode, ISD::SETUO,
7942    OPC_MoveParent,
7943    OPC_SwitchType , 11, MVT::i64,
7944     OPC_CheckPatternPredicate, 7,
7945     OPC_EmitMergeInputChains1_0,
7946     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0|OPFL_Chain,
7947                   MVT::i64, 2, 1, 2,
7948    11, MVT::i32,
7949     OPC_CheckPatternPredicate, 9,
7950     OPC_EmitMergeInputChains1_0,
7951     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0|OPFL_Chain,
7952                   MVT::i32, 2, 1, 2,
7953    0,
7954   31,
7955    OPC_CheckCondCode, ISD::SETLT,
7956    OPC_MoveParent,
7957    OPC_SwitchType , 11, MVT::i64,
7958     OPC_CheckPatternPredicate, 7,
7959     OPC_EmitMergeInputChains1_0,
7960     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0|OPFL_Chain,
7961                   MVT::i64, 2, 1, 2,
7962    11, MVT::i32,
7963     OPC_CheckPatternPredicate, 9,
7964     OPC_EmitMergeInputChains1_0,
7965     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0|OPFL_Chain,
7966                   MVT::i32, 2, 1, 2,
7967    0,
7968   0,
7969  0,
7970 84|128,5, TARGET_VAL(ISD::STRICT_FSETCCS),
7971  OPC_RecordNode,
7972  OPC_RecordChild1,
7973  OPC_Scope, 102|128,2,
7974   OPC_CheckChild1Type, MVT::f32,
7975   OPC_RecordChild2,
7976   OPC_MoveChild3,
7977   OPC_Scope, 31,
7978    OPC_CheckCondCode, ISD::SETOEQ,
7979    OPC_MoveParent,
7980    OPC_SwitchType , 11, MVT::i64,
7981     OPC_CheckPatternPredicate, 6,
7982     OPC_EmitMergeInputChains1_0,
7983     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SEQ_S), 0|OPFL_Chain,
7984                   MVT::i64, 2, 1, 2,
7985    11, MVT::i32,
7986     OPC_CheckPatternPredicate, 8,
7987     OPC_EmitMergeInputChains1_0,
7988     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SEQ_S), 0|OPFL_Chain,
7989                   MVT::i32, 2, 1, 2,
7990    0,
7991   31,
7992    OPC_CheckCondCode, ISD::SETOLT,
7993    OPC_MoveParent,
7994    OPC_SwitchType , 11, MVT::i64,
7995     OPC_CheckPatternPredicate, 6,
7996     OPC_EmitMergeInputChains1_0,
7997     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_S), 0|OPFL_Chain,
7998                   MVT::i64, 2, 1, 2,
7999    11, MVT::i32,
8000     OPC_CheckPatternPredicate, 8,
8001     OPC_EmitMergeInputChains1_0,
8002     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_S), 0|OPFL_Chain,
8003                   MVT::i32, 2, 1, 2,
8004    0,
8005   31,
8006    OPC_CheckCondCode, ISD::SETOLE,
8007    OPC_MoveParent,
8008    OPC_SwitchType , 11, MVT::i64,
8009     OPC_CheckPatternPredicate, 6,
8010     OPC_EmitMergeInputChains1_0,
8011     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLE_S), 0|OPFL_Chain,
8012                   MVT::i64, 2, 1, 2,
8013    11, MVT::i32,
8014     OPC_CheckPatternPredicate, 8,
8015     OPC_EmitMergeInputChains1_0,
8016     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLE_S), 0|OPFL_Chain,
8017                   MVT::i32, 2, 1, 2,
8018    0,
8019   31,
8020    OPC_CheckCondCode, ISD::SETONE,
8021    OPC_MoveParent,
8022    OPC_SwitchType , 11, MVT::i64,
8023     OPC_CheckPatternPredicate, 6,
8024     OPC_EmitMergeInputChains1_0,
8025     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SNE_S), 0|OPFL_Chain,
8026                   MVT::i64, 2, 1, 2,
8027    11, MVT::i32,
8028     OPC_CheckPatternPredicate, 8,
8029     OPC_EmitMergeInputChains1_0,
8030     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SNE_S), 0|OPFL_Chain,
8031                   MVT::i32, 2, 1, 2,
8032    0,
8033   31,
8034    OPC_CheckCondCode, ISD::SETO,
8035    OPC_MoveParent,
8036    OPC_SwitchType , 11, MVT::i64,
8037     OPC_CheckPatternPredicate, 6,
8038     OPC_EmitMergeInputChains1_0,
8039     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SOR_S), 0|OPFL_Chain,
8040                   MVT::i64, 2, 1, 2,
8041    11, MVT::i32,
8042     OPC_CheckPatternPredicate, 8,
8043     OPC_EmitMergeInputChains1_0,
8044     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SOR_S), 0|OPFL_Chain,
8045                   MVT::i32, 2, 1, 2,
8046    0,
8047   31,
8048    OPC_CheckCondCode, ISD::SETUEQ,
8049    OPC_MoveParent,
8050    OPC_SwitchType , 11, MVT::i64,
8051     OPC_CheckPatternPredicate, 6,
8052     OPC_EmitMergeInputChains1_0,
8053     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUEQ_S), 0|OPFL_Chain,
8054                   MVT::i64, 2, 1, 2,
8055    11, MVT::i32,
8056     OPC_CheckPatternPredicate, 8,
8057     OPC_EmitMergeInputChains1_0,
8058     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUEQ_S), 0|OPFL_Chain,
8059                   MVT::i32, 2, 1, 2,
8060    0,
8061   31,
8062    OPC_CheckCondCode, ISD::SETULT,
8063    OPC_MoveParent,
8064    OPC_SwitchType , 11, MVT::i64,
8065     OPC_CheckPatternPredicate, 6,
8066     OPC_EmitMergeInputChains1_0,
8067     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULT_S), 0|OPFL_Chain,
8068                   MVT::i64, 2, 1, 2,
8069    11, MVT::i32,
8070     OPC_CheckPatternPredicate, 8,
8071     OPC_EmitMergeInputChains1_0,
8072     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULT_S), 0|OPFL_Chain,
8073                   MVT::i32, 2, 1, 2,
8074    0,
8075   31,
8076    OPC_CheckCondCode, ISD::SETULE,
8077    OPC_MoveParent,
8078    OPC_SwitchType , 11, MVT::i64,
8079     OPC_CheckPatternPredicate, 6,
8080     OPC_EmitMergeInputChains1_0,
8081     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULE_S), 0|OPFL_Chain,
8082                   MVT::i64, 2, 1, 2,
8083    11, MVT::i32,
8084     OPC_CheckPatternPredicate, 8,
8085     OPC_EmitMergeInputChains1_0,
8086     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULE_S), 0|OPFL_Chain,
8087                   MVT::i32, 2, 1, 2,
8088    0,
8089   31,
8090    OPC_CheckCondCode, ISD::SETUNE,
8091    OPC_MoveParent,
8092    OPC_SwitchType , 11, MVT::i64,
8093     OPC_CheckPatternPredicate, 6,
8094     OPC_EmitMergeInputChains1_0,
8095     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUNE_S), 0|OPFL_Chain,
8096                   MVT::i64, 2, 1, 2,
8097    11, MVT::i32,
8098     OPC_CheckPatternPredicate, 8,
8099     OPC_EmitMergeInputChains1_0,
8100     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUNE_S), 0|OPFL_Chain,
8101                   MVT::i32, 2, 1, 2,
8102    0,
8103   31,
8104    OPC_CheckCondCode, ISD::SETUO,
8105    OPC_MoveParent,
8106    OPC_SwitchType , 11, MVT::i64,
8107     OPC_CheckPatternPredicate, 6,
8108     OPC_EmitMergeInputChains1_0,
8109     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUN_S), 0|OPFL_Chain,
8110                   MVT::i64, 2, 1, 2,
8111    11, MVT::i32,
8112     OPC_CheckPatternPredicate, 8,
8113     OPC_EmitMergeInputChains1_0,
8114     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUN_S), 0|OPFL_Chain,
8115                   MVT::i32, 2, 1, 2,
8116    0,
8117   31,
8118    OPC_CheckCondCode, ISD::SETLT,
8119    OPC_MoveParent,
8120    OPC_SwitchType , 11, MVT::i64,
8121     OPC_CheckPatternPredicate, 6,
8122     OPC_EmitMergeInputChains1_0,
8123     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_S), 0|OPFL_Chain,
8124                   MVT::i64, 2, 1, 2,
8125    11, MVT::i32,
8126     OPC_CheckPatternPredicate, 8,
8127     OPC_EmitMergeInputChains1_0,
8128     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_S), 0|OPFL_Chain,
8129                   MVT::i32, 2, 1, 2,
8130    0,
8131   0,
8132  102|128,2,
8133   OPC_CheckChild1Type, MVT::f64,
8134   OPC_RecordChild2,
8135   OPC_MoveChild3,
8136   OPC_Scope, 31,
8137    OPC_CheckCondCode, ISD::SETOEQ,
8138    OPC_MoveParent,
8139    OPC_SwitchType , 11, MVT::i64,
8140     OPC_CheckPatternPredicate, 7,
8141     OPC_EmitMergeInputChains1_0,
8142     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SEQ_D), 0|OPFL_Chain,
8143                   MVT::i64, 2, 1, 2,
8144    11, MVT::i32,
8145     OPC_CheckPatternPredicate, 9,
8146     OPC_EmitMergeInputChains1_0,
8147     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SEQ_D), 0|OPFL_Chain,
8148                   MVT::i32, 2, 1, 2,
8149    0,
8150   31,
8151    OPC_CheckCondCode, ISD::SETOLT,
8152    OPC_MoveParent,
8153    OPC_SwitchType , 11, MVT::i64,
8154     OPC_CheckPatternPredicate, 7,
8155     OPC_EmitMergeInputChains1_0,
8156     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_D), 0|OPFL_Chain,
8157                   MVT::i64, 2, 1, 2,
8158    11, MVT::i32,
8159     OPC_CheckPatternPredicate, 9,
8160     OPC_EmitMergeInputChains1_0,
8161     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_D), 0|OPFL_Chain,
8162                   MVT::i32, 2, 1, 2,
8163    0,
8164   31,
8165    OPC_CheckCondCode, ISD::SETOLE,
8166    OPC_MoveParent,
8167    OPC_SwitchType , 11, MVT::i64,
8168     OPC_CheckPatternPredicate, 7,
8169     OPC_EmitMergeInputChains1_0,
8170     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLE_D), 0|OPFL_Chain,
8171                   MVT::i64, 2, 1, 2,
8172    11, MVT::i32,
8173     OPC_CheckPatternPredicate, 9,
8174     OPC_EmitMergeInputChains1_0,
8175     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLE_D), 0|OPFL_Chain,
8176                   MVT::i32, 2, 1, 2,
8177    0,
8178   31,
8179    OPC_CheckCondCode, ISD::SETONE,
8180    OPC_MoveParent,
8181    OPC_SwitchType , 11, MVT::i64,
8182     OPC_CheckPatternPredicate, 7,
8183     OPC_EmitMergeInputChains1_0,
8184     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SNE_D), 0|OPFL_Chain,
8185                   MVT::i64, 2, 1, 2,
8186    11, MVT::i32,
8187     OPC_CheckPatternPredicate, 9,
8188     OPC_EmitMergeInputChains1_0,
8189     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SNE_D), 0|OPFL_Chain,
8190                   MVT::i32, 2, 1, 2,
8191    0,
8192   31,
8193    OPC_CheckCondCode, ISD::SETO,
8194    OPC_MoveParent,
8195    OPC_SwitchType , 11, MVT::i64,
8196     OPC_CheckPatternPredicate, 7,
8197     OPC_EmitMergeInputChains1_0,
8198     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SOR_D), 0|OPFL_Chain,
8199                   MVT::i64, 2, 1, 2,
8200    11, MVT::i32,
8201     OPC_CheckPatternPredicate, 9,
8202     OPC_EmitMergeInputChains1_0,
8203     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SOR_D), 0|OPFL_Chain,
8204                   MVT::i32, 2, 1, 2,
8205    0,
8206   31,
8207    OPC_CheckCondCode, ISD::SETUEQ,
8208    OPC_MoveParent,
8209    OPC_SwitchType , 11, MVT::i64,
8210     OPC_CheckPatternPredicate, 7,
8211     OPC_EmitMergeInputChains1_0,
8212     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUEQ_D), 0|OPFL_Chain,
8213                   MVT::i64, 2, 1, 2,
8214    11, MVT::i32,
8215     OPC_CheckPatternPredicate, 9,
8216     OPC_EmitMergeInputChains1_0,
8217     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUEQ_D), 0|OPFL_Chain,
8218                   MVT::i32, 2, 1, 2,
8219    0,
8220   31,
8221    OPC_CheckCondCode, ISD::SETULT,
8222    OPC_MoveParent,
8223    OPC_SwitchType , 11, MVT::i64,
8224     OPC_CheckPatternPredicate, 7,
8225     OPC_EmitMergeInputChains1_0,
8226     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULT_D), 0|OPFL_Chain,
8227                   MVT::i64, 2, 1, 2,
8228    11, MVT::i32,
8229     OPC_CheckPatternPredicate, 9,
8230     OPC_EmitMergeInputChains1_0,
8231     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULT_D), 0|OPFL_Chain,
8232                   MVT::i32, 2, 1, 2,
8233    0,
8234   31,
8235    OPC_CheckCondCode, ISD::SETULE,
8236    OPC_MoveParent,
8237    OPC_SwitchType , 11, MVT::i64,
8238     OPC_CheckPatternPredicate, 7,
8239     OPC_EmitMergeInputChains1_0,
8240     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULE_D), 0|OPFL_Chain,
8241                   MVT::i64, 2, 1, 2,
8242    11, MVT::i32,
8243     OPC_CheckPatternPredicate, 9,
8244     OPC_EmitMergeInputChains1_0,
8245     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SULE_D), 0|OPFL_Chain,
8246                   MVT::i32, 2, 1, 2,
8247    0,
8248   31,
8249    OPC_CheckCondCode, ISD::SETUNE,
8250    OPC_MoveParent,
8251    OPC_SwitchType , 11, MVT::i64,
8252     OPC_CheckPatternPredicate, 7,
8253     OPC_EmitMergeInputChains1_0,
8254     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUNE_D), 0|OPFL_Chain,
8255                   MVT::i64, 2, 1, 2,
8256    11, MVT::i32,
8257     OPC_CheckPatternPredicate, 9,
8258     OPC_EmitMergeInputChains1_0,
8259     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUNE_D), 0|OPFL_Chain,
8260                   MVT::i32, 2, 1, 2,
8261    0,
8262   31,
8263    OPC_CheckCondCode, ISD::SETUO,
8264    OPC_MoveParent,
8265    OPC_SwitchType , 11, MVT::i64,
8266     OPC_CheckPatternPredicate, 7,
8267     OPC_EmitMergeInputChains1_0,
8268     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUN_D), 0|OPFL_Chain,
8269                   MVT::i64, 2, 1, 2,
8270    11, MVT::i32,
8271     OPC_CheckPatternPredicate, 9,
8272     OPC_EmitMergeInputChains1_0,
8273     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SUN_D), 0|OPFL_Chain,
8274                   MVT::i32, 2, 1, 2,
8275    0,
8276   31,
8277    OPC_CheckCondCode, ISD::SETLT,
8278    OPC_MoveParent,
8279    OPC_SwitchType , 11, MVT::i64,
8280     OPC_CheckPatternPredicate, 7,
8281     OPC_EmitMergeInputChains1_0,
8282     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_D), 0|OPFL_Chain,
8283                   MVT::i64, 2, 1, 2,
8284    11, MVT::i32,
8285     OPC_CheckPatternPredicate, 9,
8286     OPC_EmitMergeInputChains1_0,
8287     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCMP_SLT_D), 0|OPFL_Chain,
8288                   MVT::i32, 2, 1, 2,
8289    0,
8290   0,
8291  0,
8292 10, TARGET_VAL(LoongArchISD::MOVFR2GR_S_LA64),
8293  OPC_RecordChild0,
8294  OPC_CheckPatternPredicate, 10,
8295  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVFR2GR_S), 0,
8296                MVT::i64, 1, 0,
8297 85, TARGET_VAL(ISD::BITCAST),
8298  OPC_RecordChild0,
8299  OPC_Scope, 13,
8300   OPC_CheckChild0Type, MVT::f32,
8301   OPC_CheckType, MVT::i32,
8302   OPC_CheckPatternPredicate, 11,
8303   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVFR2GR_S), 0,
8304                 MVT::i32, 1, 0,
8305  26,
8306   OPC_CheckChild0Type, MVT::f64,
8307   OPC_SwitchType , 9, MVT::i64,
8308    OPC_CheckPatternPredicate, 12,
8309    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVFR2GR_D), 0,
8310                  MVT::i64, 1, 0,
8311   9, MVT::i32,
8312    OPC_CheckPatternPredicate, 13,
8313    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVFR2GR_D), 0,
8314                  MVT::i32, 1, 0,
8315   0,
8316  26,
8317   OPC_CheckChild0Type, MVT::i32,
8318   OPC_SwitchType , 9, MVT::f32,
8319    OPC_CheckPatternPredicate, 11,
8320    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
8321                  MVT::f32, 1, 0,
8322   9, MVT::f64,
8323    OPC_CheckPatternPredicate, 13,
8324    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
8325                  MVT::f64, 1, 0,
8326   0,
8327  13,
8328   OPC_CheckChild0Type, MVT::i64,
8329   OPC_CheckType, MVT::f64,
8330   OPC_CheckPatternPredicate, 12,
8331   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
8332                 MVT::f64, 1, 0,
8333  0,
8334 32, TARGET_VAL(LoongArchISD::IOCSRRD_B),
8335  OPC_RecordNode,
8336  OPC_RecordChild1,
8337  OPC_SwitchType , 12, MVT::i64,
8338   OPC_CheckChild1Type, MVT::i64,
8339   OPC_CheckPatternPredicate, 4,
8340   OPC_EmitMergeInputChains1_0,
8341   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_B), 0|OPFL_Chain,
8342                 MVT::i64, 1, 1,
8343  12, MVT::i32,
8344   OPC_CheckChild1Type, MVT::i32,
8345   OPC_CheckPatternPredicate, 5,
8346   OPC_EmitMergeInputChains1_0,
8347   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_B), 0|OPFL_Chain,
8348                 MVT::i32, 1, 1,
8349  0,
8350 32, TARGET_VAL(LoongArchISD::IOCSRRD_H),
8351  OPC_RecordNode,
8352  OPC_RecordChild1,
8353  OPC_SwitchType , 12, MVT::i64,
8354   OPC_CheckChild1Type, MVT::i64,
8355   OPC_CheckPatternPredicate, 4,
8356   OPC_EmitMergeInputChains1_0,
8357   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_H), 0|OPFL_Chain,
8358                 MVT::i64, 1, 1,
8359  12, MVT::i32,
8360   OPC_CheckChild1Type, MVT::i32,
8361   OPC_CheckPatternPredicate, 5,
8362   OPC_EmitMergeInputChains1_0,
8363   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_H), 0|OPFL_Chain,
8364                 MVT::i32, 1, 1,
8365  0,
8366 32, TARGET_VAL(LoongArchISD::IOCSRRD_W),
8367  OPC_RecordNode,
8368  OPC_RecordChild1,
8369  OPC_SwitchType , 12, MVT::i64,
8370   OPC_CheckChild1Type, MVT::i64,
8371   OPC_CheckPatternPredicate, 4,
8372   OPC_EmitMergeInputChains1_0,
8373   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_W), 0|OPFL_Chain,
8374                 MVT::i64, 1, 1,
8375  12, MVT::i32,
8376   OPC_CheckChild1Type, MVT::i32,
8377   OPC_CheckPatternPredicate, 5,
8378   OPC_EmitMergeInputChains1_0,
8379   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_W), 0|OPFL_Chain,
8380                 MVT::i32, 1, 1,
8381  0,
8382 32, TARGET_VAL(LoongArchISD::IOCSRWR_B),
8383  OPC_RecordNode,
8384  OPC_RecordChild1,
8385  OPC_Scope, 13,
8386   OPC_CheckChild1Type, MVT::i64,
8387   OPC_RecordChild2,
8388   OPC_CheckPatternPredicate, 4,
8389   OPC_EmitMergeInputChains1_0,
8390   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_B), 0|OPFL_Chain,
8391                 2, 1, 2,
8392  13,
8393   OPC_CheckChild1Type, MVT::i32,
8394   OPC_RecordChild2,
8395   OPC_CheckPatternPredicate, 5,
8396   OPC_EmitMergeInputChains1_0,
8397   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_B), 0|OPFL_Chain,
8398                 2, 1, 2,
8399  0,
8400 32, TARGET_VAL(LoongArchISD::IOCSRWR_H),
8401  OPC_RecordNode,
8402  OPC_RecordChild1,
8403  OPC_Scope, 13,
8404   OPC_CheckChild1Type, MVT::i64,
8405   OPC_RecordChild2,
8406   OPC_CheckPatternPredicate, 4,
8407   OPC_EmitMergeInputChains1_0,
8408   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_H), 0|OPFL_Chain,
8409                 2, 1, 2,
8410  13,
8411   OPC_CheckChild1Type, MVT::i32,
8412   OPC_RecordChild2,
8413   OPC_CheckPatternPredicate, 5,
8414   OPC_EmitMergeInputChains1_0,
8415   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_H), 0|OPFL_Chain,
8416                 2, 1, 2,
8417  0,
8418 32, TARGET_VAL(LoongArchISD::IOCSRWR_W),
8419  OPC_RecordNode,
8420  OPC_RecordChild1,
8421  OPC_Scope, 13,
8422   OPC_CheckChild1Type, MVT::i64,
8423   OPC_RecordChild2,
8424   OPC_CheckPatternPredicate, 4,
8425   OPC_EmitMergeInputChains1_0,
8426   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_W), 0|OPFL_Chain,
8427                 2, 1, 2,
8428  13,
8429   OPC_CheckChild1Type, MVT::i32,
8430   OPC_RecordChild2,
8431   OPC_CheckPatternPredicate, 5,
8432   OPC_EmitMergeInputChains1_0,
8433   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_W), 0|OPFL_Chain,
8434                 2, 1, 2,
8435  0,
8436 32, TARGET_VAL(LoongArchISD::CPUCFG),
8437  OPC_RecordNode,
8438  OPC_RecordChild1,
8439  OPC_SwitchType , 12, MVT::i64,
8440   OPC_CheckChild1Type, MVT::i64,
8441   OPC_CheckPatternPredicate, 4,
8442   OPC_EmitMergeInputChains1_0,
8443   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CPUCFG), 0|OPFL_Chain,
8444                 MVT::i64, 1, 1,
8445  12, MVT::i32,
8446   OPC_CheckChild1Type, MVT::i32,
8447   OPC_CheckPatternPredicate, 5,
8448   OPC_EmitMergeInputChains1_0,
8449   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::CPUCFG), 0|OPFL_Chain,
8450                 MVT::i32, 1, 1,
8451  0,
8452 32, TARGET_VAL(LoongArchISD::IOCSRRD_D),
8453  OPC_RecordNode,
8454  OPC_RecordChild1,
8455  OPC_SwitchType , 12, MVT::i64,
8456   OPC_CheckChild1Type, MVT::i64,
8457   OPC_CheckPatternPredicate, 0,
8458   OPC_EmitMergeInputChains1_0,
8459   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_D), 0|OPFL_Chain,
8460                 MVT::i64, 1, 1,
8461  12, MVT::i32,
8462   OPC_CheckChild1Type, MVT::i32,
8463   OPC_CheckPatternPredicate, 3,
8464   OPC_EmitMergeInputChains1_0,
8465   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::IOCSRRD_D), 0|OPFL_Chain,
8466                 MVT::i32, 1, 1,
8467  0,
8468 32, TARGET_VAL(LoongArchISD::IOCSRWR_D),
8469  OPC_RecordNode,
8470  OPC_RecordChild1,
8471  OPC_Scope, 13,
8472   OPC_CheckChild1Type, MVT::i64,
8473   OPC_RecordChild2,
8474   OPC_CheckPatternPredicate, 0,
8475   OPC_EmitMergeInputChains1_0,
8476   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_D), 0|OPFL_Chain,
8477                 2, 1, 2,
8478  13,
8479   OPC_CheckChild1Type, MVT::i32,
8480   OPC_RecordChild2,
8481   OPC_CheckPatternPredicate, 3,
8482   OPC_EmitMergeInputChains1_0,
8483   OPC_MorphNodeTo0, TARGET_VAL(LoongArch::IOCSRWR_D), 0|OPFL_Chain,
8484                 2, 1, 2,
8485  0,
8486 23|128,10, TARGET_VAL(ISD::SELECT),
8487  OPC_Scope, 67,
8488   OPC_RecordChild0,
8489   OPC_SwitchType , 30, MVT::i64,
8490    OPC_CheckChild0Type, MVT::i64,
8491    OPC_RecordChild1,
8492    OPC_RecordChild2,
8493    OPC_CheckPatternPredicate, 4,
8494    OPC_EmitNode1, TARGET_VAL(LoongArch::MASKEQZ), 0,
8495                  MVT::i64, 2, 1, 0,
8496    OPC_EmitNode1, TARGET_VAL(LoongArch::MASKNEZ), 0,
8497                  MVT::i64, 2, 2, 0,
8498    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::OR), 0,
8499                  MVT::i64, 2, 3, 4,
8500   30, MVT::i32,
8501    OPC_CheckChild0Type, MVT::i32,
8502    OPC_RecordChild1,
8503    OPC_RecordChild2,
8504    OPC_CheckPatternPredicate, 5,
8505    OPC_EmitNode1, TARGET_VAL(LoongArch::MASKEQZ), 0,
8506                  MVT::i32, 2, 1, 0,
8507    OPC_EmitNode1, TARGET_VAL(LoongArch::MASKNEZ), 0,
8508                  MVT::i32, 2, 2, 0,
8509    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::OR), 0,
8510                  MVT::i32, 2, 3, 4,
8511   0,
8512  9|128,9,
8513   OPC_MoveChild0,
8514   OPC_CheckOpcode, TARGET_VAL(ISD::SETCC),
8515   OPC_RecordChild0,
8516   OPC_Scope, 63|128,4,
8517    OPC_CheckChild0Type, MVT::f32,
8518    OPC_RecordChild1,
8519    OPC_Scope, 56,
8520     OPC_CheckChild2CondCode, ISD::SETOEQ,
8521     OPC_SwitchType , 24, MVT::i64,
8522      OPC_MoveParent,
8523      OPC_RecordChild1,
8524      OPC_RecordChild2,
8525      OPC_CheckType, MVT::f32,
8526      OPC_CheckPatternPredicate, 6,
8527      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
8528                    MVT::i64, 2, 0, 1,
8529      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8530                    MVT::f32, 3, 3, 2, 4,
8531     24, MVT::i32,
8532      OPC_MoveParent,
8533      OPC_RecordChild1,
8534      OPC_RecordChild2,
8535      OPC_CheckType, MVT::f32,
8536      OPC_CheckPatternPredicate, 8,
8537      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_S), 0,
8538                    MVT::i32, 2, 0, 1,
8539      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8540                    MVT::f32, 3, 3, 2, 4,
8541     0,
8542    56,
8543     OPC_CheckChild2CondCode, ISD::SETOLT,
8544     OPC_SwitchType , 24, MVT::i64,
8545      OPC_MoveParent,
8546      OPC_RecordChild1,
8547      OPC_RecordChild2,
8548      OPC_CheckType, MVT::f32,
8549      OPC_CheckPatternPredicate, 6,
8550      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
8551                    MVT::i64, 2, 0, 1,
8552      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8553                    MVT::f32, 3, 3, 2, 4,
8554     24, MVT::i32,
8555      OPC_MoveParent,
8556      OPC_RecordChild1,
8557      OPC_RecordChild2,
8558      OPC_CheckType, MVT::f32,
8559      OPC_CheckPatternPredicate, 8,
8560      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_S), 0,
8561                    MVT::i32, 2, 0, 1,
8562      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8563                    MVT::f32, 3, 3, 2, 4,
8564     0,
8565    56,
8566     OPC_CheckChild2CondCode, ISD::SETOLE,
8567     OPC_SwitchType , 24, MVT::i64,
8568      OPC_MoveParent,
8569      OPC_RecordChild1,
8570      OPC_RecordChild2,
8571      OPC_CheckType, MVT::f32,
8572      OPC_CheckPatternPredicate, 6,
8573      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
8574                    MVT::i64, 2, 0, 1,
8575      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8576                    MVT::f32, 3, 3, 2, 4,
8577     24, MVT::i32,
8578      OPC_MoveParent,
8579      OPC_RecordChild1,
8580      OPC_RecordChild2,
8581      OPC_CheckType, MVT::f32,
8582      OPC_CheckPatternPredicate, 8,
8583      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_S), 0,
8584                    MVT::i32, 2, 0, 1,
8585      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8586                    MVT::f32, 3, 3, 2, 4,
8587     0,
8588    56,
8589     OPC_CheckChild2CondCode, ISD::SETONE,
8590     OPC_SwitchType , 24, MVT::i64,
8591      OPC_MoveParent,
8592      OPC_RecordChild1,
8593      OPC_RecordChild2,
8594      OPC_CheckType, MVT::f32,
8595      OPC_CheckPatternPredicate, 6,
8596      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
8597                    MVT::i64, 2, 0, 1,
8598      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8599                    MVT::f32, 3, 3, 2, 4,
8600     24, MVT::i32,
8601      OPC_MoveParent,
8602      OPC_RecordChild1,
8603      OPC_RecordChild2,
8604      OPC_CheckType, MVT::f32,
8605      OPC_CheckPatternPredicate, 8,
8606      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_S), 0,
8607                    MVT::i32, 2, 0, 1,
8608      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8609                    MVT::f32, 3, 3, 2, 4,
8610     0,
8611    56,
8612     OPC_CheckChild2CondCode, ISD::SETO,
8613     OPC_SwitchType , 24, MVT::i64,
8614      OPC_MoveParent,
8615      OPC_RecordChild1,
8616      OPC_RecordChild2,
8617      OPC_CheckType, MVT::f32,
8618      OPC_CheckPatternPredicate, 6,
8619      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
8620                    MVT::i64, 2, 0, 1,
8621      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8622                    MVT::f32, 3, 3, 2, 4,
8623     24, MVT::i32,
8624      OPC_MoveParent,
8625      OPC_RecordChild1,
8626      OPC_RecordChild2,
8627      OPC_CheckType, MVT::f32,
8628      OPC_CheckPatternPredicate, 8,
8629      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_S), 0,
8630                    MVT::i32, 2, 0, 1,
8631      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8632                    MVT::f32, 3, 3, 2, 4,
8633     0,
8634    56,
8635     OPC_CheckChild2CondCode, ISD::SETUEQ,
8636     OPC_SwitchType , 24, MVT::i64,
8637      OPC_MoveParent,
8638      OPC_RecordChild1,
8639      OPC_RecordChild2,
8640      OPC_CheckType, MVT::f32,
8641      OPC_CheckPatternPredicate, 6,
8642      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
8643                    MVT::i64, 2, 0, 1,
8644      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8645                    MVT::f32, 3, 3, 2, 4,
8646     24, MVT::i32,
8647      OPC_MoveParent,
8648      OPC_RecordChild1,
8649      OPC_RecordChild2,
8650      OPC_CheckType, MVT::f32,
8651      OPC_CheckPatternPredicate, 8,
8652      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_S), 0,
8653                    MVT::i32, 2, 0, 1,
8654      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8655                    MVT::f32, 3, 3, 2, 4,
8656     0,
8657    56,
8658     OPC_CheckChild2CondCode, ISD::SETULT,
8659     OPC_SwitchType , 24, MVT::i64,
8660      OPC_MoveParent,
8661      OPC_RecordChild1,
8662      OPC_RecordChild2,
8663      OPC_CheckType, MVT::f32,
8664      OPC_CheckPatternPredicate, 6,
8665      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
8666                    MVT::i64, 2, 0, 1,
8667      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8668                    MVT::f32, 3, 3, 2, 4,
8669     24, MVT::i32,
8670      OPC_MoveParent,
8671      OPC_RecordChild1,
8672      OPC_RecordChild2,
8673      OPC_CheckType, MVT::f32,
8674      OPC_CheckPatternPredicate, 8,
8675      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_S), 0,
8676                    MVT::i32, 2, 0, 1,
8677      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8678                    MVT::f32, 3, 3, 2, 4,
8679     0,
8680    56,
8681     OPC_CheckChild2CondCode, ISD::SETULE,
8682     OPC_SwitchType , 24, MVT::i64,
8683      OPC_MoveParent,
8684      OPC_RecordChild1,
8685      OPC_RecordChild2,
8686      OPC_CheckType, MVT::f32,
8687      OPC_CheckPatternPredicate, 6,
8688      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
8689                    MVT::i64, 2, 0, 1,
8690      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8691                    MVT::f32, 3, 3, 2, 4,
8692     24, MVT::i32,
8693      OPC_MoveParent,
8694      OPC_RecordChild1,
8695      OPC_RecordChild2,
8696      OPC_CheckType, MVT::f32,
8697      OPC_CheckPatternPredicate, 8,
8698      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_S), 0,
8699                    MVT::i32, 2, 0, 1,
8700      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8701                    MVT::f32, 3, 3, 2, 4,
8702     0,
8703    56,
8704     OPC_CheckChild2CondCode, ISD::SETUNE,
8705     OPC_SwitchType , 24, MVT::i64,
8706      OPC_MoveParent,
8707      OPC_RecordChild1,
8708      OPC_RecordChild2,
8709      OPC_CheckType, MVT::f32,
8710      OPC_CheckPatternPredicate, 6,
8711      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
8712                    MVT::i64, 2, 0, 1,
8713      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8714                    MVT::f32, 3, 3, 2, 4,
8715     24, MVT::i32,
8716      OPC_MoveParent,
8717      OPC_RecordChild1,
8718      OPC_RecordChild2,
8719      OPC_CheckType, MVT::f32,
8720      OPC_CheckPatternPredicate, 8,
8721      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_S), 0,
8722                    MVT::i32, 2, 0, 1,
8723      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8724                    MVT::f32, 3, 3, 2, 4,
8725     0,
8726    56,
8727     OPC_CheckChild2CondCode, ISD::SETUO,
8728     OPC_SwitchType , 24, MVT::i64,
8729      OPC_MoveParent,
8730      OPC_RecordChild1,
8731      OPC_RecordChild2,
8732      OPC_CheckType, MVT::f32,
8733      OPC_CheckPatternPredicate, 6,
8734      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
8735                    MVT::i64, 2, 0, 1,
8736      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8737                    MVT::f32, 3, 3, 2, 4,
8738     24, MVT::i32,
8739      OPC_MoveParent,
8740      OPC_RecordChild1,
8741      OPC_RecordChild2,
8742      OPC_CheckType, MVT::f32,
8743      OPC_CheckPatternPredicate, 8,
8744      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_S), 0,
8745                    MVT::i32, 2, 0, 1,
8746      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8747                    MVT::f32, 3, 3, 2, 4,
8748     0,
8749    0,
8750   63|128,4,
8751    OPC_CheckChild0Type, MVT::f64,
8752    OPC_RecordChild1,
8753    OPC_Scope, 56,
8754     OPC_CheckChild2CondCode, ISD::SETOEQ,
8755     OPC_SwitchType , 24, MVT::i64,
8756      OPC_MoveParent,
8757      OPC_RecordChild1,
8758      OPC_RecordChild2,
8759      OPC_CheckType, MVT::f64,
8760      OPC_CheckPatternPredicate, 7,
8761      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
8762                    MVT::i64, 2, 0, 1,
8763      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8764                    MVT::f64, 3, 3, 2, 4,
8765     24, MVT::i32,
8766      OPC_MoveParent,
8767      OPC_RecordChild1,
8768      OPC_RecordChild2,
8769      OPC_CheckType, MVT::f64,
8770      OPC_CheckPatternPredicate, 9,
8771      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CEQ_D), 0,
8772                    MVT::i32, 2, 0, 1,
8773      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8774                    MVT::f64, 3, 3, 2, 4,
8775     0,
8776    56,
8777     OPC_CheckChild2CondCode, ISD::SETOLT,
8778     OPC_SwitchType , 24, MVT::i64,
8779      OPC_MoveParent,
8780      OPC_RecordChild1,
8781      OPC_RecordChild2,
8782      OPC_CheckType, MVT::f64,
8783      OPC_CheckPatternPredicate, 7,
8784      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
8785                    MVT::i64, 2, 0, 1,
8786      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8787                    MVT::f64, 3, 3, 2, 4,
8788     24, MVT::i32,
8789      OPC_MoveParent,
8790      OPC_RecordChild1,
8791      OPC_RecordChild2,
8792      OPC_CheckType, MVT::f64,
8793      OPC_CheckPatternPredicate, 9,
8794      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLT_D), 0,
8795                    MVT::i32, 2, 0, 1,
8796      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8797                    MVT::f64, 3, 3, 2, 4,
8798     0,
8799    56,
8800     OPC_CheckChild2CondCode, ISD::SETOLE,
8801     OPC_SwitchType , 24, MVT::i64,
8802      OPC_MoveParent,
8803      OPC_RecordChild1,
8804      OPC_RecordChild2,
8805      OPC_CheckType, MVT::f64,
8806      OPC_CheckPatternPredicate, 7,
8807      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
8808                    MVT::i64, 2, 0, 1,
8809      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8810                    MVT::f64, 3, 3, 2, 4,
8811     24, MVT::i32,
8812      OPC_MoveParent,
8813      OPC_RecordChild1,
8814      OPC_RecordChild2,
8815      OPC_CheckType, MVT::f64,
8816      OPC_CheckPatternPredicate, 9,
8817      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CLE_D), 0,
8818                    MVT::i32, 2, 0, 1,
8819      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8820                    MVT::f64, 3, 3, 2, 4,
8821     0,
8822    56,
8823     OPC_CheckChild2CondCode, ISD::SETONE,
8824     OPC_SwitchType , 24, MVT::i64,
8825      OPC_MoveParent,
8826      OPC_RecordChild1,
8827      OPC_RecordChild2,
8828      OPC_CheckType, MVT::f64,
8829      OPC_CheckPatternPredicate, 7,
8830      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
8831                    MVT::i64, 2, 0, 1,
8832      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8833                    MVT::f64, 3, 3, 2, 4,
8834     24, MVT::i32,
8835      OPC_MoveParent,
8836      OPC_RecordChild1,
8837      OPC_RecordChild2,
8838      OPC_CheckType, MVT::f64,
8839      OPC_CheckPatternPredicate, 9,
8840      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CNE_D), 0,
8841                    MVT::i32, 2, 0, 1,
8842      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8843                    MVT::f64, 3, 3, 2, 4,
8844     0,
8845    56,
8846     OPC_CheckChild2CondCode, ISD::SETO,
8847     OPC_SwitchType , 24, MVT::i64,
8848      OPC_MoveParent,
8849      OPC_RecordChild1,
8850      OPC_RecordChild2,
8851      OPC_CheckType, MVT::f64,
8852      OPC_CheckPatternPredicate, 7,
8853      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
8854                    MVT::i64, 2, 0, 1,
8855      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8856                    MVT::f64, 3, 3, 2, 4,
8857     24, MVT::i32,
8858      OPC_MoveParent,
8859      OPC_RecordChild1,
8860      OPC_RecordChild2,
8861      OPC_CheckType, MVT::f64,
8862      OPC_CheckPatternPredicate, 9,
8863      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_COR_D), 0,
8864                    MVT::i32, 2, 0, 1,
8865      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8866                    MVT::f64, 3, 3, 2, 4,
8867     0,
8868    56,
8869     OPC_CheckChild2CondCode, ISD::SETUEQ,
8870     OPC_SwitchType , 24, MVT::i64,
8871      OPC_MoveParent,
8872      OPC_RecordChild1,
8873      OPC_RecordChild2,
8874      OPC_CheckType, MVT::f64,
8875      OPC_CheckPatternPredicate, 7,
8876      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
8877                    MVT::i64, 2, 0, 1,
8878      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8879                    MVT::f64, 3, 3, 2, 4,
8880     24, MVT::i32,
8881      OPC_MoveParent,
8882      OPC_RecordChild1,
8883      OPC_RecordChild2,
8884      OPC_CheckType, MVT::f64,
8885      OPC_CheckPatternPredicate, 9,
8886      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUEQ_D), 0,
8887                    MVT::i32, 2, 0, 1,
8888      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8889                    MVT::f64, 3, 3, 2, 4,
8890     0,
8891    56,
8892     OPC_CheckChild2CondCode, ISD::SETULT,
8893     OPC_SwitchType , 24, MVT::i64,
8894      OPC_MoveParent,
8895      OPC_RecordChild1,
8896      OPC_RecordChild2,
8897      OPC_CheckType, MVT::f64,
8898      OPC_CheckPatternPredicate, 7,
8899      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
8900                    MVT::i64, 2, 0, 1,
8901      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8902                    MVT::f64, 3, 3, 2, 4,
8903     24, MVT::i32,
8904      OPC_MoveParent,
8905      OPC_RecordChild1,
8906      OPC_RecordChild2,
8907      OPC_CheckType, MVT::f64,
8908      OPC_CheckPatternPredicate, 9,
8909      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULT_D), 0,
8910                    MVT::i32, 2, 0, 1,
8911      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8912                    MVT::f64, 3, 3, 2, 4,
8913     0,
8914    56,
8915     OPC_CheckChild2CondCode, ISD::SETULE,
8916     OPC_SwitchType , 24, MVT::i64,
8917      OPC_MoveParent,
8918      OPC_RecordChild1,
8919      OPC_RecordChild2,
8920      OPC_CheckType, MVT::f64,
8921      OPC_CheckPatternPredicate, 7,
8922      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
8923                    MVT::i64, 2, 0, 1,
8924      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8925                    MVT::f64, 3, 3, 2, 4,
8926     24, MVT::i32,
8927      OPC_MoveParent,
8928      OPC_RecordChild1,
8929      OPC_RecordChild2,
8930      OPC_CheckType, MVT::f64,
8931      OPC_CheckPatternPredicate, 9,
8932      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CULE_D), 0,
8933                    MVT::i32, 2, 0, 1,
8934      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8935                    MVT::f64, 3, 3, 2, 4,
8936     0,
8937    56,
8938     OPC_CheckChild2CondCode, ISD::SETUNE,
8939     OPC_SwitchType , 24, MVT::i64,
8940      OPC_MoveParent,
8941      OPC_RecordChild1,
8942      OPC_RecordChild2,
8943      OPC_CheckType, MVT::f64,
8944      OPC_CheckPatternPredicate, 7,
8945      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
8946                    MVT::i64, 2, 0, 1,
8947      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8948                    MVT::f64, 3, 3, 2, 4,
8949     24, MVT::i32,
8950      OPC_MoveParent,
8951      OPC_RecordChild1,
8952      OPC_RecordChild2,
8953      OPC_CheckType, MVT::f64,
8954      OPC_CheckPatternPredicate, 9,
8955      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUNE_D), 0,
8956                    MVT::i32, 2, 0, 1,
8957      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8958                    MVT::f64, 3, 3, 2, 4,
8959     0,
8960    56,
8961     OPC_CheckChild2CondCode, ISD::SETUO,
8962     OPC_SwitchType , 24, MVT::i64,
8963      OPC_MoveParent,
8964      OPC_RecordChild1,
8965      OPC_RecordChild2,
8966      OPC_CheckType, MVT::f64,
8967      OPC_CheckPatternPredicate, 7,
8968      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
8969                    MVT::i64, 2, 0, 1,
8970      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8971                    MVT::f64, 3, 3, 2, 4,
8972     24, MVT::i32,
8973      OPC_MoveParent,
8974      OPC_RecordChild1,
8975      OPC_RecordChild2,
8976      OPC_CheckType, MVT::f64,
8977      OPC_CheckPatternPredicate, 9,
8978      OPC_EmitNode1, TARGET_VAL(LoongArch::FCMP_CUN_D), 0,
8979                    MVT::i32, 2, 0, 1,
8980      OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8981                    MVT::f64, 3, 3, 2, 4,
8982     0,
8983    0,
8984   0,
8985  69,
8986   OPC_RecordChild0,
8987   OPC_Scope, 32,
8988    OPC_CheckChild0Type, MVT::i64,
8989    OPC_RecordChild1,
8990    OPC_RecordChild2,
8991    OPC_SwitchType , 11, MVT::f32,
8992     OPC_CheckPatternPredicate, 6,
8993     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
8994                   MVT::f32, 3, 2, 1, 0,
8995    11, MVT::f64,
8996     OPC_CheckPatternPredicate, 7,
8997     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
8998                   MVT::f64, 3, 2, 1, 0,
8999    0,
9000   32,
9001    OPC_CheckChild0Type, MVT::i32,
9002    OPC_RecordChild1,
9003    OPC_RecordChild2,
9004    OPC_SwitchType , 11, MVT::f32,
9005     OPC_CheckPatternPredicate, 8,
9006     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_S), 0,
9007                   MVT::f32, 3, 2, 1, 0,
9008    11, MVT::f64,
9009     OPC_CheckPatternPredicate, 9,
9010     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSEL_D), 0,
9011                   MVT::f64, 3, 2, 1, 0,
9012    0,
9013   0,
9014  0,
9015 56, TARGET_VAL(ISD::SDIV),
9016  OPC_RecordChild0,
9017  OPC_RecordChild1,
9018  OPC_SwitchType , 24, MVT::i64,
9019   OPC_Scope, 10,
9020    OPC_CheckPatternPredicate, 1,
9021    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_W), 0,
9022                  MVT::i64, 2, 0, 1,
9023   10,
9024    OPC_CheckPatternPredicate, 0,
9025    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_D), 0,
9026                  MVT::i64, 2, 0, 1,
9027   0,
9028  24, MVT::i32,
9029   OPC_Scope, 10,
9030    OPC_CheckPatternPredicate, 2,
9031    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_W), 0,
9032                  MVT::i32, 2, 0, 1,
9033   10,
9034    OPC_CheckPatternPredicate, 3,
9035    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_D), 0,
9036                  MVT::i32, 2, 0, 1,
9037   0,
9038  0,
9039 56, TARGET_VAL(ISD::UDIV),
9040  OPC_RecordChild0,
9041  OPC_RecordChild1,
9042  OPC_SwitchType , 24, MVT::i64,
9043   OPC_Scope, 10,
9044    OPC_CheckPatternPredicate, 1,
9045    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_WU), 0,
9046                  MVT::i64, 2, 0, 1,
9047   10,
9048    OPC_CheckPatternPredicate, 0,
9049    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_DU), 0,
9050                  MVT::i64, 2, 0, 1,
9051   0,
9052  24, MVT::i32,
9053   OPC_Scope, 10,
9054    OPC_CheckPatternPredicate, 2,
9055    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_WU), 0,
9056                  MVT::i32, 2, 0, 1,
9057   10,
9058    OPC_CheckPatternPredicate, 3,
9059    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::DIV_DU), 0,
9060                  MVT::i32, 2, 0, 1,
9061   0,
9062  0,
9063 56, TARGET_VAL(ISD::SREM),
9064  OPC_RecordChild0,
9065  OPC_RecordChild1,
9066  OPC_SwitchType , 24, MVT::i64,
9067   OPC_Scope, 10,
9068    OPC_CheckPatternPredicate, 1,
9069    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_W), 0,
9070                  MVT::i64, 2, 0, 1,
9071   10,
9072    OPC_CheckPatternPredicate, 0,
9073    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_D), 0,
9074                  MVT::i64, 2, 0, 1,
9075   0,
9076  24, MVT::i32,
9077   OPC_Scope, 10,
9078    OPC_CheckPatternPredicate, 2,
9079    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_W), 0,
9080                  MVT::i32, 2, 0, 1,
9081   10,
9082    OPC_CheckPatternPredicate, 3,
9083    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_D), 0,
9084                  MVT::i32, 2, 0, 1,
9085   0,
9086  0,
9087 56, TARGET_VAL(ISD::UREM),
9088  OPC_RecordChild0,
9089  OPC_RecordChild1,
9090  OPC_SwitchType , 24, MVT::i64,
9091   OPC_Scope, 10,
9092    OPC_CheckPatternPredicate, 1,
9093    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_WU), 0,
9094                  MVT::i64, 2, 0, 1,
9095   10,
9096    OPC_CheckPatternPredicate, 0,
9097    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_DU), 0,
9098                  MVT::i64, 2, 0, 1,
9099   0,
9100  24, MVT::i32,
9101   OPC_Scope, 10,
9102    OPC_CheckPatternPredicate, 2,
9103    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_WU), 0,
9104                  MVT::i32, 2, 0, 1,
9105   10,
9106    OPC_CheckPatternPredicate, 3,
9107    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOD_DU), 0,
9108                  MVT::i32, 2, 0, 1,
9109   0,
9110  0,
9111 98, TARGET_VAL(ISD::FDIV),
9112  OPC_Scope, 66,
9113   OPC_MoveChild0,
9114   OPC_CheckOpcode, TARGET_VAL(ISD::ConstantFP),
9115   OPC_CheckPredicate, 34,
9116   OPC_MoveParent,
9117   OPC_Scope, 30,
9118    OPC_MoveChild1,
9119    OPC_CheckOpcode, TARGET_VAL(ISD::FSQRT),
9120    OPC_RecordChild0,
9121    OPC_MoveParent,
9122    OPC_SwitchType , 9, MVT::f32,
9123     OPC_CheckPatternPredicate, 14,
9124     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRSQRT_S), 0,
9125                   MVT::f32, 1, 0,
9126    9, MVT::f64,
9127     OPC_CheckPatternPredicate, 15,
9128     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRSQRT_D), 0,
9129                   MVT::f64, 1, 0,
9130    0,
9131   25,
9132    OPC_RecordChild1,
9133    OPC_SwitchType , 9, MVT::f32,
9134     OPC_CheckPatternPredicate, 14,
9135     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRECIP_S), 0,
9136                   MVT::f32, 1, 0,
9137    9, MVT::f64,
9138     OPC_CheckPatternPredicate, 15,
9139     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRECIP_D), 0,
9140                   MVT::f64, 1, 0,
9141    0,
9142   0,
9143  28,
9144   OPC_RecordChild0,
9145   OPC_RecordChild1,
9146   OPC_SwitchType , 10, MVT::f32,
9147    OPC_CheckPatternPredicate, 14,
9148    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FDIV_S), 0,
9149                  MVT::f32, 2, 0, 1,
9150   10, MVT::f64,
9151    OPC_CheckPatternPredicate, 15,
9152    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FDIV_D), 0,
9153                  MVT::f64, 2, 0, 1,
9154   0,
9155  0,
9156 123|128,1, TARGET_VAL(ISD::FMA),
9157  OPC_Scope, 43,
9158   OPC_MoveChild0,
9159   OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
9160   OPC_RecordChild0,
9161   OPC_MoveParent,
9162   OPC_RecordChild1,
9163   OPC_MoveChild2,
9164   OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
9165   OPC_RecordChild0,
9166   OPC_MoveParent,
9167   OPC_CheckPredicate, 35,
9168   OPC_SwitchType , 11, MVT::f32,
9169    OPC_CheckPatternPredicate, 14,
9170    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_S), 0,
9171                  MVT::f32, 3, 0, 1, 2,
9172   11, MVT::f64,
9173    OPC_CheckPatternPredicate, 15,
9174    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_D), 0,
9175                  MVT::f64, 3, 0, 1, 2,
9176   0,
9177  67,
9178   OPC_RecordChild0,
9179   OPC_Scope, 42,
9180    OPC_MoveChild1,
9181    OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
9182    OPC_RecordChild0,
9183    OPC_MoveParent,
9184    OPC_MoveChild2,
9185    OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
9186    OPC_RecordChild0,
9187    OPC_MoveParent,
9188    OPC_CheckPredicate, 35,
9189    OPC_SwitchType , 11, MVT::f32,
9190     OPC_CheckPatternPredicate, 14,
9191     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_S), 0,
9192                   MVT::f32, 3, 1, 0, 2,
9193    11, MVT::f64,
9194     OPC_CheckPatternPredicate, 15,
9195     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_D), 0,
9196                   MVT::f64, 3, 1, 0, 2,
9197    0,
9198   20,
9199    OPC_RecordChild1,
9200    OPC_MoveChild2,
9201    OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
9202    OPC_RecordChild0,
9203    OPC_MoveParent,
9204    OPC_CheckType, MVT::f32,
9205    OPC_CheckPatternPredicate, 14,
9206    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMSUB_S), 0,
9207                  MVT::f32, 3, 0, 1, 2,
9208   0,
9209  21,
9210   OPC_MoveChild0,
9211   OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
9212   OPC_RecordChild0,
9213   OPC_MoveParent,
9214   OPC_RecordChild1,
9215   OPC_RecordChild2,
9216   OPC_CheckType, MVT::f32,
9217   OPC_CheckPatternPredicate, 14,
9218   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMSUB_S), 0,
9219                 MVT::f32, 3, 0, 1, 2,
9220  21,
9221   OPC_RecordChild0,
9222   OPC_RecordChild1,
9223   OPC_MoveChild2,
9224   OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
9225   OPC_RecordChild0,
9226   OPC_MoveParent,
9227   OPC_CheckType, MVT::f64,
9228   OPC_CheckPatternPredicate, 15,
9229   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMSUB_D), 0,
9230                 MVT::f64, 3, 0, 1, 2,
9231  21,
9232   OPC_MoveChild0,
9233   OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
9234   OPC_RecordChild0,
9235   OPC_MoveParent,
9236   OPC_RecordChild1,
9237   OPC_RecordChild2,
9238   OPC_CheckType, MVT::f64,
9239   OPC_CheckPatternPredicate, 15,
9240   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMSUB_D), 0,
9241                 MVT::f64, 3, 0, 1, 2,
9242  70,
9243   OPC_RecordChild0,
9244   OPC_Scope, 35,
9245    OPC_MoveChild1,
9246    OPC_CheckOpcode, TARGET_VAL(ISD::FNEG),
9247    OPC_RecordChild0,
9248    OPC_MoveParent,
9249    OPC_RecordChild2,
9250    OPC_SwitchType , 11, MVT::f32,
9251     OPC_CheckPatternPredicate, 14,
9252     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMSUB_S), 0,
9253                   MVT::f32, 3, 1, 0, 2,
9254    11, MVT::f64,
9255     OPC_CheckPatternPredicate, 15,
9256     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMSUB_D), 0,
9257                   MVT::f64, 3, 1, 0, 2,
9258    0,
9259   30,
9260    OPC_RecordChild1,
9261    OPC_RecordChild2,
9262    OPC_SwitchType , 11, MVT::f32,
9263     OPC_CheckPatternPredicate, 14,
9264     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMADD_S), 0,
9265                   MVT::f32, 3, 0, 1, 2,
9266    11, MVT::f64,
9267     OPC_CheckPatternPredicate, 15,
9268     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMADD_D), 0,
9269                   MVT::f64, 3, 0, 1, 2,
9270    0,
9271   0,
9272  0,
9273 41|128,1, TARGET_VAL(ISD::SINT_TO_FP),
9274  OPC_RecordChild0,
9275  OPC_Scope, 84,
9276   OPC_CheckChild0Type, MVT::i64,
9277   OPC_SwitchType , 39, MVT::f32,
9278    OPC_Scope, 19,
9279     OPC_CheckPatternPredicate, 10,
9280     OPC_CheckComplexPat, /*CP*/4, /*#*/0,
9281     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9282                   MVT::f32, 1, 1,
9283     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
9284                   MVT::f32, 1, 2,
9285    16,
9286     OPC_CheckPatternPredicate, 12,
9287     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9288                   MVT::f64, 1, 0,
9289     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_L), 0,
9290                   MVT::f32, 1, 1,
9291    0,
9292   37, MVT::f64,
9293    OPC_CheckPatternPredicate, 12,
9294    OPC_Scope, 17,
9295     OPC_CheckComplexPat, /*CP*/4, /*#*/0,
9296     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9297                   MVT::f32, 1, 1,
9298     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_W), 0,
9299                   MVT::f64, 1, 2,
9300    14,
9301     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9302                   MVT::f64, 1, 0,
9303     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_L), 0,
9304                   MVT::f64, 1, 1,
9305    0,
9306   0,
9307  80,
9308   OPC_CheckChild0Type, MVT::i32,
9309   OPC_SwitchType , 36, MVT::f32,
9310    OPC_Scope, 16,
9311     OPC_CheckPatternPredicate, 11,
9312     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9313                   MVT::f32, 1, 0,
9314     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
9315                   MVT::f32, 1, 1,
9316    16,
9317     OPC_CheckPatternPredicate, 13,
9318     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9319                   MVT::f64, 1, 0,
9320     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_L), 0,
9321                   MVT::f32, 1, 1,
9322    0,
9323   36, MVT::f64,
9324    OPC_Scope, 16,
9325     OPC_CheckPatternPredicate, 13,
9326     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9327                   MVT::f64, 1, 0,
9328     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_L), 0,
9329                   MVT::f64, 1, 1,
9330    16,
9331     OPC_CheckPatternPredicate, 16,
9332     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9333                   MVT::f32, 1, 0,
9334     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_W), 0,
9335                   MVT::f64, 1, 1,
9336    0,
9337   0,
9338  0,
9339 24, TARGET_VAL(ISD::UINT_TO_FP),
9340  OPC_RecordChild0,
9341  OPC_CheckChild0Type, MVT::i64,
9342  OPC_CheckType, MVT::f32,
9343  OPC_CheckPatternPredicate, 10,
9344  OPC_CheckComplexPat, /*CP*/4, /*#*/0,
9345  OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9346                MVT::f32, 1, 1,
9347  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
9348                MVT::f32, 1, 2,
9349 65, TARGET_VAL(ISD::FNEG),
9350  OPC_Scope, 36,
9351   OPC_MoveChild0,
9352   OPC_CheckOpcode, TARGET_VAL(ISD::FMA),
9353   OPC_RecordChild0,
9354   OPC_RecordChild1,
9355   OPC_RecordChild2,
9356   OPC_MoveParent,
9357   OPC_SwitchType , 11, MVT::f32,
9358    OPC_CheckPatternPredicate, 14,
9359    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_S), 0,
9360                  MVT::f32, 3, 0, 1, 2,
9361   11, MVT::f64,
9362    OPC_CheckPatternPredicate, 15,
9363    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNMADD_D), 0,
9364                  MVT::f64, 3, 0, 1, 2,
9365   0,
9366  25,
9367   OPC_RecordChild0,
9368   OPC_SwitchType , 9, MVT::f32,
9369    OPC_CheckPatternPredicate, 14,
9370    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_S), 0,
9371                  MVT::f32, 1, 0,
9372   9, MVT::f64,
9373    OPC_CheckPatternPredicate, 15,
9374    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
9375                  MVT::f64, 1, 0,
9376   0,
9377  0,
9378 121|128,3, TARGET_VAL(ISD::ConstantFP),
9379  OPC_Scope, 64,
9380   OPC_CheckPredicate, 36,
9381   OPC_SwitchType , 28, MVT::f32,
9382    OPC_Scope, 12,
9383     OPC_CheckPatternPredicate, 6,
9384     OPC_EmitRegister, MVT::i64, LoongArch::R0,
9385     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9386                   MVT::f32, 1, 0,
9387    12,
9388     OPC_CheckPatternPredicate, 8,
9389     OPC_EmitRegister, MVT::i32, LoongArch::R0,
9390     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9391                   MVT::f32, 1, 0,
9392    0,
9393   28, MVT::f64,
9394    OPC_Scope, 12,
9395     OPC_CheckPatternPredicate, 12,
9396     OPC_EmitRegister, MVT::i64, LoongArch::R0,
9397     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9398                   MVT::f64, 1, 0,
9399    12,
9400     OPC_CheckPatternPredicate, 13,
9401     OPC_EmitRegister, MVT::i32, LoongArch::R0,
9402     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9403                   MVT::f64, 1, 0,
9404    0,
9405   0,
9406  92,
9407   OPC_CheckPredicate, 37,
9408   OPC_SwitchType , 42, MVT::f32,
9409    OPC_Scope, 19,
9410     OPC_CheckPatternPredicate, 6,
9411     OPC_EmitRegister, MVT::i64, LoongArch::R0,
9412     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9413                   MVT::f32, 1, 0,
9414     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_S), 0,
9415                   MVT::f32, 1, 1,
9416    19,
9417     OPC_CheckPatternPredicate, 8,
9418     OPC_EmitRegister, MVT::i32, LoongArch::R0,
9419     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9420                   MVT::f32, 1, 0,
9421     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_S), 0,
9422                   MVT::f32, 1, 1,
9423    0,
9424   42, MVT::f64,
9425    OPC_Scope, 19,
9426     OPC_CheckPatternPredicate, 12,
9427     OPC_EmitRegister, MVT::i64, LoongArch::R0,
9428     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9429                   MVT::f64, 1, 0,
9430     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
9431                   MVT::f64, 1, 1,
9432    19,
9433     OPC_CheckPatternPredicate, 13,
9434     OPC_EmitRegister, MVT::i32, LoongArch::R0,
9435     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9436                   MVT::f64, 1, 0,
9437     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
9438                   MVT::f64, 1, 1,
9439    0,
9440   0,
9441  54,
9442   OPC_CheckPredicate, 36,
9443   OPC_CheckType, MVT::f64,
9444   OPC_Scope, 23,
9445    OPC_CheckPatternPredicate, 17,
9446    OPC_EmitRegister, MVT::i64, LoongArch::R0,
9447    OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W_64), 0,
9448                  MVT::f64, 1, 0,
9449    OPC_EmitRegister, MVT::i64, LoongArch::R0,
9450    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FRH_W), 0,
9451                  MVT::f64, 2, 1, 2,
9452   23,
9453    OPC_CheckPatternPredicate, 16,
9454    OPC_EmitRegister, MVT::i32, LoongArch::R0,
9455    OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W_64), 0,
9456                  MVT::f64, 1, 0,
9457    OPC_EmitRegister, MVT::i32, LoongArch::R0,
9458    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FRH_W), 0,
9459                  MVT::f64, 2, 1, 2,
9460   0,
9461  8|128,1,
9462   OPC_CheckPredicate, 34,
9463   OPC_SwitchType , 64, MVT::f32,
9464    OPC_Scope, 30,
9465     OPC_CheckPatternPredicate, 6,
9466     OPC_EmitRegister, MVT::i64, LoongArch::R0,
9467     OPC_EmitInteger, MVT::i64, 2,
9468     OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
9469                   MVT::i64, 2, 0, 1,
9470     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9471                   MVT::f32, 1, 2,
9472     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
9473                   MVT::f32, 1, 3,
9474    30,
9475     OPC_CheckPatternPredicate, 8,
9476     OPC_EmitRegister, MVT::i32, LoongArch::R0,
9477     OPC_EmitInteger, MVT::i32, 2,
9478     OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
9479                   MVT::i32, 2, 0, 1,
9480     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9481                   MVT::f32, 1, 2,
9482     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
9483                   MVT::f32, 1, 3,
9484    0,
9485   64, MVT::f64,
9486    OPC_Scope, 30,
9487     OPC_CheckPatternPredicate, 12,
9488     OPC_EmitRegister, MVT::i64, LoongArch::R0,
9489     OPC_EmitInteger, MVT::i64, 2,
9490     OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
9491                   MVT::i64, 2, 0, 1,
9492     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9493                   MVT::f64, 1, 2,
9494     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_L), 0,
9495                   MVT::f64, 1, 3,
9496    30,
9497     OPC_CheckPatternPredicate, 13,
9498     OPC_EmitRegister, MVT::i32, LoongArch::R0,
9499     OPC_EmitInteger, MVT::i32, 2,
9500     OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_D), 0,
9501                   MVT::i32, 2, 0, 1,
9502     OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_D), 0,
9503                   MVT::f64, 1, 2,
9504     OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FFINT_D_L), 0,
9505                   MVT::f64, 1, 3,
9506    0,
9507   0,
9508  68,
9509   OPC_CheckPredicate, 37,
9510   OPC_CheckType, MVT::f64,
9511   OPC_Scope, 30,
9512    OPC_CheckPatternPredicate, 17,
9513    OPC_EmitRegister, MVT::i64, LoongArch::R0,
9514    OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W_64), 0,
9515                  MVT::f64, 1, 0,
9516    OPC_EmitRegister, MVT::i64, LoongArch::R0,
9517    OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FRH_W), 0,
9518                  MVT::f64, 2, 1, 2,
9519    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
9520                  MVT::f64, 1, 3,
9521   30,
9522    OPC_CheckPatternPredicate, 16,
9523    OPC_EmitRegister, MVT::i32, LoongArch::R0,
9524    OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W_64), 0,
9525                  MVT::f64, 1, 0,
9526    OPC_EmitRegister, MVT::i32, LoongArch::R0,
9527    OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FRH_W), 0,
9528                  MVT::f64, 2, 1, 2,
9529    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FNEG_D), 0,
9530                  MVT::f64, 1, 3,
9531   0,
9532  82,
9533   OPC_CheckPredicate, 34,
9534   OPC_CheckType, MVT::f64,
9535   OPC_Scope, 37,
9536    OPC_CheckPatternPredicate, 17,
9537    OPC_EmitRegister, MVT::i64, LoongArch::R0,
9538    OPC_EmitInteger, MVT::i64, 2,
9539    OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
9540                  MVT::i64, 2, 0, 1,
9541    OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9542                  MVT::f32, 1, 2,
9543    OPC_EmitNode1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
9544                  MVT::f32, 1, 3,
9545    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCVT_D_S), 0,
9546                  MVT::f64, 1, 4,
9547   37,
9548    OPC_CheckPatternPredicate, 16,
9549    OPC_EmitRegister, MVT::i32, LoongArch::R0,
9550    OPC_EmitInteger, MVT::i32, 2,
9551    OPC_EmitNode1, TARGET_VAL(LoongArch::ADDI_W), 0,
9552                  MVT::i32, 2, 0, 1,
9553    OPC_EmitNode1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9554                  MVT::f32, 1, 2,
9555    OPC_EmitNode1, TARGET_VAL(LoongArch::FFINT_S_W), 0,
9556                  MVT::f32, 1, 3,
9557    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCVT_D_S), 0,
9558                  MVT::f64, 1, 4,
9559   0,
9560  0,
9561 28, TARGET_VAL(ISD::FADD),
9562  OPC_RecordChild0,
9563  OPC_RecordChild1,
9564  OPC_SwitchType , 10, MVT::f32,
9565   OPC_CheckPatternPredicate, 14,
9566   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FADD_S), 0,
9567                 MVT::f32, 2, 0, 1,
9568  10, MVT::f64,
9569   OPC_CheckPatternPredicate, 15,
9570   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FADD_D), 0,
9571                 MVT::f64, 2, 0, 1,
9572  0,
9573 28, TARGET_VAL(ISD::FSUB),
9574  OPC_RecordChild0,
9575  OPC_RecordChild1,
9576  OPC_SwitchType , 10, MVT::f32,
9577   OPC_CheckPatternPredicate, 14,
9578   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSUB_S), 0,
9579                 MVT::f32, 2, 0, 1,
9580  10, MVT::f64,
9581   OPC_CheckPatternPredicate, 15,
9582   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSUB_D), 0,
9583                 MVT::f64, 2, 0, 1,
9584  0,
9585 28, TARGET_VAL(ISD::FMUL),
9586  OPC_RecordChild0,
9587  OPC_RecordChild1,
9588  OPC_SwitchType , 10, MVT::f32,
9589   OPC_CheckPatternPredicate, 14,
9590   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMUL_S), 0,
9591                 MVT::f32, 2, 0, 1,
9592  10, MVT::f64,
9593   OPC_CheckPatternPredicate, 15,
9594   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMUL_D), 0,
9595                 MVT::f64, 2, 0, 1,
9596  0,
9597 76, TARGET_VAL(ISD::FCOPYSIGN),
9598  OPC_RecordChild0,
9599  OPC_RecordChild1,
9600  OPC_Scope, 35,
9601   OPC_CheckChild1Type, MVT::f32,
9602   OPC_SwitchType , 10, MVT::f32,
9603    OPC_CheckPatternPredicate, 14,
9604    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCOPYSIGN_S), 0,
9605                  MVT::f32, 2, 0, 1,
9606   17, MVT::f64,
9607    OPC_CheckPatternPredicate, 15,
9608    OPC_EmitNode1, TARGET_VAL(LoongArch::FCVT_D_S), 0,
9609                  MVT::f64, 1, 1,
9610    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCOPYSIGN_D), 0,
9611                  MVT::f64, 2, 0, 2,
9612   0,
9613  35,
9614   OPC_CheckChild1Type, MVT::f64,
9615   OPC_SwitchType , 10, MVT::f64,
9616    OPC_CheckPatternPredicate, 15,
9617    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCOPYSIGN_D), 0,
9618                  MVT::f64, 2, 0, 1,
9619   17, MVT::f32,
9620    OPC_CheckPatternPredicate, 15,
9621    OPC_EmitNode1, TARGET_VAL(LoongArch::FCVT_S_D), 0,
9622                  MVT::f32, 1, 1,
9623    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCOPYSIGN_S), 0,
9624                  MVT::f32, 2, 0, 2,
9625   0,
9626  0,
9627 28, TARGET_VAL(ISD::FMAXNUM_IEEE),
9628  OPC_RecordChild0,
9629  OPC_RecordChild1,
9630  OPC_SwitchType , 10, MVT::f32,
9631   OPC_CheckPatternPredicate, 14,
9632   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMAX_S), 0,
9633                 MVT::f32, 2, 0, 1,
9634  10, MVT::f64,
9635   OPC_CheckPatternPredicate, 15,
9636   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMAX_D), 0,
9637                 MVT::f64, 2, 0, 1,
9638  0,
9639 28, TARGET_VAL(ISD::FMINNUM_IEEE),
9640  OPC_RecordChild0,
9641  OPC_RecordChild1,
9642  OPC_SwitchType , 10, MVT::f32,
9643   OPC_CheckPatternPredicate, 14,
9644   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMIN_S), 0,
9645                 MVT::f32, 2, 0, 1,
9646  10, MVT::f64,
9647   OPC_CheckPatternPredicate, 15,
9648   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMIN_D), 0,
9649                 MVT::f64, 2, 0, 1,
9650  0,
9651 25, TARGET_VAL(ISD::FABS),
9652  OPC_RecordChild0,
9653  OPC_SwitchType , 9, MVT::f32,
9654   OPC_CheckPatternPredicate, 14,
9655   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FABS_S), 0,
9656                 MVT::f32, 1, 0,
9657  9, MVT::f64,
9658   OPC_CheckPatternPredicate, 15,
9659   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FABS_D), 0,
9660                 MVT::f64, 1, 0,
9661  0,
9662 25, TARGET_VAL(ISD::FSQRT),
9663  OPC_RecordChild0,
9664  OPC_SwitchType , 9, MVT::f32,
9665   OPC_CheckPatternPredicate, 14,
9666   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSQRT_S), 0,
9667                 MVT::f32, 1, 0,
9668  9, MVT::f64,
9669   OPC_CheckPatternPredicate, 15,
9670   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FSQRT_D), 0,
9671                 MVT::f64, 1, 0,
9672  0,
9673 27, TARGET_VAL(ISD::FCANONICALIZE),
9674  OPC_RecordChild0,
9675  OPC_SwitchType , 10, MVT::f32,
9676   OPC_CheckPatternPredicate, 14,
9677   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMAX_S), 0,
9678                 MVT::f32, 2, 0, 0,
9679  10, MVT::f64,
9680   OPC_CheckPatternPredicate, 15,
9681   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FMAX_D), 0,
9682                 MVT::f64, 2, 0, 0,
9683  0,
9684 57, TARGET_VAL(LoongArchISD::FTINT),
9685  OPC_RecordChild0,
9686  OPC_Scope, 26,
9687   OPC_CheckChild0Type, MVT::f32,
9688   OPC_SwitchType , 9, MVT::f32,
9689    OPC_CheckPatternPredicate, 14,
9690    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FTINTRZ_W_S), 0,
9691                  MVT::f32, 1, 0,
9692   9, MVT::f64,
9693    OPC_CheckPatternPredicate, 15,
9694    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FTINTRZ_L_S), 0,
9695                  MVT::f64, 1, 0,
9696   0,
9697  26,
9698   OPC_CheckChild0Type, MVT::f64,
9699   OPC_SwitchType , 9, MVT::f32,
9700    OPC_CheckPatternPredicate, 15,
9701    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FTINTRZ_W_D), 0,
9702                  MVT::f32, 1, 0,
9703   9, MVT::f64,
9704    OPC_CheckPatternPredicate, 15,
9705    OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FTINTRZ_L_D), 0,
9706                  MVT::f64, 1, 0,
9707   0,
9708  0,
9709 25, TARGET_VAL(ISD::FRINT),
9710  OPC_RecordChild0,
9711  OPC_SwitchType , 9, MVT::f32,
9712   OPC_CheckPatternPredicate, 18,
9713   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRINT_S), 0,
9714                 MVT::f32, 1, 0,
9715  9, MVT::f64,
9716   OPC_CheckPatternPredicate, 19,
9717   OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FRINT_D), 0,
9718                 MVT::f64, 1, 0,
9719  0,
9720 10, TARGET_VAL(ISD::FP_ROUND),
9721  OPC_RecordChild0,
9722  OPC_CheckPatternPredicate, 15,
9723  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCVT_S_D), 0,
9724                MVT::f32, 1, 0,
9725 10, TARGET_VAL(ISD::FP_EXTEND),
9726  OPC_RecordChild0,
9727  OPC_CheckPatternPredicate, 15,
9728  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::FCVT_D_S), 0,
9729                MVT::f64, 1, 0,
9730 10, TARGET_VAL(LoongArchISD::MOVGR2FR_W_LA64),
9731  OPC_RecordChild0,
9732  OPC_CheckPatternPredicate, 10,
9733  OPC_MorphNodeTo1, TARGET_VAL(LoongArch::MOVGR2FR_W), 0,
9734                MVT::f32, 1, 0,
9735 0,
9736    0
9737  }; // Total Array size is 22169 bytes
9738
9739  #undef TARGET_VAL
9740  SelectCodeCommon(N, MatcherTable,sizeof(MatcherTable));
9741}
9742#endif // GET_DAGISEL_BODY
9743
9744#ifdef GET_DAGISEL_DECL
9745bool CheckPatternPredicate(unsigned PredNo) const override;
9746#endif
9747#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
9748bool DAGISEL_CLASS_COLONCOLON CheckPatternPredicate(unsigned PredNo) const
9749#if DAGISEL_INLINE
9750  override
9751#endif
9752{
9753  switch (PredNo) {
9754  default: llvm_unreachable("Invalid predicate in table?");
9755  case 0: return (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
9756  case 1: return (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
9757  case 2: return (!Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
9758  case 3: return (Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
9759  case 4: return (MF->getSubtarget().checkFeatures("+64bit"));
9760  case 5: return (!(MF->getSubtarget().checkFeatures("+64bit")));
9761  case 6: return (Subtarget->hasBasicF()) && (MF->getSubtarget().checkFeatures("+64bit"));
9762  case 7: return (Subtarget->hasBasicD()) && (MF->getSubtarget().checkFeatures("+64bit"));
9763  case 8: return (Subtarget->hasBasicF()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
9764  case 9: return (Subtarget->hasBasicD()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
9765  case 10: return (Subtarget->hasBasicF()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
9766  case 11: return (Subtarget->hasBasicF()) && (!Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
9767  case 12: return (Subtarget->hasBasicD()) && (Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
9768  case 13: return (Subtarget->hasBasicD()) && (Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
9769  case 14: return (Subtarget->hasBasicF());
9770  case 15: return (Subtarget->hasBasicD());
9771  case 16: return (Subtarget->hasBasicD()) && (!Subtarget->is64Bit()) && (!(MF->getSubtarget().checkFeatures("+64bit")));
9772  case 17: return (Subtarget->hasBasicD()) && (!Subtarget->is64Bit()) && (MF->getSubtarget().checkFeatures("+64bit"));
9773  case 18: return (Subtarget->hasBasicF()) && (Subtarget->is64Bit());
9774  case 19: return (Subtarget->hasBasicD()) && (Subtarget->is64Bit());
9775  }
9776}
9777#endif // GET_DAGISEL_BODY
9778
9779#ifdef GET_DAGISEL_DECL
9780bool CheckNodePredicate(SDNode *Node, unsigned PredNo) const override;
9781#endif
9782#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
9783bool DAGISEL_CLASS_COLONCOLON CheckNodePredicate(SDNode *Node, unsigned PredNo) const
9784#if DAGISEL_INLINE
9785  override
9786#endif
9787{
9788  switch (PredNo) {
9789  default: llvm_unreachable("Invalid predicate in table?");
9790  case 0: {
9791    // Predicate_uimm2_plus1
9792    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
9793return isUInt<2>(Imm - 1);
9794  }
9795  case 1: {
9796    // Predicate_uimm5
9797    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
9798return isUInt<5>(Imm);
9799  }
9800  case 2: {
9801    // Predicate_uimm6
9802    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
9803return isUInt<6>(Imm);
9804  }
9805  case 3: {
9806    // Predicate_simm12
9807    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
9808return isInt<12>(Imm);
9809  }
9810  case 4: {
9811    // Predicate_AddLike
9812    SDNode *N = Node;
9813    (void)N;
9814
9815    return N->getOpcode() == ISD::ADD || isOrEquivalentToAdd(N);
9816
9817  }
9818  case 5: {
9819    // Predicate_unindexedload
9820    SDNode *N = Node;
9821    (void)N;
9822if (cast<LoadSDNode>(N)->getAddressingMode() != ISD::UNINDEXED) return false;
9823return true;
9824
9825  }
9826  case 6: {
9827    // Predicate_sextload
9828    SDNode *N = Node;
9829    (void)N;
9830if (cast<LoadSDNode>(N)->getExtensionType() != ISD::SEXTLOAD) return false;
9831return true;
9832
9833  }
9834  case 7: {
9835    // Predicate_sextloadi8
9836    // Predicate_extloadi8
9837    // Predicate_zextloadi8
9838    // Predicate_atomic_load_8
9839    // Predicate_atomic_store_8
9840    SDNode *N = Node;
9841    (void)N;
9842if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i8) return false;
9843return true;
9844
9845  }
9846  case 8: {
9847    // Predicate_extload
9848    SDNode *N = Node;
9849    (void)N;
9850if (cast<LoadSDNode>(N)->getExtensionType() != ISD::EXTLOAD) return false;
9851return true;
9852
9853  }
9854  case 9: {
9855    // Predicate_sextloadi16
9856    // Predicate_extloadi16
9857    // Predicate_zextloadi16
9858    // Predicate_atomic_load_16
9859    // Predicate_atomic_store_16
9860    SDNode *N = Node;
9861    (void)N;
9862if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i16) return false;
9863return true;
9864
9865  }
9866  case 10: {
9867    // Predicate_load
9868    SDNode *N = Node;
9869    (void)N;
9870if (cast<LoadSDNode>(N)->getExtensionType() != ISD::NON_EXTLOAD) return false;
9871return true;
9872
9873  }
9874  case 11: {
9875    // Predicate_zextload
9876    SDNode *N = Node;
9877    (void)N;
9878if (cast<LoadSDNode>(N)->getExtensionType() != ISD::ZEXTLOAD) return false;
9879return true;
9880
9881  }
9882  case 12: {
9883    // Predicate_sextloadi32
9884    // Predicate_extloadi32
9885    // Predicate_zextloadi32
9886    // Predicate_atomic_load_32
9887    // Predicate_atomic_store_32
9888    // Predicate_atomic_load_nand_32
9889    // Predicate_atomic_swap_32
9890    // Predicate_atomic_load_add_32
9891    // Predicate_atomic_load_and_32
9892    // Predicate_atomic_load_or_32
9893    // Predicate_atomic_load_xor_32
9894    // Predicate_atomic_load_umin_32
9895    // Predicate_atomic_load_umax_32
9896    // Predicate_atomic_load_min_32
9897    // Predicate_atomic_load_max_32
9898    // Predicate_atomic_cmp_swap_32
9899    // Predicate_atomic_load_sub_32
9900    SDNode *N = Node;
9901    (void)N;
9902if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i32) return false;
9903return true;
9904
9905  }
9906  case 13: {
9907    // Predicate_simm14_lsl2
9908    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
9909return isShiftedInt<14,2>(Imm);
9910  }
9911  case 14: {
9912    // Predicate_unindexedstore
9913    SDNode *N = Node;
9914    (void)N;
9915if (cast<StoreSDNode>(N)->getAddressingMode() != ISD::UNINDEXED) return false;
9916return true;
9917
9918  }
9919  case 15: {
9920    // Predicate_truncstore
9921    SDNode *N = Node;
9922    (void)N;
9923 if (!cast<StoreSDNode>(N)->isTruncatingStore()) return false;
9924return true;
9925
9926  }
9927  case 16: {
9928    // Predicate_truncstorei8
9929    SDNode *N = Node;
9930    (void)N;
9931if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i8) return false;
9932 if (!cast<StoreSDNode>(N)->isTruncatingStore()) return false;
9933return true;
9934
9935  }
9936  case 17: {
9937    // Predicate_truncstorei16
9938    SDNode *N = Node;
9939    (void)N;
9940if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i16) return false;
9941 if (!cast<StoreSDNode>(N)->isTruncatingStore()) return false;
9942return true;
9943
9944  }
9945  case 18: {
9946    // Predicate_truncstorei32
9947    SDNode *N = Node;
9948    (void)N;
9949if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i32) return false;
9950 if (!cast<StoreSDNode>(N)->isTruncatingStore()) return false;
9951return true;
9952
9953  }
9954  case 19: {
9955    // Predicate_store
9956    SDNode *N = Node;
9957    (void)N;
9958 if (cast<StoreSDNode>(N)->isTruncatingStore()) return false;
9959return true;
9960
9961  }
9962  case 20: {
9963    // Predicate_atomic_load_64
9964    // Predicate_atomic_store_64
9965    // Predicate_atomic_load_nand_64
9966    // Predicate_atomic_swap_64
9967    // Predicate_atomic_load_add_64
9968    // Predicate_atomic_load_and_64
9969    // Predicate_atomic_load_or_64
9970    // Predicate_atomic_load_xor_64
9971    // Predicate_atomic_load_umin_64
9972    // Predicate_atomic_load_umax_64
9973    // Predicate_atomic_load_min_64
9974    // Predicate_atomic_load_max_64
9975    // Predicate_atomic_cmp_swap_64
9976    // Predicate_atomic_load_sub_64
9977    SDNode *N = Node;
9978    (void)N;
9979if (cast<MemSDNode>(N)->getMemoryVT() != MVT::i64) return false;
9980return true;
9981
9982  }
9983  case 21: {
9984    // Predicate_atomic_store_unordered_monotonic_32
9985    // Predicate_atomic_store_unordered_monotonic_64
9986    SDNode *N = Node;
9987    (void)N;
9988
9989  AtomicOrdering Ordering = cast<AtomicSDNode>(N)->getSuccessOrdering();
9990  return !isReleaseOrStronger(Ordering);
9991
9992  }
9993  case 22: {
9994    // Predicate_atomic_store_release_seqcst_32
9995    // Predicate_atomic_store_release_seqcst_64
9996    SDNode *N = Node;
9997    (void)N;
9998
9999  AtomicOrdering Ordering = cast<AtomicSDNode>(N)->getSuccessOrdering();
10000  return isReleaseOrStronger(Ordering);
10001
10002  }
10003  case 23: {
10004    // Predicate_uimm12
10005    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
10006return isUInt<12>(Imm);
10007  }
10008  case 24: {
10009    // Predicate_simm16_lsl2
10010    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
10011return isInt<16>(Imm>>2);
10012  }
10013  case 25: {
10014    // Predicate_simm12_plus1
10015    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
10016return (isInt<12>(Imm) && Imm != -2048) || Imm == 2048;
10017  }
10018  case 26: {
10019    // Predicate_uimm15
10020    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
10021return isUInt<15>(Imm);
10022  }
10023  case 27: {
10024    // Predicate_uimm14
10025    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
10026return isUInt<14>(Imm);
10027  }
10028  case 28: {
10029    // Predicate_uimm2
10030    int64_t Imm = cast<ConstantSDNode>(Node)->getSExtValue();
10031return isUInt<2>(Imm);
10032  }
10033  case 29: {
10034    // Predicate_atomic_load_nand_64_monotonic
10035    // Predicate_atomic_load_nand_32_monotonic
10036    // Predicate_atomic_swap_32_monotonic
10037    // Predicate_atomic_load_add_32_monotonic
10038    // Predicate_atomic_load_and_32_monotonic
10039    // Predicate_atomic_load_or_32_monotonic
10040    // Predicate_atomic_load_xor_32_monotonic
10041    // Predicate_atomic_load_sub_32_monotonic
10042    SDNode *N = Node;
10043    (void)N;
10044if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::Monotonic) return false;
10045return true;
10046
10047  }
10048  case 30: {
10049    // Predicate_atomic_load_nand_64_acquire
10050    // Predicate_atomic_load_nand_32_acquire
10051    // Predicate_atomic_swap_32_acquire
10052    // Predicate_atomic_load_add_32_acquire
10053    // Predicate_atomic_load_and_32_acquire
10054    // Predicate_atomic_load_or_32_acquire
10055    // Predicate_atomic_load_xor_32_acquire
10056    // Predicate_atomic_load_sub_32_acquire
10057    SDNode *N = Node;
10058    (void)N;
10059if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::Acquire) return false;
10060return true;
10061
10062  }
10063  case 31: {
10064    // Predicate_atomic_load_nand_64_release
10065    // Predicate_atomic_load_nand_32_release
10066    // Predicate_atomic_swap_32_release
10067    // Predicate_atomic_load_add_32_release
10068    // Predicate_atomic_load_and_32_release
10069    // Predicate_atomic_load_or_32_release
10070    // Predicate_atomic_load_xor_32_release
10071    // Predicate_atomic_load_sub_32_release
10072    SDNode *N = Node;
10073    (void)N;
10074if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::Release) return false;
10075return true;
10076
10077  }
10078  case 32: {
10079    // Predicate_atomic_load_nand_64_acq_rel
10080    // Predicate_atomic_load_nand_32_acq_rel
10081    // Predicate_atomic_swap_32_acq_rel
10082    // Predicate_atomic_load_add_32_acq_rel
10083    // Predicate_atomic_load_and_32_acq_rel
10084    // Predicate_atomic_load_or_32_acq_rel
10085    // Predicate_atomic_load_xor_32_acq_rel
10086    // Predicate_atomic_load_sub_32_acq_rel
10087    SDNode *N = Node;
10088    (void)N;
10089if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::AcquireRelease) return false;
10090return true;
10091
10092  }
10093  case 33: {
10094    // Predicate_atomic_load_nand_64_seq_cst
10095    // Predicate_atomic_load_nand_32_seq_cst
10096    // Predicate_atomic_swap_32_seq_cst
10097    // Predicate_atomic_load_add_32_seq_cst
10098    // Predicate_atomic_load_and_32_seq_cst
10099    // Predicate_atomic_load_or_32_seq_cst
10100    // Predicate_atomic_load_xor_32_seq_cst
10101    // Predicate_atomic_load_sub_32_seq_cst
10102    SDNode *N = Node;
10103    (void)N;
10104if (cast<AtomicSDNode>(N)->getMergedOrdering() != AtomicOrdering::SequentiallyConsistent) return false;
10105return true;
10106
10107  }
10108  case 34: {
10109    // Predicate_fpimm1
10110    auto *N = cast<ConstantFPSDNode>(Node);
10111    (void)N;
10112return N->isExactlyValue(+1.0);
10113  }
10114  case 35: {
10115    // Predicate_fma_nsz
10116    SDNode *N = Node;
10117    (void)N;
10118
10119  return N->getFlags().hasNoSignedZeros();
10120
10121  }
10122  case 36: {
10123    // Predicate_fpimm0
10124    auto *N = cast<ConstantFPSDNode>(Node);
10125    (void)N;
10126return N->isExactlyValue(+0.0);
10127  }
10128  case 37: {
10129    // Predicate_fpimm0neg
10130    auto *N = cast<ConstantFPSDNode>(Node);
10131    (void)N;
10132return N->isExactlyValue(-0.0);
10133  }
10134  }
10135}
10136#endif // GET_DAGISEL_BODY
10137
10138#ifdef GET_DAGISEL_DECL
10139bool CheckComplexPattern(SDNode *Root, SDNode *Parent,
10140      SDValue N, unsigned PatternNo,
10141      SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result) override;
10142#endif
10143#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
10144bool DAGISEL_CLASS_COLONCOLON CheckComplexPattern(SDNode *Root, SDNode *Parent,
10145      SDValue N, unsigned PatternNo,
10146      SmallVectorImpl<std::pair<SDValue, SDNode *>> &Result)
10147#if DAGISEL_INLINE
10148  override
10149#endif
10150{
10151  unsigned NextRes = Result.size();
10152  switch (PatternNo) {
10153  default: llvm_unreachable("Invalid pattern # in table?");
10154  case 0:
10155    Result.resize(NextRes+1);
10156  return SelectBaseAddr(N, Result[NextRes+0].first);
10157  case 1:
10158    Result.resize(NextRes+1);
10159  return selectNonFIBaseAddr(N, Result[NextRes+0].first);
10160  case 2:
10161    Result.resize(NextRes+1);
10162  return selectShiftMaskGRLen(N, Result[NextRes+0].first);
10163  case 3:
10164    Result.resize(NextRes+1);
10165  return selectShiftMask32(N, Result[NextRes+0].first);
10166  case 4:
10167    Result.resize(NextRes+1);
10168  return selectSExti32(N, Result[NextRes+0].first);
10169  }
10170}
10171#endif // GET_DAGISEL_BODY
10172
10173#ifdef GET_DAGISEL_DECL
10174SDValue RunSDNodeXForm(SDValue V, unsigned XFormNo) override;
10175#endif
10176#if defined(GET_DAGISEL_BODY) || DAGISEL_INLINE
10177SDValue DAGISEL_CLASS_COLONCOLON RunSDNodeXForm(SDValue V, unsigned XFormNo)
10178#if DAGISEL_INLINE
10179  override
10180#endif
10181{
10182  switch (XFormNo) {
10183  default: llvm_unreachable("Invalid xform # in table?");
10184  case 0: {
10185    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
10186
10187  return CurDAG->getTargetConstant(32 - N->getZExtValue(), SDLoc(N),
10188                                   N->getValueType(0));
10189
10190  }
10191  case 1: {
10192    ConstantSDNode *N = cast<ConstantSDNode>(V.getNode());
10193
10194  return CurDAG->getTargetConstant(-N->getSExtValue(), SDLoc(N),
10195                                   N->getValueType(0));
10196
10197  }
10198  }
10199}
10200#endif // GET_DAGISEL_BODY
10201
10202
10203#ifdef DAGISEL_INLINE
10204#undef DAGISEL_INLINE
10205#endif
10206#ifdef DAGISEL_CLASS_COLONCOLON
10207#undef DAGISEL_CLASS_COLONCOLON
10208#endif
10209#ifdef GET_DAGISEL_DECL
10210#undef GET_DAGISEL_DECL
10211#endif
10212#ifdef GET_DAGISEL_BODY
10213#undef GET_DAGISEL_BODY
10214#endif
10215