aboutsummaryrefslogtreecommitdiff
path: root/riscv/execute.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/execute.h')
-rw-r--r--riscv/execute.h635
1 files changed, 635 insertions, 0 deletions
diff --git a/riscv/execute.h b/riscv/execute.h
new file mode 100644
index 0000000..66ce0e0
--- /dev/null
+++ b/riscv/execute.h
@@ -0,0 +1,635 @@
+/* Automatically generated by parse-opcodes */
+switch(opcode)
+{
+ case 0:
+ {
+ switch(funct)
+ {
+ case 0:
+ {
+ #include "insns/unimp.h"
+ }
+ break;
+ case 1:
+ {
+ #include "insns/sll.h"
+ }
+ break;
+ case 2:
+ {
+ #include "insns/srl.h"
+ }
+ break;
+ case 3:
+ {
+ #include "insns/sra.h"
+ }
+ break;
+ case 5:
+ {
+ #include "insns/sllv.h"
+ }
+ break;
+ case 6:
+ {
+ #include "insns/srlv.h"
+ }
+ break;
+ case 7:
+ {
+ #include "insns/srav.h"
+ }
+ break;
+ case 9:
+ {
+ #include "insns/jalr.h"
+ }
+ break;
+ case 10:
+ {
+ #include "insns/movz.h"
+ }
+ break;
+ case 11:
+ {
+ #include "insns/movn.h"
+ }
+ break;
+ case 12:
+ {
+ #include "insns/syscall.h"
+ }
+ break;
+ case 13:
+ {
+ #include "insns/break.h"
+ }
+ break;
+ case 14:
+ {
+ #include "insns/rdhwr.h"
+ }
+ break;
+ case 15:
+ {
+ #include "insns/sync.h"
+ }
+ break;
+ case 17:
+ {
+ #include "insns/dsll.h"
+ }
+ break;
+ case 18:
+ {
+ #include "insns/dsrl.h"
+ }
+ break;
+ case 19:
+ {
+ #include "insns/dsra.h"
+ }
+ break;
+ case 21:
+ {
+ #include "insns/dsllv.h"
+ }
+ break;
+ case 22:
+ {
+ #include "insns/dsrlv.h"
+ }
+ break;
+ case 23:
+ {
+ #include "insns/dsrav.h"
+ }
+ break;
+ case 25:
+ {
+ #include "insns/dsll32.h"
+ }
+ break;
+ case 26:
+ {
+ #include "insns/dsrl32.h"
+ }
+ break;
+ case 27:
+ {
+ #include "insns/dsra32.h"
+ }
+ break;
+ case 32:
+ {
+ #include "insns/add.h"
+ }
+ break;
+ case 33:
+ {
+ #include "insns/sub.h"
+ }
+ break;
+ case 34:
+ {
+ #include "insns/slt.h"
+ }
+ break;
+ case 35:
+ {
+ #include "insns/sltu.h"
+ }
+ break;
+ case 36:
+ {
+ #include "insns/and.h"
+ }
+ break;
+ case 37:
+ {
+ #include "insns/or.h"
+ }
+ break;
+ case 38:
+ {
+ #include "insns/xor.h"
+ }
+ break;
+ case 39:
+ {
+ #include "insns/nor.h"
+ }
+ break;
+ case 40:
+ {
+ #include "insns/mul.h"
+ }
+ break;
+ case 48:
+ {
+ #include "insns/dadd.h"
+ }
+ break;
+ case 49:
+ {
+ #include "insns/dsub.h"
+ }
+ break;
+ case 56:
+ {
+ #include "insns/dmul.h"
+ }
+ break;
+ default:
+ {
+ #include "insns/unimp.h"
+ }
+ break;
+ }
+ }
+ break;
+ case 1:
+ {
+ #include "insns/synci.h"
+ }
+ break;
+ case 2:
+ {
+ #include "insns/j.h"
+ }
+ break;
+ case 3:
+ {
+ #include "insns/jal.h"
+ }
+ break;
+ case 4:
+ {
+ #include "insns/beq.h"
+ }
+ break;
+ case 5:
+ {
+ #include "insns/bne.h"
+ }
+ break;
+ case 8:
+ {
+ #include "insns/addi.h"
+ }
+ break;
+ case 10:
+ {
+ #include "insns/slti.h"
+ }
+ break;
+ case 11:
+ {
+ #include "insns/sltiu.h"
+ }
+ break;
+ case 12:
+ {
+ #include "insns/andi.h"
+ }
+ break;
+ case 13:
+ {
+ #include "insns/ori.h"
+ }
+ break;
+ case 14:
+ {
+ #include "insns/xori.h"
+ }
+ break;
+ case 15:
+ {
+ #include "insns/lui.h"
+ }
+ break;
+ case 16:
+ {
+ switch(funct)
+ {
+ case 0:
+ {
+ #include "insns/ei.h"
+ }
+ break;
+ case 1:
+ {
+ #include "insns/di.h"
+ }
+ break;
+ case 2:
+ {
+ #include "insns/eret.h"
+ }
+ break;
+ case 24:
+ {
+ #include "insns/mfc0.h"
+ }
+ break;
+ case 25:
+ {
+ #include "insns/dmfc0.h"
+ }
+ break;
+ case 28:
+ {
+ #include "insns/mtc0.h"
+ }
+ break;
+ case 29:
+ {
+ #include "insns/dmtc0.h"
+ }
+ break;
+ default:
+ {
+ #include "insns/unimp.h"
+ }
+ break;
+ }
+ }
+ break;
+ case 17:
+ {
+ switch(funct)
+ {
+ case 0:
+ {
+ #include "insns/add_fmt.h"
+ }
+ break;
+ case 1:
+ {
+ #include "insns/sub_fmt.h"
+ }
+ break;
+ case 2:
+ {
+ #include "insns/mul_fmt.h"
+ }
+ break;
+ case 3:
+ {
+ #include "insns/div_fmt.h"
+ }
+ break;
+ case 4:
+ {
+ #include "insns/sqrt_fmt.h"
+ }
+ break;
+ case 5:
+ {
+ #include "insns/abs_fmt.h"
+ }
+ break;
+ case 6:
+ {
+ #include "insns/mov_fmt.h"
+ }
+ break;
+ case 7:
+ {
+ #include "insns/neg_fmt.h"
+ }
+ break;
+ case 8:
+ {
+ #include "insns/round_l_fmt.h"
+ }
+ break;
+ case 9:
+ {
+ #include "insns/trunc_l_fmt.h"
+ }
+ break;
+ case 10:
+ {
+ #include "insns/ceil_l_fmt.h"
+ }
+ break;
+ case 11:
+ {
+ #include "insns/floor_l_fmt.h"
+ }
+ break;
+ case 12:
+ {
+ #include "insns/round_w_fmt.h"
+ }
+ break;
+ case 13:
+ {
+ #include "insns/trunc_w_fmt.h"
+ }
+ break;
+ case 14:
+ {
+ #include "insns/ceil_w_fmt.h"
+ }
+ break;
+ case 15:
+ {
+ #include "insns/floor_w_fmt.h"
+ }
+ break;
+ case 24:
+ {
+ #include "insns/mfc1.h"
+ }
+ break;
+ case 25:
+ {
+ #include "insns/dmfc1.h"
+ }
+ break;
+ case 26:
+ {
+ #include "insns/cfc1.h"
+ }
+ break;
+ case 27:
+ {
+ #include "insns/mfhc1.h"
+ }
+ break;
+ case 28:
+ {
+ #include "insns/mtc1.h"
+ }
+ break;
+ case 29:
+ {
+ #include "insns/dmtc1.h"
+ }
+ break;
+ case 30:
+ {
+ #include "insns/ctc1.h"
+ }
+ break;
+ case 31:
+ {
+ #include "insns/mthc1.h"
+ }
+ break;
+ case 32:
+ {
+ #include "insns/cvt_s_fmt.h"
+ }
+ break;
+ case 33:
+ {
+ #include "insns/cvt_d_fmt.h"
+ }
+ break;
+ case 36:
+ {
+ #include "insns/cvt_w_fmt.h"
+ }
+ break;
+ case 37:
+ {
+ #include "insns/cvt_l_fmt.h"
+ }
+ break;
+ case 48:
+ {
+ #include "insns/c_f_fmt.h"
+ }
+ break;
+ case 49:
+ {
+ #include "insns/c_un_fmt.h"
+ }
+ break;
+ case 50:
+ {
+ #include "insns/c_eq_fmt.h"
+ }
+ break;
+ case 51:
+ {
+ #include "insns/c_ueq_fmt.h"
+ }
+ break;
+ case 52:
+ {
+ #include "insns/c_olt_fmt.h"
+ }
+ break;
+ case 53:
+ {
+ #include "insns/c_ult_fmt.h"
+ }
+ break;
+ case 54:
+ {
+ #include "insns/c_ole_fmt.h"
+ }
+ break;
+ case 55:
+ {
+ #include "insns/c_ule_fmt.h"
+ }
+ break;
+ case 56:
+ {
+ #include "insns/c_sf_fmt.h"
+ }
+ break;
+ case 57:
+ {
+ #include "insns/c_ngle_fmt.h"
+ }
+ break;
+ case 58:
+ {
+ #include "insns/c_seq_fmt.h"
+ }
+ break;
+ case 59:
+ {
+ #include "insns/c_ngl_fmt.h"
+ }
+ break;
+ case 60:
+ {
+ #include "insns/c_lt_fmt.h"
+ }
+ break;
+ case 61:
+ {
+ #include "insns/c_nge_fmt.h"
+ }
+ break;
+ case 62:
+ {
+ #include "insns/c_le_fmt.h"
+ }
+ break;
+ case 63:
+ {
+ #include "insns/c_ngt_fmt.h"
+ }
+ break;
+ default:
+ {
+ #include "insns/unimp.h"
+ }
+ break;
+ }
+ }
+ break;
+ case 20:
+ {
+ #include "insns/blt.h"
+ }
+ break;
+ case 21:
+ {
+ #include "insns/bltu.h"
+ }
+ break;
+ case 22:
+ {
+ #include "insns/ble.h"
+ }
+ break;
+ case 23:
+ {
+ #include "insns/bleu.h"
+ }
+ break;
+ case 24:
+ {
+ #include "insns/daddi.h"
+ }
+ break;
+ case 32:
+ {
+ #include "insns/lb.h"
+ }
+ break;
+ case 33:
+ {
+ #include "insns/lh.h"
+ }
+ break;
+ case 35:
+ {
+ #include "insns/lw.h"
+ }
+ break;
+ case 36:
+ {
+ #include "insns/lbu.h"
+ }
+ break;
+ case 37:
+ {
+ #include "insns/lhu.h"
+ }
+ break;
+ case 39:
+ {
+ #include "insns/lwu.h"
+ }
+ break;
+ case 40:
+ {
+ #include "insns/sb.h"
+ }
+ break;
+ case 41:
+ {
+ #include "insns/sh.h"
+ }
+ break;
+ case 43:
+ {
+ #include "insns/sw.h"
+ }
+ break;
+ case 49:
+ {
+ #include "insns/l_s.h"
+ }
+ break;
+ case 53:
+ {
+ #include "insns/l_d.h"
+ }
+ break;
+ case 55:
+ {
+ #include "insns/ld.h"
+ }
+ break;
+ case 57:
+ {
+ #include "insns/s_s.h"
+ }
+ break;
+ case 61:
+ {
+ #include "insns/s_d.h"
+ }
+ break;
+ case 63:
+ {
+ #include "insns/sd.h"
+ }
+ break;
+ default:
+ {
+ #include "insns/unimp.h"
+ }
+ break;
+ }