fbc595a8d199b019f8e51623906e3e4c4ec38a83
1 /* Automatically generated by parse-opcodes */
2 switch((insn
.bits
>> 0x0) & 0x7f)
6 #include "insns/c_addi.h"
11 #include "insns/c_li.h"
16 switch((insn
.bits
>> 0x7) & 0x7)
20 if((insn
.bits
& 0x801f) == 0x2)
22 #include "insns/c_move.h"
25 if((insn
.bits
& 0x801f) == 0x8002)
27 #include "insns/c_j.h"
30 throw trap_illegal_instruction
;
34 if((insn
.bits
& 0x801f) == 0x2)
36 #include "insns/c_move.h"
39 if((insn
.bits
& 0x801f) == 0x8002)
41 #include "insns/c_j.h"
44 throw trap_illegal_instruction
;
48 if((insn
.bits
& 0x801f) == 0x2)
50 #include "insns/c_move.h"
53 if((insn
.bits
& 0x801f) == 0x8002)
55 #include "insns/c_j.h"
58 throw trap_illegal_instruction
;
62 if((insn
.bits
& 0x801f) == 0x2)
64 #include "insns/c_move.h"
67 if((insn
.bits
& 0x801f) == 0x8002)
69 #include "insns/c_j.h"
72 throw trap_illegal_instruction
;
76 if((insn
.bits
& 0x801f) == 0x2)
78 #include "insns/c_move.h"
81 if((insn
.bits
& 0x801f) == 0x8002)
83 #include "insns/c_j.h"
86 throw trap_illegal_instruction
;
90 if((insn
.bits
& 0x801f) == 0x2)
92 #include "insns/c_move.h"
95 if((insn
.bits
& 0x801f) == 0x8002)
97 #include "insns/c_j.h"
100 throw trap_illegal_instruction
;
104 if((insn
.bits
& 0x801f) == 0x2)
106 #include "insns/c_move.h"
109 if((insn
.bits
& 0x801f) == 0x8002)
111 #include "insns/c_j.h"
114 throw trap_illegal_instruction
;
118 if((insn
.bits
& 0x801f) == 0x2)
120 #include "insns/c_move.h"
123 if((insn
.bits
& 0x801f) == 0x8002)
125 #include "insns/c_j.h"
128 throw trap_illegal_instruction
;
132 throw trap_illegal_instruction
;
139 switch((insn
.bits
>> 0x7) & 0x7)
143 #include "insns/lb.h"
148 #include "insns/lh.h"
153 #include "insns/lw.h"
158 #include "insns/ld.h"
163 #include "insns/lbu.h"
168 #include "insns/lhu.h"
173 #include "insns/lwu.h"
178 throw trap_illegal_instruction
;
185 #include "insns/c_ldsp.h"
190 #include "insns/c_lwsp.h"
195 #include "insns/c_sdsp.h"
200 switch((insn
.bits
>> 0x7) & 0x7)
204 #include "insns/flw.h"
209 #include "insns/fld.h"
214 throw trap_illegal_instruction
;
221 #include "insns/c_swsp.h"
226 #include "insns/c_ld.h"
231 #include "insns/c_lw.h"
236 switch((insn
.bits
>> 0x7) & 0x7)
240 if((insn
.bits
& 0x1ffff) == 0x280b)
242 #include "insns/sbseg_v.h"
245 if((insn
.bits
& 0x1ffff) == 0x100b)
247 #include "insns/lbst_v.h"
250 if((insn
.bits
& 0x1ffff) == 0x180b)
252 #include "insns/sbst_v.h"
255 if((insn
.bits
& 0x3fffff) == 0xb)
257 #include "insns/lb_v.h"
260 if((insn
.bits
& 0x1ffff) == 0x200b)
262 #include "insns/lbseg_v.h"
265 if((insn
.bits
& 0x3fffff) == 0x1000b)
267 #include "insns/mov_vv.h"
270 if((insn
.bits
& 0x3fffff) == 0x1800b)
272 #include "insns/fmov_vv.h"
275 if((insn
.bits
& 0x3fffff) == 0x80b)
277 #include "insns/sb_v.h"
280 throw trap_illegal_instruction
;
284 if((insn
.bits
& 0x1ffff) == 0x208b)
286 #include "insns/lhseg_v.h"
289 if((insn
.bits
& 0x1ffff) == 0x108b)
291 #include "insns/lhst_v.h"
294 if((insn
.bits
& 0x3fffff) == 0x1008b)
296 #include "insns/mov_sv.h"
299 if((insn
.bits
& 0x3fffff) == 0x1808b)
301 #include "insns/fmov_sv.h"
304 if((insn
.bits
& 0x3fffff) == 0x8b)
306 #include "insns/lh_v.h"
309 if((insn
.bits
& 0x3fffff) == 0x88b)
311 #include "insns/sh_v.h"
314 if((insn
.bits
& 0x1ffff) == 0x288b)
316 #include "insns/shseg_v.h"
319 if((insn
.bits
& 0x1ffff) == 0x188b)
321 #include "insns/shst_v.h"
324 throw trap_illegal_instruction
;
328 if((insn
.bits
& 0x3fffff) == 0x10b)
330 #include "insns/lw_v.h"
333 if((insn
.bits
& 0x1ffff) == 0x1810b)
335 #include "insns/fmov_su.h"
338 if((insn
.bits
& 0x1ffff) == 0x290b)
340 #include "insns/swseg_v.h"
343 if((insn
.bits
& 0x1ffff) == 0x1010b)
345 #include "insns/mov_su.h"
348 if((insn
.bits
& 0x1ffff) == 0x1d0b)
350 #include "insns/fswst_v.h"
353 if((insn
.bits
& 0x1ffff) == 0x190b)
355 #include "insns/swst_v.h"
358 if((insn
.bits
& 0x3fffff) == 0xd0b)
360 #include "insns/fsw_v.h"
363 if((insn
.bits
& 0x1ffff) == 0x250b)
365 #include "insns/flwseg_v.h"
368 if((insn
.bits
& 0x3fffff) == 0x50b)
370 #include "insns/flw_v.h"
373 if((insn
.bits
& 0x3fffff) == 0x90b)
375 #include "insns/sw_v.h"
378 if((insn
.bits
& 0x1ffff) == 0x150b)
380 #include "insns/flwst_v.h"
383 if((insn
.bits
& 0x1ffff) == 0x210b)
385 #include "insns/lwseg_v.h"
388 if((insn
.bits
& 0x1ffff) == 0x2d0b)
390 #include "insns/fswseg_v.h"
393 if((insn
.bits
& 0x1ffff) == 0x110b)
395 #include "insns/lwst_v.h"
398 throw trap_illegal_instruction
;
402 if((insn
.bits
& 0x1ffff) == 0x218b)
404 #include "insns/ldseg_v.h"
407 if((insn
.bits
& 0x3fffff) == 0x58b)
409 #include "insns/fld_v.h"
412 if((insn
.bits
& 0x3fffff) == 0x18b)
414 #include "insns/ld_v.h"
417 if((insn
.bits
& 0x3fffff) == 0xd8b)
419 #include "insns/fsd_v.h"
422 if((insn
.bits
& 0x1ffff) == 0x2d8b)
424 #include "insns/fsdseg_v.h"
427 if((insn
.bits
& 0x1ffff) == 0x1d8b)
429 #include "insns/fsdst_v.h"
432 if((insn
.bits
& 0x1ffff) == 0x118b)
434 #include "insns/ldst_v.h"
437 if((insn
.bits
& 0x1ffff) == 0x258b)
439 #include "insns/fldseg_v.h"
442 if((insn
.bits
& 0x1ffff) == 0x1018b)
444 #include "insns/mov_us.h"
447 if((insn
.bits
& 0x1ffff) == 0x158b)
449 #include "insns/fldst_v.h"
452 if((insn
.bits
& 0x1ffff) == 0x298b)
454 #include "insns/sdseg_v.h"
457 if((insn
.bits
& 0x1ffff) == 0x1818b)
459 #include "insns/fmov_us.h"
462 if((insn
.bits
& 0x3fffff) == 0x98b)
464 #include "insns/sd_v.h"
467 if((insn
.bits
& 0x1ffff) == 0x198b)
469 #include "insns/sdst_v.h"
472 throw trap_illegal_instruction
;
476 if((insn
.bits
& 0x3fffff) == 0x20b)
478 #include "insns/lbu_v.h"
481 if((insn
.bits
& 0x1ffff) == 0x220b)
483 #include "insns/lbuseg_v.h"
486 if((insn
.bits
& 0x1ffff) == 0x120b)
488 #include "insns/lbust_v.h"
491 throw trap_illegal_instruction
;
495 if((insn
.bits
& 0x1ffff) == 0x128b)
497 #include "insns/lhust_v.h"
500 if((insn
.bits
& 0x3fffff) == 0x28b)
502 #include "insns/lhu_v.h"
505 if((insn
.bits
& 0x1ffff) == 0x228b)
507 #include "insns/lhuseg_v.h"
510 throw trap_illegal_instruction
;
514 if((insn
.bits
& 0x1ffff) == 0x230b)
516 #include "insns/lwuseg_v.h"
519 if((insn
.bits
& 0x3fffff) == 0x30b)
521 #include "insns/lwu_v.h"
524 if((insn
.bits
& 0x1ffff) == 0x130b)
526 #include "insns/lwust_v.h"
529 throw trap_illegal_instruction
;
533 throw trap_illegal_instruction
;
540 #include "insns/c_sd.h"
545 #include "insns/c_sw.h"
550 switch((insn
.bits
>> 0x7) & 0x7)
554 if((insn
.bits
& 0xfff) == 0x80f)
556 #include "insns/sbsegst_v.h"
559 if((insn
.bits
& 0xfff) == 0xf)
561 #include "insns/lbsegst_v.h"
564 throw trap_illegal_instruction
;
568 if((insn
.bits
& 0xfff) == 0x88f)
570 #include "insns/shsegst_v.h"
573 if((insn
.bits
& 0xfff) == 0x8f)
575 #include "insns/lhsegst_v.h"
578 throw trap_illegal_instruction
;
582 if((insn
.bits
& 0xfff) == 0xd0f)
584 #include "insns/fswsegst_v.h"
587 if((insn
.bits
& 0xfff) == 0x50f)
589 #include "insns/flwsegst_v.h"
592 if((insn
.bits
& 0xfff) == 0x10f)
594 #include "insns/lwsegst_v.h"
597 if((insn
.bits
& 0xfff) == 0x90f)
599 #include "insns/swsegst_v.h"
602 throw trap_illegal_instruction
;
606 if((insn
.bits
& 0xfff) == 0x18f)
608 #include "insns/ldsegst_v.h"
611 if((insn
.bits
& 0xfff) == 0x98f)
613 #include "insns/sdsegst_v.h"
616 if((insn
.bits
& 0xfff) == 0x58f)
618 #include "insns/fldsegst_v.h"
621 if((insn
.bits
& 0xfff) == 0xd8f)
623 #include "insns/fsdsegst_v.h"
626 throw trap_illegal_instruction
;
630 if((insn
.bits
& 0xfff) == 0x20f)
632 #include "insns/lbusegst_v.h"
635 throw trap_illegal_instruction
;
639 if((insn
.bits
& 0xfff) == 0x28f)
641 #include "insns/lhusegst_v.h"
644 throw trap_illegal_instruction
;
648 if((insn
.bits
& 0xfff) == 0x30f)
650 #include "insns/lwusegst_v.h"
653 throw trap_illegal_instruction
;
657 throw trap_illegal_instruction
;
664 #include "insns/c_beq.h"
669 #include "insns/c_bne.h"
674 switch((insn
.bits
>> 0x7) & 0x7)
678 #include "insns/addi.h"
683 if((insn
.bits
& 0x3f03ff) == 0x93)
685 #include "insns/slli.h"
688 throw trap_illegal_instruction
;
692 #include "insns/slti.h"
697 #include "insns/sltiu.h"
702 #include "insns/xori.h"
707 if((insn
.bits
& 0x3f03ff) == 0x293)
709 #include "insns/srli.h"
712 if((insn
.bits
& 0x3f03ff) == 0x10293)
714 #include "insns/srai.h"
717 throw trap_illegal_instruction
;
721 #include "insns/ori.h"
726 #include "insns/andi.h"
731 throw trap_illegal_instruction
;
738 switch((insn
.bits
>> 0x7) & 0x7)
742 #include "insns/addiw.h"
747 if((insn
.bits
& 0x3f83ff) == 0x9b)
749 #include "insns/slliw.h"
752 throw trap_illegal_instruction
;
756 if((insn
.bits
& 0x3f83ff) == 0x29b)
758 #include "insns/srliw.h"
761 if((insn
.bits
& 0x3f83ff) == 0x1029b)
763 #include "insns/sraiw.h"
766 throw trap_illegal_instruction
;
770 throw trap_illegal_instruction
;
777 #include "insns/c_addi.h"
782 #include "insns/c_li.h"
787 switch((insn
.bits
>> 0x7) & 0x7)
791 if((insn
.bits
& 0x801f) == 0x2)
793 #include "insns/c_move.h"
796 if((insn
.bits
& 0x801f) == 0x8002)
798 #include "insns/c_j.h"
801 throw trap_illegal_instruction
;
805 if((insn
.bits
& 0x801f) == 0x2)
807 #include "insns/c_move.h"
810 if((insn
.bits
& 0x801f) == 0x8002)
812 #include "insns/c_j.h"
815 throw trap_illegal_instruction
;
819 if((insn
.bits
& 0x801f) == 0x2)
821 #include "insns/c_move.h"
824 if((insn
.bits
& 0x801f) == 0x8002)
826 #include "insns/c_j.h"
829 throw trap_illegal_instruction
;
833 if((insn
.bits
& 0x801f) == 0x2)
835 #include "insns/c_move.h"
838 if((insn
.bits
& 0x801f) == 0x8002)
840 #include "insns/c_j.h"
843 throw trap_illegal_instruction
;
847 if((insn
.bits
& 0x801f) == 0x2)
849 #include "insns/c_move.h"
852 if((insn
.bits
& 0x801f) == 0x8002)
854 #include "insns/c_j.h"
857 throw trap_illegal_instruction
;
861 if((insn
.bits
& 0x801f) == 0x2)
863 #include "insns/c_move.h"
866 if((insn
.bits
& 0x801f) == 0x8002)
868 #include "insns/c_j.h"
871 throw trap_illegal_instruction
;
875 if((insn
.bits
& 0x801f) == 0x2)
877 #include "insns/c_move.h"
880 if((insn
.bits
& 0x801f) == 0x8002)
882 #include "insns/c_j.h"
885 throw trap_illegal_instruction
;
889 if((insn
.bits
& 0x801f) == 0x2)
891 #include "insns/c_move.h"
894 if((insn
.bits
& 0x801f) == 0x8002)
896 #include "insns/c_j.h"
899 throw trap_illegal_instruction
;
903 throw trap_illegal_instruction
;
910 switch((insn
.bits
>> 0x7) & 0x7)
914 #include "insns/sb.h"
919 #include "insns/sh.h"
924 #include "insns/sw.h"
929 #include "insns/sd.h"
934 throw trap_illegal_instruction
;
941 #include "insns/c_ldsp.h"
946 #include "insns/c_lwsp.h"
951 #include "insns/c_sdsp.h"
956 switch((insn
.bits
>> 0x7) & 0x7)
960 #include "insns/fsw.h"
965 #include "insns/fsd.h"
970 throw trap_illegal_instruction
;
977 #include "insns/c_swsp.h"
982 #include "insns/c_ld.h"
987 #include "insns/c_lw.h"
992 switch((insn
.bits
>> 0x7) & 0x7)
996 if((insn
.bits
& 0x1ffff) == 0x192b)
998 #include "insns/amominu_w.h"
1001 if((insn
.bits
& 0x1ffff) == 0x92b)
1003 #include "insns/amoand_w.h"
1006 if((insn
.bits
& 0x1ffff) == 0x1d2b)
1008 #include "insns/amomaxu_w.h"
1011 if((insn
.bits
& 0x1ffff) == 0x152b)
1013 #include "insns/amomax_w.h"
1016 if((insn
.bits
& 0x1ffff) == 0x12b)
1018 #include "insns/amoadd_w.h"
1021 if((insn
.bits
& 0x1ffff) == 0xd2b)
1023 #include "insns/amoor_w.h"
1026 if((insn
.bits
& 0x1ffff) == 0x112b)
1028 #include "insns/amomin_w.h"
1031 if((insn
.bits
& 0x1ffff) == 0x52b)
1033 #include "insns/amoswap_w.h"
1036 throw trap_illegal_instruction
;
1040 if((insn
.bits
& 0x1ffff) == 0x19ab)
1042 #include "insns/amominu_d.h"
1045 if((insn
.bits
& 0x1ffff) == 0x9ab)
1047 #include "insns/amoand_d.h"
1050 if((insn
.bits
& 0x1ffff) == 0x1dab)
1052 #include "insns/amomaxu_d.h"
1055 if((insn
.bits
& 0x1ffff) == 0x1ab)
1057 #include "insns/amoadd_d.h"
1060 if((insn
.bits
& 0x1ffff) == 0x15ab)
1062 #include "insns/amomax_d.h"
1065 if((insn
.bits
& 0x1ffff) == 0xdab)
1067 #include "insns/amoor_d.h"
1070 if((insn
.bits
& 0x1ffff) == 0x5ab)
1072 #include "insns/amoswap_d.h"
1075 if((insn
.bits
& 0x1ffff) == 0x11ab)
1077 #include "insns/amomin_d.h"
1080 throw trap_illegal_instruction
;
1084 throw trap_illegal_instruction
;
1091 #include "insns/c_sd.h"
1096 #include "insns/c_sw.h"
1101 switch((insn
.bits
>> 0x7) & 0x7)
1105 #include "insns/fence_i.h"
1110 #include "insns/fence.h"
1115 #include "insns/fence_l_v.h"
1120 #include "insns/fence_g_v.h"
1125 #include "insns/fence_l_cv.h"
1130 #include "insns/fence_g_cv.h"
1135 throw trap_illegal_instruction
;
1142 #include "insns/c_beq.h"
1147 #include "insns/c_bne.h"
1152 switch((insn
.bits
>> 0x7) & 0x7)
1156 if((insn
.bits
& 0x1ffff) == 0x33)
1158 #include "insns/add.h"
1161 if((insn
.bits
& 0x1ffff) == 0x433)
1163 #include "insns/mul.h"
1166 if((insn
.bits
& 0x1ffff) == 0x10033)
1168 #include "insns/sub.h"
1171 throw trap_illegal_instruction
;
1175 if((insn
.bits
& 0x1ffff) == 0xb3)
1177 #include "insns/sll.h"
1180 if((insn
.bits
& 0x1ffff) == 0x4b3)
1182 #include "insns/mulh.h"
1185 throw trap_illegal_instruction
;
1189 if((insn
.bits
& 0x1ffff) == 0x533)
1191 #include "insns/mulhsu.h"
1194 if((insn
.bits
& 0x1ffff) == 0x133)
1196 #include "insns/slt.h"
1199 throw trap_illegal_instruction
;
1203 if((insn
.bits
& 0x1ffff) == 0x1b3)
1205 #include "insns/sltu.h"
1208 if((insn
.bits
& 0x1ffff) == 0x5b3)
1210 #include "insns/mulhu.h"
1213 throw trap_illegal_instruction
;
1217 if((insn
.bits
& 0x1ffff) == 0x633)
1219 #include "insns/div.h"
1222 if((insn
.bits
& 0x1ffff) == 0x233)
1224 #include "insns/xor.h"
1227 throw trap_illegal_instruction
;
1231 if((insn
.bits
& 0x1ffff) == 0x102b3)
1233 #include "insns/sra.h"
1236 if((insn
.bits
& 0x1ffff) == 0x2b3)
1238 #include "insns/srl.h"
1241 if((insn
.bits
& 0x1ffff) == 0x6b3)
1243 #include "insns/divu.h"
1246 throw trap_illegal_instruction
;
1250 if((insn
.bits
& 0x1ffff) == 0x733)
1252 #include "insns/rem.h"
1255 if((insn
.bits
& 0x1ffff) == 0x333)
1257 #include "insns/or.h"
1260 throw trap_illegal_instruction
;
1264 if((insn
.bits
& 0x1ffff) == 0x7b3)
1266 #include "insns/remu.h"
1269 if((insn
.bits
& 0x1ffff) == 0x3b3)
1271 #include "insns/and.h"
1274 throw trap_illegal_instruction
;
1278 throw trap_illegal_instruction
;
1285 #include "insns/lui.h"
1290 switch((insn
.bits
>> 0x7) & 0x7)
1294 if((insn
.bits
& 0x1ffff) == 0x43b)
1296 #include "insns/mulw.h"
1299 if((insn
.bits
& 0x1ffff) == 0x3b)
1301 #include "insns/addw.h"
1304 if((insn
.bits
& 0x1ffff) == 0x1003b)
1306 #include "insns/subw.h"
1309 throw trap_illegal_instruction
;
1313 if((insn
.bits
& 0x1ffff) == 0xbb)
1315 #include "insns/sllw.h"
1318 throw trap_illegal_instruction
;
1322 if((insn
.bits
& 0x1ffff) == 0x63b)
1324 #include "insns/divw.h"
1327 throw trap_illegal_instruction
;
1331 if((insn
.bits
& 0x1ffff) == 0x6bb)
1333 #include "insns/divuw.h"
1336 if((insn
.bits
& 0x1ffff) == 0x2bb)
1338 #include "insns/srlw.h"
1341 if((insn
.bits
& 0x1ffff) == 0x102bb)
1343 #include "insns/sraw.h"
1346 throw trap_illegal_instruction
;
1350 if((insn
.bits
& 0x1ffff) == 0x73b)
1352 #include "insns/remw.h"
1355 throw trap_illegal_instruction
;
1359 if((insn
.bits
& 0x1ffff) == 0x7bb)
1361 #include "insns/remuw.h"
1364 throw trap_illegal_instruction
;
1368 throw trap_illegal_instruction
;
1375 #include "insns/c_addi.h"
1380 #include "insns/c_li.h"
1385 switch((insn
.bits
>> 0x7) & 0x7)
1389 if((insn
.bits
& 0x801f) == 0x2)
1391 #include "insns/c_move.h"
1394 if((insn
.bits
& 0x801f) == 0x8002)
1396 #include "insns/c_j.h"
1399 throw trap_illegal_instruction
;
1403 if((insn
.bits
& 0x801f) == 0x2)
1405 #include "insns/c_move.h"
1408 if((insn
.bits
& 0x801f) == 0x8002)
1410 #include "insns/c_j.h"
1413 throw trap_illegal_instruction
;
1417 if((insn
.bits
& 0x801f) == 0x2)
1419 #include "insns/c_move.h"
1422 if((insn
.bits
& 0x801f) == 0x8002)
1424 #include "insns/c_j.h"
1427 throw trap_illegal_instruction
;
1431 if((insn
.bits
& 0x801f) == 0x2)
1433 #include "insns/c_move.h"
1436 if((insn
.bits
& 0x801f) == 0x8002)
1438 #include "insns/c_j.h"
1441 throw trap_illegal_instruction
;
1445 if((insn
.bits
& 0x801f) == 0x2)
1447 #include "insns/c_move.h"
1450 if((insn
.bits
& 0x801f) == 0x8002)
1452 #include "insns/c_j.h"
1455 throw trap_illegal_instruction
;
1459 if((insn
.bits
& 0x801f) == 0x2)
1461 #include "insns/c_move.h"
1464 if((insn
.bits
& 0x801f) == 0x8002)
1466 #include "insns/c_j.h"
1469 throw trap_illegal_instruction
;
1473 if((insn
.bits
& 0x801f) == 0x2)
1475 #include "insns/c_move.h"
1478 if((insn
.bits
& 0x801f) == 0x8002)
1480 #include "insns/c_j.h"
1483 throw trap_illegal_instruction
;
1487 if((insn
.bits
& 0x801f) == 0x2)
1489 #include "insns/c_move.h"
1492 if((insn
.bits
& 0x801f) == 0x8002)
1494 #include "insns/c_j.h"
1497 throw trap_illegal_instruction
;
1501 throw trap_illegal_instruction
;
1508 switch((insn
.bits
>> 0x7) & 0x7)
1512 #include "insns/fmadd_s.h"
1517 #include "insns/fmadd_d.h"
1522 #include "insns/fmadd_s.h"
1527 #include "insns/fmadd_d.h"
1532 throw trap_illegal_instruction
;
1539 #include "insns/c_ldsp.h"
1544 #include "insns/c_lwsp.h"
1549 #include "insns/c_sdsp.h"
1554 switch((insn
.bits
>> 0x7) & 0x7)
1558 #include "insns/fmsub_s.h"
1563 #include "insns/fmsub_d.h"
1568 #include "insns/fmsub_s.h"
1573 #include "insns/fmsub_d.h"
1578 throw trap_illegal_instruction
;
1585 #include "insns/c_swsp.h"
1590 #include "insns/c_ld.h"
1595 #include "insns/c_lw.h"
1600 switch((insn
.bits
>> 0x7) & 0x7)
1604 #include "insns/fnmsub_s.h"
1609 #include "insns/fnmsub_d.h"
1614 #include "insns/fnmsub_s.h"
1619 #include "insns/fnmsub_d.h"
1624 throw trap_illegal_instruction
;
1631 #include "insns/c_sd.h"
1636 #include "insns/c_sw.h"
1641 switch((insn
.bits
>> 0x7) & 0x7)
1645 #include "insns/fnmadd_s.h"
1650 #include "insns/fnmadd_d.h"
1655 #include "insns/fnmadd_s.h"
1660 #include "insns/fnmadd_d.h"
1665 throw trap_illegal_instruction
;
1672 #include "insns/c_beq.h"
1677 #include "insns/c_bne.h"
1682 switch((insn
.bits
>> 0x7) & 0x7)
1686 if((insn
.bits
& 0x3ff1ff) == 0x9053)
1688 #include "insns/fcvt_lu_s.h"
1691 if((insn
.bits
& 0x1ffff) == 0x18053)
1693 #include "insns/fmin_s.h"
1696 if((insn
.bits
& 0x3ff1ff) == 0x11053)
1698 #include "insns/fcvt_s_d.h"
1701 if((insn
.bits
& 0x3ff1ff) == 0xe053)
1703 #include "insns/fcvt_s_w.h"
1706 if((insn
.bits
& 0x7c1ffff) == 0x1c053)
1708 #include "insns/mftx_s.h"
1711 if((insn
.bits
& 0x3ff1ff) == 0x8053)
1713 #include "insns/fcvt_l_s.h"
1716 if((insn
.bits
& 0x1ffff) == 0x17053)
1718 #include "insns/fle_s.h"
1721 if((insn
.bits
& 0x7ffffff) == 0x1d053)
1723 #include "insns/mffsr.h"
1726 if((insn
.bits
& 0x1f1ff) == 0x3053)
1728 #include "insns/fdiv_s.h"
1731 if((insn
.bits
& 0x3fffff) == 0x1f053)
1733 #include "insns/mtfsr.h"
1736 if((insn
.bits
& 0x3ff1ff) == 0xd053)
1738 #include "insns/fcvt_s_lu.h"
1741 if((insn
.bits
& 0x1f1ff) == 0x2053)
1743 #include "insns/fmul_s.h"
1746 if((insn
.bits
& 0x1ffff) == 0x16053)
1748 #include "insns/flt_s.h"
1751 if((insn
.bits
& 0x1ffff) == 0x15053)
1753 #include "insns/feq_s.h"
1756 if((insn
.bits
& 0x1ffff) == 0x7053)
1758 #include "insns/fsgnjx_s.h"
1761 if((insn
.bits
& 0x1ffff) == 0x19053)
1763 #include "insns/fmax_s.h"
1766 if((insn
.bits
& 0x3ff1ff) == 0xb053)
1768 #include "insns/fcvt_wu_s.h"
1771 if((insn
.bits
& 0x3ff1ff) == 0xa053)
1773 #include "insns/fcvt_w_s.h"
1776 if((insn
.bits
& 0x3fffff) == 0x1e053)
1778 #include "insns/mxtf_s.h"
1781 if((insn
.bits
& 0x1f1ff) == 0x1053)
1783 #include "insns/fsub_s.h"
1786 if((insn
.bits
& 0x1ffff) == 0x5053)
1788 #include "insns/fsgnj_s.h"
1791 if((insn
.bits
& 0x3ff1ff) == 0xf053)
1793 #include "insns/fcvt_s_wu.h"
1796 if((insn
.bits
& 0x3ff1ff) == 0xc053)
1798 #include "insns/fcvt_s_l.h"
1801 if((insn
.bits
& 0x3ff1ff) == 0x4053)
1803 #include "insns/fsqrt_s.h"
1806 if((insn
.bits
& 0x1ffff) == 0x6053)
1808 #include "insns/fsgnjn_s.h"
1811 if((insn
.bits
& 0x1f1ff) == 0x53)
1813 #include "insns/fadd_s.h"
1816 throw trap_illegal_instruction
;
1820 if((insn
.bits
& 0x1ffff) == 0x180d3)
1822 #include "insns/fmin_d.h"
1825 if((insn
.bits
& 0x3ff1ff) == 0xc0d3)
1827 #include "insns/fcvt_d_l.h"
1830 if((insn
.bits
& 0x3fffff) == 0xe0d3)
1832 #include "insns/fcvt_d_w.h"
1835 if((insn
.bits
& 0x3fffff) == 0x100d3)
1837 #include "insns/fcvt_d_s.h"
1840 if((insn
.bits
& 0x1ffff) == 0x190d3)
1842 #include "insns/fmax_d.h"
1845 if((insn
.bits
& 0x7c1ffff) == 0x1c0d3)
1847 #include "insns/mftx_d.h"
1850 if((insn
.bits
& 0x1ffff) == 0x170d3)
1852 #include "insns/fle_d.h"
1855 if((insn
.bits
& 0x1ffff) == 0x160d3)
1857 #include "insns/flt_d.h"
1860 if((insn
.bits
& 0x1f1ff) == 0x20d3)
1862 #include "insns/fmul_d.h"
1865 if((insn
.bits
& 0x1ffff) == 0x70d3)
1867 #include "insns/fsgnjx_d.h"
1870 if((insn
.bits
& 0x1ffff) == 0x150d3)
1872 #include "insns/feq_d.h"
1875 if((insn
.bits
& 0x3fffff) == 0xf0d3)
1877 #include "insns/fcvt_d_wu.h"
1880 if((insn
.bits
& 0x3ff1ff) == 0xb0d3)
1882 #include "insns/fcvt_wu_d.h"
1885 if((insn
.bits
& 0x1ffff) == 0x60d3)
1887 #include "insns/fsgnjn_d.h"
1890 if((insn
.bits
& 0x3ff1ff) == 0xd0d3)
1892 #include "insns/fcvt_d_lu.h"
1895 if((insn
.bits
& 0x3ff1ff) == 0xa0d3)
1897 #include "insns/fcvt_w_d.h"
1900 if((insn
.bits
& 0x3fffff) == 0x1e0d3)
1902 #include "insns/mxtf_d.h"
1905 if((insn
.bits
& 0x1ffff) == 0x50d3)
1907 #include "insns/fsgnj_d.h"
1910 if((insn
.bits
& 0x3ff1ff) == 0x80d3)
1912 #include "insns/fcvt_l_d.h"
1915 if((insn
.bits
& 0x1f1ff) == 0xd3)
1917 #include "insns/fadd_d.h"
1920 if((insn
.bits
& 0x3ff1ff) == 0x90d3)
1922 #include "insns/fcvt_lu_d.h"
1925 if((insn
.bits
& 0x1f1ff) == 0x10d3)
1927 #include "insns/fsub_d.h"
1930 if((insn
.bits
& 0x3ff1ff) == 0x40d3)
1932 #include "insns/fsqrt_d.h"
1935 if((insn
.bits
& 0x1f1ff) == 0x30d3)
1937 #include "insns/fdiv_d.h"
1940 throw trap_illegal_instruction
;
1944 if((insn
.bits
& 0x3ff1ff) == 0x9053)
1946 #include "insns/fcvt_lu_s.h"
1949 if((insn
.bits
& 0x3ff1ff) == 0x11053)
1951 #include "insns/fcvt_s_d.h"
1954 if((insn
.bits
& 0x3ff1ff) == 0xe053)
1956 #include "insns/fcvt_s_w.h"
1959 if((insn
.bits
& 0x3ff1ff) == 0x8053)
1961 #include "insns/fcvt_l_s.h"
1964 if((insn
.bits
& 0x1f1ff) == 0x3053)
1966 #include "insns/fdiv_s.h"
1969 if((insn
.bits
& 0x3ff1ff) == 0xd053)
1971 #include "insns/fcvt_s_lu.h"
1974 if((insn
.bits
& 0x1f1ff) == 0x2053)
1976 #include "insns/fmul_s.h"
1979 if((insn
.bits
& 0x3ff1ff) == 0xb053)
1981 #include "insns/fcvt_wu_s.h"
1984 if((insn
.bits
& 0x3ff1ff) == 0xa053)
1986 #include "insns/fcvt_w_s.h"
1989 if((insn
.bits
& 0x1f1ff) == 0x1053)
1991 #include "insns/fsub_s.h"
1994 if((insn
.bits
& 0x3ff1ff) == 0xf053)
1996 #include "insns/fcvt_s_wu.h"
1999 if((insn
.bits
& 0x3ff1ff) == 0xc053)
2001 #include "insns/fcvt_s_l.h"
2004 if((insn
.bits
& 0x3ff1ff) == 0x4053)
2006 #include "insns/fsqrt_s.h"
2009 if((insn
.bits
& 0x1f1ff) == 0x53)
2011 #include "insns/fadd_s.h"
2014 throw trap_illegal_instruction
;
2018 if((insn
.bits
& 0x3ff1ff) == 0xc0d3)
2020 #include "insns/fcvt_d_l.h"
2023 if((insn
.bits
& 0x1f1ff) == 0x20d3)
2025 #include "insns/fmul_d.h"
2028 if((insn
.bits
& 0x3ff1ff) == 0xb0d3)
2030 #include "insns/fcvt_wu_d.h"
2033 if((insn
.bits
& 0x3ff1ff) == 0xd0d3)
2035 #include "insns/fcvt_d_lu.h"
2038 if((insn
.bits
& 0x3ff1ff) == 0xa0d3)
2040 #include "insns/fcvt_w_d.h"
2043 if((insn
.bits
& 0x3ff1ff) == 0x80d3)
2045 #include "insns/fcvt_l_d.h"
2048 if((insn
.bits
& 0x1f1ff) == 0xd3)
2050 #include "insns/fadd_d.h"
2053 if((insn
.bits
& 0x3ff1ff) == 0x90d3)
2055 #include "insns/fcvt_lu_d.h"
2058 if((insn
.bits
& 0x1f1ff) == 0x10d3)
2060 #include "insns/fsub_d.h"
2063 if((insn
.bits
& 0x3ff1ff) == 0x40d3)
2065 #include "insns/fsqrt_d.h"
2068 if((insn
.bits
& 0x1f1ff) == 0x30d3)
2070 #include "insns/fdiv_d.h"
2073 throw trap_illegal_instruction
;
2077 throw trap_illegal_instruction
;
2084 #include "insns/c_addi.h"
2089 #include "insns/c_li.h"
2094 switch((insn
.bits
>> 0x7) & 0x7)
2098 if((insn
.bits
& 0x801f) == 0x2)
2100 #include "insns/c_move.h"
2103 if((insn
.bits
& 0x801f) == 0x8002)
2105 #include "insns/c_j.h"
2108 throw trap_illegal_instruction
;
2112 if((insn
.bits
& 0x801f) == 0x2)
2114 #include "insns/c_move.h"
2117 if((insn
.bits
& 0x801f) == 0x8002)
2119 #include "insns/c_j.h"
2122 throw trap_illegal_instruction
;
2126 if((insn
.bits
& 0x801f) == 0x2)
2128 #include "insns/c_move.h"
2131 if((insn
.bits
& 0x801f) == 0x8002)
2133 #include "insns/c_j.h"
2136 throw trap_illegal_instruction
;
2140 if((insn
.bits
& 0x801f) == 0x2)
2142 #include "insns/c_move.h"
2145 if((insn
.bits
& 0x801f) == 0x8002)
2147 #include "insns/c_j.h"
2150 throw trap_illegal_instruction
;
2154 if((insn
.bits
& 0x801f) == 0x2)
2156 #include "insns/c_move.h"
2159 if((insn
.bits
& 0x801f) == 0x8002)
2161 #include "insns/c_j.h"
2164 throw trap_illegal_instruction
;
2168 if((insn
.bits
& 0x801f) == 0x2)
2170 #include "insns/c_move.h"
2173 if((insn
.bits
& 0x801f) == 0x8002)
2175 #include "insns/c_j.h"
2178 throw trap_illegal_instruction
;
2182 if((insn
.bits
& 0x801f) == 0x2)
2184 #include "insns/c_move.h"
2187 if((insn
.bits
& 0x801f) == 0x8002)
2189 #include "insns/c_j.h"
2192 throw trap_illegal_instruction
;
2196 if((insn
.bits
& 0x801f) == 0x2)
2198 #include "insns/c_move.h"
2201 if((insn
.bits
& 0x801f) == 0x8002)
2203 #include "insns/c_j.h"
2206 throw trap_illegal_instruction
;
2210 throw trap_illegal_instruction
;
2217 switch((insn
.bits
>> 0x7) & 0x7)
2221 #include "insns/beq.h"
2226 #include "insns/bne.h"
2231 #include "insns/blt.h"
2236 #include "insns/bge.h"
2241 #include "insns/bltu.h"
2246 #include "insns/bgeu.h"
2251 throw trap_illegal_instruction
;
2258 #include "insns/c_ldsp.h"
2263 #include "insns/c_lwsp.h"
2268 #include "insns/c_sdsp.h"
2273 #include "insns/j.h"
2278 #include "insns/c_swsp.h"
2283 #include "insns/c_ld.h"
2288 #include "insns/c_lw.h"
2293 switch((insn
.bits
>> 0x7) & 0x7)
2297 #include "insns/jalr_c.h"
2302 #include "insns/jalr_r.h"
2307 #include "insns/jalr_j.h"
2312 if((insn
.bits
& 0x7ffffff) == 0x26b)
2314 #include "insns/rdnpc.h"
2317 throw trap_illegal_instruction
;
2321 throw trap_illegal_instruction
;
2328 #include "insns/c_sd.h"
2333 #include "insns/c_sw.h"
2338 #include "insns/jal.h"
2343 #include "insns/c_beq.h"
2348 #include "insns/c_bne.h"
2353 switch((insn
.bits
>> 0x7) & 0x7)
2357 #include "insns/vcfgivl.h"
2362 if((insn
.bits
& 0x3fffff) == 0xf3)
2364 #include "insns/setvl.h"
2367 throw trap_illegal_instruction
;
2371 if((insn
.bits
& 0xf80003ff) == 0x173)
2373 #include "insns/vf.h"
2376 throw trap_illegal_instruction
;
2380 throw trap_illegal_instruction
;
2387 switch((insn
.bits
>> 0x7) & 0x7)
2391 if((insn
.bits
& 0xffffffff) == 0x77)
2393 #include "insns/syscall.h"
2396 throw trap_illegal_instruction
;
2400 if((insn
.bits
& 0xffffffff) == 0xf7)
2402 #include "insns/break.h"
2405 throw trap_illegal_instruction
;
2409 if((insn
.bits
& 0xffffffff) == 0x177)
2411 #include "insns/stop.h"
2414 throw trap_illegal_instruction
;
2418 if((insn
.bits
& 0x7ffffff) == 0x1f7)
2420 #include "insns/utidx.h"
2423 throw trap_illegal_instruction
;
2427 throw trap_illegal_instruction
;
2434 switch((insn
.bits
>> 0x7) & 0x7)
2438 if((insn
.bits
& 0x7ffffff) == 0x7b)
2440 #include "insns/ei.h"
2443 throw trap_illegal_instruction
;
2447 if((insn
.bits
& 0x7ffffff) == 0xfb)
2449 #include "insns/di.h"
2452 throw trap_illegal_instruction
;
2456 if((insn
.bits
& 0x7c1ffff) == 0x17b)
2458 #include "insns/mfpcr.h"
2461 throw trap_illegal_instruction
;
2465 if((insn
.bits
& 0xf801ffff) == 0x1fb)
2467 #include "insns/mtpcr.h"
2470 throw trap_illegal_instruction
;
2474 if((insn
.bits
& 0xffffffff) == 0x27b)
2476 #include "insns/eret.h"
2479 throw trap_illegal_instruction
;
2483 if((insn
.bits
& 0xffffffff) == 0x2fb)
2485 #include "insns/cflush.h"
2488 throw trap_illegal_instruction
;
2492 throw trap_illegal_instruction
;
2499 throw trap_illegal_instruction
;