Line data Source code
1 : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2 : |* *|
3 : |* Machine Code Emitter *|
4 : |* *|
5 : |* Automatically generated file, do not edit! *|
6 : |* *|
7 : \*===----------------------------------------------------------------------===*/
8 :
9 : // Undef for HURD
10 : #ifdef EIEIO
11 : #undef EIEIO
12 : #endif
13 0 : uint64_t BPFMCCodeEmitter::getBinaryCodeForInstr(const MCInst &MI,
14 : SmallVectorImpl<MCFixup> &Fixups,
15 : const MCSubtargetInfo &STI) const {
16 : static const uint64_t InstBits[] = {
17 : UINT64_C(0),
18 : UINT64_C(0),
19 : UINT64_C(0),
20 : UINT64_C(0),
21 : UINT64_C(0),
22 : UINT64_C(0),
23 : UINT64_C(0),
24 : UINT64_C(0),
25 : UINT64_C(0),
26 : UINT64_C(0),
27 : UINT64_C(0),
28 : UINT64_C(0),
29 : UINT64_C(0),
30 : UINT64_C(0),
31 : UINT64_C(0),
32 : UINT64_C(0),
33 : UINT64_C(0),
34 : UINT64_C(0),
35 : UINT64_C(0),
36 : UINT64_C(0),
37 : UINT64_C(0),
38 : UINT64_C(0),
39 : UINT64_C(0),
40 : UINT64_C(0),
41 : UINT64_C(0),
42 : UINT64_C(0),
43 : UINT64_C(0),
44 : UINT64_C(0),
45 : UINT64_C(0),
46 : UINT64_C(0),
47 : UINT64_C(0),
48 : UINT64_C(0),
49 : UINT64_C(0),
50 : UINT64_C(0),
51 : UINT64_C(0),
52 : UINT64_C(0),
53 : UINT64_C(0),
54 : UINT64_C(0),
55 : UINT64_C(0),
56 : UINT64_C(0),
57 : UINT64_C(0),
58 : UINT64_C(0),
59 : UINT64_C(0),
60 : UINT64_C(0),
61 : UINT64_C(0),
62 : UINT64_C(0),
63 : UINT64_C(0),
64 : UINT64_C(0),
65 : UINT64_C(0),
66 : UINT64_C(0),
67 : UINT64_C(0),
68 : UINT64_C(0),
69 : UINT64_C(0),
70 : UINT64_C(0),
71 : UINT64_C(0),
72 : UINT64_C(0),
73 : UINT64_C(0),
74 : UINT64_C(0),
75 : UINT64_C(0),
76 : UINT64_C(0),
77 : UINT64_C(0),
78 : UINT64_C(0),
79 : UINT64_C(0),
80 : UINT64_C(0),
81 : UINT64_C(0),
82 : UINT64_C(0),
83 : UINT64_C(0),
84 : UINT64_C(0),
85 : UINT64_C(0),
86 : UINT64_C(0),
87 : UINT64_C(0),
88 : UINT64_C(0),
89 : UINT64_C(0),
90 : UINT64_C(0),
91 : UINT64_C(0),
92 : UINT64_C(0),
93 : UINT64_C(0),
94 : UINT64_C(0),
95 : UINT64_C(0),
96 : UINT64_C(0),
97 : UINT64_C(0),
98 : UINT64_C(0),
99 : UINT64_C(0),
100 : UINT64_C(0),
101 : UINT64_C(0),
102 : UINT64_C(0),
103 : UINT64_C(0),
104 : UINT64_C(0),
105 : UINT64_C(0),
106 : UINT64_C(0),
107 : UINT64_C(0),
108 : UINT64_C(0),
109 : UINT64_C(0),
110 : UINT64_C(0),
111 : UINT64_C(0),
112 : UINT64_C(0),
113 : UINT64_C(0),
114 : UINT64_C(0),
115 : UINT64_C(0),
116 : UINT64_C(0),
117 : UINT64_C(0),
118 : UINT64_C(0),
119 : UINT64_C(0),
120 : UINT64_C(0),
121 : UINT64_C(0),
122 : UINT64_C(0),
123 : UINT64_C(0),
124 : UINT64_C(0),
125 : UINT64_C(0),
126 : UINT64_C(0),
127 : UINT64_C(0),
128 : UINT64_C(0),
129 : UINT64_C(0),
130 : UINT64_C(0),
131 : UINT64_C(0),
132 : UINT64_C(0),
133 : UINT64_C(0),
134 : UINT64_C(0),
135 : UINT64_C(0),
136 : UINT64_C(0),
137 : UINT64_C(0),
138 : UINT64_C(0),
139 : UINT64_C(0),
140 : UINT64_C(0),
141 : UINT64_C(0),
142 : UINT64_C(0),
143 : UINT64_C(0),
144 : UINT64_C(0),
145 : UINT64_C(0),
146 : UINT64_C(0),
147 : UINT64_C(0),
148 : UINT64_C(0),
149 : UINT64_C(0),
150 : UINT64_C(0),
151 : UINT64_C(0),
152 : UINT64_C(0),
153 : UINT64_C(0),
154 : UINT64_C(0),
155 : UINT64_C(0),
156 : UINT64_C(0),
157 : UINT64_C(0),
158 : UINT64_C(0),
159 : UINT64_C(0),
160 : UINT64_C(0),
161 : UINT64_C(0),
162 : UINT64_C(0),
163 : UINT64_C(0),
164 : UINT64_C(0),
165 : UINT64_C(504403158265495552), // ADD_ri
166 : UINT64_C(288230376151711744), // ADD_ri_32
167 : UINT64_C(1080863910568919040), // ADD_rr
168 : UINT64_C(864691128455135232), // ADD_rr_32
169 : UINT64_C(6269010681299730432), // AND_ri
170 : UINT64_C(6052837899185946624), // AND_ri_32
171 : UINT64_C(6845471433603153920), // AND_rr
172 : UINT64_C(6629298651489370112), // AND_rr_32
173 : UINT64_C(15852670688344145936), // BE16
174 : UINT64_C(15852670688344145952), // BE32
175 : UINT64_C(15852670688344145984), // BE64
176 : UINT64_C(3963167672086036480), // DIV_ri
177 : UINT64_C(3746994889972252672), // DIV_ri_32
178 : UINT64_C(4539628424389459968), // DIV_rr
179 : UINT64_C(4323455642275676160), // DIV_rr_32
180 : UINT64_C(1738389456165011456), // FI_ri
181 : UINT64_C(9583660007044415488), // JAL
182 : UINT64_C(10160120759347838976), // JALX
183 : UINT64_C(1513209474796486656), // JEQ_ri
184 : UINT64_C(2089670227099910144), // JEQ_rr
185 : UINT64_C(360287970189639680), // JMP
186 : UINT64_C(6124895493223874560), // JNE_ri
187 : UINT64_C(6701356245527298048), // JNE_rr
188 : UINT64_C(8430738502437568512), // JSGE_ri
189 : UINT64_C(9007199254740992000), // JSGE_rr
190 : UINT64_C(7277816997830721536), // JSGT_ri
191 : UINT64_C(7854277750134145024), // JSGT_rr
192 : UINT64_C(15348267530078650368), // JSLE_ri
193 : UINT64_C(15924728282382073856), // JSLE_rr
194 : UINT64_C(14195346025471803392), // JSLT_ri
195 : UINT64_C(14771806777775226880), // JSLT_rr
196 : UINT64_C(3819052484010180608), // JUGE_ri
197 : UINT64_C(4395513236313604096), // JUGE_rr
198 : UINT64_C(2666130979403333632), // JUGT_ri
199 : UINT64_C(3242591731706757120), // JUGT_rr
200 : UINT64_C(13042424520864956416), // JULE_ri
201 : UINT64_C(13618885273168379904), // JULE_rr
202 : UINT64_C(11889503016258109440), // JULT_ri
203 : UINT64_C(12465963768561532928), // JULT_rr
204 : UINT64_C(8142508126285856768), // LDB
205 : UINT64_C(8142508126285856768), // LDB32
206 : UINT64_C(8718968878589280256), // LDD
207 : UINT64_C(7566047373982433280), // LDH
208 : UINT64_C(7566047373982433280), // LDH32
209 : UINT64_C(6989586621679009792), // LDW
210 : UINT64_C(6989586621679009792), // LDW32
211 : UINT64_C(3458764513820540928), // LD_ABS_B
212 : UINT64_C(2882303761517117440), // LD_ABS_H
213 : UINT64_C(2305843009213693952), // LD_ABS_W
214 : UINT64_C(5764607523034234880), // LD_IND_B
215 : UINT64_C(5188146770730811392), // LD_IND_H
216 : UINT64_C(4611686018427387904), // LD_IND_W
217 : UINT64_C(1729382256910270464), // LD_imm64
218 : UINT64_C(1729382256910270464), // LD_pseudo
219 : UINT64_C(15276209936040722448), // LE16
220 : UINT64_C(15276209936040722464), // LE32
221 : UINT64_C(15276209936040722496), // LE64
222 : UINT64_C(13546827679130451968), // MOV_32_64
223 : UINT64_C(13186539708940812288), // MOV_ri
224 : UINT64_C(12970366926827028480), // MOV_ri_32
225 : UINT64_C(13763000461244235776), // MOV_rr
226 : UINT64_C(13546827679130451968), // MOV_rr_32
227 : UINT64_C(2810246167479189504), // MUL_ri
228 : UINT64_C(2594073385365405696), // MUL_ri_32
229 : UINT64_C(3386706919782612992), // MUL_rr
230 : UINT64_C(3170534137668829184), // MUL_rr_32
231 : UINT64_C(9511602413006487552), // NEG_32
232 : UINT64_C(9727775195120271360), // NEG_64
233 : UINT64_C(13763000461244235776), // NOP
234 : UINT64_C(5116089176692883456), // OR_ri
235 : UINT64_C(4899916394579099648), // OR_ri_32
236 : UINT64_C(5692549928996306944), // OR_rr
237 : UINT64_C(5476377146882523136), // OR_rr_32
238 : UINT64_C(10736581511651262464), // RET
239 : UINT64_C(7421932185906577408), // SLL_ri
240 : UINT64_C(7205759403792793600), // SLL_ri_32
241 : UINT64_C(7998392938210000896), // SLL_rr
242 : UINT64_C(7782220156096217088), // SLL_rr_32
243 : UINT64_C(14339461213547659264), // SRA_ri
244 : UINT64_C(14123288431433875456), // SRA_ri_32
245 : UINT64_C(14915921965851082752), // SRA_rr
246 : UINT64_C(14699749183737298944), // SRA_rr_32
247 : UINT64_C(8574853690513424384), // SRL_ri
248 : UINT64_C(8358680908399640576), // SRL_ri_32
249 : UINT64_C(9151314442816847872), // SRL_rr
250 : UINT64_C(8935141660703064064), // SRL_rr_32
251 : UINT64_C(8286623314361712640), // STB
252 : UINT64_C(8286623314361712640), // STB32
253 : UINT64_C(8863084066665136128), // STD
254 : UINT64_C(7710162562058289152), // STH
255 : UINT64_C(7710162562058289152), // STH32
256 : UINT64_C(7133701809754865664), // STW
257 : UINT64_C(7133701809754865664), // STW32
258 : UINT64_C(1657324662872342528), // SUB_ri
259 : UINT64_C(1441151880758558720), // SUB_ri_32
260 : UINT64_C(2233785415175766016), // SUB_rr
261 : UINT64_C(2017612633061982208), // SUB_rr_32
262 : UINT64_C(14051230837395947520), // XADD32
263 : UINT64_C(15780613094306217984), // XADD64
264 : UINT64_C(12033618204333965312), // XOR_ri
265 : UINT64_C(11817445422220181504), // XOR_ri_32
266 : UINT64_C(12610078956637388800), // XOR_rr
267 : UINT64_C(12393906174523604992), // XOR_rr_32
268 : UINT64_C(0)
269 : };
270 0 : const unsigned opcode = MI.getOpcode();
271 0 : uint64_t Value = InstBits[opcode];
272 : uint64_t op = 0;
273 : (void)op; // suppress warning
274 0 : switch (opcode) {
275 : case BPF::FI_ri:
276 : case BPF::NOP:
277 : case BPF::RET: {
278 : break;
279 : }
280 : case BPF::JMP: {
281 : // op: BrDst
282 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
283 0 : Value |= (op & UINT64_C(65535)) << 32;
284 0 : break;
285 : }
286 : case BPF::JAL:
287 : case BPF::JALX: {
288 : // op: BrDst
289 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
290 0 : Value |= op & UINT64_C(4294967295);
291 0 : break;
292 : }
293 : case BPF::BE16:
294 : case BPF::BE32:
295 : case BPF::BE64:
296 : case BPF::LE16:
297 : case BPF::LE32:
298 : case BPF::LE64:
299 : case BPF::NEG_32:
300 : case BPF::NEG_64: {
301 : // op: dst
302 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
303 0 : Value |= (op & UINT64_C(15)) << 48;
304 0 : break;
305 : }
306 : case BPF::JEQ_ri:
307 : case BPF::JNE_ri:
308 : case BPF::JSGE_ri:
309 : case BPF::JSGT_ri:
310 : case BPF::JSLE_ri:
311 : case BPF::JSLT_ri:
312 : case BPF::JUGE_ri:
313 : case BPF::JUGT_ri:
314 : case BPF::JULE_ri:
315 : case BPF::JULT_ri: {
316 : // op: dst
317 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
318 0 : Value |= (op & UINT64_C(15)) << 48;
319 : // op: BrDst
320 0 : op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
321 0 : Value |= (op & UINT64_C(65535)) << 32;
322 : // op: imm
323 0 : op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
324 0 : Value |= op & UINT64_C(4294967295);
325 0 : break;
326 : }
327 : case BPF::LDB:
328 : case BPF::LDB32:
329 : case BPF::LDD:
330 : case BPF::LDH:
331 : case BPF::LDH32:
332 : case BPF::LDW:
333 : case BPF::LDW32: {
334 : // op: dst
335 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
336 0 : Value |= (op & UINT64_C(15)) << 48;
337 : // op: addr
338 0 : op = getMemoryOpValue(MI, 1, Fixups, STI);
339 0 : Value |= (op & UINT64_C(983040)) << 36;
340 0 : Value |= (op & UINT64_C(65535)) << 32;
341 0 : break;
342 : }
343 : case BPF::LD_imm64:
344 : case BPF::MOV_ri:
345 : case BPF::MOV_ri_32: {
346 : // op: dst
347 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
348 0 : Value |= (op & UINT64_C(15)) << 48;
349 : // op: imm
350 0 : op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
351 0 : Value |= op & UINT64_C(4294967295);
352 0 : break;
353 : }
354 : case BPF::ADD_ri:
355 : case BPF::ADD_ri_32:
356 : case BPF::AND_ri:
357 : case BPF::AND_ri_32:
358 : case BPF::DIV_ri:
359 : case BPF::DIV_ri_32:
360 : case BPF::MUL_ri:
361 : case BPF::MUL_ri_32:
362 : case BPF::OR_ri:
363 : case BPF::OR_ri_32:
364 : case BPF::SLL_ri:
365 : case BPF::SLL_ri_32:
366 : case BPF::SRA_ri:
367 : case BPF::SRA_ri_32:
368 : case BPF::SRL_ri:
369 : case BPF::SRL_ri_32:
370 : case BPF::SUB_ri:
371 : case BPF::SUB_ri_32:
372 : case BPF::XOR_ri:
373 : case BPF::XOR_ri_32: {
374 : // op: dst
375 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
376 0 : Value |= (op & UINT64_C(15)) << 48;
377 : // op: imm
378 0 : op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
379 0 : Value |= op & UINT64_C(4294967295);
380 0 : break;
381 : }
382 : case BPF::LD_pseudo: {
383 : // op: dst
384 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
385 0 : Value |= (op & UINT64_C(15)) << 48;
386 : // op: imm
387 0 : op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
388 0 : Value |= op & UINT64_C(4294967295);
389 : // op: pseudo
390 0 : op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
391 0 : Value |= (op & UINT64_C(15)) << 52;
392 0 : break;
393 : }
394 : case BPF::MOV_32_64:
395 : case BPF::MOV_rr:
396 : case BPF::MOV_rr_32: {
397 : // op: dst
398 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
399 0 : Value |= (op & UINT64_C(15)) << 48;
400 : // op: src
401 0 : op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
402 0 : Value |= (op & UINT64_C(15)) << 52;
403 0 : break;
404 : }
405 : case BPF::JEQ_rr:
406 : case BPF::JNE_rr:
407 : case BPF::JSGE_rr:
408 : case BPF::JSGT_rr:
409 : case BPF::JSLE_rr:
410 : case BPF::JSLT_rr:
411 : case BPF::JUGE_rr:
412 : case BPF::JUGT_rr:
413 : case BPF::JULE_rr:
414 : case BPF::JULT_rr: {
415 : // op: dst
416 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
417 0 : Value |= (op & UINT64_C(15)) << 48;
418 : // op: src
419 0 : op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
420 0 : Value |= (op & UINT64_C(15)) << 52;
421 : // op: BrDst
422 0 : op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
423 0 : Value |= (op & UINT64_C(65535)) << 32;
424 0 : break;
425 : }
426 : case BPF::ADD_rr:
427 : case BPF::ADD_rr_32:
428 : case BPF::AND_rr:
429 : case BPF::AND_rr_32:
430 : case BPF::DIV_rr:
431 : case BPF::DIV_rr_32:
432 : case BPF::MUL_rr:
433 : case BPF::MUL_rr_32:
434 : case BPF::OR_rr:
435 : case BPF::OR_rr_32:
436 : case BPF::SLL_rr:
437 : case BPF::SLL_rr_32:
438 : case BPF::SRA_rr:
439 : case BPF::SRA_rr_32:
440 : case BPF::SRL_rr:
441 : case BPF::SRL_rr_32:
442 : case BPF::SUB_rr:
443 : case BPF::SUB_rr_32:
444 : case BPF::XOR_rr:
445 : case BPF::XOR_rr_32: {
446 : // op: dst
447 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
448 0 : Value |= (op & UINT64_C(15)) << 48;
449 : // op: src
450 0 : op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
451 0 : Value |= (op & UINT64_C(15)) << 52;
452 0 : break;
453 : }
454 : case BPF::XADD32:
455 : case BPF::XADD64: {
456 : // op: dst
457 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
458 0 : Value |= (op & UINT64_C(15)) << 52;
459 : // op: addr
460 0 : op = getMemoryOpValue(MI, 1, Fixups, STI);
461 0 : Value |= (op & UINT64_C(1048575)) << 32;
462 0 : break;
463 : }
464 : case BPF::LD_ABS_B:
465 : case BPF::LD_ABS_H:
466 : case BPF::LD_ABS_W: {
467 : // op: imm
468 0 : op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
469 0 : Value |= op & UINT64_C(4294967295);
470 0 : break;
471 : }
472 : case BPF::STB:
473 : case BPF::STB32:
474 : case BPF::STD:
475 : case BPF::STH:
476 : case BPF::STH32:
477 : case BPF::STW:
478 : case BPF::STW32: {
479 : // op: src
480 0 : op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
481 0 : Value |= (op & UINT64_C(15)) << 52;
482 : // op: addr
483 0 : op = getMemoryOpValue(MI, 1, Fixups, STI);
484 0 : Value |= (op & UINT64_C(1048575)) << 32;
485 0 : break;
486 : }
487 : case BPF::LD_IND_B:
488 : case BPF::LD_IND_H:
489 : case BPF::LD_IND_W: {
490 : // op: val
491 0 : op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
492 0 : Value |= (op & UINT64_C(15)) << 52;
493 0 : break;
494 : }
495 : default:
496 : std::string msg;
497 : raw_string_ostream Msg(msg);
498 0 : Msg << "Not supported instr: " << MI;
499 0 : report_fatal_error(Msg.str());
500 : }
501 0 : return Value;
502 : }
503 :
504 : #ifdef ENABLE_INSTR_PREDICATE_VERIFIER
505 : #undef ENABLE_INSTR_PREDICATE_VERIFIER
506 : #include <sstream>
507 :
508 : // Flags for subtarget features that participate in instruction matching.
509 : enum SubtargetFeatureFlag : uint8_t {
510 : Feature_None = 0
511 : };
512 :
513 : #ifndef NDEBUG
514 : static const char *SubtargetFeatureNames[] = {
515 : nullptr
516 : };
517 :
518 : #endif // NDEBUG
519 0 : uint64_t BPFMCCodeEmitter::
520 : computeAvailableFeatures(const FeatureBitset& FB) const {
521 : uint64_t Features = 0;
522 0 : return Features;
523 : }
524 :
525 0 : void BPFMCCodeEmitter::verifyInstructionPredicates(
526 : const MCInst &Inst, uint64_t AvailableFeatures) const {
527 : #ifndef NDEBUG
528 : static uint64_t RequiredFeatures[] = {
529 : 0, // PHI = 0
530 : 0, // INLINEASM = 1
531 : 0, // CFI_INSTRUCTION = 2
532 : 0, // EH_LABEL = 3
533 : 0, // GC_LABEL = 4
534 : 0, // ANNOTATION_LABEL = 5
535 : 0, // KILL = 6
536 : 0, // EXTRACT_SUBREG = 7
537 : 0, // INSERT_SUBREG = 8
538 : 0, // IMPLICIT_DEF = 9
539 : 0, // SUBREG_TO_REG = 10
540 : 0, // COPY_TO_REGCLASS = 11
541 : 0, // DBG_VALUE = 12
542 : 0, // DBG_LABEL = 13
543 : 0, // REG_SEQUENCE = 14
544 : 0, // COPY = 15
545 : 0, // BUNDLE = 16
546 : 0, // LIFETIME_START = 17
547 : 0, // LIFETIME_END = 18
548 : 0, // STACKMAP = 19
549 : 0, // FENTRY_CALL = 20
550 : 0, // PATCHPOINT = 21
551 : 0, // LOAD_STACK_GUARD = 22
552 : 0, // STATEPOINT = 23
553 : 0, // LOCAL_ESCAPE = 24
554 : 0, // FAULTING_OP = 25
555 : 0, // PATCHABLE_OP = 26
556 : 0, // PATCHABLE_FUNCTION_ENTER = 27
557 : 0, // PATCHABLE_RET = 28
558 : 0, // PATCHABLE_FUNCTION_EXIT = 29
559 : 0, // PATCHABLE_TAIL_CALL = 30
560 : 0, // PATCHABLE_EVENT_CALL = 31
561 : 0, // PATCHABLE_TYPED_EVENT_CALL = 32
562 : 0, // ICALL_BRANCH_FUNNEL = 33
563 : 0, // G_ADD = 34
564 : 0, // G_SUB = 35
565 : 0, // G_MUL = 36
566 : 0, // G_SDIV = 37
567 : 0, // G_UDIV = 38
568 : 0, // G_SREM = 39
569 : 0, // G_UREM = 40
570 : 0, // G_AND = 41
571 : 0, // G_OR = 42
572 : 0, // G_XOR = 43
573 : 0, // G_IMPLICIT_DEF = 44
574 : 0, // G_PHI = 45
575 : 0, // G_FRAME_INDEX = 46
576 : 0, // G_GLOBAL_VALUE = 47
577 : 0, // G_EXTRACT = 48
578 : 0, // G_UNMERGE_VALUES = 49
579 : 0, // G_INSERT = 50
580 : 0, // G_MERGE_VALUES = 51
581 : 0, // G_PTRTOINT = 52
582 : 0, // G_INTTOPTR = 53
583 : 0, // G_BITCAST = 54
584 : 0, // G_INTRINSIC_TRUNC = 55
585 : 0, // G_INTRINSIC_ROUND = 56
586 : 0, // G_LOAD = 57
587 : 0, // G_SEXTLOAD = 58
588 : 0, // G_ZEXTLOAD = 59
589 : 0, // G_STORE = 60
590 : 0, // G_ATOMIC_CMPXCHG_WITH_SUCCESS = 61
591 : 0, // G_ATOMIC_CMPXCHG = 62
592 : 0, // G_ATOMICRMW_XCHG = 63
593 : 0, // G_ATOMICRMW_ADD = 64
594 : 0, // G_ATOMICRMW_SUB = 65
595 : 0, // G_ATOMICRMW_AND = 66
596 : 0, // G_ATOMICRMW_NAND = 67
597 : 0, // G_ATOMICRMW_OR = 68
598 : 0, // G_ATOMICRMW_XOR = 69
599 : 0, // G_ATOMICRMW_MAX = 70
600 : 0, // G_ATOMICRMW_MIN = 71
601 : 0, // G_ATOMICRMW_UMAX = 72
602 : 0, // G_ATOMICRMW_UMIN = 73
603 : 0, // G_BRCOND = 74
604 : 0, // G_BRINDIRECT = 75
605 : 0, // G_INTRINSIC = 76
606 : 0, // G_INTRINSIC_W_SIDE_EFFECTS = 77
607 : 0, // G_ANYEXT = 78
608 : 0, // G_TRUNC = 79
609 : 0, // G_CONSTANT = 80
610 : 0, // G_FCONSTANT = 81
611 : 0, // G_VASTART = 82
612 : 0, // G_VAARG = 83
613 : 0, // G_SEXT = 84
614 : 0, // G_ZEXT = 85
615 : 0, // G_SHL = 86
616 : 0, // G_LSHR = 87
617 : 0, // G_ASHR = 88
618 : 0, // G_ICMP = 89
619 : 0, // G_FCMP = 90
620 : 0, // G_SELECT = 91
621 : 0, // G_UADDO = 92
622 : 0, // G_UADDE = 93
623 : 0, // G_USUBO = 94
624 : 0, // G_USUBE = 95
625 : 0, // G_SADDO = 96
626 : 0, // G_SADDE = 97
627 : 0, // G_SSUBO = 98
628 : 0, // G_SSUBE = 99
629 : 0, // G_UMULO = 100
630 : 0, // G_SMULO = 101
631 : 0, // G_UMULH = 102
632 : 0, // G_SMULH = 103
633 : 0, // G_FADD = 104
634 : 0, // G_FSUB = 105
635 : 0, // G_FMUL = 106
636 : 0, // G_FMA = 107
637 : 0, // G_FDIV = 108
638 : 0, // G_FREM = 109
639 : 0, // G_FPOW = 110
640 : 0, // G_FEXP = 111
641 : 0, // G_FEXP2 = 112
642 : 0, // G_FLOG = 113
643 : 0, // G_FLOG2 = 114
644 : 0, // G_FNEG = 115
645 : 0, // G_FPEXT = 116
646 : 0, // G_FPTRUNC = 117
647 : 0, // G_FPTOSI = 118
648 : 0, // G_FPTOUI = 119
649 : 0, // G_SITOFP = 120
650 : 0, // G_UITOFP = 121
651 : 0, // G_FABS = 122
652 : 0, // G_GEP = 123
653 : 0, // G_PTR_MASK = 124
654 : 0, // G_BR = 125
655 : 0, // G_INSERT_VECTOR_ELT = 126
656 : 0, // G_EXTRACT_VECTOR_ELT = 127
657 : 0, // G_SHUFFLE_VECTOR = 128
658 : 0, // G_CTTZ = 129
659 : 0, // G_CTTZ_ZERO_UNDEF = 130
660 : 0, // G_CTLZ = 131
661 : 0, // G_CTLZ_ZERO_UNDEF = 132
662 : 0, // G_CTPOP = 133
663 : 0, // G_BSWAP = 134
664 : 0, // G_ADDRSPACE_CAST = 135
665 : 0, // G_BLOCK_ADDR = 136
666 : 0, // ADJCALLSTACKDOWN = 137
667 : 0, // ADJCALLSTACKUP = 138
668 : 0, // MEMCPY = 139
669 : 0, // Select = 140
670 : 0, // Select_32 = 141
671 : 0, // Select_32_64 = 142
672 : 0, // Select_64_32 = 143
673 : 0, // Select_Ri = 144
674 : 0, // Select_Ri_32 = 145
675 : 0, // Select_Ri_32_64 = 146
676 : 0, // Select_Ri_64_32 = 147
677 : 0, // ADD_ri = 148
678 : 0, // ADD_ri_32 = 149
679 : 0, // ADD_rr = 150
680 : 0, // ADD_rr_32 = 151
681 : 0, // AND_ri = 152
682 : 0, // AND_ri_32 = 153
683 : 0, // AND_rr = 154
684 : 0, // AND_rr_32 = 155
685 : 0, // BE16 = 156
686 : 0, // BE32 = 157
687 : 0, // BE64 = 158
688 : 0, // DIV_ri = 159
689 : 0, // DIV_ri_32 = 160
690 : 0, // DIV_rr = 161
691 : 0, // DIV_rr_32 = 162
692 : 0, // FI_ri = 163
693 : 0, // JAL = 164
694 : 0, // JALX = 165
695 : 0, // JEQ_ri = 166
696 : 0, // JEQ_rr = 167
697 : 0, // JMP = 168
698 : 0, // JNE_ri = 169
699 : 0, // JNE_rr = 170
700 : 0, // JSGE_ri = 171
701 : 0, // JSGE_rr = 172
702 : 0, // JSGT_ri = 173
703 : 0, // JSGT_rr = 174
704 : 0, // JSLE_ri = 175
705 : 0, // JSLE_rr = 176
706 : 0, // JSLT_ri = 177
707 : 0, // JSLT_rr = 178
708 : 0, // JUGE_ri = 179
709 : 0, // JUGE_rr = 180
710 : 0, // JUGT_ri = 181
711 : 0, // JUGT_rr = 182
712 : 0, // JULE_ri = 183
713 : 0, // JULE_rr = 184
714 : 0, // JULT_ri = 185
715 : 0, // JULT_rr = 186
716 : 0, // LDB = 187
717 : 0, // LDB32 = 188
718 : 0, // LDD = 189
719 : 0, // LDH = 190
720 : 0, // LDH32 = 191
721 : 0, // LDW = 192
722 : 0, // LDW32 = 193
723 : 0, // LD_ABS_B = 194
724 : 0, // LD_ABS_H = 195
725 : 0, // LD_ABS_W = 196
726 : 0, // LD_IND_B = 197
727 : 0, // LD_IND_H = 198
728 : 0, // LD_IND_W = 199
729 : 0, // LD_imm64 = 200
730 : 0, // LD_pseudo = 201
731 : 0, // LE16 = 202
732 : 0, // LE32 = 203
733 : 0, // LE64 = 204
734 : 0, // MOV_32_64 = 205
735 : 0, // MOV_ri = 206
736 : 0, // MOV_ri_32 = 207
737 : 0, // MOV_rr = 208
738 : 0, // MOV_rr_32 = 209
739 : 0, // MUL_ri = 210
740 : 0, // MUL_ri_32 = 211
741 : 0, // MUL_rr = 212
742 : 0, // MUL_rr_32 = 213
743 : 0, // NEG_32 = 214
744 : 0, // NEG_64 = 215
745 : 0, // NOP = 216
746 : 0, // OR_ri = 217
747 : 0, // OR_ri_32 = 218
748 : 0, // OR_rr = 219
749 : 0, // OR_rr_32 = 220
750 : 0, // RET = 221
751 : 0, // SLL_ri = 222
752 : 0, // SLL_ri_32 = 223
753 : 0, // SLL_rr = 224
754 : 0, // SLL_rr_32 = 225
755 : 0, // SRA_ri = 226
756 : 0, // SRA_ri_32 = 227
757 : 0, // SRA_rr = 228
758 : 0, // SRA_rr_32 = 229
759 : 0, // SRL_ri = 230
760 : 0, // SRL_ri_32 = 231
761 : 0, // SRL_rr = 232
762 : 0, // SRL_rr_32 = 233
763 : 0, // STB = 234
764 : 0, // STB32 = 235
765 : 0, // STD = 236
766 : 0, // STH = 237
767 : 0, // STH32 = 238
768 : 0, // STW = 239
769 : 0, // STW32 = 240
770 : 0, // SUB_ri = 241
771 : 0, // SUB_ri_32 = 242
772 : 0, // SUB_rr = 243
773 : 0, // SUB_rr_32 = 244
774 : 0, // XADD32 = 245
775 : 0, // XADD64 = 246
776 : 0, // XOR_ri = 247
777 : 0, // XOR_ri_32 = 248
778 : 0, // XOR_rr = 249
779 : 0, // XOR_rr_32 = 250
780 : };
781 :
782 : assert(Inst.getOpcode() < 251);
783 : uint64_t MissingFeatures =
784 : (AvailableFeatures & RequiredFeatures[Inst.getOpcode()]) ^
785 : RequiredFeatures[Inst.getOpcode()];
786 : if (MissingFeatures) {
787 : std::ostringstream Msg;
788 : Msg << "Attempting to emit " << MCII.getName(Inst.getOpcode()).str()
789 : << " instruction but the ";
790 : for (unsigned i = 0; i < 8 * sizeof(MissingFeatures); ++i)
791 : if (MissingFeatures & (1ULL << i))
792 : Msg << SubtargetFeatureNames[i] << " ";
793 : Msg << "predicate(s) are not met";
794 : report_fatal_error(Msg.str());
795 : }
796 : #else
797 : // Silence unused variable warning on targets that don't use MCII for other purposes (e.g. BPF).
798 : (void)MCII;
799 : #endif // NDEBUG
800 0 : }
801 : #endif
|