1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Target SDNode descriptions *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* From: LoongArch.td *|
7|* *|
8\*===----------------------------------------------------------------------===*/
9
10#ifdef GET_SDNODE_ENUM
11#undef GET_SDNODE_ENUM
12
13namespace llvm::LoongArchISD {
14
15enum GenNodeType : unsigned {
16 BITREV_4B = ISD::BUILTIN_OP_END,
17 BITREV_8B,
18 BITREV_W,
19 BRCOND,
20 BREAK,
21 BR_CC,
22 BSTRINS,
23 BSTRPICK,
24 BUILD_PAIR_F64,
25 CALL,
26 CALL_LARGE,
27 CALL_MEDIUM,
28 CLZ_W,
29 CPUCFG,
30 CRCC_W_B_W,
31 CRCC_W_D_W,
32 CRCC_W_H_W,
33 CRCC_W_W_W,
34 CRC_W_B_W,
35 CRC_W_D_W,
36 CRC_W_H_W,
37 CRC_W_W_W,
38 CSRRD,
39 CSRWR,
40 CSRXCHG,
41 CTZ_W,
42 DBAR,
43 DIV_W,
44 DIV_WU,
45 FRECIPE,
46 FRSQRTE,
47 FTINT,
48 IBAR,
49 IOCSRRD_B,
50 IOCSRRD_D,
51 IOCSRRD_H,
52 IOCSRRD_W,
53 IOCSRWR_B,
54 IOCSRWR_D,
55 IOCSRWR_H,
56 IOCSRWR_W,
57 MOD_W,
58 MOD_WU,
59 MOVFCSR2GR,
60 MOVFR2GR_S_LA64,
61 MOVGR2FCSR,
62 MOVGR2FR_D,
63 MOVGR2FR_D_LO_HI,
64 MOVGR2FR_W,
65 MOVGR2FR_W_LA64,
66 PROBED_ALLOCA,
67 RET,
68 REVB_2H,
69 REVB_2W,
70 ROTR_W,
71 SELECT_CC,
72 SITOF,
73 SLL_W,
74 SPLIT_PAIR_F64,
75 SRA_W,
76 SRL_W,
77 SYSCALL,
78 TAIL,
79 TAIL_LARGE,
80 TAIL_MEDIUM,
81 VALL_NONZERO,
82 VALL_ZERO,
83 VANDN,
84 VANY_NONZERO,
85 VANY_ZERO,
86 VBSLL,
87 VBSRL,
88 VEXTH,
89 VEXTH_U,
90 VFCVT,
91 VFCVTH,
92 VFCVTL,
93 VFFINT,
94 VFTINTRZ,
95 VHADDW,
96 VHADDW_U,
97 VHSUBW,
98 VHSUBW_U,
99 VILVH,
100 VILVL,
101 VLDREPL,
102 VMSKEQZ,
103 VMSKGEZ,
104 VMSKLTZ,
105 VMSKNEZ,
106 VPACKEV,
107 VPACKOD,
108 VPERMI,
109 VPICKEV,
110 VPICKOD,
111 VPICK_SEXT_ELT,
112 VPICK_ZEXT_ELT,
113 VREPLGR2VR,
114 VREPLVE,
115 VREPLVEI,
116 VSHUF,
117 VSHUF4I,
118 VSHUF4I_D,
119 VSLLI,
120 VSLLWIL,
121 VSLLWIL_U,
122 VSRAR,
123 VSRLI,
124 VSRLR,
125 XVINSVE0,
126 XVMSKEQZ,
127 XVMSKGEZ,
128 XVMSKLTZ,
129 XVMSKNEZ,
130 XVPERM,
131 XVPERMI,
132 XVREPLVE0,
133 XVREPLVE0Q,
134};
135
136static constexpr unsigned GENERATED_OPCODE_END = XVREPLVE0Q + 1;
137
138} // namespace llvm::LoongArchISD
139
140#endif // GET_SDNODE_ENUM
141
142#ifdef GET_SDNODE_DESC
143#undef GET_SDNODE_DESC
144
145namespace llvm {
146
147
148#ifdef __GNUC__
149#pragma GCC diagnostic push
150#pragma GCC diagnostic ignored "-Woverlength-strings"
151#endif
152static constexpr char LoongArchSDNodeNamesStorage[] =
153 "\0"
154 "LoongArchISD::BITREV_4B\0"
155 "LoongArchISD::BITREV_8B\0"
156 "LoongArchISD::BITREV_W\0"
157 "LoongArchISD::BRCOND\0"
158 "LoongArchISD::BREAK\0"
159 "LoongArchISD::BR_CC\0"
160 "LoongArchISD::BSTRINS\0"
161 "LoongArchISD::BSTRPICK\0"
162 "LoongArchISD::BUILD_PAIR_F64\0"
163 "LoongArchISD::CALL\0"
164 "LoongArchISD::CALL_LARGE\0"
165 "LoongArchISD::CALL_MEDIUM\0"
166 "LoongArchISD::CLZ_W\0"
167 "LoongArchISD::CPUCFG\0"
168 "LoongArchISD::CRCC_W_B_W\0"
169 "LoongArchISD::CRCC_W_D_W\0"
170 "LoongArchISD::CRCC_W_H_W\0"
171 "LoongArchISD::CRCC_W_W_W\0"
172 "LoongArchISD::CRC_W_B_W\0"
173 "LoongArchISD::CRC_W_D_W\0"
174 "LoongArchISD::CRC_W_H_W\0"
175 "LoongArchISD::CRC_W_W_W\0"
176 "LoongArchISD::CSRRD\0"
177 "LoongArchISD::CSRWR\0"
178 "LoongArchISD::CSRXCHG\0"
179 "LoongArchISD::CTZ_W\0"
180 "LoongArchISD::DBAR\0"
181 "LoongArchISD::DIV_W\0"
182 "LoongArchISD::DIV_WU\0"
183 "LoongArchISD::FRECIPE\0"
184 "LoongArchISD::FRSQRTE\0"
185 "LoongArchISD::FTINT\0"
186 "LoongArchISD::IBAR\0"
187 "LoongArchISD::IOCSRRD_B\0"
188 "LoongArchISD::IOCSRRD_D\0"
189 "LoongArchISD::IOCSRRD_H\0"
190 "LoongArchISD::IOCSRRD_W\0"
191 "LoongArchISD::IOCSRWR_B\0"
192 "LoongArchISD::IOCSRWR_D\0"
193 "LoongArchISD::IOCSRWR_H\0"
194 "LoongArchISD::IOCSRWR_W\0"
195 "LoongArchISD::MOD_W\0"
196 "LoongArchISD::MOD_WU\0"
197 "LoongArchISD::MOVFCSR2GR\0"
198 "LoongArchISD::MOVFR2GR_S_LA64\0"
199 "LoongArchISD::MOVGR2FCSR\0"
200 "LoongArchISD::MOVGR2FR_D\0"
201 "LoongArchISD::MOVGR2FR_D_LO_HI\0"
202 "LoongArchISD::MOVGR2FR_W\0"
203 "LoongArchISD::MOVGR2FR_W_LA64\0"
204 "LoongArchISD::PROBED_ALLOCA\0"
205 "LoongArchISD::RET\0"
206 "LoongArchISD::REVB_2H\0"
207 "LoongArchISD::REVB_2W\0"
208 "LoongArchISD::ROTR_W\0"
209 "LoongArchISD::SELECT_CC\0"
210 "LoongArchISD::SITOF\0"
211 "LoongArchISD::SLL_W\0"
212 "LoongArchISD::SPLIT_PAIR_F64\0"
213 "LoongArchISD::SRA_W\0"
214 "LoongArchISD::SRL_W\0"
215 "LoongArchISD::SYSCALL\0"
216 "LoongArchISD::TAIL\0"
217 "LoongArchISD::TAIL_LARGE\0"
218 "LoongArchISD::TAIL_MEDIUM\0"
219 "LoongArchISD::VALL_NONZERO\0"
220 "LoongArchISD::VALL_ZERO\0"
221 "LoongArchISD::VANDN\0"
222 "LoongArchISD::VANY_NONZERO\0"
223 "LoongArchISD::VANY_ZERO\0"
224 "LoongArchISD::VBSLL\0"
225 "LoongArchISD::VBSRL\0"
226 "LoongArchISD::VEXTH\0"
227 "LoongArchISD::VEXTH_U\0"
228 "LoongArchISD::VFCVT\0"
229 "LoongArchISD::VFCVTH\0"
230 "LoongArchISD::VFCVTL\0"
231 "LoongArchISD::VFFINT\0"
232 "LoongArchISD::VFTINTRZ\0"
233 "LoongArchISD::VHADDW\0"
234 "LoongArchISD::VHADDW_U\0"
235 "LoongArchISD::VHSUBW\0"
236 "LoongArchISD::VHSUBW_U\0"
237 "LoongArchISD::VILVH\0"
238 "LoongArchISD::VILVL\0"
239 "LoongArchISD::VLDREPL\0"
240 "LoongArchISD::VMSKEQZ\0"
241 "LoongArchISD::VMSKGEZ\0"
242 "LoongArchISD::VMSKLTZ\0"
243 "LoongArchISD::VMSKNEZ\0"
244 "LoongArchISD::VPACKEV\0"
245 "LoongArchISD::VPACKOD\0"
246 "LoongArchISD::VPERMI\0"
247 "LoongArchISD::VPICKEV\0"
248 "LoongArchISD::VPICKOD\0"
249 "LoongArchISD::VPICK_SEXT_ELT\0"
250 "LoongArchISD::VPICK_ZEXT_ELT\0"
251 "LoongArchISD::VREPLGR2VR\0"
252 "LoongArchISD::VREPLVE\0"
253 "LoongArchISD::VREPLVEI\0"
254 "LoongArchISD::VSHUF\0"
255 "LoongArchISD::VSHUF4I\0"
256 "LoongArchISD::VSHUF4I_D\0"
257 "LoongArchISD::VSLLI\0"
258 "LoongArchISD::VSLLWIL\0"
259 "LoongArchISD::VSLLWIL_U\0"
260 "LoongArchISD::VSRAR\0"
261 "LoongArchISD::VSRLI\0"
262 "LoongArchISD::VSRLR\0"
263 "LoongArchISD::XVINSVE0\0"
264 "LoongArchISD::XVMSKEQZ\0"
265 "LoongArchISD::XVMSKGEZ\0"
266 "LoongArchISD::XVMSKLTZ\0"
267 "LoongArchISD::XVMSKNEZ\0"
268 "LoongArchISD::XVPERM\0"
269 "LoongArchISD::XVPERMI\0"
270 "LoongArchISD::XVREPLVE0\0"
271 "LoongArchISD::XVREPLVE0Q\0"
272 ;
273#ifdef __GNUC__
274#pragma GCC diagnostic pop
275#endif
276
277static constexpr llvm::StringTable
278LoongArchSDNodeNames = LoongArchSDNodeNamesStorage;
279
280static const VTByHwModePair LoongArchVTByHwModeTable[] = {
281 /* 0 */ {0, MVT::i32}, {1, MVT::i64},
282};
283
284static const SDTypeConstraint LoongArchSDTypeConstraints[] = {
285 /* 0 */ {SDTCisVT, 2, 0, 0, MVT::f64}, {SDTCisVT, 1, 0, 0, MVT::i32}, {SDTCisVT, 0, 0, 0, MVT::i32},
286 /* 3 */ {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVT, 0, 0, 2, 0},
287 /* 5 */ {SDTCisVT, 1, 0, 0, MVT::f32}, {SDTCisVT, 0, 0, 0, MVT::i64},
288 /* 7 */ {SDTCisVT, 1, 0, 0, MVT::i32}, {SDTCisVT, 0, 0, 0, MVT::f32},
289 /* 9 */ {SDTCisVT, 1, 0, 0, MVT::i64}, {SDTCisVT, 0, 0, 0, MVT::f32},
290 /* 11 */ {SDTCisSameAs, 1, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVT, 1, 0, 0, MVT::i32}, {SDTCisVT, 0, 0, 0, MVT::f64},
291 /* 14 */ {SDTCisVT, 1, 0, 0, MVT::i64}, {SDTCisVT, 0, 0, 0, MVT::f64},
292 /* 16 */ {SDTCisPtrTy, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
293 /* 17 */ {SDTCisInt, 2, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
294 /* 23 */ {SDTCisVT, 3, 0, 2, 0}, {SDTCisSameAs, 0, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
295 /* 27 */ {SDTCisSameAs, 3, 4, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 3, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
296 /* 32 */ {SDTCisVT, 2, 0, 2, 0}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
297 /* 35 */ {SDTCisSameAs, 2, 3, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 2, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
298 /* 39 */ {SDTCisVT, 1, 0, 0, MVT::Other}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
299 /* 41 */ {SDTCisVT, 1, 0, 2, 0}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
300 /* 43 */ {SDTCisSameNumEltsAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
301 /* 46 */ {SDTCisVec, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
302 /* 48 */ {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisFP, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
303 /* 50 */ {SDTCisFP, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisFP, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
304 /* 52 */ {SDTCisSameAs, 1, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisFP, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
305 /* 57 */ {SDTCisSameAs, 1, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisFP, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
306 /* 62 */ {SDTCisSameAs, 1, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisFP, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisFP, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
307 /* 67 */ {SDTCisVT, 3, 0, 2, 0}, {SDTCisSameAs, 1, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
308 /* 71 */ {SDTCisVT, 2, 0, 2, 0}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
309 /* 74 */ {SDTCisInt, 2, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 2, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
310 /* 78 */ {SDTCisPtrTy, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
311 /* 80 */ {SDTCisSameAs, 2, 3, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisInt, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
312 /* 85 */ {SDTCisSameAs, 1, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
313 /* 88 */ {SDTCisVT, 2, 0, 2, 0}, {SDTCisVec, 1, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVec, 0, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
314 /* 91 */ {SDTCisVT, 0, 0, 0, MVT::i64}, {SDTCisSameAs, 0, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
315 /* 94 */ {SDTCisVT, 3, 0, 0, MVT::Other}, {SDTCisVT, 2, 0, 0, MVT::Other}, {SDTCisSameAs, 0, 1, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
316 /* 97 */ {SDTCisSameAs, 4, 5, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisSameAs, 0, 4, 0, MVT::INVALID_SIMPLE_VALUE_TYPE}, {SDTCisVT, 3, 0, 0, MVT::Other}, {SDTCisSameAs, 1, 2, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
317 /* 101 */ {SDTCisPtrTy, 2, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE},
318};
319
320static const SDNodeDesc LoongArchSDNodeDescs[] = {
321 {1, 1, 0, 0, 0, 1, 0, 0}, // BITREV_4B
322 {1, 1, 0, 0, 0, 25, 0, 0}, // BITREV_8B
323 {1, 1, 0, 0, 0, 49, 0, 0}, // BITREV_W
324 {0, 2, 0|1<<SDNPHasChain, 0, 0, 72, 39, 2}, // BRCOND
325 {0, 1, 0|1<<SDNPHasChain, 0, 0, 93, 4, 1}, // BREAK
326 {0, 4, 0|1<<SDNPHasChain, 0, 0, 113, 94, 3}, // BR_CC
327 {1, 4, 0, 0, 0, 133, 27, 5}, // BSTRINS
328 {1, 3, 0, 0, 0, 155, 35, 4}, // BSTRPICK
329 {1, 2, 0, 0, 0, 178, 11, 3}, // BUILD_PAIR_F64
330 {0, -1, 0|1<<SDNPHasChain|1<<SDNPOutGlue|1<<SDNPOptInGlue|1<<SDNPVariadic, 0, 0, 207, 4, 1}, // CALL
331 {0, -1, 0|1<<SDNPHasChain|1<<SDNPOutGlue|1<<SDNPOptInGlue|1<<SDNPVariadic, 0, 0, 226, 4, 1}, // CALL_LARGE
332 {0, -1, 0|1<<SDNPHasChain|1<<SDNPOutGlue|1<<SDNPOptInGlue|1<<SDNPVariadic, 0, 0, 251, 4, 1}, // CALL_MEDIUM
333 {1, 1, 0, 0, 0, 277, 43, 3}, // CLZ_W
334 {1, 1, 0|1<<SDNPHasChain, 0, 0, 297, 0, 0}, // CPUCFG
335 {1, 2, 0|1<<SDNPHasChain, 0, 0, 318, 91, 3}, // CRCC_W_B_W
336 {1, 2, 0|1<<SDNPHasChain, 0, 0, 343, 91, 3}, // CRCC_W_D_W
337 {1, 2, 0|1<<SDNPHasChain, 0, 0, 368, 91, 3}, // CRCC_W_H_W
338 {1, 2, 0|1<<SDNPHasChain, 0, 0, 393, 91, 3}, // CRCC_W_W_W
339 {1, 2, 0|1<<SDNPHasChain, 0, 0, 418, 91, 3}, // CRC_W_B_W
340 {1, 2, 0|1<<SDNPHasChain, 0, 0, 442, 91, 3}, // CRC_W_D_W
341 {1, 2, 0|1<<SDNPHasChain, 0, 0, 466, 91, 3}, // CRC_W_H_W
342 {1, 2, 0|1<<SDNPHasChain, 0, 0, 490, 91, 3}, // CRC_W_W_W
343 {1, 1, 0|1<<SDNPHasChain, 0, 0, 514, 41, 2}, // CSRRD
344 {1, 2, 0|1<<SDNPHasChain, 0, 0, 534, 32, 3}, // CSRWR
345 {1, 3, 0|1<<SDNPHasChain, 0, 0, 554, 23, 4}, // CSRXCHG
346 {1, 1, 0, 0, 0, 576, 43, 3}, // CTZ_W
347 {0, 1, 0|1<<SDNPHasChain, 0, 0, 596, 4, 1}, // DBAR
348 {1, 2, 0, 0, 0, 615, 91, 3}, // DIV_W
349 {1, 2, 0, 0, 0, 635, 91, 3}, // DIV_WU
350 {1, 1, 0, 0, 0, 656, 0, 0}, // FRECIPE
351 {1, 1, 0, 0, 0, 678, 0, 0}, // FRSQRTE
352 {1, 1, 0, 0, 0, 700, 50, 2}, // FTINT
353 {0, 1, 0|1<<SDNPHasChain, 0, 0, 720, 4, 1}, // IBAR
354 {1, 1, 0|1<<SDNPHasChain, 0, 0, 739, 0, 0}, // IOCSRRD_B
355 {1, 1, 0|1<<SDNPHasChain, 0, 0, 763, 0, 0}, // IOCSRRD_D
356 {1, 1, 0|1<<SDNPHasChain, 0, 0, 787, 0, 0}, // IOCSRRD_H
357 {1, 1, 0|1<<SDNPHasChain, 0, 0, 811, 0, 0}, // IOCSRRD_W
358 {0, 2, 0|1<<SDNPHasChain, 0, 0, 835, 25, 2}, // IOCSRWR_B
359 {0, 2, 0|1<<SDNPHasChain, 0, 0, 859, 25, 2}, // IOCSRWR_D
360 {0, 2, 0|1<<SDNPHasChain, 0, 0, 883, 25, 2}, // IOCSRWR_H
361 {0, 2, 0|1<<SDNPHasChain, 0, 0, 907, 25, 2}, // IOCSRWR_W
362 {1, 2, 0, 0, 0, 931, 91, 3}, // MOD_W
363 {1, 2, 0, 0, 0, 951, 91, 3}, // MOD_WU
364 {1, 1, 0|1<<SDNPHasChain, 0, 0, 972, 3, 2}, // MOVFCSR2GR
365 {1, 1, 0, 0, 0, 997, 5, 2}, // MOVFR2GR_S_LA64
366 {0, 2, 0|1<<SDNPHasChain, 0, 0, 1027, 3, 2}, // MOVGR2FCSR
367 {1, 1, 0, 0, 0, 1052, 14, 2}, // MOVGR2FR_D
368 {1, 2, 0, 0, 0, 1077, 11, 3}, // MOVGR2FR_D_LO_HI
369 {1, 1, 0, 0, 0, 1108, 7, 2}, // MOVGR2FR_W
370 {1, 1, 0, 0, 0, 1133, 9, 2}, // MOVGR2FR_W_LA64
371 {0, 1, 0|1<<SDNPHasChain, 0, 0, 1163, 16, 1}, // PROBED_ALLOCA
372 {0, 0, 0|1<<SDNPHasChain|1<<SDNPOptInGlue|1<<SDNPVariadic, 0, 0, 1191, 0, 0}, // RET
373 {1, 1, 0, 0, 0, 1209, 0, 0}, // REVB_2H
374 {1, 1, 0, 0, 0, 1231, 0, 0}, // REVB_2W
375 {1, 2, 0, 0, 0, 1253, 91, 3}, // ROTR_W
376 {1, 5, 0, 0, 0, 1274, 97, 4}, // SELECT_CC
377 {1, 1, 0, 0, 0, 1298, 48, 2}, // SITOF
378 {1, 2, 0, 0, 0, 1318, 91, 3}, // SLL_W
379 {2, 1, 0, 0, 0, 1338, 0, 3}, // SPLIT_PAIR_F64
380 {1, 2, 0, 0, 0, 1367, 91, 3}, // SRA_W
381 {1, 2, 0, 0, 0, 1387, 91, 3}, // SRL_W
382 {0, 1, 0|1<<SDNPHasChain, 0, 0, 1407, 4, 1}, // SYSCALL
383 {0, -1, 0|1<<SDNPHasChain|1<<SDNPOutGlue|1<<SDNPOptInGlue|1<<SDNPVariadic, 0, 0, 1429, 4, 1}, // TAIL
384 {0, -1, 0|1<<SDNPHasChain|1<<SDNPOutGlue|1<<SDNPOptInGlue|1<<SDNPVariadic, 0, 0, 1448, 4, 1}, // TAIL_LARGE
385 {0, -1, 0|1<<SDNPHasChain|1<<SDNPOutGlue|1<<SDNPOptInGlue|1<<SDNPVariadic, 0, 0, 1473, 4, 1}, // TAIL_MEDIUM
386 {1, 1, 0, 0, 0, 1499, 46, 2}, // VALL_NONZERO
387 {1, 1, 0, 0, 0, 1526, 46, 2}, // VALL_ZERO
388 {1, 2, 0, 0, 0, 1550, 68, 3}, // VANDN
389 {1, 1, 0, 0, 0, 1570, 46, 2}, // VANY_NONZERO
390 {1, 1, 0, 0, 0, 1597, 46, 2}, // VANY_ZERO
391 {1, 2, 0, 0, 0, 1621, 71, 3}, // VBSLL
392 {1, 2, 0, 0, 0, 1641, 71, 3}, // VBSRL
393 {1, 1, 0, 0, 0, 1661, 86, 2}, // VEXTH
394 {1, 1, 0, 0, 0, 1681, 86, 2}, // VEXTH_U
395 {1, 2, 0, 0, 0, 1703, 62, 5}, // VFCVT
396 {1, 1, 0, 0, 0, 1723, 63, 4}, // VFCVTH
397 {1, 1, 0, 0, 0, 1744, 63, 4}, // VFCVTL
398 {1, 2, 0, 0, 0, 1765, 57, 5}, // VFFINT
399 {1, 2, 0, 0, 0, 1786, 52, 5}, // VFTINTRZ
400 {1, 2, 0, 0, 0, 1809, 85, 3}, // VHADDW
401 {1, 2, 0, 0, 0, 1830, 85, 3}, // VHADDW_U
402 {1, 2, 0, 0, 0, 1853, 85, 3}, // VHSUBW
403 {1, 2, 0, 0, 0, 1874, 85, 3}, // VHSUBW_U
404 {1, 2, 0, 0, 0, 1897, 68, 3}, // VILVH
405 {1, 2, 0, 0, 0, 1917, 68, 3}, // VILVL
406 {1, 1, 0|1<<SDNPHasChain|1<<SDNPMemOperand, 0, 0, 1937, 78, 2}, // VLDREPL
407 {1, 1, 0, 0, 0, 1959, 46, 2}, // VMSKEQZ
408 {1, 1, 0, 0, 0, 1981, 46, 2}, // VMSKGEZ
409 {1, 1, 0, 0, 0, 2003, 46, 2}, // VMSKLTZ
410 {1, 1, 0, 0, 0, 2025, 46, 2}, // VMSKNEZ
411 {1, 2, 0, 0, 0, 2047, 68, 3}, // VPACKEV
412 {1, 2, 0, 0, 0, 2069, 68, 3}, // VPACKOD
413 {1, 3, 0, 0, 0, 2091, 67, 4}, // VPERMI
414 {1, 2, 0, 0, 0, 2112, 68, 3}, // VPICKEV
415 {1, 2, 0, 0, 0, 2134, 68, 3}, // VPICKOD
416 {1, 3, 0, 0, 0, 2156, 101, 1}, // VPICK_SEXT_ELT
417 {1, 3, 0, 0, 0, 2185, 101, 1}, // VPICK_ZEXT_ELT
418 {1, 1, 0, 0, 0, 2214, 20, 3}, // VREPLGR2VR
419 {1, 2, 0, 0, 0, 2239, 17, 6}, // VREPLVE
420 {1, 2, 0, 0, 0, 2261, 71, 3}, // VREPLVEI
421 {1, 3, 0, 0, 0, 2284, 80, 5}, // VSHUF
422 {1, 2, 0, 0, 0, 2304, 71, 3}, // VSHUF4I
423 {1, 3, 0, 0, 0, 2326, 67, 4}, // VSHUF4I_D
424 {1, 2, 0, 0, 0, 2350, 71, 3}, // VSLLI
425 {1, 2, 0, 0, 0, 2370, 88, 3}, // VSLLWIL
426 {1, 2, 0, 0, 0, 2392, 88, 3}, // VSLLWIL_U
427 {1, 2, 0, 0, 0, 2416, 68, 3}, // VSRAR
428 {1, 2, 0, 0, 0, 2436, 71, 3}, // VSRLI
429 {1, 2, 0, 0, 0, 2456, 68, 3}, // VSRLR
430 {1, 3, 0, 0, 0, 2476, 67, 4}, // XVINSVE0
431 {1, 1, 0, 0, 0, 2499, 46, 2}, // XVMSKEQZ
432 {1, 1, 0, 0, 0, 2522, 46, 2}, // XVMSKGEZ
433 {1, 1, 0, 0, 0, 2545, 46, 2}, // XVMSKLTZ
434 {1, 1, 0, 0, 0, 2568, 46, 2}, // XVMSKNEZ
435 {1, 2, 0, 0, 0, 2591, 74, 4}, // XVPERM
436 {1, 2, 0, 0, 0, 2612, 71, 3}, // XVPERMI
437 {1, 1, 0, 0, 0, 2634, 69, 2}, // XVREPLVE0
438 {1, 1, 0, 0, 0, 2658, 69, 2}, // XVREPLVE0Q
439};
440
441static const SDNodeInfo LoongArchGenSDNodeInfo(
442 /*NumOpcodes=*/118, LoongArchSDNodeDescs, LoongArchSDNodeNames,
443 LoongArchVTByHwModeTable, LoongArchSDTypeConstraints);
444
445} // namespace llvm
446
447#endif // GET_SDNODE_DESC
448
449