• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|*                                                                            *|
3|* Pseudo-instruction MC lowering Source Fragment                             *|
4|*                                                                            *|
5|* Automatically generated file, do not edit!                                 *|
6|*                                                                            *|
7\*===----------------------------------------------------------------------===*/
8
9bool MipsAsmPrinter::
10emitPseudoExpansionLowering(MCStreamer &OutStreamer,
11                            const MachineInstr *MI) {
12  switch (MI->getOpcode()) {
13    default: return false;
14    case Mips::AND_V_D_PSEUDO: {
15      MCInst TmpInst;
16      MCOperand MCOp;
17      TmpInst.setOpcode(Mips::AND_V);
18      // Operand: wd
19      lowerOperand(MI->getOperand(0), MCOp);
20      TmpInst.addOperand(MCOp);
21      // Operand: ws
22      lowerOperand(MI->getOperand(1), MCOp);
23      TmpInst.addOperand(MCOp);
24      // Operand: wt
25      lowerOperand(MI->getOperand(2), MCOp);
26      TmpInst.addOperand(MCOp);
27      EmitToStreamer(OutStreamer, TmpInst);
28      break;
29    }
30    case Mips::AND_V_H_PSEUDO: {
31      MCInst TmpInst;
32      MCOperand MCOp;
33      TmpInst.setOpcode(Mips::AND_V);
34      // Operand: wd
35      lowerOperand(MI->getOperand(0), MCOp);
36      TmpInst.addOperand(MCOp);
37      // Operand: ws
38      lowerOperand(MI->getOperand(1), MCOp);
39      TmpInst.addOperand(MCOp);
40      // Operand: wt
41      lowerOperand(MI->getOperand(2), MCOp);
42      TmpInst.addOperand(MCOp);
43      EmitToStreamer(OutStreamer, TmpInst);
44      break;
45    }
46    case Mips::AND_V_W_PSEUDO: {
47      MCInst TmpInst;
48      MCOperand MCOp;
49      TmpInst.setOpcode(Mips::AND_V);
50      // Operand: wd
51      lowerOperand(MI->getOperand(0), MCOp);
52      TmpInst.addOperand(MCOp);
53      // Operand: ws
54      lowerOperand(MI->getOperand(1), MCOp);
55      TmpInst.addOperand(MCOp);
56      // Operand: wt
57      lowerOperand(MI->getOperand(2), MCOp);
58      TmpInst.addOperand(MCOp);
59      EmitToStreamer(OutStreamer, TmpInst);
60      break;
61    }
62    case Mips::B: {
63      MCInst TmpInst;
64      MCOperand MCOp;
65      TmpInst.setOpcode(Mips::BEQ);
66      // Operand: rs
67      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
68      // Operand: rt
69      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
70      // Operand: offset
71      lowerOperand(MI->getOperand(0), MCOp);
72      TmpInst.addOperand(MCOp);
73      EmitToStreamer(OutStreamer, TmpInst);
74      break;
75    }
76    case Mips::BAL_BR: {
77      MCInst TmpInst;
78      MCOperand MCOp;
79      TmpInst.setOpcode(Mips::BGEZAL);
80      // Operand: rs
81      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
82      // Operand: offset
83      lowerOperand(MI->getOperand(0), MCOp);
84      TmpInst.addOperand(MCOp);
85      EmitToStreamer(OutStreamer, TmpInst);
86      break;
87    }
88    case Mips::BAL_BR_MM: {
89      MCInst TmpInst;
90      MCOperand MCOp;
91      TmpInst.setOpcode(Mips::BGEZAL_MM);
92      // Operand: rs
93      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
94      // Operand: offset
95      lowerOperand(MI->getOperand(0), MCOp);
96      TmpInst.addOperand(MCOp);
97      EmitToStreamer(OutStreamer, TmpInst);
98      break;
99    }
100    case Mips::BSEL_D_PSEUDO: {
101      MCInst TmpInst;
102      MCOperand MCOp;
103      TmpInst.setOpcode(Mips::BSEL_V);
104      // Operand: wd
105      lowerOperand(MI->getOperand(0), MCOp);
106      TmpInst.addOperand(MCOp);
107      // Operand: wd_in
108      lowerOperand(MI->getOperand(1), MCOp);
109      TmpInst.addOperand(MCOp);
110      // Operand: ws
111      lowerOperand(MI->getOperand(2), MCOp);
112      TmpInst.addOperand(MCOp);
113      // Operand: wt
114      lowerOperand(MI->getOperand(3), MCOp);
115      TmpInst.addOperand(MCOp);
116      EmitToStreamer(OutStreamer, TmpInst);
117      break;
118    }
119    case Mips::BSEL_FD_PSEUDO: {
120      MCInst TmpInst;
121      MCOperand MCOp;
122      TmpInst.setOpcode(Mips::BSEL_V);
123      // Operand: wd
124      lowerOperand(MI->getOperand(0), MCOp);
125      TmpInst.addOperand(MCOp);
126      // Operand: wd_in
127      lowerOperand(MI->getOperand(1), MCOp);
128      TmpInst.addOperand(MCOp);
129      // Operand: ws
130      lowerOperand(MI->getOperand(2), MCOp);
131      TmpInst.addOperand(MCOp);
132      // Operand: wt
133      lowerOperand(MI->getOperand(3), MCOp);
134      TmpInst.addOperand(MCOp);
135      EmitToStreamer(OutStreamer, TmpInst);
136      break;
137    }
138    case Mips::BSEL_FW_PSEUDO: {
139      MCInst TmpInst;
140      MCOperand MCOp;
141      TmpInst.setOpcode(Mips::BSEL_V);
142      // Operand: wd
143      lowerOperand(MI->getOperand(0), MCOp);
144      TmpInst.addOperand(MCOp);
145      // Operand: wd_in
146      lowerOperand(MI->getOperand(1), MCOp);
147      TmpInst.addOperand(MCOp);
148      // Operand: ws
149      lowerOperand(MI->getOperand(2), MCOp);
150      TmpInst.addOperand(MCOp);
151      // Operand: wt
152      lowerOperand(MI->getOperand(3), MCOp);
153      TmpInst.addOperand(MCOp);
154      EmitToStreamer(OutStreamer, TmpInst);
155      break;
156    }
157    case Mips::BSEL_H_PSEUDO: {
158      MCInst TmpInst;
159      MCOperand MCOp;
160      TmpInst.setOpcode(Mips::BSEL_V);
161      // Operand: wd
162      lowerOperand(MI->getOperand(0), MCOp);
163      TmpInst.addOperand(MCOp);
164      // Operand: wd_in
165      lowerOperand(MI->getOperand(1), MCOp);
166      TmpInst.addOperand(MCOp);
167      // Operand: ws
168      lowerOperand(MI->getOperand(2), MCOp);
169      TmpInst.addOperand(MCOp);
170      // Operand: wt
171      lowerOperand(MI->getOperand(3), MCOp);
172      TmpInst.addOperand(MCOp);
173      EmitToStreamer(OutStreamer, TmpInst);
174      break;
175    }
176    case Mips::BSEL_W_PSEUDO: {
177      MCInst TmpInst;
178      MCOperand MCOp;
179      TmpInst.setOpcode(Mips::BSEL_V);
180      // Operand: wd
181      lowerOperand(MI->getOperand(0), MCOp);
182      TmpInst.addOperand(MCOp);
183      // Operand: wd_in
184      lowerOperand(MI->getOperand(1), MCOp);
185      TmpInst.addOperand(MCOp);
186      // Operand: ws
187      lowerOperand(MI->getOperand(2), MCOp);
188      TmpInst.addOperand(MCOp);
189      // Operand: wt
190      lowerOperand(MI->getOperand(3), MCOp);
191      TmpInst.addOperand(MCOp);
192      EmitToStreamer(OutStreamer, TmpInst);
193      break;
194    }
195    case Mips::B_MM: {
196      MCInst TmpInst;
197      MCOperand MCOp;
198      TmpInst.setOpcode(Mips::BEQ_MM);
199      // Operand: rs
200      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
201      // Operand: rt
202      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
203      // Operand: offset
204      lowerOperand(MI->getOperand(0), MCOp);
205      TmpInst.addOperand(MCOp);
206      EmitToStreamer(OutStreamer, TmpInst);
207      break;
208    }
209    case Mips::FABS_D: {
210      MCInst TmpInst;
211      MCOperand MCOp;
212      TmpInst.setOpcode(Mips::FMAX_A_D);
213      // Operand: wd
214      lowerOperand(MI->getOperand(0), MCOp);
215      TmpInst.addOperand(MCOp);
216      // Operand: ws
217      lowerOperand(MI->getOperand(1), MCOp);
218      TmpInst.addOperand(MCOp);
219      // Operand: wt
220      lowerOperand(MI->getOperand(1), MCOp);
221      TmpInst.addOperand(MCOp);
222      EmitToStreamer(OutStreamer, TmpInst);
223      break;
224    }
225    case Mips::FABS_W: {
226      MCInst TmpInst;
227      MCOperand MCOp;
228      TmpInst.setOpcode(Mips::FMAX_A_W);
229      // Operand: wd
230      lowerOperand(MI->getOperand(0), MCOp);
231      TmpInst.addOperand(MCOp);
232      // Operand: ws
233      lowerOperand(MI->getOperand(1), MCOp);
234      TmpInst.addOperand(MCOp);
235      // Operand: wt
236      lowerOperand(MI->getOperand(1), MCOp);
237      TmpInst.addOperand(MCOp);
238      EmitToStreamer(OutStreamer, TmpInst);
239      break;
240    }
241    case Mips::JALR64Pseudo: {
242      MCInst TmpInst;
243      MCOperand MCOp;
244      TmpInst.setOpcode(Mips::JALR);
245      // Operand: rd
246      TmpInst.addOperand(MCOperand::createReg(Mips::RA));
247      // Operand: rs
248      lowerOperand(MI->getOperand(0), MCOp);
249      TmpInst.addOperand(MCOp);
250      EmitToStreamer(OutStreamer, TmpInst);
251      break;
252    }
253    case Mips::JALRHB64Pseudo: {
254      MCInst TmpInst;
255      MCOperand MCOp;
256      TmpInst.setOpcode(Mips::JALR_HB64);
257      // Operand: rd
258      TmpInst.addOperand(MCOperand::createReg(Mips::RA_64));
259      // Operand: rs
260      lowerOperand(MI->getOperand(0), MCOp);
261      TmpInst.addOperand(MCOp);
262      EmitToStreamer(OutStreamer, TmpInst);
263      break;
264    }
265    case Mips::JALRHBPseudo: {
266      MCInst TmpInst;
267      MCOperand MCOp;
268      TmpInst.setOpcode(Mips::JALR_HB);
269      // Operand: rd
270      TmpInst.addOperand(MCOperand::createReg(Mips::RA));
271      // Operand: rs
272      lowerOperand(MI->getOperand(0), MCOp);
273      TmpInst.addOperand(MCOp);
274      EmitToStreamer(OutStreamer, TmpInst);
275      break;
276    }
277    case Mips::JALRPseudo: {
278      MCInst TmpInst;
279      MCOperand MCOp;
280      TmpInst.setOpcode(Mips::JALR);
281      // Operand: rd
282      TmpInst.addOperand(MCOperand::createReg(Mips::RA));
283      // Operand: rs
284      lowerOperand(MI->getOperand(0), MCOp);
285      TmpInst.addOperand(MCOp);
286      EmitToStreamer(OutStreamer, TmpInst);
287      break;
288    }
289    case Mips::JAL_MMR6: {
290      MCInst TmpInst;
291      MCOperand MCOp;
292      TmpInst.setOpcode(Mips::BALC_MMR6);
293      // Operand: offset
294      lowerOperand(MI->getOperand(0), MCOp);
295      TmpInst.addOperand(MCOp);
296      EmitToStreamer(OutStreamer, TmpInst);
297      break;
298    }
299    case Mips::NOP: {
300      MCInst TmpInst;
301      MCOperand MCOp;
302      TmpInst.setOpcode(Mips::SLL);
303      // Operand: rd
304      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
305      // Operand: rt
306      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
307      // Operand: shamt
308      TmpInst.addOperand(MCOperand::createImm(0));
309      EmitToStreamer(OutStreamer, TmpInst);
310      break;
311    }
312    case Mips::NOR_V_D_PSEUDO: {
313      MCInst TmpInst;
314      MCOperand MCOp;
315      TmpInst.setOpcode(Mips::NOR_V);
316      // Operand: wd
317      lowerOperand(MI->getOperand(0), MCOp);
318      TmpInst.addOperand(MCOp);
319      // Operand: ws
320      lowerOperand(MI->getOperand(1), MCOp);
321      TmpInst.addOperand(MCOp);
322      // Operand: wt
323      lowerOperand(MI->getOperand(2), MCOp);
324      TmpInst.addOperand(MCOp);
325      EmitToStreamer(OutStreamer, TmpInst);
326      break;
327    }
328    case Mips::NOR_V_H_PSEUDO: {
329      MCInst TmpInst;
330      MCOperand MCOp;
331      TmpInst.setOpcode(Mips::NOR_V);
332      // Operand: wd
333      lowerOperand(MI->getOperand(0), MCOp);
334      TmpInst.addOperand(MCOp);
335      // Operand: ws
336      lowerOperand(MI->getOperand(1), MCOp);
337      TmpInst.addOperand(MCOp);
338      // Operand: wt
339      lowerOperand(MI->getOperand(2), MCOp);
340      TmpInst.addOperand(MCOp);
341      EmitToStreamer(OutStreamer, TmpInst);
342      break;
343    }
344    case Mips::NOR_V_W_PSEUDO: {
345      MCInst TmpInst;
346      MCOperand MCOp;
347      TmpInst.setOpcode(Mips::NOR_V);
348      // Operand: wd
349      lowerOperand(MI->getOperand(0), MCOp);
350      TmpInst.addOperand(MCOp);
351      // Operand: ws
352      lowerOperand(MI->getOperand(1), MCOp);
353      TmpInst.addOperand(MCOp);
354      // Operand: wt
355      lowerOperand(MI->getOperand(2), MCOp);
356      TmpInst.addOperand(MCOp);
357      EmitToStreamer(OutStreamer, TmpInst);
358      break;
359    }
360    case Mips::OR_V_D_PSEUDO: {
361      MCInst TmpInst;
362      MCOperand MCOp;
363      TmpInst.setOpcode(Mips::OR_V);
364      // Operand: wd
365      lowerOperand(MI->getOperand(0), MCOp);
366      TmpInst.addOperand(MCOp);
367      // Operand: ws
368      lowerOperand(MI->getOperand(1), MCOp);
369      TmpInst.addOperand(MCOp);
370      // Operand: wt
371      lowerOperand(MI->getOperand(2), MCOp);
372      TmpInst.addOperand(MCOp);
373      EmitToStreamer(OutStreamer, TmpInst);
374      break;
375    }
376    case Mips::OR_V_H_PSEUDO: {
377      MCInst TmpInst;
378      MCOperand MCOp;
379      TmpInst.setOpcode(Mips::OR_V);
380      // Operand: wd
381      lowerOperand(MI->getOperand(0), MCOp);
382      TmpInst.addOperand(MCOp);
383      // Operand: ws
384      lowerOperand(MI->getOperand(1), MCOp);
385      TmpInst.addOperand(MCOp);
386      // Operand: wt
387      lowerOperand(MI->getOperand(2), MCOp);
388      TmpInst.addOperand(MCOp);
389      EmitToStreamer(OutStreamer, TmpInst);
390      break;
391    }
392    case Mips::OR_V_W_PSEUDO: {
393      MCInst TmpInst;
394      MCOperand MCOp;
395      TmpInst.setOpcode(Mips::OR_V);
396      // Operand: wd
397      lowerOperand(MI->getOperand(0), MCOp);
398      TmpInst.addOperand(MCOp);
399      // Operand: ws
400      lowerOperand(MI->getOperand(1), MCOp);
401      TmpInst.addOperand(MCOp);
402      // Operand: wt
403      lowerOperand(MI->getOperand(2), MCOp);
404      TmpInst.addOperand(MCOp);
405      EmitToStreamer(OutStreamer, TmpInst);
406      break;
407    }
408    case Mips::PseudoCMPU_EQ_QB: {
409      MCInst TmpInst;
410      MCOperand MCOp;
411      TmpInst.setOpcode(Mips::CMPU_EQ_QB);
412      // Operand: rs
413      lowerOperand(MI->getOperand(1), MCOp);
414      TmpInst.addOperand(MCOp);
415      // Operand: rt
416      lowerOperand(MI->getOperand(2), MCOp);
417      TmpInst.addOperand(MCOp);
418      EmitToStreamer(OutStreamer, TmpInst);
419      break;
420    }
421    case Mips::PseudoCMPU_LE_QB: {
422      MCInst TmpInst;
423      MCOperand MCOp;
424      TmpInst.setOpcode(Mips::CMPU_LE_QB);
425      // Operand: rs
426      lowerOperand(MI->getOperand(1), MCOp);
427      TmpInst.addOperand(MCOp);
428      // Operand: rt
429      lowerOperand(MI->getOperand(2), MCOp);
430      TmpInst.addOperand(MCOp);
431      EmitToStreamer(OutStreamer, TmpInst);
432      break;
433    }
434    case Mips::PseudoCMPU_LT_QB: {
435      MCInst TmpInst;
436      MCOperand MCOp;
437      TmpInst.setOpcode(Mips::CMPU_LT_QB);
438      // Operand: rs
439      lowerOperand(MI->getOperand(1), MCOp);
440      TmpInst.addOperand(MCOp);
441      // Operand: rt
442      lowerOperand(MI->getOperand(2), MCOp);
443      TmpInst.addOperand(MCOp);
444      EmitToStreamer(OutStreamer, TmpInst);
445      break;
446    }
447    case Mips::PseudoCMP_EQ_PH: {
448      MCInst TmpInst;
449      MCOperand MCOp;
450      TmpInst.setOpcode(Mips::CMP_EQ_PH);
451      // Operand: rs
452      lowerOperand(MI->getOperand(1), MCOp);
453      TmpInst.addOperand(MCOp);
454      // Operand: rt
455      lowerOperand(MI->getOperand(2), MCOp);
456      TmpInst.addOperand(MCOp);
457      EmitToStreamer(OutStreamer, TmpInst);
458      break;
459    }
460    case Mips::PseudoCMP_LE_PH: {
461      MCInst TmpInst;
462      MCOperand MCOp;
463      TmpInst.setOpcode(Mips::CMP_LE_PH);
464      // Operand: rs
465      lowerOperand(MI->getOperand(1), MCOp);
466      TmpInst.addOperand(MCOp);
467      // Operand: rt
468      lowerOperand(MI->getOperand(2), MCOp);
469      TmpInst.addOperand(MCOp);
470      EmitToStreamer(OutStreamer, TmpInst);
471      break;
472    }
473    case Mips::PseudoCMP_LT_PH: {
474      MCInst TmpInst;
475      MCOperand MCOp;
476      TmpInst.setOpcode(Mips::CMP_LT_PH);
477      // Operand: rs
478      lowerOperand(MI->getOperand(1), MCOp);
479      TmpInst.addOperand(MCOp);
480      // Operand: rt
481      lowerOperand(MI->getOperand(2), MCOp);
482      TmpInst.addOperand(MCOp);
483      EmitToStreamer(OutStreamer, TmpInst);
484      break;
485    }
486    case Mips::PseudoDMULT: {
487      MCInst TmpInst;
488      MCOperand MCOp;
489      TmpInst.setOpcode(Mips::DMULT);
490      // Operand: rs
491      lowerOperand(MI->getOperand(1), MCOp);
492      TmpInst.addOperand(MCOp);
493      // Operand: rt
494      lowerOperand(MI->getOperand(2), MCOp);
495      TmpInst.addOperand(MCOp);
496      EmitToStreamer(OutStreamer, TmpInst);
497      break;
498    }
499    case Mips::PseudoDMULTu: {
500      MCInst TmpInst;
501      MCOperand MCOp;
502      TmpInst.setOpcode(Mips::DMULTu);
503      // Operand: rs
504      lowerOperand(MI->getOperand(1), MCOp);
505      TmpInst.addOperand(MCOp);
506      // Operand: rt
507      lowerOperand(MI->getOperand(2), MCOp);
508      TmpInst.addOperand(MCOp);
509      EmitToStreamer(OutStreamer, TmpInst);
510      break;
511    }
512    case Mips::PseudoDSDIV: {
513      MCInst TmpInst;
514      MCOperand MCOp;
515      TmpInst.setOpcode(Mips::DSDIV);
516      // Operand: rs
517      lowerOperand(MI->getOperand(1), MCOp);
518      TmpInst.addOperand(MCOp);
519      // Operand: rt
520      lowerOperand(MI->getOperand(2), MCOp);
521      TmpInst.addOperand(MCOp);
522      EmitToStreamer(OutStreamer, TmpInst);
523      break;
524    }
525    case Mips::PseudoDUDIV: {
526      MCInst TmpInst;
527      MCOperand MCOp;
528      TmpInst.setOpcode(Mips::DUDIV);
529      // Operand: rs
530      lowerOperand(MI->getOperand(1), MCOp);
531      TmpInst.addOperand(MCOp);
532      // Operand: rt
533      lowerOperand(MI->getOperand(2), MCOp);
534      TmpInst.addOperand(MCOp);
535      EmitToStreamer(OutStreamer, TmpInst);
536      break;
537    }
538    case Mips::PseudoIndirectBranch: {
539      MCInst TmpInst;
540      MCOperand MCOp;
541      TmpInst.setOpcode(Mips::JR);
542      // Operand: rs
543      lowerOperand(MI->getOperand(0), MCOp);
544      TmpInst.addOperand(MCOp);
545      EmitToStreamer(OutStreamer, TmpInst);
546      break;
547    }
548    case Mips::PseudoIndirectBranch64: {
549      MCInst TmpInst;
550      MCOperand MCOp;
551      TmpInst.setOpcode(Mips::JR64);
552      // Operand: rs
553      lowerOperand(MI->getOperand(0), MCOp);
554      TmpInst.addOperand(MCOp);
555      EmitToStreamer(OutStreamer, TmpInst);
556      break;
557    }
558    case Mips::PseudoIndirectBranch64R6: {
559      MCInst TmpInst;
560      MCOperand MCOp;
561      TmpInst.setOpcode(Mips::JALR64);
562      // Operand: rd
563      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO_64));
564      // Operand: rs
565      lowerOperand(MI->getOperand(0), MCOp);
566      TmpInst.addOperand(MCOp);
567      EmitToStreamer(OutStreamer, TmpInst);
568      break;
569    }
570    case Mips::PseudoIndirectBranchR6: {
571      MCInst TmpInst;
572      MCOperand MCOp;
573      TmpInst.setOpcode(Mips::JALR);
574      // Operand: rd
575      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
576      // Operand: rs
577      lowerOperand(MI->getOperand(0), MCOp);
578      TmpInst.addOperand(MCOp);
579      EmitToStreamer(OutStreamer, TmpInst);
580      break;
581    }
582    case Mips::PseudoIndirectBranch_MM: {
583      MCInst TmpInst;
584      MCOperand MCOp;
585      TmpInst.setOpcode(Mips::JR_MM);
586      // Operand: rs
587      lowerOperand(MI->getOperand(0), MCOp);
588      TmpInst.addOperand(MCOp);
589      EmitToStreamer(OutStreamer, TmpInst);
590      break;
591    }
592    case Mips::PseudoIndirectBranch_MMR6: {
593      MCInst TmpInst;
594      MCOperand MCOp;
595      TmpInst.setOpcode(Mips::JRC16_MMR6);
596      // Operand: rs
597      lowerOperand(MI->getOperand(0), MCOp);
598      TmpInst.addOperand(MCOp);
599      EmitToStreamer(OutStreamer, TmpInst);
600      break;
601    }
602    case Mips::PseudoIndirectHazardBranch: {
603      MCInst TmpInst;
604      MCOperand MCOp;
605      TmpInst.setOpcode(Mips::JR_HB);
606      // Operand: rs
607      lowerOperand(MI->getOperand(0), MCOp);
608      TmpInst.addOperand(MCOp);
609      EmitToStreamer(OutStreamer, TmpInst);
610      break;
611    }
612    case Mips::PseudoIndirectHazardBranch64: {
613      MCInst TmpInst;
614      MCOperand MCOp;
615      TmpInst.setOpcode(Mips::JR_HB64);
616      // Operand: rs
617      lowerOperand(MI->getOperand(0), MCOp);
618      TmpInst.addOperand(MCOp);
619      EmitToStreamer(OutStreamer, TmpInst);
620      break;
621    }
622    case Mips::PseudoIndrectHazardBranch64R6: {
623      MCInst TmpInst;
624      MCOperand MCOp;
625      TmpInst.setOpcode(Mips::JR_HB64_R6);
626      // Operand: rs
627      lowerOperand(MI->getOperand(0), MCOp);
628      TmpInst.addOperand(MCOp);
629      EmitToStreamer(OutStreamer, TmpInst);
630      break;
631    }
632    case Mips::PseudoIndrectHazardBranchR6: {
633      MCInst TmpInst;
634      MCOperand MCOp;
635      TmpInst.setOpcode(Mips::JR_HB_R6);
636      // Operand: rs
637      lowerOperand(MI->getOperand(0), MCOp);
638      TmpInst.addOperand(MCOp);
639      EmitToStreamer(OutStreamer, TmpInst);
640      break;
641    }
642    case Mips::PseudoMADD: {
643      MCInst TmpInst;
644      MCOperand MCOp;
645      TmpInst.setOpcode(Mips::MADD);
646      // Operand: rs
647      lowerOperand(MI->getOperand(1), MCOp);
648      TmpInst.addOperand(MCOp);
649      // Operand: rt
650      lowerOperand(MI->getOperand(2), MCOp);
651      TmpInst.addOperand(MCOp);
652      EmitToStreamer(OutStreamer, TmpInst);
653      break;
654    }
655    case Mips::PseudoMADDU: {
656      MCInst TmpInst;
657      MCOperand MCOp;
658      TmpInst.setOpcode(Mips::MADDU);
659      // Operand: rs
660      lowerOperand(MI->getOperand(1), MCOp);
661      TmpInst.addOperand(MCOp);
662      // Operand: rt
663      lowerOperand(MI->getOperand(2), MCOp);
664      TmpInst.addOperand(MCOp);
665      EmitToStreamer(OutStreamer, TmpInst);
666      break;
667    }
668    case Mips::PseudoMADDU_MM: {
669      MCInst TmpInst;
670      MCOperand MCOp;
671      TmpInst.setOpcode(Mips::MADDU);
672      // Operand: rs
673      lowerOperand(MI->getOperand(1), MCOp);
674      TmpInst.addOperand(MCOp);
675      // Operand: rt
676      lowerOperand(MI->getOperand(2), MCOp);
677      TmpInst.addOperand(MCOp);
678      EmitToStreamer(OutStreamer, TmpInst);
679      break;
680    }
681    case Mips::PseudoMADD_MM: {
682      MCInst TmpInst;
683      MCOperand MCOp;
684      TmpInst.setOpcode(Mips::MADD);
685      // Operand: rs
686      lowerOperand(MI->getOperand(1), MCOp);
687      TmpInst.addOperand(MCOp);
688      // Operand: rt
689      lowerOperand(MI->getOperand(2), MCOp);
690      TmpInst.addOperand(MCOp);
691      EmitToStreamer(OutStreamer, TmpInst);
692      break;
693    }
694    case Mips::PseudoMSUB: {
695      MCInst TmpInst;
696      MCOperand MCOp;
697      TmpInst.setOpcode(Mips::MSUB);
698      // Operand: rs
699      lowerOperand(MI->getOperand(1), MCOp);
700      TmpInst.addOperand(MCOp);
701      // Operand: rt
702      lowerOperand(MI->getOperand(2), MCOp);
703      TmpInst.addOperand(MCOp);
704      EmitToStreamer(OutStreamer, TmpInst);
705      break;
706    }
707    case Mips::PseudoMSUBU: {
708      MCInst TmpInst;
709      MCOperand MCOp;
710      TmpInst.setOpcode(Mips::MSUBU);
711      // Operand: rs
712      lowerOperand(MI->getOperand(1), MCOp);
713      TmpInst.addOperand(MCOp);
714      // Operand: rt
715      lowerOperand(MI->getOperand(2), MCOp);
716      TmpInst.addOperand(MCOp);
717      EmitToStreamer(OutStreamer, TmpInst);
718      break;
719    }
720    case Mips::PseudoMSUBU_MM: {
721      MCInst TmpInst;
722      MCOperand MCOp;
723      TmpInst.setOpcode(Mips::MSUBU);
724      // Operand: rs
725      lowerOperand(MI->getOperand(1), MCOp);
726      TmpInst.addOperand(MCOp);
727      // Operand: rt
728      lowerOperand(MI->getOperand(2), MCOp);
729      TmpInst.addOperand(MCOp);
730      EmitToStreamer(OutStreamer, TmpInst);
731      break;
732    }
733    case Mips::PseudoMSUB_MM: {
734      MCInst TmpInst;
735      MCOperand MCOp;
736      TmpInst.setOpcode(Mips::MSUB);
737      // Operand: rs
738      lowerOperand(MI->getOperand(1), MCOp);
739      TmpInst.addOperand(MCOp);
740      // Operand: rt
741      lowerOperand(MI->getOperand(2), MCOp);
742      TmpInst.addOperand(MCOp);
743      EmitToStreamer(OutStreamer, TmpInst);
744      break;
745    }
746    case Mips::PseudoMULT: {
747      MCInst TmpInst;
748      MCOperand MCOp;
749      TmpInst.setOpcode(Mips::MULT);
750      // Operand: rs
751      lowerOperand(MI->getOperand(1), MCOp);
752      TmpInst.addOperand(MCOp);
753      // Operand: rt
754      lowerOperand(MI->getOperand(2), MCOp);
755      TmpInst.addOperand(MCOp);
756      EmitToStreamer(OutStreamer, TmpInst);
757      break;
758    }
759    case Mips::PseudoMULT_MM: {
760      MCInst TmpInst;
761      MCOperand MCOp;
762      TmpInst.setOpcode(Mips::MULT);
763      // Operand: rs
764      lowerOperand(MI->getOperand(1), MCOp);
765      TmpInst.addOperand(MCOp);
766      // Operand: rt
767      lowerOperand(MI->getOperand(2), MCOp);
768      TmpInst.addOperand(MCOp);
769      EmitToStreamer(OutStreamer, TmpInst);
770      break;
771    }
772    case Mips::PseudoMULTu: {
773      MCInst TmpInst;
774      MCOperand MCOp;
775      TmpInst.setOpcode(Mips::MULTu);
776      // Operand: rs
777      lowerOperand(MI->getOperand(1), MCOp);
778      TmpInst.addOperand(MCOp);
779      // Operand: rt
780      lowerOperand(MI->getOperand(2), MCOp);
781      TmpInst.addOperand(MCOp);
782      EmitToStreamer(OutStreamer, TmpInst);
783      break;
784    }
785    case Mips::PseudoMULTu_MM: {
786      MCInst TmpInst;
787      MCOperand MCOp;
788      TmpInst.setOpcode(Mips::MULTu);
789      // Operand: rs
790      lowerOperand(MI->getOperand(1), MCOp);
791      TmpInst.addOperand(MCOp);
792      // Operand: rt
793      lowerOperand(MI->getOperand(2), MCOp);
794      TmpInst.addOperand(MCOp);
795      EmitToStreamer(OutStreamer, TmpInst);
796      break;
797    }
798    case Mips::PseudoPICK_PH: {
799      MCInst TmpInst;
800      MCOperand MCOp;
801      TmpInst.setOpcode(Mips::PICK_PH);
802      // Operand: rd
803      lowerOperand(MI->getOperand(0), MCOp);
804      TmpInst.addOperand(MCOp);
805      // Operand: rs
806      lowerOperand(MI->getOperand(2), MCOp);
807      TmpInst.addOperand(MCOp);
808      // Operand: rt
809      lowerOperand(MI->getOperand(3), MCOp);
810      TmpInst.addOperand(MCOp);
811      EmitToStreamer(OutStreamer, TmpInst);
812      break;
813    }
814    case Mips::PseudoPICK_QB: {
815      MCInst TmpInst;
816      MCOperand MCOp;
817      TmpInst.setOpcode(Mips::PICK_QB);
818      // Operand: rd
819      lowerOperand(MI->getOperand(0), MCOp);
820      TmpInst.addOperand(MCOp);
821      // Operand: rs
822      lowerOperand(MI->getOperand(2), MCOp);
823      TmpInst.addOperand(MCOp);
824      // Operand: rt
825      lowerOperand(MI->getOperand(3), MCOp);
826      TmpInst.addOperand(MCOp);
827      EmitToStreamer(OutStreamer, TmpInst);
828      break;
829    }
830    case Mips::PseudoSDIV: {
831      MCInst TmpInst;
832      MCOperand MCOp;
833      TmpInst.setOpcode(Mips::SDIV);
834      // Operand: rs
835      lowerOperand(MI->getOperand(1), MCOp);
836      TmpInst.addOperand(MCOp);
837      // Operand: rt
838      lowerOperand(MI->getOperand(2), MCOp);
839      TmpInst.addOperand(MCOp);
840      EmitToStreamer(OutStreamer, TmpInst);
841      break;
842    }
843    case Mips::PseudoUDIV: {
844      MCInst TmpInst;
845      MCOperand MCOp;
846      TmpInst.setOpcode(Mips::UDIV);
847      // Operand: rs
848      lowerOperand(MI->getOperand(1), MCOp);
849      TmpInst.addOperand(MCOp);
850      // Operand: rt
851      lowerOperand(MI->getOperand(2), MCOp);
852      TmpInst.addOperand(MCOp);
853      EmitToStreamer(OutStreamer, TmpInst);
854      break;
855    }
856    case Mips::SDIV_MM_Pseudo: {
857      MCInst TmpInst;
858      MCOperand MCOp;
859      TmpInst.setOpcode(Mips::SDIV_MM);
860      // Operand: rs
861      lowerOperand(MI->getOperand(1), MCOp);
862      TmpInst.addOperand(MCOp);
863      // Operand: rt
864      lowerOperand(MI->getOperand(2), MCOp);
865      TmpInst.addOperand(MCOp);
866      EmitToStreamer(OutStreamer, TmpInst);
867      break;
868    }
869    case Mips::TAILCALL: {
870      MCInst TmpInst;
871      MCOperand MCOp;
872      TmpInst.setOpcode(Mips::J);
873      // Operand: target
874      lowerOperand(MI->getOperand(0), MCOp);
875      TmpInst.addOperand(MCOp);
876      EmitToStreamer(OutStreamer, TmpInst);
877      break;
878    }
879    case Mips::TAILCALL64R6REG: {
880      MCInst TmpInst;
881      MCOperand MCOp;
882      TmpInst.setOpcode(Mips::JALR64);
883      // Operand: rd
884      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO_64));
885      // Operand: rs
886      lowerOperand(MI->getOperand(0), MCOp);
887      TmpInst.addOperand(MCOp);
888      EmitToStreamer(OutStreamer, TmpInst);
889      break;
890    }
891    case Mips::TAILCALLHB64R6REG: {
892      MCInst TmpInst;
893      MCOperand MCOp;
894      TmpInst.setOpcode(Mips::JR_HB64_R6);
895      // Operand: rs
896      lowerOperand(MI->getOperand(0), MCOp);
897      TmpInst.addOperand(MCOp);
898      EmitToStreamer(OutStreamer, TmpInst);
899      break;
900    }
901    case Mips::TAILCALLHBR6REG: {
902      MCInst TmpInst;
903      MCOperand MCOp;
904      TmpInst.setOpcode(Mips::JR_HB_R6);
905      // Operand: rs
906      lowerOperand(MI->getOperand(0), MCOp);
907      TmpInst.addOperand(MCOp);
908      EmitToStreamer(OutStreamer, TmpInst);
909      break;
910    }
911    case Mips::TAILCALLR6REG: {
912      MCInst TmpInst;
913      MCOperand MCOp;
914      TmpInst.setOpcode(Mips::JALR);
915      // Operand: rd
916      TmpInst.addOperand(MCOperand::createReg(Mips::ZERO));
917      // Operand: rs
918      lowerOperand(MI->getOperand(0), MCOp);
919      TmpInst.addOperand(MCOp);
920      EmitToStreamer(OutStreamer, TmpInst);
921      break;
922    }
923    case Mips::TAILCALLREG: {
924      MCInst TmpInst;
925      MCOperand MCOp;
926      TmpInst.setOpcode(Mips::JR);
927      // Operand: rs
928      lowerOperand(MI->getOperand(0), MCOp);
929      TmpInst.addOperand(MCOp);
930      EmitToStreamer(OutStreamer, TmpInst);
931      break;
932    }
933    case Mips::TAILCALLREG64: {
934      MCInst TmpInst;
935      MCOperand MCOp;
936      TmpInst.setOpcode(Mips::JR64);
937      // Operand: rs
938      lowerOperand(MI->getOperand(0), MCOp);
939      TmpInst.addOperand(MCOp);
940      EmitToStreamer(OutStreamer, TmpInst);
941      break;
942    }
943    case Mips::TAILCALLREGHB: {
944      MCInst TmpInst;
945      MCOperand MCOp;
946      TmpInst.setOpcode(Mips::JR_HB);
947      // Operand: rs
948      lowerOperand(MI->getOperand(0), MCOp);
949      TmpInst.addOperand(MCOp);
950      EmitToStreamer(OutStreamer, TmpInst);
951      break;
952    }
953    case Mips::TAILCALLREGHB64: {
954      MCInst TmpInst;
955      MCOperand MCOp;
956      TmpInst.setOpcode(Mips::JR_HB64);
957      // Operand: rs
958      lowerOperand(MI->getOperand(0), MCOp);
959      TmpInst.addOperand(MCOp);
960      EmitToStreamer(OutStreamer, TmpInst);
961      break;
962    }
963    case Mips::TAILCALLREG_MM: {
964      MCInst TmpInst;
965      MCOperand MCOp;
966      TmpInst.setOpcode(Mips::JRC16_MM);
967      // Operand: rs
968      lowerOperand(MI->getOperand(0), MCOp);
969      TmpInst.addOperand(MCOp);
970      EmitToStreamer(OutStreamer, TmpInst);
971      break;
972    }
973    case Mips::TAILCALLREG_MMR6: {
974      MCInst TmpInst;
975      MCOperand MCOp;
976      TmpInst.setOpcode(Mips::JRC16_MM);
977      // Operand: rs
978      lowerOperand(MI->getOperand(0), MCOp);
979      TmpInst.addOperand(MCOp);
980      EmitToStreamer(OutStreamer, TmpInst);
981      break;
982    }
983    case Mips::TAILCALL_MM: {
984      MCInst TmpInst;
985      MCOperand MCOp;
986      TmpInst.setOpcode(Mips::J_MM);
987      // Operand: target
988      lowerOperand(MI->getOperand(0), MCOp);
989      TmpInst.addOperand(MCOp);
990      EmitToStreamer(OutStreamer, TmpInst);
991      break;
992    }
993    case Mips::TAILCALL_MMR6: {
994      MCInst TmpInst;
995      MCOperand MCOp;
996      TmpInst.setOpcode(Mips::BC_MMR6);
997      // Operand: offset
998      lowerOperand(MI->getOperand(0), MCOp);
999      TmpInst.addOperand(MCOp);
1000      EmitToStreamer(OutStreamer, TmpInst);
1001      break;
1002    }
1003    case Mips::TRAP: {
1004      MCInst TmpInst;
1005      MCOperand MCOp;
1006      TmpInst.setOpcode(Mips::BREAK);
1007      // Operand: code_1
1008      TmpInst.addOperand(MCOperand::createImm(0));
1009      // Operand: code_2
1010      TmpInst.addOperand(MCOperand::createImm(0));
1011      EmitToStreamer(OutStreamer, TmpInst);
1012      break;
1013    }
1014    case Mips::TRAP_MM: {
1015      MCInst TmpInst;
1016      MCOperand MCOp;
1017      TmpInst.setOpcode(Mips::BREAK_MM);
1018      // Operand: code_1
1019      TmpInst.addOperand(MCOperand::createImm(0));
1020      // Operand: code_2
1021      TmpInst.addOperand(MCOperand::createImm(0));
1022      EmitToStreamer(OutStreamer, TmpInst);
1023      break;
1024    }
1025    case Mips::UDIV_MM_Pseudo: {
1026      MCInst TmpInst;
1027      MCOperand MCOp;
1028      TmpInst.setOpcode(Mips::UDIV_MM);
1029      // Operand: rs
1030      lowerOperand(MI->getOperand(1), MCOp);
1031      TmpInst.addOperand(MCOp);
1032      // Operand: rt
1033      lowerOperand(MI->getOperand(2), MCOp);
1034      TmpInst.addOperand(MCOp);
1035      EmitToStreamer(OutStreamer, TmpInst);
1036      break;
1037    }
1038    case Mips::XOR_V_D_PSEUDO: {
1039      MCInst TmpInst;
1040      MCOperand MCOp;
1041      TmpInst.setOpcode(Mips::XOR_V);
1042      // Operand: wd
1043      lowerOperand(MI->getOperand(0), MCOp);
1044      TmpInst.addOperand(MCOp);
1045      // Operand: ws
1046      lowerOperand(MI->getOperand(1), MCOp);
1047      TmpInst.addOperand(MCOp);
1048      // Operand: wt
1049      lowerOperand(MI->getOperand(2), MCOp);
1050      TmpInst.addOperand(MCOp);
1051      EmitToStreamer(OutStreamer, TmpInst);
1052      break;
1053    }
1054    case Mips::XOR_V_H_PSEUDO: {
1055      MCInst TmpInst;
1056      MCOperand MCOp;
1057      TmpInst.setOpcode(Mips::XOR_V);
1058      // Operand: wd
1059      lowerOperand(MI->getOperand(0), MCOp);
1060      TmpInst.addOperand(MCOp);
1061      // Operand: ws
1062      lowerOperand(MI->getOperand(1), MCOp);
1063      TmpInst.addOperand(MCOp);
1064      // Operand: wt
1065      lowerOperand(MI->getOperand(2), MCOp);
1066      TmpInst.addOperand(MCOp);
1067      EmitToStreamer(OutStreamer, TmpInst);
1068      break;
1069    }
1070    case Mips::XOR_V_W_PSEUDO: {
1071      MCInst TmpInst;
1072      MCOperand MCOp;
1073      TmpInst.setOpcode(Mips::XOR_V);
1074      // Operand: wd
1075      lowerOperand(MI->getOperand(0), MCOp);
1076      TmpInst.addOperand(MCOp);
1077      // Operand: ws
1078      lowerOperand(MI->getOperand(1), MCOp);
1079      TmpInst.addOperand(MCOp);
1080      // Operand: wt
1081      lowerOperand(MI->getOperand(2), MCOp);
1082      TmpInst.addOperand(MCOp);
1083      EmitToStreamer(OutStreamer, TmpInst);
1084      break;
1085    }
1086  }
1087  return true;
1088}
1089
1090