diff options
Diffstat (limited to 'riscv')
-rw-r--r-- | riscv/dispatch.h | 1028 | ||||
-rw-r--r-- | riscv/dispatch_0.cc | 887 | ||||
-rw-r--r-- | riscv/dispatch_1.cc | 1227 | ||||
-rw-r--r-- | riscv/dispatch_2.cc | 887 | ||||
-rw-r--r-- | riscv/dispatch_3.cc | 1211 | ||||
-rw-r--r-- | riscv/dispatch_4.cc | 880 | ||||
-rw-r--r-- | riscv/dispatch_5.cc | 1148 | ||||
-rw-r--r-- | riscv/dispatch_6.cc | 880 | ||||
-rw-r--r-- | riscv/dispatch_7.cc | 1086 | ||||
-rw-r--r-- | riscv/dispatch_8.cc | 892 | ||||
-rw-r--r-- | riscv/dispatch_9.cc | 1144 | ||||
-rw-r--r-- | riscv/dispatch_decl.h | 1026 | ||||
-rw-r--r-- | riscv/insn_footer.h | 2 | ||||
-rw-r--r-- | riscv/insn_header.h | 22 | ||||
-rw-r--r-- | riscv/insn_includes.h | 7 | ||||
-rw-r--r-- | riscv/insns/jalr_j.h | 2 | ||||
-rw-r--r-- | riscv/insns/jalr_r.h | 2 | ||||
-rw-r--r-- | riscv/opcodes.h | 272 | ||||
-rw-r--r-- | riscv/processor.cc | 56 | ||||
-rw-r--r-- | riscv/processor.h | 14 | ||||
-rw-r--r-- | riscv/riscv.mk.in | 26 |
21 files changed, 377 insertions, 12322 deletions
diff --git a/riscv/dispatch.h b/riscv/dispatch.h deleted file mode 100644 index fdc92d3..0000000 --- a/riscv/dispatch.h +++ /dev/null @@ -1,1028 +0,0 @@ -/* Automatically generated by parse-opcodes */ -typedef reg_t (*insn_func_t)(processor_t*, insn_t, reg_t); -const static insn_func_t dispatch_table[] = { - (insn_func_t)&processor_t::opcode_func_000, - (insn_func_t)&processor_t::opcode_func_001, - (insn_func_t)&processor_t::opcode_func_002, - (insn_func_t)&processor_t::opcode_func_003, - (insn_func_t)&processor_t::opcode_func_004, - (insn_func_t)&processor_t::opcode_func_005, - (insn_func_t)&processor_t::opcode_func_006, - (insn_func_t)&processor_t::opcode_func_007, - (insn_func_t)&processor_t::opcode_func_008, - (insn_func_t)&processor_t::opcode_func_009, - (insn_func_t)&processor_t::opcode_func_00a, - (insn_func_t)&processor_t::opcode_func_00b, - (insn_func_t)&processor_t::opcode_func_00c, - (insn_func_t)&processor_t::opcode_func_00d, - (insn_func_t)&processor_t::opcode_func_00e, - (insn_func_t)&processor_t::opcode_func_00f, - (insn_func_t)&processor_t::opcode_func_010, - (insn_func_t)&processor_t::opcode_func_011, - (insn_func_t)&processor_t::opcode_func_012, - (insn_func_t)&processor_t::opcode_func_013, - (insn_func_t)&processor_t::opcode_func_014, - (insn_func_t)&processor_t::opcode_func_015, - (insn_func_t)&processor_t::opcode_func_016, - (insn_func_t)&processor_t::opcode_func_017, - (insn_func_t)&processor_t::opcode_func_018, - (insn_func_t)&processor_t::opcode_func_019, - (insn_func_t)&processor_t::opcode_func_01a, - (insn_func_t)&processor_t::opcode_func_01b, - (insn_func_t)&processor_t::opcode_func_01c, - (insn_func_t)&processor_t::opcode_func_01d, - (insn_func_t)&processor_t::opcode_func_01e, - (insn_func_t)&processor_t::opcode_func_01f, - (insn_func_t)&processor_t::opcode_func_020, - (insn_func_t)&processor_t::opcode_func_021, - (insn_func_t)&processor_t::opcode_func_022, - (insn_func_t)&processor_t::opcode_func_023, - (insn_func_t)&processor_t::opcode_func_024, - (insn_func_t)&processor_t::opcode_func_025, - (insn_func_t)&processor_t::opcode_func_026, - (insn_func_t)&processor_t::opcode_func_027, - (insn_func_t)&processor_t::opcode_func_028, - (insn_func_t)&processor_t::opcode_func_029, - (insn_func_t)&processor_t::opcode_func_02a, - (insn_func_t)&processor_t::opcode_func_02b, - (insn_func_t)&processor_t::opcode_func_02c, - (insn_func_t)&processor_t::opcode_func_02d, - (insn_func_t)&processor_t::opcode_func_02e, - (insn_func_t)&processor_t::opcode_func_02f, - (insn_func_t)&processor_t::opcode_func_030, - (insn_func_t)&processor_t::opcode_func_031, - (insn_func_t)&processor_t::opcode_func_032, - (insn_func_t)&processor_t::opcode_func_033, - (insn_func_t)&processor_t::opcode_func_034, - (insn_func_t)&processor_t::opcode_func_035, - (insn_func_t)&processor_t::opcode_func_036, - (insn_func_t)&processor_t::opcode_func_037, - (insn_func_t)&processor_t::opcode_func_038, - (insn_func_t)&processor_t::opcode_func_039, - (insn_func_t)&processor_t::opcode_func_03a, - (insn_func_t)&processor_t::opcode_func_03b, - (insn_func_t)&processor_t::opcode_func_03c, - (insn_func_t)&processor_t::opcode_func_03d, - (insn_func_t)&processor_t::opcode_func_03e, - (insn_func_t)&processor_t::opcode_func_03f, - (insn_func_t)&processor_t::opcode_func_040, - (insn_func_t)&processor_t::opcode_func_041, - (insn_func_t)&processor_t::opcode_func_042, - (insn_func_t)&processor_t::opcode_func_043, - (insn_func_t)&processor_t::opcode_func_044, - (insn_func_t)&processor_t::opcode_func_045, - (insn_func_t)&processor_t::opcode_func_046, - (insn_func_t)&processor_t::opcode_func_047, - (insn_func_t)&processor_t::opcode_func_048, - (insn_func_t)&processor_t::opcode_func_049, - (insn_func_t)&processor_t::opcode_func_04a, - (insn_func_t)&processor_t::opcode_func_04b, - (insn_func_t)&processor_t::opcode_func_04c, - (insn_func_t)&processor_t::opcode_func_04d, - (insn_func_t)&processor_t::opcode_func_04e, - (insn_func_t)&processor_t::opcode_func_04f, - (insn_func_t)&processor_t::opcode_func_050, - (insn_func_t)&processor_t::opcode_func_051, - (insn_func_t)&processor_t::opcode_func_052, - (insn_func_t)&processor_t::opcode_func_053, - (insn_func_t)&processor_t::opcode_func_054, - (insn_func_t)&processor_t::opcode_func_055, - (insn_func_t)&processor_t::opcode_func_056, - (insn_func_t)&processor_t::opcode_func_057, - (insn_func_t)&processor_t::opcode_func_058, - (insn_func_t)&processor_t::opcode_func_059, - (insn_func_t)&processor_t::opcode_func_05a, - (insn_func_t)&processor_t::opcode_func_05b, - (insn_func_t)&processor_t::opcode_func_05c, - (insn_func_t)&processor_t::opcode_func_05d, - (insn_func_t)&processor_t::opcode_func_05e, - (insn_func_t)&processor_t::opcode_func_05f, - (insn_func_t)&processor_t::opcode_func_060, - (insn_func_t)&processor_t::opcode_func_061, - (insn_func_t)&processor_t::opcode_func_062, - (insn_func_t)&processor_t::opcode_func_063, - (insn_func_t)&processor_t::opcode_func_064, - (insn_func_t)&processor_t::opcode_func_065, - (insn_func_t)&processor_t::opcode_func_066, - (insn_func_t)&processor_t::opcode_func_067, - (insn_func_t)&processor_t::opcode_func_068, - (insn_func_t)&processor_t::opcode_func_069, - (insn_func_t)&processor_t::opcode_func_06a, - (insn_func_t)&processor_t::opcode_func_06b, - (insn_func_t)&processor_t::opcode_func_06c, - (insn_func_t)&processor_t::opcode_func_06d, - (insn_func_t)&processor_t::opcode_func_06e, - (insn_func_t)&processor_t::opcode_func_06f, - (insn_func_t)&processor_t::opcode_func_070, - (insn_func_t)&processor_t::opcode_func_071, - (insn_func_t)&processor_t::opcode_func_072, - (insn_func_t)&processor_t::opcode_func_073, - (insn_func_t)&processor_t::opcode_func_074, - (insn_func_t)&processor_t::opcode_func_075, - (insn_func_t)&processor_t::opcode_func_076, - (insn_func_t)&processor_t::opcode_func_077, - (insn_func_t)&processor_t::opcode_func_078, - (insn_func_t)&processor_t::opcode_func_079, - (insn_func_t)&processor_t::opcode_func_07a, - (insn_func_t)&processor_t::opcode_func_07b, - (insn_func_t)&processor_t::opcode_func_07c, - (insn_func_t)&processor_t::opcode_func_07d, - (insn_func_t)&processor_t::opcode_func_07e, - (insn_func_t)&processor_t::opcode_func_07f, - (insn_func_t)&processor_t::opcode_func_080, - (insn_func_t)&processor_t::opcode_func_081, - (insn_func_t)&processor_t::opcode_func_082, - (insn_func_t)&processor_t::opcode_func_083, - (insn_func_t)&processor_t::opcode_func_084, - (insn_func_t)&processor_t::opcode_func_085, - (insn_func_t)&processor_t::opcode_func_086, - (insn_func_t)&processor_t::opcode_func_087, - (insn_func_t)&processor_t::opcode_func_088, - (insn_func_t)&processor_t::opcode_func_089, - (insn_func_t)&processor_t::opcode_func_08a, - (insn_func_t)&processor_t::opcode_func_08b, - (insn_func_t)&processor_t::opcode_func_08c, - (insn_func_t)&processor_t::opcode_func_08d, - (insn_func_t)&processor_t::opcode_func_08e, - (insn_func_t)&processor_t::opcode_func_08f, - (insn_func_t)&processor_t::opcode_func_090, - (insn_func_t)&processor_t::opcode_func_091, - (insn_func_t)&processor_t::opcode_func_092, - (insn_func_t)&processor_t::opcode_func_093, - (insn_func_t)&processor_t::opcode_func_094, - (insn_func_t)&processor_t::opcode_func_095, - (insn_func_t)&processor_t::opcode_func_096, - (insn_func_t)&processor_t::opcode_func_097, - (insn_func_t)&processor_t::opcode_func_098, - (insn_func_t)&processor_t::opcode_func_099, - (insn_func_t)&processor_t::opcode_func_09a, - (insn_func_t)&processor_t::opcode_func_09b, - (insn_func_t)&processor_t::opcode_func_09c, - (insn_func_t)&processor_t::opcode_func_09d, - (insn_func_t)&processor_t::opcode_func_09e, - (insn_func_t)&processor_t::opcode_func_09f, - (insn_func_t)&processor_t::opcode_func_0a0, - (insn_func_t)&processor_t::opcode_func_0a1, - (insn_func_t)&processor_t::opcode_func_0a2, - (insn_func_t)&processor_t::opcode_func_0a3, - (insn_func_t)&processor_t::opcode_func_0a4, - (insn_func_t)&processor_t::opcode_func_0a5, - (insn_func_t)&processor_t::opcode_func_0a6, - (insn_func_t)&processor_t::opcode_func_0a7, - (insn_func_t)&processor_t::opcode_func_0a8, - (insn_func_t)&processor_t::opcode_func_0a9, - (insn_func_t)&processor_t::opcode_func_0aa, - (insn_func_t)&processor_t::opcode_func_0ab, - (insn_func_t)&processor_t::opcode_func_0ac, - (insn_func_t)&processor_t::opcode_func_0ad, - (insn_func_t)&processor_t::opcode_func_0ae, - (insn_func_t)&processor_t::opcode_func_0af, - (insn_func_t)&processor_t::opcode_func_0b0, - (insn_func_t)&processor_t::opcode_func_0b1, - (insn_func_t)&processor_t::opcode_func_0b2, - (insn_func_t)&processor_t::opcode_func_0b3, - (insn_func_t)&processor_t::opcode_func_0b4, - (insn_func_t)&processor_t::opcode_func_0b5, - (insn_func_t)&processor_t::opcode_func_0b6, - (insn_func_t)&processor_t::opcode_func_0b7, - (insn_func_t)&processor_t::opcode_func_0b8, - (insn_func_t)&processor_t::opcode_func_0b9, - (insn_func_t)&processor_t::opcode_func_0ba, - (insn_func_t)&processor_t::opcode_func_0bb, - (insn_func_t)&processor_t::opcode_func_0bc, - (insn_func_t)&processor_t::opcode_func_0bd, - (insn_func_t)&processor_t::opcode_func_0be, - (insn_func_t)&processor_t::opcode_func_0bf, - (insn_func_t)&processor_t::opcode_func_0c0, - (insn_func_t)&processor_t::opcode_func_0c1, - (insn_func_t)&processor_t::opcode_func_0c2, - (insn_func_t)&processor_t::opcode_func_0c3, - (insn_func_t)&processor_t::opcode_func_0c4, - (insn_func_t)&processor_t::opcode_func_0c5, - (insn_func_t)&processor_t::opcode_func_0c6, - (insn_func_t)&processor_t::opcode_func_0c7, - (insn_func_t)&processor_t::opcode_func_0c8, - (insn_func_t)&processor_t::opcode_func_0c9, - (insn_func_t)&processor_t::opcode_func_0ca, - (insn_func_t)&processor_t::opcode_func_0cb, - (insn_func_t)&processor_t::opcode_func_0cc, - (insn_func_t)&processor_t::opcode_func_0cd, - (insn_func_t)&processor_t::opcode_func_0ce, - (insn_func_t)&processor_t::opcode_func_0cf, - (insn_func_t)&processor_t::opcode_func_0d0, - (insn_func_t)&processor_t::opcode_func_0d1, - (insn_func_t)&processor_t::opcode_func_0d2, - (insn_func_t)&processor_t::opcode_func_0d3, - (insn_func_t)&processor_t::opcode_func_0d4, - (insn_func_t)&processor_t::opcode_func_0d5, - (insn_func_t)&processor_t::opcode_func_0d6, - (insn_func_t)&processor_t::opcode_func_0d7, - (insn_func_t)&processor_t::opcode_func_0d8, - (insn_func_t)&processor_t::opcode_func_0d9, - (insn_func_t)&processor_t::opcode_func_0da, - (insn_func_t)&processor_t::opcode_func_0db, - (insn_func_t)&processor_t::opcode_func_0dc, - (insn_func_t)&processor_t::opcode_func_0dd, - (insn_func_t)&processor_t::opcode_func_0de, - (insn_func_t)&processor_t::opcode_func_0df, - (insn_func_t)&processor_t::opcode_func_0e0, - (insn_func_t)&processor_t::opcode_func_0e1, - (insn_func_t)&processor_t::opcode_func_0e2, - (insn_func_t)&processor_t::opcode_func_0e3, - (insn_func_t)&processor_t::opcode_func_0e4, - (insn_func_t)&processor_t::opcode_func_0e5, - (insn_func_t)&processor_t::opcode_func_0e6, - (insn_func_t)&processor_t::opcode_func_0e7, - (insn_func_t)&processor_t::opcode_func_0e8, - (insn_func_t)&processor_t::opcode_func_0e9, - (insn_func_t)&processor_t::opcode_func_0ea, - (insn_func_t)&processor_t::opcode_func_0eb, - (insn_func_t)&processor_t::opcode_func_0ec, - (insn_func_t)&processor_t::opcode_func_0ed, - (insn_func_t)&processor_t::opcode_func_0ee, - (insn_func_t)&processor_t::opcode_func_0ef, - (insn_func_t)&processor_t::opcode_func_0f0, - (insn_func_t)&processor_t::opcode_func_0f1, - (insn_func_t)&processor_t::opcode_func_0f2, - (insn_func_t)&processor_t::opcode_func_0f3, - (insn_func_t)&processor_t::opcode_func_0f4, - (insn_func_t)&processor_t::opcode_func_0f5, - (insn_func_t)&processor_t::opcode_func_0f6, - (insn_func_t)&processor_t::opcode_func_0f7, - (insn_func_t)&processor_t::opcode_func_0f8, - (insn_func_t)&processor_t::opcode_func_0f9, - (insn_func_t)&processor_t::opcode_func_0fa, - (insn_func_t)&processor_t::opcode_func_0fb, - (insn_func_t)&processor_t::opcode_func_0fc, - (insn_func_t)&processor_t::opcode_func_0fd, - (insn_func_t)&processor_t::opcode_func_0fe, - (insn_func_t)&processor_t::opcode_func_0ff, - (insn_func_t)&processor_t::opcode_func_100, - (insn_func_t)&processor_t::opcode_func_101, - (insn_func_t)&processor_t::opcode_func_102, - (insn_func_t)&processor_t::opcode_func_103, - (insn_func_t)&processor_t::opcode_func_104, - (insn_func_t)&processor_t::opcode_func_105, - (insn_func_t)&processor_t::opcode_func_106, - (insn_func_t)&processor_t::opcode_func_107, - (insn_func_t)&processor_t::opcode_func_108, - (insn_func_t)&processor_t::opcode_func_109, - (insn_func_t)&processor_t::opcode_func_10a, - (insn_func_t)&processor_t::opcode_func_10b, - (insn_func_t)&processor_t::opcode_func_10c, - (insn_func_t)&processor_t::opcode_func_10d, - (insn_func_t)&processor_t::opcode_func_10e, - (insn_func_t)&processor_t::opcode_func_10f, - (insn_func_t)&processor_t::opcode_func_110, - (insn_func_t)&processor_t::opcode_func_111, - (insn_func_t)&processor_t::opcode_func_112, - (insn_func_t)&processor_t::opcode_func_113, - (insn_func_t)&processor_t::opcode_func_114, - (insn_func_t)&processor_t::opcode_func_115, - (insn_func_t)&processor_t::opcode_func_116, - (insn_func_t)&processor_t::opcode_func_117, - (insn_func_t)&processor_t::opcode_func_118, - (insn_func_t)&processor_t::opcode_func_119, - (insn_func_t)&processor_t::opcode_func_11a, - (insn_func_t)&processor_t::opcode_func_11b, - (insn_func_t)&processor_t::opcode_func_11c, - (insn_func_t)&processor_t::opcode_func_11d, - (insn_func_t)&processor_t::opcode_func_11e, - (insn_func_t)&processor_t::opcode_func_11f, - (insn_func_t)&processor_t::opcode_func_120, - (insn_func_t)&processor_t::opcode_func_121, - (insn_func_t)&processor_t::opcode_func_122, - (insn_func_t)&processor_t::opcode_func_123, - (insn_func_t)&processor_t::opcode_func_124, - (insn_func_t)&processor_t::opcode_func_125, - (insn_func_t)&processor_t::opcode_func_126, - (insn_func_t)&processor_t::opcode_func_127, - (insn_func_t)&processor_t::opcode_func_128, - (insn_func_t)&processor_t::opcode_func_129, - (insn_func_t)&processor_t::opcode_func_12a, - (insn_func_t)&processor_t::opcode_func_12b, - (insn_func_t)&processor_t::opcode_func_12c, - (insn_func_t)&processor_t::opcode_func_12d, - (insn_func_t)&processor_t::opcode_func_12e, - (insn_func_t)&processor_t::opcode_func_12f, - (insn_func_t)&processor_t::opcode_func_130, - (insn_func_t)&processor_t::opcode_func_131, - (insn_func_t)&processor_t::opcode_func_132, - (insn_func_t)&processor_t::opcode_func_133, - (insn_func_t)&processor_t::opcode_func_134, - (insn_func_t)&processor_t::opcode_func_135, - (insn_func_t)&processor_t::opcode_func_136, - (insn_func_t)&processor_t::opcode_func_137, - (insn_func_t)&processor_t::opcode_func_138, - (insn_func_t)&processor_t::opcode_func_139, - (insn_func_t)&processor_t::opcode_func_13a, - (insn_func_t)&processor_t::opcode_func_13b, - (insn_func_t)&processor_t::opcode_func_13c, - (insn_func_t)&processor_t::opcode_func_13d, - (insn_func_t)&processor_t::opcode_func_13e, - (insn_func_t)&processor_t::opcode_func_13f, - (insn_func_t)&processor_t::opcode_func_140, - (insn_func_t)&processor_t::opcode_func_141, - (insn_func_t)&processor_t::opcode_func_142, - (insn_func_t)&processor_t::opcode_func_143, - (insn_func_t)&processor_t::opcode_func_144, - (insn_func_t)&processor_t::opcode_func_145, - (insn_func_t)&processor_t::opcode_func_146, - (insn_func_t)&processor_t::opcode_func_147, - (insn_func_t)&processor_t::opcode_func_148, - (insn_func_t)&processor_t::opcode_func_149, - (insn_func_t)&processor_t::opcode_func_14a, - (insn_func_t)&processor_t::opcode_func_14b, - (insn_func_t)&processor_t::opcode_func_14c, - (insn_func_t)&processor_t::opcode_func_14d, - (insn_func_t)&processor_t::opcode_func_14e, - (insn_func_t)&processor_t::opcode_func_14f, - (insn_func_t)&processor_t::opcode_func_150, - (insn_func_t)&processor_t::opcode_func_151, - (insn_func_t)&processor_t::opcode_func_152, - (insn_func_t)&processor_t::opcode_func_153, - (insn_func_t)&processor_t::opcode_func_154, - (insn_func_t)&processor_t::opcode_func_155, - (insn_func_t)&processor_t::opcode_func_156, - (insn_func_t)&processor_t::opcode_func_157, - (insn_func_t)&processor_t::opcode_func_158, - (insn_func_t)&processor_t::opcode_func_159, - (insn_func_t)&processor_t::opcode_func_15a, - (insn_func_t)&processor_t::opcode_func_15b, - (insn_func_t)&processor_t::opcode_func_15c, - (insn_func_t)&processor_t::opcode_func_15d, - (insn_func_t)&processor_t::opcode_func_15e, - (insn_func_t)&processor_t::opcode_func_15f, - (insn_func_t)&processor_t::opcode_func_160, - (insn_func_t)&processor_t::opcode_func_161, - (insn_func_t)&processor_t::opcode_func_162, - (insn_func_t)&processor_t::opcode_func_163, - (insn_func_t)&processor_t::opcode_func_164, - (insn_func_t)&processor_t::opcode_func_165, - (insn_func_t)&processor_t::opcode_func_166, - (insn_func_t)&processor_t::opcode_func_167, - (insn_func_t)&processor_t::opcode_func_168, - (insn_func_t)&processor_t::opcode_func_169, - (insn_func_t)&processor_t::opcode_func_16a, - (insn_func_t)&processor_t::opcode_func_16b, - (insn_func_t)&processor_t::opcode_func_16c, - (insn_func_t)&processor_t::opcode_func_16d, - (insn_func_t)&processor_t::opcode_func_16e, - (insn_func_t)&processor_t::opcode_func_16f, - (insn_func_t)&processor_t::opcode_func_170, - (insn_func_t)&processor_t::opcode_func_171, - (insn_func_t)&processor_t::opcode_func_172, - (insn_func_t)&processor_t::opcode_func_173, - (insn_func_t)&processor_t::opcode_func_174, - (insn_func_t)&processor_t::opcode_func_175, - (insn_func_t)&processor_t::opcode_func_176, - (insn_func_t)&processor_t::opcode_func_177, - (insn_func_t)&processor_t::opcode_func_178, - (insn_func_t)&processor_t::opcode_func_179, - (insn_func_t)&processor_t::opcode_func_17a, - (insn_func_t)&processor_t::opcode_func_17b, - (insn_func_t)&processor_t::opcode_func_17c, - (insn_func_t)&processor_t::opcode_func_17d, - (insn_func_t)&processor_t::opcode_func_17e, - (insn_func_t)&processor_t::opcode_func_17f, - (insn_func_t)&processor_t::opcode_func_180, - (insn_func_t)&processor_t::opcode_func_181, - (insn_func_t)&processor_t::opcode_func_182, - (insn_func_t)&processor_t::opcode_func_183, - (insn_func_t)&processor_t::opcode_func_184, - (insn_func_t)&processor_t::opcode_func_185, - (insn_func_t)&processor_t::opcode_func_186, - (insn_func_t)&processor_t::opcode_func_187, - (insn_func_t)&processor_t::opcode_func_188, - (insn_func_t)&processor_t::opcode_func_189, - (insn_func_t)&processor_t::opcode_func_18a, - (insn_func_t)&processor_t::opcode_func_18b, - (insn_func_t)&processor_t::opcode_func_18c, - (insn_func_t)&processor_t::opcode_func_18d, - (insn_func_t)&processor_t::opcode_func_18e, - (insn_func_t)&processor_t::opcode_func_18f, - (insn_func_t)&processor_t::opcode_func_190, - (insn_func_t)&processor_t::opcode_func_191, - (insn_func_t)&processor_t::opcode_func_192, - (insn_func_t)&processor_t::opcode_func_193, - (insn_func_t)&processor_t::opcode_func_194, - (insn_func_t)&processor_t::opcode_func_195, - (insn_func_t)&processor_t::opcode_func_196, - (insn_func_t)&processor_t::opcode_func_197, - (insn_func_t)&processor_t::opcode_func_198, - (insn_func_t)&processor_t::opcode_func_199, - (insn_func_t)&processor_t::opcode_func_19a, - (insn_func_t)&processor_t::opcode_func_19b, - (insn_func_t)&processor_t::opcode_func_19c, - (insn_func_t)&processor_t::opcode_func_19d, - (insn_func_t)&processor_t::opcode_func_19e, - (insn_func_t)&processor_t::opcode_func_19f, - (insn_func_t)&processor_t::opcode_func_1a0, - (insn_func_t)&processor_t::opcode_func_1a1, - (insn_func_t)&processor_t::opcode_func_1a2, - (insn_func_t)&processor_t::opcode_func_1a3, - (insn_func_t)&processor_t::opcode_func_1a4, - (insn_func_t)&processor_t::opcode_func_1a5, - (insn_func_t)&processor_t::opcode_func_1a6, - (insn_func_t)&processor_t::opcode_func_1a7, - (insn_func_t)&processor_t::opcode_func_1a8, - (insn_func_t)&processor_t::opcode_func_1a9, - (insn_func_t)&processor_t::opcode_func_1aa, - (insn_func_t)&processor_t::opcode_func_1ab, - (insn_func_t)&processor_t::opcode_func_1ac, - (insn_func_t)&processor_t::opcode_func_1ad, - (insn_func_t)&processor_t::opcode_func_1ae, - (insn_func_t)&processor_t::opcode_func_1af, - (insn_func_t)&processor_t::opcode_func_1b0, - (insn_func_t)&processor_t::opcode_func_1b1, - (insn_func_t)&processor_t::opcode_func_1b2, - (insn_func_t)&processor_t::opcode_func_1b3, - (insn_func_t)&processor_t::opcode_func_1b4, - (insn_func_t)&processor_t::opcode_func_1b5, - (insn_func_t)&processor_t::opcode_func_1b6, - (insn_func_t)&processor_t::opcode_func_1b7, - (insn_func_t)&processor_t::opcode_func_1b8, - (insn_func_t)&processor_t::opcode_func_1b9, - (insn_func_t)&processor_t::opcode_func_1ba, - (insn_func_t)&processor_t::opcode_func_1bb, - (insn_func_t)&processor_t::opcode_func_1bc, - (insn_func_t)&processor_t::opcode_func_1bd, - (insn_func_t)&processor_t::opcode_func_1be, - (insn_func_t)&processor_t::opcode_func_1bf, - (insn_func_t)&processor_t::opcode_func_1c0, - (insn_func_t)&processor_t::opcode_func_1c1, - (insn_func_t)&processor_t::opcode_func_1c2, - (insn_func_t)&processor_t::opcode_func_1c3, - (insn_func_t)&processor_t::opcode_func_1c4, - (insn_func_t)&processor_t::opcode_func_1c5, - (insn_func_t)&processor_t::opcode_func_1c6, - (insn_func_t)&processor_t::opcode_func_1c7, - (insn_func_t)&processor_t::opcode_func_1c8, - (insn_func_t)&processor_t::opcode_func_1c9, - (insn_func_t)&processor_t::opcode_func_1ca, - (insn_func_t)&processor_t::opcode_func_1cb, - (insn_func_t)&processor_t::opcode_func_1cc, - (insn_func_t)&processor_t::opcode_func_1cd, - (insn_func_t)&processor_t::opcode_func_1ce, - (insn_func_t)&processor_t::opcode_func_1cf, - (insn_func_t)&processor_t::opcode_func_1d0, - (insn_func_t)&processor_t::opcode_func_1d1, - (insn_func_t)&processor_t::opcode_func_1d2, - (insn_func_t)&processor_t::opcode_func_1d3, - (insn_func_t)&processor_t::opcode_func_1d4, - (insn_func_t)&processor_t::opcode_func_1d5, - (insn_func_t)&processor_t::opcode_func_1d6, - (insn_func_t)&processor_t::opcode_func_1d7, - (insn_func_t)&processor_t::opcode_func_1d8, - (insn_func_t)&processor_t::opcode_func_1d9, - (insn_func_t)&processor_t::opcode_func_1da, - (insn_func_t)&processor_t::opcode_func_1db, - (insn_func_t)&processor_t::opcode_func_1dc, - (insn_func_t)&processor_t::opcode_func_1dd, - (insn_func_t)&processor_t::opcode_func_1de, - (insn_func_t)&processor_t::opcode_func_1df, - (insn_func_t)&processor_t::opcode_func_1e0, - (insn_func_t)&processor_t::opcode_func_1e1, - (insn_func_t)&processor_t::opcode_func_1e2, - (insn_func_t)&processor_t::opcode_func_1e3, - (insn_func_t)&processor_t::opcode_func_1e4, - (insn_func_t)&processor_t::opcode_func_1e5, - (insn_func_t)&processor_t::opcode_func_1e6, - (insn_func_t)&processor_t::opcode_func_1e7, - (insn_func_t)&processor_t::opcode_func_1e8, - (insn_func_t)&processor_t::opcode_func_1e9, - (insn_func_t)&processor_t::opcode_func_1ea, - (insn_func_t)&processor_t::opcode_func_1eb, - (insn_func_t)&processor_t::opcode_func_1ec, - (insn_func_t)&processor_t::opcode_func_1ed, - (insn_func_t)&processor_t::opcode_func_1ee, - (insn_func_t)&processor_t::opcode_func_1ef, - (insn_func_t)&processor_t::opcode_func_1f0, - (insn_func_t)&processor_t::opcode_func_1f1, - (insn_func_t)&processor_t::opcode_func_1f2, - (insn_func_t)&processor_t::opcode_func_1f3, - (insn_func_t)&processor_t::opcode_func_1f4, - (insn_func_t)&processor_t::opcode_func_1f5, - (insn_func_t)&processor_t::opcode_func_1f6, - (insn_func_t)&processor_t::opcode_func_1f7, - (insn_func_t)&processor_t::opcode_func_1f8, - (insn_func_t)&processor_t::opcode_func_1f9, - (insn_func_t)&processor_t::opcode_func_1fa, - (insn_func_t)&processor_t::opcode_func_1fb, - (insn_func_t)&processor_t::opcode_func_1fc, - (insn_func_t)&processor_t::opcode_func_1fd, - (insn_func_t)&processor_t::opcode_func_1fe, - (insn_func_t)&processor_t::opcode_func_1ff, - (insn_func_t)&processor_t::opcode_func_200, - (insn_func_t)&processor_t::opcode_func_201, - (insn_func_t)&processor_t::opcode_func_202, - (insn_func_t)&processor_t::opcode_func_203, - (insn_func_t)&processor_t::opcode_func_204, - (insn_func_t)&processor_t::opcode_func_205, - (insn_func_t)&processor_t::opcode_func_206, - (insn_func_t)&processor_t::opcode_func_207, - (insn_func_t)&processor_t::opcode_func_208, - (insn_func_t)&processor_t::opcode_func_209, - (insn_func_t)&processor_t::opcode_func_20a, - (insn_func_t)&processor_t::opcode_func_20b, - (insn_func_t)&processor_t::opcode_func_20c, - (insn_func_t)&processor_t::opcode_func_20d, - (insn_func_t)&processor_t::opcode_func_20e, - (insn_func_t)&processor_t::opcode_func_20f, - (insn_func_t)&processor_t::opcode_func_210, - (insn_func_t)&processor_t::opcode_func_211, - (insn_func_t)&processor_t::opcode_func_212, - (insn_func_t)&processor_t::opcode_func_213, - (insn_func_t)&processor_t::opcode_func_214, - (insn_func_t)&processor_t::opcode_func_215, - (insn_func_t)&processor_t::opcode_func_216, - (insn_func_t)&processor_t::opcode_func_217, - (insn_func_t)&processor_t::opcode_func_218, - (insn_func_t)&processor_t::opcode_func_219, - (insn_func_t)&processor_t::opcode_func_21a, - (insn_func_t)&processor_t::opcode_func_21b, - (insn_func_t)&processor_t::opcode_func_21c, - (insn_func_t)&processor_t::opcode_func_21d, - (insn_func_t)&processor_t::opcode_func_21e, - (insn_func_t)&processor_t::opcode_func_21f, - (insn_func_t)&processor_t::opcode_func_220, - (insn_func_t)&processor_t::opcode_func_221, - (insn_func_t)&processor_t::opcode_func_222, - (insn_func_t)&processor_t::opcode_func_223, - (insn_func_t)&processor_t::opcode_func_224, - (insn_func_t)&processor_t::opcode_func_225, - (insn_func_t)&processor_t::opcode_func_226, - (insn_func_t)&processor_t::opcode_func_227, - (insn_func_t)&processor_t::opcode_func_228, - (insn_func_t)&processor_t::opcode_func_229, - (insn_func_t)&processor_t::opcode_func_22a, - (insn_func_t)&processor_t::opcode_func_22b, - (insn_func_t)&processor_t::opcode_func_22c, - (insn_func_t)&processor_t::opcode_func_22d, - (insn_func_t)&processor_t::opcode_func_22e, - (insn_func_t)&processor_t::opcode_func_22f, - (insn_func_t)&processor_t::opcode_func_230, - (insn_func_t)&processor_t::opcode_func_231, - (insn_func_t)&processor_t::opcode_func_232, - (insn_func_t)&processor_t::opcode_func_233, - (insn_func_t)&processor_t::opcode_func_234, - (insn_func_t)&processor_t::opcode_func_235, - (insn_func_t)&processor_t::opcode_func_236, - (insn_func_t)&processor_t::opcode_func_237, - (insn_func_t)&processor_t::opcode_func_238, - (insn_func_t)&processor_t::opcode_func_239, - (insn_func_t)&processor_t::opcode_func_23a, - (insn_func_t)&processor_t::opcode_func_23b, - (insn_func_t)&processor_t::opcode_func_23c, - (insn_func_t)&processor_t::opcode_func_23d, - (insn_func_t)&processor_t::opcode_func_23e, - (insn_func_t)&processor_t::opcode_func_23f, - (insn_func_t)&processor_t::opcode_func_240, - (insn_func_t)&processor_t::opcode_func_241, - (insn_func_t)&processor_t::opcode_func_242, - (insn_func_t)&processor_t::opcode_func_243, - (insn_func_t)&processor_t::opcode_func_244, - (insn_func_t)&processor_t::opcode_func_245, - (insn_func_t)&processor_t::opcode_func_246, - (insn_func_t)&processor_t::opcode_func_247, - (insn_func_t)&processor_t::opcode_func_248, - (insn_func_t)&processor_t::opcode_func_249, - (insn_func_t)&processor_t::opcode_func_24a, - (insn_func_t)&processor_t::opcode_func_24b, - (insn_func_t)&processor_t::opcode_func_24c, - (insn_func_t)&processor_t::opcode_func_24d, - (insn_func_t)&processor_t::opcode_func_24e, - (insn_func_t)&processor_t::opcode_func_24f, - (insn_func_t)&processor_t::opcode_func_250, - (insn_func_t)&processor_t::opcode_func_251, - (insn_func_t)&processor_t::opcode_func_252, - (insn_func_t)&processor_t::opcode_func_253, - (insn_func_t)&processor_t::opcode_func_254, - (insn_func_t)&processor_t::opcode_func_255, - (insn_func_t)&processor_t::opcode_func_256, - (insn_func_t)&processor_t::opcode_func_257, - (insn_func_t)&processor_t::opcode_func_258, - (insn_func_t)&processor_t::opcode_func_259, - (insn_func_t)&processor_t::opcode_func_25a, - (insn_func_t)&processor_t::opcode_func_25b, - (insn_func_t)&processor_t::opcode_func_25c, - (insn_func_t)&processor_t::opcode_func_25d, - (insn_func_t)&processor_t::opcode_func_25e, - (insn_func_t)&processor_t::opcode_func_25f, - (insn_func_t)&processor_t::opcode_func_260, - (insn_func_t)&processor_t::opcode_func_261, - (insn_func_t)&processor_t::opcode_func_262, - (insn_func_t)&processor_t::opcode_func_263, - (insn_func_t)&processor_t::opcode_func_264, - (insn_func_t)&processor_t::opcode_func_265, - (insn_func_t)&processor_t::opcode_func_266, - (insn_func_t)&processor_t::opcode_func_267, - (insn_func_t)&processor_t::opcode_func_268, - (insn_func_t)&processor_t::opcode_func_269, - (insn_func_t)&processor_t::opcode_func_26a, - (insn_func_t)&processor_t::opcode_func_26b, - (insn_func_t)&processor_t::opcode_func_26c, - (insn_func_t)&processor_t::opcode_func_26d, - (insn_func_t)&processor_t::opcode_func_26e, - (insn_func_t)&processor_t::opcode_func_26f, - (insn_func_t)&processor_t::opcode_func_270, - (insn_func_t)&processor_t::opcode_func_271, - (insn_func_t)&processor_t::opcode_func_272, - (insn_func_t)&processor_t::opcode_func_273, - (insn_func_t)&processor_t::opcode_func_274, - (insn_func_t)&processor_t::opcode_func_275, - (insn_func_t)&processor_t::opcode_func_276, - (insn_func_t)&processor_t::opcode_func_277, - (insn_func_t)&processor_t::opcode_func_278, - (insn_func_t)&processor_t::opcode_func_279, - (insn_func_t)&processor_t::opcode_func_27a, - (insn_func_t)&processor_t::opcode_func_27b, - (insn_func_t)&processor_t::opcode_func_27c, - (insn_func_t)&processor_t::opcode_func_27d, - (insn_func_t)&processor_t::opcode_func_27e, - (insn_func_t)&processor_t::opcode_func_27f, - (insn_func_t)&processor_t::opcode_func_280, - (insn_func_t)&processor_t::opcode_func_281, - (insn_func_t)&processor_t::opcode_func_282, - (insn_func_t)&processor_t::opcode_func_283, - (insn_func_t)&processor_t::opcode_func_284, - (insn_func_t)&processor_t::opcode_func_285, - (insn_func_t)&processor_t::opcode_func_286, - (insn_func_t)&processor_t::opcode_func_287, - (insn_func_t)&processor_t::opcode_func_288, - (insn_func_t)&processor_t::opcode_func_289, - (insn_func_t)&processor_t::opcode_func_28a, - (insn_func_t)&processor_t::opcode_func_28b, - (insn_func_t)&processor_t::opcode_func_28c, - (insn_func_t)&processor_t::opcode_func_28d, - (insn_func_t)&processor_t::opcode_func_28e, - (insn_func_t)&processor_t::opcode_func_28f, - (insn_func_t)&processor_t::opcode_func_290, - (insn_func_t)&processor_t::opcode_func_291, - (insn_func_t)&processor_t::opcode_func_292, - (insn_func_t)&processor_t::opcode_func_293, - (insn_func_t)&processor_t::opcode_func_294, - (insn_func_t)&processor_t::opcode_func_295, - (insn_func_t)&processor_t::opcode_func_296, - (insn_func_t)&processor_t::opcode_func_297, - (insn_func_t)&processor_t::opcode_func_298, - (insn_func_t)&processor_t::opcode_func_299, - (insn_func_t)&processor_t::opcode_func_29a, - (insn_func_t)&processor_t::opcode_func_29b, - (insn_func_t)&processor_t::opcode_func_29c, - (insn_func_t)&processor_t::opcode_func_29d, - (insn_func_t)&processor_t::opcode_func_29e, - (insn_func_t)&processor_t::opcode_func_29f, - (insn_func_t)&processor_t::opcode_func_2a0, - (insn_func_t)&processor_t::opcode_func_2a1, - (insn_func_t)&processor_t::opcode_func_2a2, - (insn_func_t)&processor_t::opcode_func_2a3, - (insn_func_t)&processor_t::opcode_func_2a4, - (insn_func_t)&processor_t::opcode_func_2a5, - (insn_func_t)&processor_t::opcode_func_2a6, - (insn_func_t)&processor_t::opcode_func_2a7, - (insn_func_t)&processor_t::opcode_func_2a8, - (insn_func_t)&processor_t::opcode_func_2a9, - (insn_func_t)&processor_t::opcode_func_2aa, - (insn_func_t)&processor_t::opcode_func_2ab, - (insn_func_t)&processor_t::opcode_func_2ac, - (insn_func_t)&processor_t::opcode_func_2ad, - (insn_func_t)&processor_t::opcode_func_2ae, - (insn_func_t)&processor_t::opcode_func_2af, - (insn_func_t)&processor_t::opcode_func_2b0, - (insn_func_t)&processor_t::opcode_func_2b1, - (insn_func_t)&processor_t::opcode_func_2b2, - (insn_func_t)&processor_t::opcode_func_2b3, - (insn_func_t)&processor_t::opcode_func_2b4, - (insn_func_t)&processor_t::opcode_func_2b5, - (insn_func_t)&processor_t::opcode_func_2b6, - (insn_func_t)&processor_t::opcode_func_2b7, - (insn_func_t)&processor_t::opcode_func_2b8, - (insn_func_t)&processor_t::opcode_func_2b9, - (insn_func_t)&processor_t::opcode_func_2ba, - (insn_func_t)&processor_t::opcode_func_2bb, - (insn_func_t)&processor_t::opcode_func_2bc, - (insn_func_t)&processor_t::opcode_func_2bd, - (insn_func_t)&processor_t::opcode_func_2be, - (insn_func_t)&processor_t::opcode_func_2bf, - (insn_func_t)&processor_t::opcode_func_2c0, - (insn_func_t)&processor_t::opcode_func_2c1, - (insn_func_t)&processor_t::opcode_func_2c2, - (insn_func_t)&processor_t::opcode_func_2c3, - (insn_func_t)&processor_t::opcode_func_2c4, - (insn_func_t)&processor_t::opcode_func_2c5, - (insn_func_t)&processor_t::opcode_func_2c6, - (insn_func_t)&processor_t::opcode_func_2c7, - (insn_func_t)&processor_t::opcode_func_2c8, - (insn_func_t)&processor_t::opcode_func_2c9, - (insn_func_t)&processor_t::opcode_func_2ca, - (insn_func_t)&processor_t::opcode_func_2cb, - (insn_func_t)&processor_t::opcode_func_2cc, - (insn_func_t)&processor_t::opcode_func_2cd, - (insn_func_t)&processor_t::opcode_func_2ce, - (insn_func_t)&processor_t::opcode_func_2cf, - (insn_func_t)&processor_t::opcode_func_2d0, - (insn_func_t)&processor_t::opcode_func_2d1, - (insn_func_t)&processor_t::opcode_func_2d2, - (insn_func_t)&processor_t::opcode_func_2d3, - (insn_func_t)&processor_t::opcode_func_2d4, - (insn_func_t)&processor_t::opcode_func_2d5, - (insn_func_t)&processor_t::opcode_func_2d6, - (insn_func_t)&processor_t::opcode_func_2d7, - (insn_func_t)&processor_t::opcode_func_2d8, - (insn_func_t)&processor_t::opcode_func_2d9, - (insn_func_t)&processor_t::opcode_func_2da, - (insn_func_t)&processor_t::opcode_func_2db, - (insn_func_t)&processor_t::opcode_func_2dc, - (insn_func_t)&processor_t::opcode_func_2dd, - (insn_func_t)&processor_t::opcode_func_2de, - (insn_func_t)&processor_t::opcode_func_2df, - (insn_func_t)&processor_t::opcode_func_2e0, - (insn_func_t)&processor_t::opcode_func_2e1, - (insn_func_t)&processor_t::opcode_func_2e2, - (insn_func_t)&processor_t::opcode_func_2e3, - (insn_func_t)&processor_t::opcode_func_2e4, - (insn_func_t)&processor_t::opcode_func_2e5, - (insn_func_t)&processor_t::opcode_func_2e6, - (insn_func_t)&processor_t::opcode_func_2e7, - (insn_func_t)&processor_t::opcode_func_2e8, - (insn_func_t)&processor_t::opcode_func_2e9, - (insn_func_t)&processor_t::opcode_func_2ea, - (insn_func_t)&processor_t::opcode_func_2eb, - (insn_func_t)&processor_t::opcode_func_2ec, - (insn_func_t)&processor_t::opcode_func_2ed, - (insn_func_t)&processor_t::opcode_func_2ee, - (insn_func_t)&processor_t::opcode_func_2ef, - (insn_func_t)&processor_t::opcode_func_2f0, - (insn_func_t)&processor_t::opcode_func_2f1, - (insn_func_t)&processor_t::opcode_func_2f2, - (insn_func_t)&processor_t::opcode_func_2f3, - (insn_func_t)&processor_t::opcode_func_2f4, - (insn_func_t)&processor_t::opcode_func_2f5, - (insn_func_t)&processor_t::opcode_func_2f6, - (insn_func_t)&processor_t::opcode_func_2f7, - (insn_func_t)&processor_t::opcode_func_2f8, - (insn_func_t)&processor_t::opcode_func_2f9, - (insn_func_t)&processor_t::opcode_func_2fa, - (insn_func_t)&processor_t::opcode_func_2fb, - (insn_func_t)&processor_t::opcode_func_2fc, - (insn_func_t)&processor_t::opcode_func_2fd, - (insn_func_t)&processor_t::opcode_func_2fe, - (insn_func_t)&processor_t::opcode_func_2ff, - (insn_func_t)&processor_t::opcode_func_300, - (insn_func_t)&processor_t::opcode_func_301, - (insn_func_t)&processor_t::opcode_func_302, - (insn_func_t)&processor_t::opcode_func_303, - (insn_func_t)&processor_t::opcode_func_304, - (insn_func_t)&processor_t::opcode_func_305, - (insn_func_t)&processor_t::opcode_func_306, - (insn_func_t)&processor_t::opcode_func_307, - (insn_func_t)&processor_t::opcode_func_308, - (insn_func_t)&processor_t::opcode_func_309, - (insn_func_t)&processor_t::opcode_func_30a, - (insn_func_t)&processor_t::opcode_func_30b, - (insn_func_t)&processor_t::opcode_func_30c, - (insn_func_t)&processor_t::opcode_func_30d, - (insn_func_t)&processor_t::opcode_func_30e, - (insn_func_t)&processor_t::opcode_func_30f, - (insn_func_t)&processor_t::opcode_func_310, - (insn_func_t)&processor_t::opcode_func_311, - (insn_func_t)&processor_t::opcode_func_312, - (insn_func_t)&processor_t::opcode_func_313, - (insn_func_t)&processor_t::opcode_func_314, - (insn_func_t)&processor_t::opcode_func_315, - (insn_func_t)&processor_t::opcode_func_316, - (insn_func_t)&processor_t::opcode_func_317, - (insn_func_t)&processor_t::opcode_func_318, - (insn_func_t)&processor_t::opcode_func_319, - (insn_func_t)&processor_t::opcode_func_31a, - (insn_func_t)&processor_t::opcode_func_31b, - (insn_func_t)&processor_t::opcode_func_31c, - (insn_func_t)&processor_t::opcode_func_31d, - (insn_func_t)&processor_t::opcode_func_31e, - (insn_func_t)&processor_t::opcode_func_31f, - (insn_func_t)&processor_t::opcode_func_320, - (insn_func_t)&processor_t::opcode_func_321, - (insn_func_t)&processor_t::opcode_func_322, - (insn_func_t)&processor_t::opcode_func_323, - (insn_func_t)&processor_t::opcode_func_324, - (insn_func_t)&processor_t::opcode_func_325, - (insn_func_t)&processor_t::opcode_func_326, - (insn_func_t)&processor_t::opcode_func_327, - (insn_func_t)&processor_t::opcode_func_328, - (insn_func_t)&processor_t::opcode_func_329, - (insn_func_t)&processor_t::opcode_func_32a, - (insn_func_t)&processor_t::opcode_func_32b, - (insn_func_t)&processor_t::opcode_func_32c, - (insn_func_t)&processor_t::opcode_func_32d, - (insn_func_t)&processor_t::opcode_func_32e, - (insn_func_t)&processor_t::opcode_func_32f, - (insn_func_t)&processor_t::opcode_func_330, - (insn_func_t)&processor_t::opcode_func_331, - (insn_func_t)&processor_t::opcode_func_332, - (insn_func_t)&processor_t::opcode_func_333, - (insn_func_t)&processor_t::opcode_func_334, - (insn_func_t)&processor_t::opcode_func_335, - (insn_func_t)&processor_t::opcode_func_336, - (insn_func_t)&processor_t::opcode_func_337, - (insn_func_t)&processor_t::opcode_func_338, - (insn_func_t)&processor_t::opcode_func_339, - (insn_func_t)&processor_t::opcode_func_33a, - (insn_func_t)&processor_t::opcode_func_33b, - (insn_func_t)&processor_t::opcode_func_33c, - (insn_func_t)&processor_t::opcode_func_33d, - (insn_func_t)&processor_t::opcode_func_33e, - (insn_func_t)&processor_t::opcode_func_33f, - (insn_func_t)&processor_t::opcode_func_340, - (insn_func_t)&processor_t::opcode_func_341, - (insn_func_t)&processor_t::opcode_func_342, - (insn_func_t)&processor_t::opcode_func_343, - (insn_func_t)&processor_t::opcode_func_344, - (insn_func_t)&processor_t::opcode_func_345, - (insn_func_t)&processor_t::opcode_func_346, - (insn_func_t)&processor_t::opcode_func_347, - (insn_func_t)&processor_t::opcode_func_348, - (insn_func_t)&processor_t::opcode_func_349, - (insn_func_t)&processor_t::opcode_func_34a, - (insn_func_t)&processor_t::opcode_func_34b, - (insn_func_t)&processor_t::opcode_func_34c, - (insn_func_t)&processor_t::opcode_func_34d, - (insn_func_t)&processor_t::opcode_func_34e, - (insn_func_t)&processor_t::opcode_func_34f, - (insn_func_t)&processor_t::opcode_func_350, - (insn_func_t)&processor_t::opcode_func_351, - (insn_func_t)&processor_t::opcode_func_352, - (insn_func_t)&processor_t::opcode_func_353, - (insn_func_t)&processor_t::opcode_func_354, - (insn_func_t)&processor_t::opcode_func_355, - (insn_func_t)&processor_t::opcode_func_356, - (insn_func_t)&processor_t::opcode_func_357, - (insn_func_t)&processor_t::opcode_func_358, - (insn_func_t)&processor_t::opcode_func_359, - (insn_func_t)&processor_t::opcode_func_35a, - (insn_func_t)&processor_t::opcode_func_35b, - (insn_func_t)&processor_t::opcode_func_35c, - (insn_func_t)&processor_t::opcode_func_35d, - (insn_func_t)&processor_t::opcode_func_35e, - (insn_func_t)&processor_t::opcode_func_35f, - (insn_func_t)&processor_t::opcode_func_360, - (insn_func_t)&processor_t::opcode_func_361, - (insn_func_t)&processor_t::opcode_func_362, - (insn_func_t)&processor_t::opcode_func_363, - (insn_func_t)&processor_t::opcode_func_364, - (insn_func_t)&processor_t::opcode_func_365, - (insn_func_t)&processor_t::opcode_func_366, - (insn_func_t)&processor_t::opcode_func_367, - (insn_func_t)&processor_t::opcode_func_368, - (insn_func_t)&processor_t::opcode_func_369, - (insn_func_t)&processor_t::opcode_func_36a, - (insn_func_t)&processor_t::opcode_func_36b, - (insn_func_t)&processor_t::opcode_func_36c, - (insn_func_t)&processor_t::opcode_func_36d, - (insn_func_t)&processor_t::opcode_func_36e, - (insn_func_t)&processor_t::opcode_func_36f, - (insn_func_t)&processor_t::opcode_func_370, - (insn_func_t)&processor_t::opcode_func_371, - (insn_func_t)&processor_t::opcode_func_372, - (insn_func_t)&processor_t::opcode_func_373, - (insn_func_t)&processor_t::opcode_func_374, - (insn_func_t)&processor_t::opcode_func_375, - (insn_func_t)&processor_t::opcode_func_376, - (insn_func_t)&processor_t::opcode_func_377, - (insn_func_t)&processor_t::opcode_func_378, - (insn_func_t)&processor_t::opcode_func_379, - (insn_func_t)&processor_t::opcode_func_37a, - (insn_func_t)&processor_t::opcode_func_37b, - (insn_func_t)&processor_t::opcode_func_37c, - (insn_func_t)&processor_t::opcode_func_37d, - (insn_func_t)&processor_t::opcode_func_37e, - (insn_func_t)&processor_t::opcode_func_37f, - (insn_func_t)&processor_t::opcode_func_380, - (insn_func_t)&processor_t::opcode_func_381, - (insn_func_t)&processor_t::opcode_func_382, - (insn_func_t)&processor_t::opcode_func_383, - (insn_func_t)&processor_t::opcode_func_384, - (insn_func_t)&processor_t::opcode_func_385, - (insn_func_t)&processor_t::opcode_func_386, - (insn_func_t)&processor_t::opcode_func_387, - (insn_func_t)&processor_t::opcode_func_388, - (insn_func_t)&processor_t::opcode_func_389, - (insn_func_t)&processor_t::opcode_func_38a, - (insn_func_t)&processor_t::opcode_func_38b, - (insn_func_t)&processor_t::opcode_func_38c, - (insn_func_t)&processor_t::opcode_func_38d, - (insn_func_t)&processor_t::opcode_func_38e, - (insn_func_t)&processor_t::opcode_func_38f, - (insn_func_t)&processor_t::opcode_func_390, - (insn_func_t)&processor_t::opcode_func_391, - (insn_func_t)&processor_t::opcode_func_392, - (insn_func_t)&processor_t::opcode_func_393, - (insn_func_t)&processor_t::opcode_func_394, - (insn_func_t)&processor_t::opcode_func_395, - (insn_func_t)&processor_t::opcode_func_396, - (insn_func_t)&processor_t::opcode_func_397, - (insn_func_t)&processor_t::opcode_func_398, - (insn_func_t)&processor_t::opcode_func_399, - (insn_func_t)&processor_t::opcode_func_39a, - (insn_func_t)&processor_t::opcode_func_39b, - (insn_func_t)&processor_t::opcode_func_39c, - (insn_func_t)&processor_t::opcode_func_39d, - (insn_func_t)&processor_t::opcode_func_39e, - (insn_func_t)&processor_t::opcode_func_39f, - (insn_func_t)&processor_t::opcode_func_3a0, - (insn_func_t)&processor_t::opcode_func_3a1, - (insn_func_t)&processor_t::opcode_func_3a2, - (insn_func_t)&processor_t::opcode_func_3a3, - (insn_func_t)&processor_t::opcode_func_3a4, - (insn_func_t)&processor_t::opcode_func_3a5, - (insn_func_t)&processor_t::opcode_func_3a6, - (insn_func_t)&processor_t::opcode_func_3a7, - (insn_func_t)&processor_t::opcode_func_3a8, - (insn_func_t)&processor_t::opcode_func_3a9, - (insn_func_t)&processor_t::opcode_func_3aa, - (insn_func_t)&processor_t::opcode_func_3ab, - (insn_func_t)&processor_t::opcode_func_3ac, - (insn_func_t)&processor_t::opcode_func_3ad, - (insn_func_t)&processor_t::opcode_func_3ae, - (insn_func_t)&processor_t::opcode_func_3af, - (insn_func_t)&processor_t::opcode_func_3b0, - (insn_func_t)&processor_t::opcode_func_3b1, - (insn_func_t)&processor_t::opcode_func_3b2, - (insn_func_t)&processor_t::opcode_func_3b3, - (insn_func_t)&processor_t::opcode_func_3b4, - (insn_func_t)&processor_t::opcode_func_3b5, - (insn_func_t)&processor_t::opcode_func_3b6, - (insn_func_t)&processor_t::opcode_func_3b7, - (insn_func_t)&processor_t::opcode_func_3b8, - (insn_func_t)&processor_t::opcode_func_3b9, - (insn_func_t)&processor_t::opcode_func_3ba, - (insn_func_t)&processor_t::opcode_func_3bb, - (insn_func_t)&processor_t::opcode_func_3bc, - (insn_func_t)&processor_t::opcode_func_3bd, - (insn_func_t)&processor_t::opcode_func_3be, - (insn_func_t)&processor_t::opcode_func_3bf, - (insn_func_t)&processor_t::opcode_func_3c0, - (insn_func_t)&processor_t::opcode_func_3c1, - (insn_func_t)&processor_t::opcode_func_3c2, - (insn_func_t)&processor_t::opcode_func_3c3, - (insn_func_t)&processor_t::opcode_func_3c4, - (insn_func_t)&processor_t::opcode_func_3c5, - (insn_func_t)&processor_t::opcode_func_3c6, - (insn_func_t)&processor_t::opcode_func_3c7, - (insn_func_t)&processor_t::opcode_func_3c8, - (insn_func_t)&processor_t::opcode_func_3c9, - (insn_func_t)&processor_t::opcode_func_3ca, - (insn_func_t)&processor_t::opcode_func_3cb, - (insn_func_t)&processor_t::opcode_func_3cc, - (insn_func_t)&processor_t::opcode_func_3cd, - (insn_func_t)&processor_t::opcode_func_3ce, - (insn_func_t)&processor_t::opcode_func_3cf, - (insn_func_t)&processor_t::opcode_func_3d0, - (insn_func_t)&processor_t::opcode_func_3d1, - (insn_func_t)&processor_t::opcode_func_3d2, - (insn_func_t)&processor_t::opcode_func_3d3, - (insn_func_t)&processor_t::opcode_func_3d4, - (insn_func_t)&processor_t::opcode_func_3d5, - (insn_func_t)&processor_t::opcode_func_3d6, - (insn_func_t)&processor_t::opcode_func_3d7, - (insn_func_t)&processor_t::opcode_func_3d8, - (insn_func_t)&processor_t::opcode_func_3d9, - (insn_func_t)&processor_t::opcode_func_3da, - (insn_func_t)&processor_t::opcode_func_3db, - (insn_func_t)&processor_t::opcode_func_3dc, - (insn_func_t)&processor_t::opcode_func_3dd, - (insn_func_t)&processor_t::opcode_func_3de, - (insn_func_t)&processor_t::opcode_func_3df, - (insn_func_t)&processor_t::opcode_func_3e0, - (insn_func_t)&processor_t::opcode_func_3e1, - (insn_func_t)&processor_t::opcode_func_3e2, - (insn_func_t)&processor_t::opcode_func_3e3, - (insn_func_t)&processor_t::opcode_func_3e4, - (insn_func_t)&processor_t::opcode_func_3e5, - (insn_func_t)&processor_t::opcode_func_3e6, - (insn_func_t)&processor_t::opcode_func_3e7, - (insn_func_t)&processor_t::opcode_func_3e8, - (insn_func_t)&processor_t::opcode_func_3e9, - (insn_func_t)&processor_t::opcode_func_3ea, - (insn_func_t)&processor_t::opcode_func_3eb, - (insn_func_t)&processor_t::opcode_func_3ec, - (insn_func_t)&processor_t::opcode_func_3ed, - (insn_func_t)&processor_t::opcode_func_3ee, - (insn_func_t)&processor_t::opcode_func_3ef, - (insn_func_t)&processor_t::opcode_func_3f0, - (insn_func_t)&processor_t::opcode_func_3f1, - (insn_func_t)&processor_t::opcode_func_3f2, - (insn_func_t)&processor_t::opcode_func_3f3, - (insn_func_t)&processor_t::opcode_func_3f4, - (insn_func_t)&processor_t::opcode_func_3f5, - (insn_func_t)&processor_t::opcode_func_3f6, - (insn_func_t)&processor_t::opcode_func_3f7, - (insn_func_t)&processor_t::opcode_func_3f8, - (insn_func_t)&processor_t::opcode_func_3f9, - (insn_func_t)&processor_t::opcode_func_3fa, - (insn_func_t)&processor_t::opcode_func_3fb, - (insn_func_t)&processor_t::opcode_func_3fc, - (insn_func_t)&processor_t::opcode_func_3fd, - (insn_func_t)&processor_t::opcode_func_3fe, - (insn_func_t)&processor_t::opcode_func_3ff, -}; diff --git a/riscv/dispatch_0.cc b/riscv/dispatch_0.cc deleted file mode 100644 index a22acd2..0000000 --- a/riscv/dispatch_0.cc +++ /dev/null @@ -1,887 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_000(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_00a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_014(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_01e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_028(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_032(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_03c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001c); - #include "insns/c_add3.h" - return npc; -} - -reg_t processor_t::opcode_func_046(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_050(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_05a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_064(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_06e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_078(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_082(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_08c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_096(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_0a0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_0aa(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_0b4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_0be(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0c8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0d2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0dc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001c); - #include "insns/c_add3.h" - return npc; -} - -reg_t processor_t::opcode_func_0e6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0f0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_0fa(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_104(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_10e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_118(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_122(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_12c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_136(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_140(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_14a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_154(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_15e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_168(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_172(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_17c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000011c); - #include "insns/c_sub3.h" - return npc; -} - -reg_t processor_t::opcode_func_186(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_190(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_19a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1a4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1ae(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1b8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_1c2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1cc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_1d6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_1e0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_1ea(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_1f4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_1fe(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_208(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_212(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_21c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000021c); - #include "insns/c_or3.h" - return npc; -} - -reg_t processor_t::opcode_func_226(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_230(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_23a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_244(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_24e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_258(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_262(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_26c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_276(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_280(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_28a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_294(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_29e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2a8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2b2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2bc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000021c); - #include "insns/c_or3.h" - return npc; -} - -reg_t processor_t::opcode_func_2c6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2d0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_2da(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2e4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2ee(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2f8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_302(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_30c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_316(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_320(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_32a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_334(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_33e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_348(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_352(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_35c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000031c); - #include "insns/c_and3.h" - return npc; -} - -reg_t processor_t::opcode_func_366(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_370(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_37a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_384(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_38e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_398(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_3a2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3ac(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_3b6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_3c0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_3ca(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_3d4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_3de(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3e8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3f2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3fc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000031c); - #include "insns/c_and3.h" - return npc; -} - diff --git a/riscv/dispatch_1.cc b/riscv/dispatch_1.cc deleted file mode 100644 index 2ec169a..0000000 --- a/riscv/dispatch_1.cc +++ /dev/null @@ -1,1227 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_001(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_00b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3fffff) == 0xb) - { - reg_t npc = pc + insn_length(0x0000000b); - #include "insns/vlb.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x100b) - { - reg_t npc = pc + insn_length(0x0000100b); - #include "insns/vlstb.h" - return npc; - } - if((insn.bits & 0xfff) == 0x80b) - { - reg_t npc = pc + insn_length(0x0000080b); - #include "insns/vlsegstb.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x200b) - { - reg_t npc = pc + insn_length(0x0000200b); - #include "insns/vlsegb.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_015(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_01f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_029(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_033(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x33) - { - reg_t npc = pc + insn_length(0x00000033); - #include "insns/add.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x433) - { - reg_t npc = pc + insn_length(0x00000433); - #include "insns/mul.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x10033) - { - reg_t npc = pc + insn_length(0x00010033); - #include "insns/sub.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_03d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_047(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000047); - #include "insns/fmsub_s.h" - return npc; -} - -reg_t processor_t::opcode_func_051(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_05b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_065(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_06f(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000006f); - #include "insns/jal.h" - return npc; -} - -reg_t processor_t::opcode_func_079(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_083(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000083); - #include "insns/lh.h" - return npc; -} - -reg_t processor_t::opcode_func_08d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_097(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0a1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_0ab(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0b5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_0bf(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0c9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_0d3(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x180d3) - { - reg_t npc = pc + insn_length(0x000180d3); - #include "insns/fmin_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xc0d3) - { - reg_t npc = pc + insn_length(0x0000c0d3); - #include "insns/fcvt_d_l.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xe0d3) - { - reg_t npc = pc + insn_length(0x0000e0d3); - #include "insns/fcvt_d_w.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x100d3) - { - reg_t npc = pc + insn_length(0x000100d3); - #include "insns/fcvt_d_s.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x190d3) - { - reg_t npc = pc + insn_length(0x000190d3); - #include "insns/fmax_d.h" - return npc; - } - if((insn.bits & 0x7c1ffff) == 0x1c0d3) - { - reg_t npc = pc + insn_length(0x0001c0d3); - #include "insns/mftx_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x170d3) - { - reg_t npc = pc + insn_length(0x000170d3); - #include "insns/fle_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x160d3) - { - reg_t npc = pc + insn_length(0x000160d3); - #include "insns/flt_d.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x20d3) - { - reg_t npc = pc + insn_length(0x000020d3); - #include "insns/fmul_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x70d3) - { - reg_t npc = pc + insn_length(0x000070d3); - #include "insns/fsgnjx_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x150d3) - { - reg_t npc = pc + insn_length(0x000150d3); - #include "insns/feq_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xf0d3) - { - reg_t npc = pc + insn_length(0x0000f0d3); - #include "insns/fcvt_d_wu.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xb0d3) - { - reg_t npc = pc + insn_length(0x0000b0d3); - #include "insns/fcvt_wu_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x60d3) - { - reg_t npc = pc + insn_length(0x000060d3); - #include "insns/fsgnjn_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xd0d3) - { - reg_t npc = pc + insn_length(0x0000d0d3); - #include "insns/fcvt_d_lu.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xa0d3) - { - reg_t npc = pc + insn_length(0x0000a0d3); - #include "insns/fcvt_w_d.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x1e0d3) - { - reg_t npc = pc + insn_length(0x0001e0d3); - #include "insns/mxtf_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x50d3) - { - reg_t npc = pc + insn_length(0x000050d3); - #include "insns/fsgnj_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x80d3) - { - reg_t npc = pc + insn_length(0x000080d3); - #include "insns/fcvt_l_d.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0xd3) - { - reg_t npc = pc + insn_length(0x000000d3); - #include "insns/fadd_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x90d3) - { - reg_t npc = pc + insn_length(0x000090d3); - #include "insns/fcvt_lu_d.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x10d3) - { - reg_t npc = pc + insn_length(0x000010d3); - #include "insns/fsub_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x40d3) - { - reg_t npc = pc + insn_length(0x000040d3); - #include "insns/fsqrt_d.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x30d3) - { - reg_t npc = pc + insn_length(0x000030d3); - #include "insns/fdiv_d.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0dd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_0e7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000067); - #include "insns/j.h" - return npc; -} - -reg_t processor_t::opcode_func_0f1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_0fb(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x7ffffff) == 0xfb) - { - reg_t npc = pc + insn_length(0x000000fb); - #include "insns/di.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_105(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_10f(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x150f) - { - reg_t npc = pc + insn_length(0x0000150f); - #include "insns/vfsstw.h" - return npc; - } - if((insn.bits & 0xfff) == 0x90f) - { - reg_t npc = pc + insn_length(0x0000090f); - #include "insns/vssegstw.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x10f) - { - reg_t npc = pc + insn_length(0x0000010f); - #include "insns/vsw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x110f) - { - reg_t npc = pc + insn_length(0x0000110f); - #include "insns/vsstw.h" - return npc; - } - if((insn.bits & 0xfff) == 0xd0f) - { - reg_t npc = pc + insn_length(0x00000d0f); - #include "insns/vfssegstw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x210f) - { - reg_t npc = pc + insn_length(0x0000210f); - #include "insns/vssegw.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x50f) - { - reg_t npc = pc + insn_length(0x0000050f); - #include "insns/vfsw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x250f) - { - reg_t npc = pc + insn_length(0x0000250f); - #include "insns/vfssegw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_119(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_123(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000123); - #include "insns/sw.h" - return npc; -} - -reg_t processor_t::opcode_func_12d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_137(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000037); - #include "insns/lui.h" - return npc; -} - -reg_t processor_t::opcode_func_141(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_14b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_155(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_15f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_169(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_173(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x1173) - { - reg_t npc = pc + insn_length(0x00001173); - #include "insns/vfmst.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x1973) - { - reg_t npc = pc + insn_length(0x00001973); - #include "insns/vfmts.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x973) - { - reg_t npc = pc + insn_length(0x00000973); - #include "insns/vfmsv.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x173) - { - reg_t npc = pc + insn_length(0x00000173); - #include "insns/vfmvv.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_17d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_187(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000187); - #include "insns/fld.h" - return npc; -} - -reg_t processor_t::opcode_func_191(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_19b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1a5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1af(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1b9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1c3(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1cd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_1d7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1e1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_1eb(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1f5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_1ff(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_209(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_213(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000213); - #include "insns/xori.h" - return npc; -} - -reg_t processor_t::opcode_func_21d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_227(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_231(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_23b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x63b) - { - reg_t npc = pc + insn_length(0x0000063b); - #include "insns/divw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_245(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_24f(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000004f); - #include "insns/fnmadd_s.h" - return npc; -} - -reg_t processor_t::opcode_func_259(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_263(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000263); - #include "insns/blt.h" - return npc; -} - -reg_t processor_t::opcode_func_26d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_277(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x7ffffff) == 0x277) - { - reg_t npc = pc + insn_length(0x00000277); - #include "insns/rdcycle.h" - return npc; - } - if((insn.bits & 0x7ffffff) == 0xa77) - { - reg_t npc = pc + insn_length(0x00000a77); - #include "insns/rdinstret.h" - return npc; - } - if((insn.bits & 0x7ffffff) == 0x677) - { - reg_t npc = pc + insn_length(0x00000677); - #include "insns/rdtime.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_281(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_28b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x128b) - { - reg_t npc = pc + insn_length(0x0000128b); - #include "insns/vlsthu.h" - return npc; - } - if((insn.bits & 0xfff) == 0xa8b) - { - reg_t npc = pc + insn_length(0x00000a8b); - #include "insns/vlsegsthu.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x28b) - { - reg_t npc = pc + insn_length(0x0000028b); - #include "insns/vlhu.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x228b) - { - reg_t npc = pc + insn_length(0x0000228b); - #include "insns/vlseghu.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_295(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_29f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2a9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_2b3(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x102b3) - { - reg_t npc = pc + insn_length(0x000102b3); - #include "insns/sra.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x2b3) - { - reg_t npc = pc + insn_length(0x000002b3); - #include "insns/srl.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x6b3) - { - reg_t npc = pc + insn_length(0x000006b3); - #include "insns/divu.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2bd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_2c7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000c7); - #include "insns/fmsub_d.h" - return npc; -} - -reg_t processor_t::opcode_func_2d1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_2db(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2e5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2ef(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000006f); - #include "insns/jal.h" - return npc; -} - -reg_t processor_t::opcode_func_2f9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_303(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000303); - #include "insns/lwu.h" - return npc; -} - -reg_t processor_t::opcode_func_30d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_317(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_321(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_32b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_335(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_33f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_349(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_353(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_35d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_367(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000067); - #include "insns/j.h" - return npc; -} - -reg_t processor_t::opcode_func_371(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_37b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_385(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_38f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_399(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3a3(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3ad(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_3b7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000037); - #include "insns/lui.h" - return npc; -} - -reg_t processor_t::opcode_func_3c1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_3cb(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3d5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_3df(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3e9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_3f3(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xf80003ff) == 0x3f3) - { - reg_t npc = pc + insn_length(0x000003f3); - #include "insns/vf.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3fd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - diff --git a/riscv/dispatch_2.cc b/riscv/dispatch_2.cc deleted file mode 100644 index 3f9871f..0000000 --- a/riscv/dispatch_2.cc +++ /dev/null @@ -1,887 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_002(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_00c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_016(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_020(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_02a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_034(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_03e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_048(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_052(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_05c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001c); - #include "insns/c_add3.h" - return npc; -} - -reg_t processor_t::opcode_func_066(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_070(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_07a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_084(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_08e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_098(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_0a2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0ac(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_0b6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_0c0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_0ca(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_0d4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_0de(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0e8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0f2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0fc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001c); - #include "insns/c_add3.h" - return npc; -} - -reg_t processor_t::opcode_func_106(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_110(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_11a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_124(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_12e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_138(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_142(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_14c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_156(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_160(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_16a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_174(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_17e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_188(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_192(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_19c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000011c); - #include "insns/c_sub3.h" - return npc; -} - -reg_t processor_t::opcode_func_1a6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1b0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_1ba(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1c4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1ce(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1d8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_1e2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1ec(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_1f6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_200(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_20a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_214(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_21e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_228(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_232(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_23c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000021c); - #include "insns/c_or3.h" - return npc; -} - -reg_t processor_t::opcode_func_246(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_250(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_25a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_264(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_26e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_278(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_282(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_28c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_296(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_2a0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_2aa(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_2b4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_2be(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2c8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2d2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2dc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000021c); - #include "insns/c_or3.h" - return npc; -} - -reg_t processor_t::opcode_func_2e6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2f0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_2fa(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_304(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_30e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_318(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_322(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_32c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_336(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_340(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_34a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_354(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_35e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_368(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_372(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_37c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000031c); - #include "insns/c_and3.h" - return npc; -} - -reg_t processor_t::opcode_func_386(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_390(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_39a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3a4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3ae(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3b8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_3c2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3cc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_3d6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_3e0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_3ea(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_3f4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_3fe(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - diff --git a/riscv/dispatch_3.cc b/riscv/dispatch_3.cc deleted file mode 100644 index a3e7a8f..0000000 --- a/riscv/dispatch_3.cc +++ /dev/null @@ -1,1211 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_003(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000003); - #include "insns/lb.h" - return npc; -} - -reg_t processor_t::opcode_func_00d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_017(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_021(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_02b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_035(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_03f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_049(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_053(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3ff1ff) == 0x9053) - { - reg_t npc = pc + insn_length(0x00009053); - #include "insns/fcvt_lu_s.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x18053) - { - reg_t npc = pc + insn_length(0x00018053); - #include "insns/fmin_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x11053) - { - reg_t npc = pc + insn_length(0x00011053); - #include "insns/fcvt_s_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xe053) - { - reg_t npc = pc + insn_length(0x0000e053); - #include "insns/fcvt_s_w.h" - return npc; - } - if((insn.bits & 0x7c1ffff) == 0x1c053) - { - reg_t npc = pc + insn_length(0x0001c053); - #include "insns/mftx_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x8053) - { - reg_t npc = pc + insn_length(0x00008053); - #include "insns/fcvt_l_s.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x17053) - { - reg_t npc = pc + insn_length(0x00017053); - #include "insns/fle_s.h" - return npc; - } - if((insn.bits & 0x7ffffff) == 0x1d053) - { - reg_t npc = pc + insn_length(0x0001d053); - #include "insns/mffsr.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x3053) - { - reg_t npc = pc + insn_length(0x00003053); - #include "insns/fdiv_s.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x1f053) - { - reg_t npc = pc + insn_length(0x0001f053); - #include "insns/mtfsr.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xd053) - { - reg_t npc = pc + insn_length(0x0000d053); - #include "insns/fcvt_s_lu.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x2053) - { - reg_t npc = pc + insn_length(0x00002053); - #include "insns/fmul_s.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x16053) - { - reg_t npc = pc + insn_length(0x00016053); - #include "insns/flt_s.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x15053) - { - reg_t npc = pc + insn_length(0x00015053); - #include "insns/feq_s.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x7053) - { - reg_t npc = pc + insn_length(0x00007053); - #include "insns/fsgnjx_s.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x19053) - { - reg_t npc = pc + insn_length(0x00019053); - #include "insns/fmax_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xb053) - { - reg_t npc = pc + insn_length(0x0000b053); - #include "insns/fcvt_wu_s.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x1e053) - { - reg_t npc = pc + insn_length(0x0001e053); - #include "insns/mxtf_s.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x1053) - { - reg_t npc = pc + insn_length(0x00001053); - #include "insns/fsub_s.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x5053) - { - reg_t npc = pc + insn_length(0x00005053); - #include "insns/fsgnj_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xf053) - { - reg_t npc = pc + insn_length(0x0000f053); - #include "insns/fcvt_s_wu.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xc053) - { - reg_t npc = pc + insn_length(0x0000c053); - #include "insns/fcvt_s_l.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xa053) - { - reg_t npc = pc + insn_length(0x0000a053); - #include "insns/fcvt_w_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x4053) - { - reg_t npc = pc + insn_length(0x00004053); - #include "insns/fsqrt_s.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x6053) - { - reg_t npc = pc + insn_length(0x00006053); - #include "insns/fsgnjn_s.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x53) - { - reg_t npc = pc + insn_length(0x00000053); - #include "insns/fadd_s.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_05d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_067(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000067); - #include "insns/j.h" - return npc; -} - -reg_t processor_t::opcode_func_071(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_07b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x7ffffff) == 0x7b) - { - reg_t npc = pc + insn_length(0x0000007b); - #include "insns/ei.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_085(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_08f(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xfff) == 0x88f) - { - reg_t npc = pc + insn_length(0x0000088f); - #include "insns/vssegsth.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x108f) - { - reg_t npc = pc + insn_length(0x0000108f); - #include "insns/vssth.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x8f) - { - reg_t npc = pc + insn_length(0x0000008f); - #include "insns/vsh.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x208f) - { - reg_t npc = pc + insn_length(0x0000208f); - #include "insns/vssegh.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_099(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0a3(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000a3); - #include "insns/sh.h" - return npc; -} - -reg_t processor_t::opcode_func_0ad(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_0b7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000037); - #include "insns/lui.h" - return npc; -} - -reg_t processor_t::opcode_func_0c1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_0cb(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000cb); - #include "insns/fnmsub_d.h" - return npc; -} - -reg_t processor_t::opcode_func_0d5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_0df(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0e9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_0f3(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000f3); - #include "insns/vvcfgivl.h" - return npc; -} - -reg_t processor_t::opcode_func_0fd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_107(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000107); - #include "insns/flw.h" - return npc; -} - -reg_t processor_t::opcode_func_111(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_11b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_125(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_12f(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000012f); - #include "insns/fence.h" - return npc; -} - -reg_t processor_t::opcode_func_139(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_143(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_14d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_157(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_161(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_16b(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000016b); - #include "insns/jalr_j.h" - return npc; -} - -reg_t processor_t::opcode_func_175(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_17f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_189(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_193(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000193); - #include "insns/sltiu.h" - return npc; -} - -reg_t processor_t::opcode_func_19d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_1a7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000001a7); - #include "insns/fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_1b1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_1bb(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1c5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1cf(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1d9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1e3(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1ed(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_1f7(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x7ffffff) == 0x1f7) - { - reg_t npc = pc + insn_length(0x000001f7); - #include "insns/utidx.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_201(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_20b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x120b) - { - reg_t npc = pc + insn_length(0x0000120b); - #include "insns/vlstbu.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x220b) - { - reg_t npc = pc + insn_length(0x0000220b); - #include "insns/vlsegbu.h" - return npc; - } - if((insn.bits & 0xfff) == 0xa0b) - { - reg_t npc = pc + insn_length(0x00000a0b); - #include "insns/vlsegstbu.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x20b) - { - reg_t npc = pc + insn_length(0x0000020b); - #include "insns/vlbu.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_215(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_21f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_229(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_233(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x633) - { - reg_t npc = pc + insn_length(0x00000633); - #include "insns/div.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x233) - { - reg_t npc = pc + insn_length(0x00000233); - #include "insns/xor.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_23d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_247(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000047); - #include "insns/fmsub_s.h" - return npc; -} - -reg_t processor_t::opcode_func_251(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_25b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_265(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_26f(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000006f); - #include "insns/jal.h" - return npc; -} - -reg_t processor_t::opcode_func_279(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_283(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000283); - #include "insns/lhu.h" - return npc; -} - -reg_t processor_t::opcode_func_28d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_297(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2a1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_2ab(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2b5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_2bf(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2c9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_2d3(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3ff1ff) == 0xc0d3) - { - reg_t npc = pc + insn_length(0x0000c0d3); - #include "insns/fcvt_d_l.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xe0d3) - { - reg_t npc = pc + insn_length(0x0000e0d3); - #include "insns/fcvt_d_w.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x100d3) - { - reg_t npc = pc + insn_length(0x000100d3); - #include "insns/fcvt_d_s.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x20d3) - { - reg_t npc = pc + insn_length(0x000020d3); - #include "insns/fmul_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xf0d3) - { - reg_t npc = pc + insn_length(0x0000f0d3); - #include "insns/fcvt_d_wu.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xb0d3) - { - reg_t npc = pc + insn_length(0x0000b0d3); - #include "insns/fcvt_wu_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xd0d3) - { - reg_t npc = pc + insn_length(0x0000d0d3); - #include "insns/fcvt_d_lu.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xa0d3) - { - reg_t npc = pc + insn_length(0x0000a0d3); - #include "insns/fcvt_w_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x80d3) - { - reg_t npc = pc + insn_length(0x000080d3); - #include "insns/fcvt_l_d.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0xd3) - { - reg_t npc = pc + insn_length(0x000000d3); - #include "insns/fadd_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x90d3) - { - reg_t npc = pc + insn_length(0x000090d3); - #include "insns/fcvt_lu_d.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x10d3) - { - reg_t npc = pc + insn_length(0x000010d3); - #include "insns/fsub_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x40d3) - { - reg_t npc = pc + insn_length(0x000040d3); - #include "insns/fsqrt_d.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x30d3) - { - reg_t npc = pc + insn_length(0x000030d3); - #include "insns/fdiv_d.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2dd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_2e7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000067); - #include "insns/j.h" - return npc; -} - -reg_t processor_t::opcode_func_2f1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_2fb(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xffffffff) == 0x2fb) - { - reg_t npc = pc + insn_length(0x000002fb); - #include "insns/cflush.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_305(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_30f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_319(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_323(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_32d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_337(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000037); - #include "insns/lui.h" - return npc; -} - -reg_t processor_t::opcode_func_341(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_34b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_355(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_35f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_369(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_373(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_37d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_387(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_391(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_39b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3a5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3af(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000003af); - #include "insns/fence_g_cv.h" - return npc; -} - -reg_t processor_t::opcode_func_3b9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3c3(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3cd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_3d7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3e1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_3eb(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3f5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_3ff(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - diff --git a/riscv/dispatch_4.cc b/riscv/dispatch_4.cc deleted file mode 100644 index 294ff1a..0000000 --- a/riscv/dispatch_4.cc +++ /dev/null @@ -1,880 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_004(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_00e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_018(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_022(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_02c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_036(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_040(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_04a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_054(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_05e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_068(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_072(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_07c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001c); - #include "insns/c_add3.h" - return npc; -} - -reg_t processor_t::opcode_func_086(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_090(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_09a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0a4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0ae(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0b8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_0c2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0cc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_0d6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_0e0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_0ea(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_0f4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_0fe(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_108(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_112(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_11c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000011c); - #include "insns/c_sub3.h" - return npc; -} - -reg_t processor_t::opcode_func_126(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_130(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_13a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_144(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_14e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_158(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_162(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_16c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_176(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_180(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_18a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_194(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_19e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1a8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1b2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1bc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000011c); - #include "insns/c_sub3.h" - return npc; -} - -reg_t processor_t::opcode_func_1c6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1d0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_1da(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1e4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1ee(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1f8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_202(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_20c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_216(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_220(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_22a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_234(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_23e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_248(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_252(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_25c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000021c); - #include "insns/c_or3.h" - return npc; -} - -reg_t processor_t::opcode_func_266(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_270(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_27a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_284(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_28e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_298(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_2a2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2ac(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_2b6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_2c0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_2ca(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_2d4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_2de(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2e8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2f2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2fc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000021c); - #include "insns/c_or3.h" - return npc; -} - -reg_t processor_t::opcode_func_306(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_310(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_31a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_324(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_32e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_338(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_342(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_34c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_356(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_360(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_36a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_374(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_37e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_388(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_392(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_39c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000031c); - #include "insns/c_and3.h" - return npc; -} - -reg_t processor_t::opcode_func_3a6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3b0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_3ba(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3c4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3ce(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3d8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_3e2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3ec(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_3f6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - diff --git a/riscv/dispatch_5.cc b/riscv/dispatch_5.cc deleted file mode 100644 index 37dc146..0000000 --- a/riscv/dispatch_5.cc +++ /dev/null @@ -1,1148 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_005(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_00f(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xfff) == 0x80f) - { - reg_t npc = pc + insn_length(0x0000080f); - #include "insns/vssegstb.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0xf) - { - reg_t npc = pc + insn_length(0x0000000f); - #include "insns/vsb.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x100f) - { - reg_t npc = pc + insn_length(0x0000100f); - #include "insns/vsstb.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x200f) - { - reg_t npc = pc + insn_length(0x0000200f); - #include "insns/vssegb.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_019(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_023(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000023); - #include "insns/sb.h" - return npc; -} - -reg_t processor_t::opcode_func_02d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_037(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000037); - #include "insns/lui.h" - return npc; -} - -reg_t processor_t::opcode_func_041(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_04b(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000004b); - #include "insns/fnmsub_s.h" - return npc; -} - -reg_t processor_t::opcode_func_055(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_05f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_069(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_073(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x1873) - { - reg_t npc = pc + insn_length(0x00001873); - #include "insns/vmts.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x73) - { - reg_t npc = pc + insn_length(0x00000073); - #include "insns/vmvv.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x873) - { - reg_t npc = pc + insn_length(0x00000873); - #include "insns/vmsv.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x1073) - { - reg_t npc = pc + insn_length(0x00001073); - #include "insns/vmst.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_07d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_087(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_091(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_09b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3f83ff) == 0x9b) - { - reg_t npc = pc + insn_length(0x0000009b); - #include "insns/slliw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0a5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0af(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000af); - #include "insns/fence_i.h" - return npc; -} - -reg_t processor_t::opcode_func_0b9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0c3(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000c3); - #include "insns/fmadd_d.h" - return npc; -} - -reg_t processor_t::opcode_func_0cd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_0d7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0e1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_0eb(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000eb); - #include "insns/jalr_r.h" - return npc; -} - -reg_t processor_t::opcode_func_0f5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_0ff(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_109(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_113(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000113); - #include "insns/slti.h" - return npc; -} - -reg_t processor_t::opcode_func_11d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_127(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000127); - #include "insns/fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_131(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_13b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_145(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_14f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_159(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_163(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_16d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_177(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xffffffff) == 0x177) - { - reg_t npc = pc + insn_length(0x00000177); - #include "insns/stop.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_181(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_18b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x158b) - { - reg_t npc = pc + insn_length(0x0000158b); - #include "insns/vflstd.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x18b) - { - reg_t npc = pc + insn_length(0x0000018b); - #include "insns/vld.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x118b) - { - reg_t npc = pc + insn_length(0x0000118b); - #include "insns/vlstd.h" - return npc; - } - if((insn.bits & 0xfff) == 0x98b) - { - reg_t npc = pc + insn_length(0x0000098b); - #include "insns/vlsegstd.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x258b) - { - reg_t npc = pc + insn_length(0x0000258b); - #include "insns/vflsegd.h" - return npc; - } - if((insn.bits & 0xfff) == 0xd8b) - { - reg_t npc = pc + insn_length(0x00000d8b); - #include "insns/vflsegstd.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x58b) - { - reg_t npc = pc + insn_length(0x0000058b); - #include "insns/vfld.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x218b) - { - reg_t npc = pc + insn_length(0x0000218b); - #include "insns/vlsegd.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_195(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_19f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1a9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_1b3(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x1b3) - { - reg_t npc = pc + insn_length(0x000001b3); - #include "insns/sltu.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x5b3) - { - reg_t npc = pc + insn_length(0x000005b3); - #include "insns/mulhu.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1bd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_1c7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1d1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_1db(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1e5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1ef(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000006f); - #include "insns/jal.h" - return npc; -} - -reg_t processor_t::opcode_func_1f9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_203(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000203); - #include "insns/lbu.h" - return npc; -} - -reg_t processor_t::opcode_func_20d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_217(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_221(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_22b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_235(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_23f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_249(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_253(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3ff1ff) == 0x9053) - { - reg_t npc = pc + insn_length(0x00009053); - #include "insns/fcvt_lu_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x11053) - { - reg_t npc = pc + insn_length(0x00011053); - #include "insns/fcvt_s_d.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xe053) - { - reg_t npc = pc + insn_length(0x0000e053); - #include "insns/fcvt_s_w.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x8053) - { - reg_t npc = pc + insn_length(0x00008053); - #include "insns/fcvt_l_s.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x3053) - { - reg_t npc = pc + insn_length(0x00003053); - #include "insns/fdiv_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xd053) - { - reg_t npc = pc + insn_length(0x0000d053); - #include "insns/fcvt_s_lu.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x2053) - { - reg_t npc = pc + insn_length(0x00002053); - #include "insns/fmul_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xb053) - { - reg_t npc = pc + insn_length(0x0000b053); - #include "insns/fcvt_wu_s.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x1053) - { - reg_t npc = pc + insn_length(0x00001053); - #include "insns/fsub_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xf053) - { - reg_t npc = pc + insn_length(0x0000f053); - #include "insns/fcvt_s_wu.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xc053) - { - reg_t npc = pc + insn_length(0x0000c053); - #include "insns/fcvt_s_l.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0xa053) - { - reg_t npc = pc + insn_length(0x0000a053); - #include "insns/fcvt_w_s.h" - return npc; - } - if((insn.bits & 0x3ff1ff) == 0x4053) - { - reg_t npc = pc + insn_length(0x00004053); - #include "insns/fsqrt_s.h" - return npc; - } - if((insn.bits & 0x1f1ff) == 0x53) - { - reg_t npc = pc + insn_length(0x00000053); - #include "insns/fadd_s.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_25d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_267(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000067); - #include "insns/j.h" - return npc; -} - -reg_t processor_t::opcode_func_271(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_27b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xffffffff) == 0x27b) - { - reg_t npc = pc + insn_length(0x0000027b); - #include "insns/eret.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_285(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_28f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_299(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2a3(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2ad(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_2b7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000037); - #include "insns/lui.h" - return npc; -} - -reg_t processor_t::opcode_func_2c1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_2cb(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000cb); - #include "insns/fnmsub_d.h" - return npc; -} - -reg_t processor_t::opcode_func_2d5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_2df(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2e9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_2f3(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3fffff) == 0x2f3) - { - reg_t npc = pc + insn_length(0x000002f3); - #include "insns/vsetvl.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2fd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_307(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_311(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_31b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_325(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_32f(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000032f); - #include "insns/fence_l_cv.h" - return npc; -} - -reg_t processor_t::opcode_func_339(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_343(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_34d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_357(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_361(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_36b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_375(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_37f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_389(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_393(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000393); - #include "insns/andi.h" - return npc; -} - -reg_t processor_t::opcode_func_39d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_3a7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3b1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_3bb(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x7bb) - { - reg_t npc = pc + insn_length(0x000007bb); - #include "insns/remuw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3c5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3cf(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3d9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3e3(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000003e3); - #include "insns/bgeu.h" - return npc; -} - -reg_t processor_t::opcode_func_3ed(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_3f7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - diff --git a/riscv/dispatch_6.cc b/riscv/dispatch_6.cc deleted file mode 100644 index 11a3c04..0000000 --- a/riscv/dispatch_6.cc +++ /dev/null @@ -1,880 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_006(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_010(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_01a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_024(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_02e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_038(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_042(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_04c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_056(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_060(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_06a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_074(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_07e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_088(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_092(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_09c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001c); - #include "insns/c_add3.h" - return npc; -} - -reg_t processor_t::opcode_func_0a6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0b0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_0ba(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0c4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0ce(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0d8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_0e2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0ec(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_0f6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_100(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_10a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_114(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_11e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_128(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_132(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_13c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000011c); - #include "insns/c_sub3.h" - return npc; -} - -reg_t processor_t::opcode_func_146(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_150(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_15a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_164(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_16e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_178(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_182(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_18c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_196(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_1a0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_1aa(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_1b4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_1be(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1c8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1d2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1dc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000011c); - #include "insns/c_sub3.h" - return npc; -} - -reg_t processor_t::opcode_func_1e6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1f0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_1fa(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_204(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_20e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_218(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_222(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_22c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_236(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_240(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_24a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_254(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_25e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_268(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_272(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_27c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000021c); - #include "insns/c_or3.h" - return npc; -} - -reg_t processor_t::opcode_func_286(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_290(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_29a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2a4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2ae(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2b8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_2c2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2cc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_2d6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_2e0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_2ea(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_2f4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_2fe(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_308(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_312(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_31c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000031c); - #include "insns/c_and3.h" - return npc; -} - -reg_t processor_t::opcode_func_326(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_330(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_33a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_344(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_34e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_358(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_362(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_36c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_376(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_380(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_38a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_394(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_39e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3a8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3b2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3bc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000031c); - #include "insns/c_and3.h" - return npc; -} - -reg_t processor_t::opcode_func_3c6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3d0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_3da(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3e4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3ee(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3f8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - diff --git a/riscv/dispatch_7.cc b/riscv/dispatch_7.cc deleted file mode 100644 index 7e8dbd8..0000000 --- a/riscv/dispatch_7.cc +++ /dev/null @@ -1,1086 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_007(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_011(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_01b(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001b); - #include "insns/addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_025(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_02f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_039(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_043(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000043); - #include "insns/fmadd_s.h" - return npc; -} - -reg_t processor_t::opcode_func_04d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_057(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_061(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_06b(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000006b); - #include "insns/jalr_c.h" - return npc; -} - -reg_t processor_t::opcode_func_075(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_07f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_089(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_093(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3f03ff) == 0x93) - { - reg_t npc = pc + insn_length(0x00000093); - #include "insns/slli.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_09d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_0a7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0b1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_0bb(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0xbb) - { - reg_t npc = pc + insn_length(0x000000bb); - #include "insns/sllw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0c5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0cf(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000cf); - #include "insns/fnmadd_d.h" - return npc; -} - -reg_t processor_t::opcode_func_0d9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0e3(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000e3); - #include "insns/bne.h" - return npc; -} - -reg_t processor_t::opcode_func_0ed(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_0f7(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xffffffff) == 0xf7) - { - reg_t npc = pc + insn_length(0x000000f7); - #include "insns/break.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_101(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_10b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x150b) - { - reg_t npc = pc + insn_length(0x0000150b); - #include "insns/vflstw.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x10b) - { - reg_t npc = pc + insn_length(0x0000010b); - #include "insns/vlw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x110b) - { - reg_t npc = pc + insn_length(0x0000110b); - #include "insns/vlstw.h" - return npc; - } - if((insn.bits & 0xfff) == 0x90b) - { - reg_t npc = pc + insn_length(0x0000090b); - #include "insns/vlsegstw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x250b) - { - reg_t npc = pc + insn_length(0x0000250b); - #include "insns/vflsegw.h" - return npc; - } - if((insn.bits & 0xfff) == 0xd0b) - { - reg_t npc = pc + insn_length(0x00000d0b); - #include "insns/vflsegstw.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x50b) - { - reg_t npc = pc + insn_length(0x0000050b); - #include "insns/vflw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x210b) - { - reg_t npc = pc + insn_length(0x0000210b); - #include "insns/vlsegw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_115(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_11f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_129(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_133(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x533) - { - reg_t npc = pc + insn_length(0x00000533); - #include "insns/mulhsu.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x133) - { - reg_t npc = pc + insn_length(0x00000133); - #include "insns/slt.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_13d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_147(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_151(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_15b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_165(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_16f(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000006f); - #include "insns/jal.h" - return npc; -} - -reg_t processor_t::opcode_func_179(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_183(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000183); - #include "insns/ld.h" - return npc; -} - -reg_t processor_t::opcode_func_18d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_197(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1a1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_1ab(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x19ab) - { - reg_t npc = pc + insn_length(0x000019ab); - #include "insns/amominu_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x9ab) - { - reg_t npc = pc + insn_length(0x000009ab); - #include "insns/amoand_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x1dab) - { - reg_t npc = pc + insn_length(0x00001dab); - #include "insns/amomaxu_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x1ab) - { - reg_t npc = pc + insn_length(0x000001ab); - #include "insns/amoadd_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x15ab) - { - reg_t npc = pc + insn_length(0x000015ab); - #include "insns/amomax_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0xdab) - { - reg_t npc = pc + insn_length(0x00000dab); - #include "insns/amoor_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x5ab) - { - reg_t npc = pc + insn_length(0x000005ab); - #include "insns/amoswap_d.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x11ab) - { - reg_t npc = pc + insn_length(0x000011ab); - #include "insns/amomin_d.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1b5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_1bf(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1c9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_1d3(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1dd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_1e7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000067); - #include "insns/j.h" - return npc; -} - -reg_t processor_t::opcode_func_1f1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_1fb(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xf801ffff) == 0x1fb) - { - reg_t npc = pc + insn_length(0x000001fb); - #include "insns/mtpcr.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_205(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_20f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_219(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_223(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_22d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_237(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000037); - #include "insns/lui.h" - return npc; -} - -reg_t processor_t::opcode_func_241(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_24b(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000004b); - #include "insns/fnmsub_s.h" - return npc; -} - -reg_t processor_t::opcode_func_255(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_25f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_269(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_273(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_27d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_287(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_291(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_29b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3f83ff) == 0x29b) - { - reg_t npc = pc + insn_length(0x0000029b); - #include "insns/srliw.h" - return npc; - } - if((insn.bits & 0x3f83ff) == 0x1029b) - { - reg_t npc = pc + insn_length(0x0001029b); - #include "insns/sraiw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2a5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2af(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000002af); - #include "insns/fence_g_v.h" - return npc; -} - -reg_t processor_t::opcode_func_2b9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2c3(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000c3); - #include "insns/fmadd_d.h" - return npc; -} - -reg_t processor_t::opcode_func_2cd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_2d7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2e1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_2eb(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2f5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_2ff(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_309(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_313(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000313); - #include "insns/ori.h" - return npc; -} - -reg_t processor_t::opcode_func_31d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_327(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_331(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_33b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x73b) - { - reg_t npc = pc + insn_length(0x0000073b); - #include "insns/remw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_345(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_34f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_359(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_363(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000363); - #include "insns/bltu.h" - return npc; -} - -reg_t processor_t::opcode_func_36d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_377(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_381(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_38b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_395(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_39f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3a9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_3b3(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x7b3) - { - reg_t npc = pc + insn_length(0x000007b3); - #include "insns/remu.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x3b3) - { - reg_t npc = pc + insn_length(0x000003b3); - #include "insns/and.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3bd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_3c7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3d1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_3db(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3e5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3ef(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000006f); - #include "insns/jal.h" - return npc; -} - -reg_t processor_t::opcode_func_3f9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - diff --git a/riscv/dispatch_8.cc b/riscv/dispatch_8.cc deleted file mode 100644 index 3dd44dd..0000000 --- a/riscv/dispatch_8.cc +++ /dev/null @@ -1,892 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_008(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_012(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_01c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001c); - #include "insns/c_add3.h" - return npc; -} - -reg_t processor_t::opcode_func_026(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_030(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_03a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_044(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_04e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_058(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_062(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_06c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_076(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_080(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_08a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_094(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_09e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0a8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0b2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0bc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001c); - #include "insns/c_add3.h" - return npc; -} - -reg_t processor_t::opcode_func_0c6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0d0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_0da(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0e4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0ee(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0f8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_102(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_10c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_116(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_120(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_12a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_134(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_13e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_148(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_152(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_15c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000011c); - #include "insns/c_sub3.h" - return npc; -} - -reg_t processor_t::opcode_func_166(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_170(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_17a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_184(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_18e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_198(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_1a2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1ac(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_1b6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_1c0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_1ca(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_1d4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_1de(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1e8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_1f2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1fc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000011c); - #include "insns/c_sub3.h" - return npc; -} - -reg_t processor_t::opcode_func_206(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_210(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_21a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_224(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_22e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_238(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_242(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_24c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_256(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_260(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_26a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_274(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_27e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_288(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_292(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_29c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000021c); - #include "insns/c_or3.h" - return npc; -} - -reg_t processor_t::opcode_func_2a6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2b0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_2ba(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2c4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2ce(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2d8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_2e2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2ec(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_2f6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_300(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_30a(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_314(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_31e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_328(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_332(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_33c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000031c); - #include "insns/c_and3.h" - return npc; -} - -reg_t processor_t::opcode_func_346(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_350(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_35a(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_364(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000004); - #include "insns/c_ldsp.h" - return npc; -} - -reg_t processor_t::opcode_func_36e(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_378(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000018); - #include "insns/c_fsd.h" - return npc; -} - -reg_t processor_t::opcode_func_382(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x2) - { - reg_t npc = pc + insn_length(0x00000002); - #include "insns/c_move.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8002) - { - reg_t npc = pc + insn_length(0x00008002); - #include "insns/c_j.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_38c(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000c); - #include "insns/c_sd.h" - return npc; -} - -reg_t processor_t::opcode_func_396(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000016); - #include "insns/c_fsw.h" - return npc; -} - -reg_t processor_t::opcode_func_3a0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000000); - #include "insns/c_li.h" - return npc; -} - -reg_t processor_t::opcode_func_3aa(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000a); - #include "insns/c_lw.h" - return npc; -} - -reg_t processor_t::opcode_func_3b4(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000014); - #include "insns/c_flw.h" - return npc; -} - -reg_t processor_t::opcode_func_3be(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3c8(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000008); - #include "insns/c_swsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3d2(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x12) - { - reg_t npc = pc + insn_length(0x00000012); - #include "insns/c_lw0.h" - return npc; - } - if((insn.bits & 0x801f) == 0x8012) - { - reg_t npc = pc + insn_length(0x00008012); - #include "insns/c_ld0.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3dc(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000031c); - #include "insns/c_and3.h" - return npc; -} - -reg_t processor_t::opcode_func_3e6(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000006); - #include "insns/c_sdsp.h" - return npc; -} - -reg_t processor_t::opcode_func_3f0(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000010); - #include "insns/c_beq.h" - return npc; -} - -reg_t processor_t::opcode_func_3fa(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x801f) == 0x801a) - { - reg_t npc = pc + insn_length(0x0000801a); - #include "insns/c_sub.h" - return npc; - } - if((insn.bits & 0x801f) == 0x1a) - { - reg_t npc = pc + insn_length(0x0000001a); - #include "insns/c_add.h" - return npc; - } - throw trap_illegal_instruction; -} - diff --git a/riscv/dispatch_9.cc b/riscv/dispatch_9.cc deleted file mode 100644 index eb5d76c..0000000 --- a/riscv/dispatch_9.cc +++ /dev/null @@ -1,1144 +0,0 @@ -#include "insn_includes.h" - -reg_t processor_t::opcode_func_009(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_013(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000013); - #include "insns/addi.h" - return npc; -} - -reg_t processor_t::opcode_func_01d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_027(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_031(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_03b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x43b) - { - reg_t npc = pc + insn_length(0x0000043b); - #include "insns/mulw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x3b) - { - reg_t npc = pc + insn_length(0x0000003b); - #include "insns/addw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x1003b) - { - reg_t npc = pc + insn_length(0x0001003b); - #include "insns/subw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_045(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_04f(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000004f); - #include "insns/fnmadd_s.h" - return npc; -} - -reg_t processor_t::opcode_func_059(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_063(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000063); - #include "insns/beq.h" - return npc; -} - -reg_t processor_t::opcode_func_06d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_077(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xffffffff) == 0x77) - { - reg_t npc = pc + insn_length(0x00000077); - #include "insns/syscall.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_081(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_08b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3fffff) == 0x8b) - { - reg_t npc = pc + insn_length(0x0000008b); - #include "insns/vlh.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x108b) - { - reg_t npc = pc + insn_length(0x0000108b); - #include "insns/vlsth.h" - return npc; - } - if((insn.bits & 0xfff) == 0x88b) - { - reg_t npc = pc + insn_length(0x0000088b); - #include "insns/vlsegsth.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x208b) - { - reg_t npc = pc + insn_length(0x0000208b); - #include "insns/vlsegh.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_095(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_09f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0a9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_0b3(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0xb3) - { - reg_t npc = pc + insn_length(0x000000b3); - #include "insns/sll.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x4b3) - { - reg_t npc = pc + insn_length(0x000004b3); - #include "insns/mulh.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0bd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_0c7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000c7); - #include "insns/fmsub_d.h" - return npc; -} - -reg_t processor_t::opcode_func_0d1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_0db(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_0e5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_0ef(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000006f); - #include "insns/jal.h" - return npc; -} - -reg_t processor_t::opcode_func_0f9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_103(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000103); - #include "insns/lw.h" - return npc; -} - -reg_t processor_t::opcode_func_10d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_117(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_121(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_12b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x192b) - { - reg_t npc = pc + insn_length(0x0000192b); - #include "insns/amominu_w.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x92b) - { - reg_t npc = pc + insn_length(0x0000092b); - #include "insns/amoand_w.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x1d2b) - { - reg_t npc = pc + insn_length(0x00001d2b); - #include "insns/amomaxu_w.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x152b) - { - reg_t npc = pc + insn_length(0x0000152b); - #include "insns/amomax_w.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x12b) - { - reg_t npc = pc + insn_length(0x0000012b); - #include "insns/amoadd_w.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0xd2b) - { - reg_t npc = pc + insn_length(0x00000d2b); - #include "insns/amoor_w.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x112b) - { - reg_t npc = pc + insn_length(0x0000112b); - #include "insns/amomin_w.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x52b) - { - reg_t npc = pc + insn_length(0x0000052b); - #include "insns/amoswap_w.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_135(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_13f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_149(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_153(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_15d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_167(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000067); - #include "insns/j.h" - return npc; -} - -reg_t processor_t::opcode_func_171(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_17b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x7c1ffff) == 0x17b) - { - reg_t npc = pc + insn_length(0x0000017b); - #include "insns/mfpcr.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_185(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_18f(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xfff) == 0x98f) - { - reg_t npc = pc + insn_length(0x0000098f); - #include "insns/vssegstd.h" - return npc; - } - if((insn.bits & 0xfff) == 0xd8f) - { - reg_t npc = pc + insn_length(0x00000d8f); - #include "insns/vfssegstd.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x118f) - { - reg_t npc = pc + insn_length(0x0000118f); - #include "insns/vsstd.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x218f) - { - reg_t npc = pc + insn_length(0x0000218f); - #include "insns/vssegd.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x158f) - { - reg_t npc = pc + insn_length(0x0000158f); - #include "insns/vfsstd.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x18f) - { - reg_t npc = pc + insn_length(0x0000018f); - #include "insns/vsd.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x58f) - { - reg_t npc = pc + insn_length(0x0000058f); - #include "insns/vfsd.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x258f) - { - reg_t npc = pc + insn_length(0x0000258f); - #include "insns/vfssegd.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_199(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1a3(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000001a3); - #include "insns/sd.h" - return npc; -} - -reg_t processor_t::opcode_func_1ad(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_1b7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000037); - #include "insns/lui.h" - return npc; -} - -reg_t processor_t::opcode_func_1c1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_1cb(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1d5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_1df(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_1e9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_1f3(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000001f3); - #include "insns/vtcfgivl.h" - return npc; -} - -reg_t processor_t::opcode_func_1fd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_207(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_211(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_21b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_225(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_22f(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000022f); - #include "insns/fence_l_v.h" - return npc; -} - -reg_t processor_t::opcode_func_239(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_243(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000043); - #include "insns/fmadd_s.h" - return npc; -} - -reg_t processor_t::opcode_func_24d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_257(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_261(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_26b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x7ffffff) == 0x26b) - { - reg_t npc = pc + insn_length(0x0000026b); - #include "insns/rdnpc.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_275(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_27f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_289(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_293(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x3f03ff) == 0x293) - { - reg_t npc = pc + insn_length(0x00000293); - #include "insns/srli.h" - return npc; - } - if((insn.bits & 0x3f03ff) == 0x10293) - { - reg_t npc = pc + insn_length(0x00010293); - #include "insns/srai.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_29d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_2a7(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2b1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_2bb(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x6bb) - { - reg_t npc = pc + insn_length(0x000006bb); - #include "insns/divuw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x2bb) - { - reg_t npc = pc + insn_length(0x000002bb); - #include "insns/srlw.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x102bb) - { - reg_t npc = pc + insn_length(0x000102bb); - #include "insns/sraw.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2c5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_2cf(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000000cf); - #include "insns/fnmadd_d.h" - return npc; -} - -reg_t processor_t::opcode_func_2d9(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_2e3(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x000002e3); - #include "insns/bge.h" - return npc; -} - -reg_t processor_t::opcode_func_2ed(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_2f7(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x6f7) - { - reg_t npc = pc + insn_length(0x000006f7); - #include "insns/movn.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x2f7) - { - reg_t npc = pc + insn_length(0x000002f7); - #include "insns/movz.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0xef7) - { - reg_t npc = pc + insn_length(0x00000ef7); - #include "insns/fmovn.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0xaf7) - { - reg_t npc = pc + insn_length(0x00000af7); - #include "insns/fmovz.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_301(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_30b(insn_t insn, reg_t pc) -{ - if((insn.bits & 0xfff) == 0xb0b) - { - reg_t npc = pc + insn_length(0x00000b0b); - #include "insns/vlsegstwu.h" - return npc; - } - if((insn.bits & 0x3fffff) == 0x30b) - { - reg_t npc = pc + insn_length(0x0000030b); - #include "insns/vlwu.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x130b) - { - reg_t npc = pc + insn_length(0x0000130b); - #include "insns/vlstwu.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x230b) - { - reg_t npc = pc + insn_length(0x0000230b); - #include "insns/vlsegwu.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_315(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_31f(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_329(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_333(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1ffff) == 0x733) - { - reg_t npc = pc + insn_length(0x00000733); - #include "insns/rem.h" - return npc; - } - if((insn.bits & 0x1ffff) == 0x333) - { - reg_t npc = pc + insn_length(0x00000333); - #include "insns/or.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_33d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_347(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_351(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_35b(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_365(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000005); - #include "insns/c_lwsp.h" - return npc; -} - -reg_t processor_t::opcode_func_36f(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000006f); - #include "insns/jal.h" - return npc; -} - -reg_t processor_t::opcode_func_379(insn_t insn, reg_t pc) -{ - if((insn.bits & 0x1c1f) == 0x19) - { - reg_t npc = pc + insn_length(0x00000019); - #include "insns/c_slli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x819) - { - reg_t npc = pc + insn_length(0x00000819); - #include "insns/c_srli.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1419) - { - reg_t npc = pc + insn_length(0x00001419); - #include "insns/c_srai32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1819) - { - reg_t npc = pc + insn_length(0x00001819); - #include "insns/c_slliw.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0xc19) - { - reg_t npc = pc + insn_length(0x00000c19); - #include "insns/c_srli32.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x1019) - { - reg_t npc = pc + insn_length(0x00001019); - #include "insns/c_srai.h" - return npc; - } - if((insn.bits & 0x1c1f) == 0x419) - { - reg_t npc = pc + insn_length(0x00000419); - #include "insns/c_slli32.h" - return npc; - } - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_383(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_38d(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000000d); - #include "insns/c_sw.h" - return npc; -} - -reg_t processor_t::opcode_func_397(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3a1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000001); - #include "insns/c_addi.h" - return npc; -} - -reg_t processor_t::opcode_func_3ab(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3b5(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000015); - #include "insns/c_fld.h" - return npc; -} - -reg_t processor_t::opcode_func_3bf(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3c9(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000009); - #include "insns/c_ld.h" - return npc; -} - -reg_t processor_t::opcode_func_3d3(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - -reg_t processor_t::opcode_func_3dd(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x0000001d); - #include "insns/c_addiw.h" - return npc; -} - -reg_t processor_t::opcode_func_3e7(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000067); - #include "insns/j.h" - return npc; -} - -reg_t processor_t::opcode_func_3f1(insn_t insn, reg_t pc) -{ - reg_t npc = pc + insn_length(0x00000011); - #include "insns/c_bne.h" - return npc; -} - -reg_t processor_t::opcode_func_3fb(insn_t insn, reg_t pc) -{ - throw trap_illegal_instruction; -} - diff --git a/riscv/dispatch_decl.h b/riscv/dispatch_decl.h deleted file mode 100644 index efd4f99..0000000 --- a/riscv/dispatch_decl.h +++ /dev/null @@ -1,1026 +0,0 @@ -/* Automatically generated by parse-opcodes */ -#define dispatch_index(insn) (((insn).bits >> 0) & 1023) -reg_t opcode_func_000(insn_t insn, reg_t pc); -reg_t opcode_func_001(insn_t insn, reg_t pc); -reg_t opcode_func_002(insn_t insn, reg_t pc); -reg_t opcode_func_003(insn_t insn, reg_t pc); -reg_t opcode_func_004(insn_t insn, reg_t pc); -reg_t opcode_func_005(insn_t insn, reg_t pc); -reg_t opcode_func_006(insn_t insn, reg_t pc); -reg_t opcode_func_007(insn_t insn, reg_t pc); -reg_t opcode_func_008(insn_t insn, reg_t pc); -reg_t opcode_func_009(insn_t insn, reg_t pc); -reg_t opcode_func_00a(insn_t insn, reg_t pc); -reg_t opcode_func_00b(insn_t insn, reg_t pc); -reg_t opcode_func_00c(insn_t insn, reg_t pc); -reg_t opcode_func_00d(insn_t insn, reg_t pc); -reg_t opcode_func_00e(insn_t insn, reg_t pc); -reg_t opcode_func_00f(insn_t insn, reg_t pc); -reg_t opcode_func_010(insn_t insn, reg_t pc); -reg_t opcode_func_011(insn_t insn, reg_t pc); -reg_t opcode_func_012(insn_t insn, reg_t pc); -reg_t opcode_func_013(insn_t insn, reg_t pc); -reg_t opcode_func_014(insn_t insn, reg_t pc); -reg_t opcode_func_015(insn_t insn, reg_t pc); -reg_t opcode_func_016(insn_t insn, reg_t pc); -reg_t opcode_func_017(insn_t insn, reg_t pc); -reg_t opcode_func_018(insn_t insn, reg_t pc); -reg_t opcode_func_019(insn_t insn, reg_t pc); -reg_t opcode_func_01a(insn_t insn, reg_t pc); -reg_t opcode_func_01b(insn_t insn, reg_t pc); -reg_t opcode_func_01c(insn_t insn, reg_t pc); -reg_t opcode_func_01d(insn_t insn, reg_t pc); -reg_t opcode_func_01e(insn_t insn, reg_t pc); -reg_t opcode_func_01f(insn_t insn, reg_t pc); -reg_t opcode_func_020(insn_t insn, reg_t pc); -reg_t opcode_func_021(insn_t insn, reg_t pc); -reg_t opcode_func_022(insn_t insn, reg_t pc); -reg_t opcode_func_023(insn_t insn, reg_t pc); -reg_t opcode_func_024(insn_t insn, reg_t pc); -reg_t opcode_func_025(insn_t insn, reg_t pc); -reg_t opcode_func_026(insn_t insn, reg_t pc); -reg_t opcode_func_027(insn_t insn, reg_t pc); -reg_t opcode_func_028(insn_t insn, reg_t pc); -reg_t opcode_func_029(insn_t insn, reg_t pc); -reg_t opcode_func_02a(insn_t insn, reg_t pc); -reg_t opcode_func_02b(insn_t insn, reg_t pc); -reg_t opcode_func_02c(insn_t insn, reg_t pc); -reg_t opcode_func_02d(insn_t insn, reg_t pc); -reg_t opcode_func_02e(insn_t insn, reg_t pc); -reg_t opcode_func_02f(insn_t insn, reg_t pc); -reg_t opcode_func_030(insn_t insn, reg_t pc); -reg_t opcode_func_031(insn_t insn, reg_t pc); -reg_t opcode_func_032(insn_t insn, reg_t pc); -reg_t opcode_func_033(insn_t insn, reg_t pc); -reg_t opcode_func_034(insn_t insn, reg_t pc); -reg_t opcode_func_035(insn_t insn, reg_t pc); -reg_t opcode_func_036(insn_t insn, reg_t pc); -reg_t opcode_func_037(insn_t insn, reg_t pc); -reg_t opcode_func_038(insn_t insn, reg_t pc); -reg_t opcode_func_039(insn_t insn, reg_t pc); -reg_t opcode_func_03a(insn_t insn, reg_t pc); -reg_t opcode_func_03b(insn_t insn, reg_t pc); -reg_t opcode_func_03c(insn_t insn, reg_t pc); -reg_t opcode_func_03d(insn_t insn, reg_t pc); -reg_t opcode_func_03e(insn_t insn, reg_t pc); -reg_t opcode_func_03f(insn_t insn, reg_t pc); -reg_t opcode_func_040(insn_t insn, reg_t pc); -reg_t opcode_func_041(insn_t insn, reg_t pc); -reg_t opcode_func_042(insn_t insn, reg_t pc); -reg_t opcode_func_043(insn_t insn, reg_t pc); -reg_t opcode_func_044(insn_t insn, reg_t pc); -reg_t opcode_func_045(insn_t insn, reg_t pc); -reg_t opcode_func_046(insn_t insn, reg_t pc); -reg_t opcode_func_047(insn_t insn, reg_t pc); -reg_t opcode_func_048(insn_t insn, reg_t pc); -reg_t opcode_func_049(insn_t insn, reg_t pc); -reg_t opcode_func_04a(insn_t insn, reg_t pc); -reg_t opcode_func_04b(insn_t insn, reg_t pc); -reg_t opcode_func_04c(insn_t insn, reg_t pc); -reg_t opcode_func_04d(insn_t insn, reg_t pc); -reg_t opcode_func_04e(insn_t insn, reg_t pc); -reg_t opcode_func_04f(insn_t insn, reg_t pc); -reg_t opcode_func_050(insn_t insn, reg_t pc); -reg_t opcode_func_051(insn_t insn, reg_t pc); -reg_t opcode_func_052(insn_t insn, reg_t pc); -reg_t opcode_func_053(insn_t insn, reg_t pc); -reg_t opcode_func_054(insn_t insn, reg_t pc); -reg_t opcode_func_055(insn_t insn, reg_t pc); -reg_t opcode_func_056(insn_t insn, reg_t pc); -reg_t opcode_func_057(insn_t insn, reg_t pc); -reg_t opcode_func_058(insn_t insn, reg_t pc); -reg_t opcode_func_059(insn_t insn, reg_t pc); -reg_t opcode_func_05a(insn_t insn, reg_t pc); -reg_t opcode_func_05b(insn_t insn, reg_t pc); -reg_t opcode_func_05c(insn_t insn, reg_t pc); -reg_t opcode_func_05d(insn_t insn, reg_t pc); -reg_t opcode_func_05e(insn_t insn, reg_t pc); -reg_t opcode_func_05f(insn_t insn, reg_t pc); -reg_t opcode_func_060(insn_t insn, reg_t pc); -reg_t opcode_func_061(insn_t insn, reg_t pc); -reg_t opcode_func_062(insn_t insn, reg_t pc); -reg_t opcode_func_063(insn_t insn, reg_t pc); -reg_t opcode_func_064(insn_t insn, reg_t pc); -reg_t opcode_func_065(insn_t insn, reg_t pc); -reg_t opcode_func_066(insn_t insn, reg_t pc); -reg_t opcode_func_067(insn_t insn, reg_t pc); -reg_t opcode_func_068(insn_t insn, reg_t pc); -reg_t opcode_func_069(insn_t insn, reg_t pc); -reg_t opcode_func_06a(insn_t insn, reg_t pc); -reg_t opcode_func_06b(insn_t insn, reg_t pc); -reg_t opcode_func_06c(insn_t insn, reg_t pc); -reg_t opcode_func_06d(insn_t insn, reg_t pc); -reg_t opcode_func_06e(insn_t insn, reg_t pc); -reg_t opcode_func_06f(insn_t insn, reg_t pc); -reg_t opcode_func_070(insn_t insn, reg_t pc); -reg_t opcode_func_071(insn_t insn, reg_t pc); -reg_t opcode_func_072(insn_t insn, reg_t pc); -reg_t opcode_func_073(insn_t insn, reg_t pc); -reg_t opcode_func_074(insn_t insn, reg_t pc); -reg_t opcode_func_075(insn_t insn, reg_t pc); -reg_t opcode_func_076(insn_t insn, reg_t pc); -reg_t opcode_func_077(insn_t insn, reg_t pc); -reg_t opcode_func_078(insn_t insn, reg_t pc); -reg_t opcode_func_079(insn_t insn, reg_t pc); -reg_t opcode_func_07a(insn_t insn, reg_t pc); -reg_t opcode_func_07b(insn_t insn, reg_t pc); -reg_t opcode_func_07c(insn_t insn, reg_t pc); -reg_t opcode_func_07d(insn_t insn, reg_t pc); -reg_t opcode_func_07e(insn_t insn, reg_t pc); -reg_t opcode_func_07f(insn_t insn, reg_t pc); -reg_t opcode_func_080(insn_t insn, reg_t pc); -reg_t opcode_func_081(insn_t insn, reg_t pc); -reg_t opcode_func_082(insn_t insn, reg_t pc); -reg_t opcode_func_083(insn_t insn, reg_t pc); -reg_t opcode_func_084(insn_t insn, reg_t pc); -reg_t opcode_func_085(insn_t insn, reg_t pc); -reg_t opcode_func_086(insn_t insn, reg_t pc); -reg_t opcode_func_087(insn_t insn, reg_t pc); -reg_t opcode_func_088(insn_t insn, reg_t pc); -reg_t opcode_func_089(insn_t insn, reg_t pc); -reg_t opcode_func_08a(insn_t insn, reg_t pc); -reg_t opcode_func_08b(insn_t insn, reg_t pc); -reg_t opcode_func_08c(insn_t insn, reg_t pc); -reg_t opcode_func_08d(insn_t insn, reg_t pc); -reg_t opcode_func_08e(insn_t insn, reg_t pc); -reg_t opcode_func_08f(insn_t insn, reg_t pc); -reg_t opcode_func_090(insn_t insn, reg_t pc); -reg_t opcode_func_091(insn_t insn, reg_t pc); -reg_t opcode_func_092(insn_t insn, reg_t pc); -reg_t opcode_func_093(insn_t insn, reg_t pc); -reg_t opcode_func_094(insn_t insn, reg_t pc); -reg_t opcode_func_095(insn_t insn, reg_t pc); -reg_t opcode_func_096(insn_t insn, reg_t pc); -reg_t opcode_func_097(insn_t insn, reg_t pc); -reg_t opcode_func_098(insn_t insn, reg_t pc); -reg_t opcode_func_099(insn_t insn, reg_t pc); -reg_t opcode_func_09a(insn_t insn, reg_t pc); -reg_t opcode_func_09b(insn_t insn, reg_t pc); -reg_t opcode_func_09c(insn_t insn, reg_t pc); -reg_t opcode_func_09d(insn_t insn, reg_t pc); -reg_t opcode_func_09e(insn_t insn, reg_t pc); -reg_t opcode_func_09f(insn_t insn, reg_t pc); -reg_t opcode_func_0a0(insn_t insn, reg_t pc); -reg_t opcode_func_0a1(insn_t insn, reg_t pc); -reg_t opcode_func_0a2(insn_t insn, reg_t pc); -reg_t opcode_func_0a3(insn_t insn, reg_t pc); -reg_t opcode_func_0a4(insn_t insn, reg_t pc); -reg_t opcode_func_0a5(insn_t insn, reg_t pc); -reg_t opcode_func_0a6(insn_t insn, reg_t pc); -reg_t opcode_func_0a7(insn_t insn, reg_t pc); -reg_t opcode_func_0a8(insn_t insn, reg_t pc); -reg_t opcode_func_0a9(insn_t insn, reg_t pc); -reg_t opcode_func_0aa(insn_t insn, reg_t pc); -reg_t opcode_func_0ab(insn_t insn, reg_t pc); -reg_t opcode_func_0ac(insn_t insn, reg_t pc); -reg_t opcode_func_0ad(insn_t insn, reg_t pc); -reg_t opcode_func_0ae(insn_t insn, reg_t pc); -reg_t opcode_func_0af(insn_t insn, reg_t pc); -reg_t opcode_func_0b0(insn_t insn, reg_t pc); -reg_t opcode_func_0b1(insn_t insn, reg_t pc); -reg_t opcode_func_0b2(insn_t insn, reg_t pc); -reg_t opcode_func_0b3(insn_t insn, reg_t pc); -reg_t opcode_func_0b4(insn_t insn, reg_t pc); -reg_t opcode_func_0b5(insn_t insn, reg_t pc); -reg_t opcode_func_0b6(insn_t insn, reg_t pc); -reg_t opcode_func_0b7(insn_t insn, reg_t pc); -reg_t opcode_func_0b8(insn_t insn, reg_t pc); -reg_t opcode_func_0b9(insn_t insn, reg_t pc); -reg_t opcode_func_0ba(insn_t insn, reg_t pc); -reg_t opcode_func_0bb(insn_t insn, reg_t pc); -reg_t opcode_func_0bc(insn_t insn, reg_t pc); -reg_t opcode_func_0bd(insn_t insn, reg_t pc); -reg_t opcode_func_0be(insn_t insn, reg_t pc); -reg_t opcode_func_0bf(insn_t insn, reg_t pc); -reg_t opcode_func_0c0(insn_t insn, reg_t pc); -reg_t opcode_func_0c1(insn_t insn, reg_t pc); -reg_t opcode_func_0c2(insn_t insn, reg_t pc); -reg_t opcode_func_0c3(insn_t insn, reg_t pc); -reg_t opcode_func_0c4(insn_t insn, reg_t pc); -reg_t opcode_func_0c5(insn_t insn, reg_t pc); -reg_t opcode_func_0c6(insn_t insn, reg_t pc); -reg_t opcode_func_0c7(insn_t insn, reg_t pc); -reg_t opcode_func_0c8(insn_t insn, reg_t pc); -reg_t opcode_func_0c9(insn_t insn, reg_t pc); -reg_t opcode_func_0ca(insn_t insn, reg_t pc); -reg_t opcode_func_0cb(insn_t insn, reg_t pc); -reg_t opcode_func_0cc(insn_t insn, reg_t pc); -reg_t opcode_func_0cd(insn_t insn, reg_t pc); -reg_t opcode_func_0ce(insn_t insn, reg_t pc); -reg_t opcode_func_0cf(insn_t insn, reg_t pc); -reg_t opcode_func_0d0(insn_t insn, reg_t pc); -reg_t opcode_func_0d1(insn_t insn, reg_t pc); -reg_t opcode_func_0d2(insn_t insn, reg_t pc); -reg_t opcode_func_0d3(insn_t insn, reg_t pc); -reg_t opcode_func_0d4(insn_t insn, reg_t pc); -reg_t opcode_func_0d5(insn_t insn, reg_t pc); -reg_t opcode_func_0d6(insn_t insn, reg_t pc); -reg_t opcode_func_0d7(insn_t insn, reg_t pc); -reg_t opcode_func_0d8(insn_t insn, reg_t pc); -reg_t opcode_func_0d9(insn_t insn, reg_t pc); -reg_t opcode_func_0da(insn_t insn, reg_t pc); -reg_t opcode_func_0db(insn_t insn, reg_t pc); -reg_t opcode_func_0dc(insn_t insn, reg_t pc); -reg_t opcode_func_0dd(insn_t insn, reg_t pc); -reg_t opcode_func_0de(insn_t insn, reg_t pc); -reg_t opcode_func_0df(insn_t insn, reg_t pc); -reg_t opcode_func_0e0(insn_t insn, reg_t pc); -reg_t opcode_func_0e1(insn_t insn, reg_t pc); -reg_t opcode_func_0e2(insn_t insn, reg_t pc); -reg_t opcode_func_0e3(insn_t insn, reg_t pc); -reg_t opcode_func_0e4(insn_t insn, reg_t pc); -reg_t opcode_func_0e5(insn_t insn, reg_t pc); -reg_t opcode_func_0e6(insn_t insn, reg_t pc); -reg_t opcode_func_0e7(insn_t insn, reg_t pc); -reg_t opcode_func_0e8(insn_t insn, reg_t pc); -reg_t opcode_func_0e9(insn_t insn, reg_t pc); -reg_t opcode_func_0ea(insn_t insn, reg_t pc); -reg_t opcode_func_0eb(insn_t insn, reg_t pc); -reg_t opcode_func_0ec(insn_t insn, reg_t pc); -reg_t opcode_func_0ed(insn_t insn, reg_t pc); -reg_t opcode_func_0ee(insn_t insn, reg_t pc); -reg_t opcode_func_0ef(insn_t insn, reg_t pc); -reg_t opcode_func_0f0(insn_t insn, reg_t pc); -reg_t opcode_func_0f1(insn_t insn, reg_t pc); -reg_t opcode_func_0f2(insn_t insn, reg_t pc); -reg_t opcode_func_0f3(insn_t insn, reg_t pc); -reg_t opcode_func_0f4(insn_t insn, reg_t pc); -reg_t opcode_func_0f5(insn_t insn, reg_t pc); -reg_t opcode_func_0f6(insn_t insn, reg_t pc); -reg_t opcode_func_0f7(insn_t insn, reg_t pc); -reg_t opcode_func_0f8(insn_t insn, reg_t pc); -reg_t opcode_func_0f9(insn_t insn, reg_t pc); -reg_t opcode_func_0fa(insn_t insn, reg_t pc); -reg_t opcode_func_0fb(insn_t insn, reg_t pc); -reg_t opcode_func_0fc(insn_t insn, reg_t pc); -reg_t opcode_func_0fd(insn_t insn, reg_t pc); -reg_t opcode_func_0fe(insn_t insn, reg_t pc); -reg_t opcode_func_0ff(insn_t insn, reg_t pc); -reg_t opcode_func_100(insn_t insn, reg_t pc); -reg_t opcode_func_101(insn_t insn, reg_t pc); -reg_t opcode_func_102(insn_t insn, reg_t pc); -reg_t opcode_func_103(insn_t insn, reg_t pc); -reg_t opcode_func_104(insn_t insn, reg_t pc); -reg_t opcode_func_105(insn_t insn, reg_t pc); -reg_t opcode_func_106(insn_t insn, reg_t pc); -reg_t opcode_func_107(insn_t insn, reg_t pc); -reg_t opcode_func_108(insn_t insn, reg_t pc); -reg_t opcode_func_109(insn_t insn, reg_t pc); -reg_t opcode_func_10a(insn_t insn, reg_t pc); -reg_t opcode_func_10b(insn_t insn, reg_t pc); -reg_t opcode_func_10c(insn_t insn, reg_t pc); -reg_t opcode_func_10d(insn_t insn, reg_t pc); -reg_t opcode_func_10e(insn_t insn, reg_t pc); -reg_t opcode_func_10f(insn_t insn, reg_t pc); -reg_t opcode_func_110(insn_t insn, reg_t pc); -reg_t opcode_func_111(insn_t insn, reg_t pc); -reg_t opcode_func_112(insn_t insn, reg_t pc); -reg_t opcode_func_113(insn_t insn, reg_t pc); -reg_t opcode_func_114(insn_t insn, reg_t pc); -reg_t opcode_func_115(insn_t insn, reg_t pc); -reg_t opcode_func_116(insn_t insn, reg_t pc); -reg_t opcode_func_117(insn_t insn, reg_t pc); -reg_t opcode_func_118(insn_t insn, reg_t pc); -reg_t opcode_func_119(insn_t insn, reg_t pc); -reg_t opcode_func_11a(insn_t insn, reg_t pc); -reg_t opcode_func_11b(insn_t insn, reg_t pc); -reg_t opcode_func_11c(insn_t insn, reg_t pc); -reg_t opcode_func_11d(insn_t insn, reg_t pc); -reg_t opcode_func_11e(insn_t insn, reg_t pc); -reg_t opcode_func_11f(insn_t insn, reg_t pc); -reg_t opcode_func_120(insn_t insn, reg_t pc); -reg_t opcode_func_121(insn_t insn, reg_t pc); -reg_t opcode_func_122(insn_t insn, reg_t pc); -reg_t opcode_func_123(insn_t insn, reg_t pc); -reg_t opcode_func_124(insn_t insn, reg_t pc); -reg_t opcode_func_125(insn_t insn, reg_t pc); -reg_t opcode_func_126(insn_t insn, reg_t pc); -reg_t opcode_func_127(insn_t insn, reg_t pc); -reg_t opcode_func_128(insn_t insn, reg_t pc); -reg_t opcode_func_129(insn_t insn, reg_t pc); -reg_t opcode_func_12a(insn_t insn, reg_t pc); -reg_t opcode_func_12b(insn_t insn, reg_t pc); -reg_t opcode_func_12c(insn_t insn, reg_t pc); -reg_t opcode_func_12d(insn_t insn, reg_t pc); -reg_t opcode_func_12e(insn_t insn, reg_t pc); -reg_t opcode_func_12f(insn_t insn, reg_t pc); -reg_t opcode_func_130(insn_t insn, reg_t pc); -reg_t opcode_func_131(insn_t insn, reg_t pc); -reg_t opcode_func_132(insn_t insn, reg_t pc); -reg_t opcode_func_133(insn_t insn, reg_t pc); -reg_t opcode_func_134(insn_t insn, reg_t pc); -reg_t opcode_func_135(insn_t insn, reg_t pc); -reg_t opcode_func_136(insn_t insn, reg_t pc); -reg_t opcode_func_137(insn_t insn, reg_t pc); -reg_t opcode_func_138(insn_t insn, reg_t pc); -reg_t opcode_func_139(insn_t insn, reg_t pc); -reg_t opcode_func_13a(insn_t insn, reg_t pc); -reg_t opcode_func_13b(insn_t insn, reg_t pc); -reg_t opcode_func_13c(insn_t insn, reg_t pc); -reg_t opcode_func_13d(insn_t insn, reg_t pc); -reg_t opcode_func_13e(insn_t insn, reg_t pc); -reg_t opcode_func_13f(insn_t insn, reg_t pc); -reg_t opcode_func_140(insn_t insn, reg_t pc); -reg_t opcode_func_141(insn_t insn, reg_t pc); -reg_t opcode_func_142(insn_t insn, reg_t pc); -reg_t opcode_func_143(insn_t insn, reg_t pc); -reg_t opcode_func_144(insn_t insn, reg_t pc); -reg_t opcode_func_145(insn_t insn, reg_t pc); -reg_t opcode_func_146(insn_t insn, reg_t pc); -reg_t opcode_func_147(insn_t insn, reg_t pc); -reg_t opcode_func_148(insn_t insn, reg_t pc); -reg_t opcode_func_149(insn_t insn, reg_t pc); -reg_t opcode_func_14a(insn_t insn, reg_t pc); -reg_t opcode_func_14b(insn_t insn, reg_t pc); -reg_t opcode_func_14c(insn_t insn, reg_t pc); -reg_t opcode_func_14d(insn_t insn, reg_t pc); -reg_t opcode_func_14e(insn_t insn, reg_t pc); -reg_t opcode_func_14f(insn_t insn, reg_t pc); -reg_t opcode_func_150(insn_t insn, reg_t pc); -reg_t opcode_func_151(insn_t insn, reg_t pc); -reg_t opcode_func_152(insn_t insn, reg_t pc); -reg_t opcode_func_153(insn_t insn, reg_t pc); -reg_t opcode_func_154(insn_t insn, reg_t pc); -reg_t opcode_func_155(insn_t insn, reg_t pc); -reg_t opcode_func_156(insn_t insn, reg_t pc); -reg_t opcode_func_157(insn_t insn, reg_t pc); -reg_t opcode_func_158(insn_t insn, reg_t pc); -reg_t opcode_func_159(insn_t insn, reg_t pc); -reg_t opcode_func_15a(insn_t insn, reg_t pc); -reg_t opcode_func_15b(insn_t insn, reg_t pc); -reg_t opcode_func_15c(insn_t insn, reg_t pc); -reg_t opcode_func_15d(insn_t insn, reg_t pc); -reg_t opcode_func_15e(insn_t insn, reg_t pc); -reg_t opcode_func_15f(insn_t insn, reg_t pc); -reg_t opcode_func_160(insn_t insn, reg_t pc); -reg_t opcode_func_161(insn_t insn, reg_t pc); -reg_t opcode_func_162(insn_t insn, reg_t pc); -reg_t opcode_func_163(insn_t insn, reg_t pc); -reg_t opcode_func_164(insn_t insn, reg_t pc); -reg_t opcode_func_165(insn_t insn, reg_t pc); -reg_t opcode_func_166(insn_t insn, reg_t pc); -reg_t opcode_func_167(insn_t insn, reg_t pc); -reg_t opcode_func_168(insn_t insn, reg_t pc); -reg_t opcode_func_169(insn_t insn, reg_t pc); -reg_t opcode_func_16a(insn_t insn, reg_t pc); -reg_t opcode_func_16b(insn_t insn, reg_t pc); -reg_t opcode_func_16c(insn_t insn, reg_t pc); -reg_t opcode_func_16d(insn_t insn, reg_t pc); -reg_t opcode_func_16e(insn_t insn, reg_t pc); -reg_t opcode_func_16f(insn_t insn, reg_t pc); -reg_t opcode_func_170(insn_t insn, reg_t pc); -reg_t opcode_func_171(insn_t insn, reg_t pc); -reg_t opcode_func_172(insn_t insn, reg_t pc); -reg_t opcode_func_173(insn_t insn, reg_t pc); -reg_t opcode_func_174(insn_t insn, reg_t pc); -reg_t opcode_func_175(insn_t insn, reg_t pc); -reg_t opcode_func_176(insn_t insn, reg_t pc); -reg_t opcode_func_177(insn_t insn, reg_t pc); -reg_t opcode_func_178(insn_t insn, reg_t pc); -reg_t opcode_func_179(insn_t insn, reg_t pc); -reg_t opcode_func_17a(insn_t insn, reg_t pc); -reg_t opcode_func_17b(insn_t insn, reg_t pc); -reg_t opcode_func_17c(insn_t insn, reg_t pc); -reg_t opcode_func_17d(insn_t insn, reg_t pc); -reg_t opcode_func_17e(insn_t insn, reg_t pc); -reg_t opcode_func_17f(insn_t insn, reg_t pc); -reg_t opcode_func_180(insn_t insn, reg_t pc); -reg_t opcode_func_181(insn_t insn, reg_t pc); -reg_t opcode_func_182(insn_t insn, reg_t pc); -reg_t opcode_func_183(insn_t insn, reg_t pc); -reg_t opcode_func_184(insn_t insn, reg_t pc); -reg_t opcode_func_185(insn_t insn, reg_t pc); -reg_t opcode_func_186(insn_t insn, reg_t pc); -reg_t opcode_func_187(insn_t insn, reg_t pc); -reg_t opcode_func_188(insn_t insn, reg_t pc); -reg_t opcode_func_189(insn_t insn, reg_t pc); -reg_t opcode_func_18a(insn_t insn, reg_t pc); -reg_t opcode_func_18b(insn_t insn, reg_t pc); -reg_t opcode_func_18c(insn_t insn, reg_t pc); -reg_t opcode_func_18d(insn_t insn, reg_t pc); -reg_t opcode_func_18e(insn_t insn, reg_t pc); -reg_t opcode_func_18f(insn_t insn, reg_t pc); -reg_t opcode_func_190(insn_t insn, reg_t pc); -reg_t opcode_func_191(insn_t insn, reg_t pc); -reg_t opcode_func_192(insn_t insn, reg_t pc); -reg_t opcode_func_193(insn_t insn, reg_t pc); -reg_t opcode_func_194(insn_t insn, reg_t pc); -reg_t opcode_func_195(insn_t insn, reg_t pc); -reg_t opcode_func_196(insn_t insn, reg_t pc); -reg_t opcode_func_197(insn_t insn, reg_t pc); -reg_t opcode_func_198(insn_t insn, reg_t pc); -reg_t opcode_func_199(insn_t insn, reg_t pc); -reg_t opcode_func_19a(insn_t insn, reg_t pc); -reg_t opcode_func_19b(insn_t insn, reg_t pc); -reg_t opcode_func_19c(insn_t insn, reg_t pc); -reg_t opcode_func_19d(insn_t insn, reg_t pc); -reg_t opcode_func_19e(insn_t insn, reg_t pc); -reg_t opcode_func_19f(insn_t insn, reg_t pc); -reg_t opcode_func_1a0(insn_t insn, reg_t pc); -reg_t opcode_func_1a1(insn_t insn, reg_t pc); -reg_t opcode_func_1a2(insn_t insn, reg_t pc); -reg_t opcode_func_1a3(insn_t insn, reg_t pc); -reg_t opcode_func_1a4(insn_t insn, reg_t pc); -reg_t opcode_func_1a5(insn_t insn, reg_t pc); -reg_t opcode_func_1a6(insn_t insn, reg_t pc); -reg_t opcode_func_1a7(insn_t insn, reg_t pc); -reg_t opcode_func_1a8(insn_t insn, reg_t pc); -reg_t opcode_func_1a9(insn_t insn, reg_t pc); -reg_t opcode_func_1aa(insn_t insn, reg_t pc); -reg_t opcode_func_1ab(insn_t insn, reg_t pc); -reg_t opcode_func_1ac(insn_t insn, reg_t pc); -reg_t opcode_func_1ad(insn_t insn, reg_t pc); -reg_t opcode_func_1ae(insn_t insn, reg_t pc); -reg_t opcode_func_1af(insn_t insn, reg_t pc); -reg_t opcode_func_1b0(insn_t insn, reg_t pc); -reg_t opcode_func_1b1(insn_t insn, reg_t pc); -reg_t opcode_func_1b2(insn_t insn, reg_t pc); -reg_t opcode_func_1b3(insn_t insn, reg_t pc); -reg_t opcode_func_1b4(insn_t insn, reg_t pc); -reg_t opcode_func_1b5(insn_t insn, reg_t pc); -reg_t opcode_func_1b6(insn_t insn, reg_t pc); -reg_t opcode_func_1b7(insn_t insn, reg_t pc); -reg_t opcode_func_1b8(insn_t insn, reg_t pc); -reg_t opcode_func_1b9(insn_t insn, reg_t pc); -reg_t opcode_func_1ba(insn_t insn, reg_t pc); -reg_t opcode_func_1bb(insn_t insn, reg_t pc); -reg_t opcode_func_1bc(insn_t insn, reg_t pc); -reg_t opcode_func_1bd(insn_t insn, reg_t pc); -reg_t opcode_func_1be(insn_t insn, reg_t pc); -reg_t opcode_func_1bf(insn_t insn, reg_t pc); -reg_t opcode_func_1c0(insn_t insn, reg_t pc); -reg_t opcode_func_1c1(insn_t insn, reg_t pc); -reg_t opcode_func_1c2(insn_t insn, reg_t pc); -reg_t opcode_func_1c3(insn_t insn, reg_t pc); -reg_t opcode_func_1c4(insn_t insn, reg_t pc); -reg_t opcode_func_1c5(insn_t insn, reg_t pc); -reg_t opcode_func_1c6(insn_t insn, reg_t pc); -reg_t opcode_func_1c7(insn_t insn, reg_t pc); -reg_t opcode_func_1c8(insn_t insn, reg_t pc); -reg_t opcode_func_1c9(insn_t insn, reg_t pc); -reg_t opcode_func_1ca(insn_t insn, reg_t pc); -reg_t opcode_func_1cb(insn_t insn, reg_t pc); -reg_t opcode_func_1cc(insn_t insn, reg_t pc); -reg_t opcode_func_1cd(insn_t insn, reg_t pc); -reg_t opcode_func_1ce(insn_t insn, reg_t pc); -reg_t opcode_func_1cf(insn_t insn, reg_t pc); -reg_t opcode_func_1d0(insn_t insn, reg_t pc); -reg_t opcode_func_1d1(insn_t insn, reg_t pc); -reg_t opcode_func_1d2(insn_t insn, reg_t pc); -reg_t opcode_func_1d3(insn_t insn, reg_t pc); -reg_t opcode_func_1d4(insn_t insn, reg_t pc); -reg_t opcode_func_1d5(insn_t insn, reg_t pc); -reg_t opcode_func_1d6(insn_t insn, reg_t pc); -reg_t opcode_func_1d7(insn_t insn, reg_t pc); -reg_t opcode_func_1d8(insn_t insn, reg_t pc); -reg_t opcode_func_1d9(insn_t insn, reg_t pc); -reg_t opcode_func_1da(insn_t insn, reg_t pc); -reg_t opcode_func_1db(insn_t insn, reg_t pc); -reg_t opcode_func_1dc(insn_t insn, reg_t pc); -reg_t opcode_func_1dd(insn_t insn, reg_t pc); -reg_t opcode_func_1de(insn_t insn, reg_t pc); -reg_t opcode_func_1df(insn_t insn, reg_t pc); -reg_t opcode_func_1e0(insn_t insn, reg_t pc); -reg_t opcode_func_1e1(insn_t insn, reg_t pc); -reg_t opcode_func_1e2(insn_t insn, reg_t pc); -reg_t opcode_func_1e3(insn_t insn, reg_t pc); -reg_t opcode_func_1e4(insn_t insn, reg_t pc); -reg_t opcode_func_1e5(insn_t insn, reg_t pc); -reg_t opcode_func_1e6(insn_t insn, reg_t pc); -reg_t opcode_func_1e7(insn_t insn, reg_t pc); -reg_t opcode_func_1e8(insn_t insn, reg_t pc); -reg_t opcode_func_1e9(insn_t insn, reg_t pc); -reg_t opcode_func_1ea(insn_t insn, reg_t pc); -reg_t opcode_func_1eb(insn_t insn, reg_t pc); -reg_t opcode_func_1ec(insn_t insn, reg_t pc); -reg_t opcode_func_1ed(insn_t insn, reg_t pc); -reg_t opcode_func_1ee(insn_t insn, reg_t pc); -reg_t opcode_func_1ef(insn_t insn, reg_t pc); -reg_t opcode_func_1f0(insn_t insn, reg_t pc); -reg_t opcode_func_1f1(insn_t insn, reg_t pc); -reg_t opcode_func_1f2(insn_t insn, reg_t pc); -reg_t opcode_func_1f3(insn_t insn, reg_t pc); -reg_t opcode_func_1f4(insn_t insn, reg_t pc); -reg_t opcode_func_1f5(insn_t insn, reg_t pc); -reg_t opcode_func_1f6(insn_t insn, reg_t pc); -reg_t opcode_func_1f7(insn_t insn, reg_t pc); -reg_t opcode_func_1f8(insn_t insn, reg_t pc); -reg_t opcode_func_1f9(insn_t insn, reg_t pc); -reg_t opcode_func_1fa(insn_t insn, reg_t pc); -reg_t opcode_func_1fb(insn_t insn, reg_t pc); -reg_t opcode_func_1fc(insn_t insn, reg_t pc); -reg_t opcode_func_1fd(insn_t insn, reg_t pc); -reg_t opcode_func_1fe(insn_t insn, reg_t pc); -reg_t opcode_func_1ff(insn_t insn, reg_t pc); -reg_t opcode_func_200(insn_t insn, reg_t pc); -reg_t opcode_func_201(insn_t insn, reg_t pc); -reg_t opcode_func_202(insn_t insn, reg_t pc); -reg_t opcode_func_203(insn_t insn, reg_t pc); -reg_t opcode_func_204(insn_t insn, reg_t pc); -reg_t opcode_func_205(insn_t insn, reg_t pc); -reg_t opcode_func_206(insn_t insn, reg_t pc); -reg_t opcode_func_207(insn_t insn, reg_t pc); -reg_t opcode_func_208(insn_t insn, reg_t pc); -reg_t opcode_func_209(insn_t insn, reg_t pc); -reg_t opcode_func_20a(insn_t insn, reg_t pc); -reg_t opcode_func_20b(insn_t insn, reg_t pc); -reg_t opcode_func_20c(insn_t insn, reg_t pc); -reg_t opcode_func_20d(insn_t insn, reg_t pc); -reg_t opcode_func_20e(insn_t insn, reg_t pc); -reg_t opcode_func_20f(insn_t insn, reg_t pc); -reg_t opcode_func_210(insn_t insn, reg_t pc); -reg_t opcode_func_211(insn_t insn, reg_t pc); -reg_t opcode_func_212(insn_t insn, reg_t pc); -reg_t opcode_func_213(insn_t insn, reg_t pc); -reg_t opcode_func_214(insn_t insn, reg_t pc); -reg_t opcode_func_215(insn_t insn, reg_t pc); -reg_t opcode_func_216(insn_t insn, reg_t pc); -reg_t opcode_func_217(insn_t insn, reg_t pc); -reg_t opcode_func_218(insn_t insn, reg_t pc); -reg_t opcode_func_219(insn_t insn, reg_t pc); -reg_t opcode_func_21a(insn_t insn, reg_t pc); -reg_t opcode_func_21b(insn_t insn, reg_t pc); -reg_t opcode_func_21c(insn_t insn, reg_t pc); -reg_t opcode_func_21d(insn_t insn, reg_t pc); -reg_t opcode_func_21e(insn_t insn, reg_t pc); -reg_t opcode_func_21f(insn_t insn, reg_t pc); -reg_t opcode_func_220(insn_t insn, reg_t pc); -reg_t opcode_func_221(insn_t insn, reg_t pc); -reg_t opcode_func_222(insn_t insn, reg_t pc); -reg_t opcode_func_223(insn_t insn, reg_t pc); -reg_t opcode_func_224(insn_t insn, reg_t pc); -reg_t opcode_func_225(insn_t insn, reg_t pc); -reg_t opcode_func_226(insn_t insn, reg_t pc); -reg_t opcode_func_227(insn_t insn, reg_t pc); -reg_t opcode_func_228(insn_t insn, reg_t pc); -reg_t opcode_func_229(insn_t insn, reg_t pc); -reg_t opcode_func_22a(insn_t insn, reg_t pc); -reg_t opcode_func_22b(insn_t insn, reg_t pc); -reg_t opcode_func_22c(insn_t insn, reg_t pc); -reg_t opcode_func_22d(insn_t insn, reg_t pc); -reg_t opcode_func_22e(insn_t insn, reg_t pc); -reg_t opcode_func_22f(insn_t insn, reg_t pc); -reg_t opcode_func_230(insn_t insn, reg_t pc); -reg_t opcode_func_231(insn_t insn, reg_t pc); -reg_t opcode_func_232(insn_t insn, reg_t pc); -reg_t opcode_func_233(insn_t insn, reg_t pc); -reg_t opcode_func_234(insn_t insn, reg_t pc); -reg_t opcode_func_235(insn_t insn, reg_t pc); -reg_t opcode_func_236(insn_t insn, reg_t pc); -reg_t opcode_func_237(insn_t insn, reg_t pc); -reg_t opcode_func_238(insn_t insn, reg_t pc); -reg_t opcode_func_239(insn_t insn, reg_t pc); -reg_t opcode_func_23a(insn_t insn, reg_t pc); -reg_t opcode_func_23b(insn_t insn, reg_t pc); -reg_t opcode_func_23c(insn_t insn, reg_t pc); -reg_t opcode_func_23d(insn_t insn, reg_t pc); -reg_t opcode_func_23e(insn_t insn, reg_t pc); -reg_t opcode_func_23f(insn_t insn, reg_t pc); -reg_t opcode_func_240(insn_t insn, reg_t pc); -reg_t opcode_func_241(insn_t insn, reg_t pc); -reg_t opcode_func_242(insn_t insn, reg_t pc); -reg_t opcode_func_243(insn_t insn, reg_t pc); -reg_t opcode_func_244(insn_t insn, reg_t pc); -reg_t opcode_func_245(insn_t insn, reg_t pc); -reg_t opcode_func_246(insn_t insn, reg_t pc); -reg_t opcode_func_247(insn_t insn, reg_t pc); -reg_t opcode_func_248(insn_t insn, reg_t pc); -reg_t opcode_func_249(insn_t insn, reg_t pc); -reg_t opcode_func_24a(insn_t insn, reg_t pc); -reg_t opcode_func_24b(insn_t insn, reg_t pc); -reg_t opcode_func_24c(insn_t insn, reg_t pc); -reg_t opcode_func_24d(insn_t insn, reg_t pc); -reg_t opcode_func_24e(insn_t insn, reg_t pc); -reg_t opcode_func_24f(insn_t insn, reg_t pc); -reg_t opcode_func_250(insn_t insn, reg_t pc); -reg_t opcode_func_251(insn_t insn, reg_t pc); -reg_t opcode_func_252(insn_t insn, reg_t pc); -reg_t opcode_func_253(insn_t insn, reg_t pc); -reg_t opcode_func_254(insn_t insn, reg_t pc); -reg_t opcode_func_255(insn_t insn, reg_t pc); -reg_t opcode_func_256(insn_t insn, reg_t pc); -reg_t opcode_func_257(insn_t insn, reg_t pc); -reg_t opcode_func_258(insn_t insn, reg_t pc); -reg_t opcode_func_259(insn_t insn, reg_t pc); -reg_t opcode_func_25a(insn_t insn, reg_t pc); -reg_t opcode_func_25b(insn_t insn, reg_t pc); -reg_t opcode_func_25c(insn_t insn, reg_t pc); -reg_t opcode_func_25d(insn_t insn, reg_t pc); -reg_t opcode_func_25e(insn_t insn, reg_t pc); -reg_t opcode_func_25f(insn_t insn, reg_t pc); -reg_t opcode_func_260(insn_t insn, reg_t pc); -reg_t opcode_func_261(insn_t insn, reg_t pc); -reg_t opcode_func_262(insn_t insn, reg_t pc); -reg_t opcode_func_263(insn_t insn, reg_t pc); -reg_t opcode_func_264(insn_t insn, reg_t pc); -reg_t opcode_func_265(insn_t insn, reg_t pc); -reg_t opcode_func_266(insn_t insn, reg_t pc); -reg_t opcode_func_267(insn_t insn, reg_t pc); -reg_t opcode_func_268(insn_t insn, reg_t pc); -reg_t opcode_func_269(insn_t insn, reg_t pc); -reg_t opcode_func_26a(insn_t insn, reg_t pc); -reg_t opcode_func_26b(insn_t insn, reg_t pc); -reg_t opcode_func_26c(insn_t insn, reg_t pc); -reg_t opcode_func_26d(insn_t insn, reg_t pc); -reg_t opcode_func_26e(insn_t insn, reg_t pc); -reg_t opcode_func_26f(insn_t insn, reg_t pc); -reg_t opcode_func_270(insn_t insn, reg_t pc); -reg_t opcode_func_271(insn_t insn, reg_t pc); -reg_t opcode_func_272(insn_t insn, reg_t pc); -reg_t opcode_func_273(insn_t insn, reg_t pc); -reg_t opcode_func_274(insn_t insn, reg_t pc); -reg_t opcode_func_275(insn_t insn, reg_t pc); -reg_t opcode_func_276(insn_t insn, reg_t pc); -reg_t opcode_func_277(insn_t insn, reg_t pc); -reg_t opcode_func_278(insn_t insn, reg_t pc); -reg_t opcode_func_279(insn_t insn, reg_t pc); -reg_t opcode_func_27a(insn_t insn, reg_t pc); -reg_t opcode_func_27b(insn_t insn, reg_t pc); -reg_t opcode_func_27c(insn_t insn, reg_t pc); -reg_t opcode_func_27d(insn_t insn, reg_t pc); -reg_t opcode_func_27e(insn_t insn, reg_t pc); -reg_t opcode_func_27f(insn_t insn, reg_t pc); -reg_t opcode_func_280(insn_t insn, reg_t pc); -reg_t opcode_func_281(insn_t insn, reg_t pc); -reg_t opcode_func_282(insn_t insn, reg_t pc); -reg_t opcode_func_283(insn_t insn, reg_t pc); -reg_t opcode_func_284(insn_t insn, reg_t pc); -reg_t opcode_func_285(insn_t insn, reg_t pc); -reg_t opcode_func_286(insn_t insn, reg_t pc); -reg_t opcode_func_287(insn_t insn, reg_t pc); -reg_t opcode_func_288(insn_t insn, reg_t pc); -reg_t opcode_func_289(insn_t insn, reg_t pc); -reg_t opcode_func_28a(insn_t insn, reg_t pc); -reg_t opcode_func_28b(insn_t insn, reg_t pc); -reg_t opcode_func_28c(insn_t insn, reg_t pc); -reg_t opcode_func_28d(insn_t insn, reg_t pc); -reg_t opcode_func_28e(insn_t insn, reg_t pc); -reg_t opcode_func_28f(insn_t insn, reg_t pc); -reg_t opcode_func_290(insn_t insn, reg_t pc); -reg_t opcode_func_291(insn_t insn, reg_t pc); -reg_t opcode_func_292(insn_t insn, reg_t pc); -reg_t opcode_func_293(insn_t insn, reg_t pc); -reg_t opcode_func_294(insn_t insn, reg_t pc); -reg_t opcode_func_295(insn_t insn, reg_t pc); -reg_t opcode_func_296(insn_t insn, reg_t pc); -reg_t opcode_func_297(insn_t insn, reg_t pc); -reg_t opcode_func_298(insn_t insn, reg_t pc); -reg_t opcode_func_299(insn_t insn, reg_t pc); -reg_t opcode_func_29a(insn_t insn, reg_t pc); -reg_t opcode_func_29b(insn_t insn, reg_t pc); -reg_t opcode_func_29c(insn_t insn, reg_t pc); -reg_t opcode_func_29d(insn_t insn, reg_t pc); -reg_t opcode_func_29e(insn_t insn, reg_t pc); -reg_t opcode_func_29f(insn_t insn, reg_t pc); -reg_t opcode_func_2a0(insn_t insn, reg_t pc); -reg_t opcode_func_2a1(insn_t insn, reg_t pc); -reg_t opcode_func_2a2(insn_t insn, reg_t pc); -reg_t opcode_func_2a3(insn_t insn, reg_t pc); -reg_t opcode_func_2a4(insn_t insn, reg_t pc); -reg_t opcode_func_2a5(insn_t insn, reg_t pc); -reg_t opcode_func_2a6(insn_t insn, reg_t pc); -reg_t opcode_func_2a7(insn_t insn, reg_t pc); -reg_t opcode_func_2a8(insn_t insn, reg_t pc); -reg_t opcode_func_2a9(insn_t insn, reg_t pc); -reg_t opcode_func_2aa(insn_t insn, reg_t pc); -reg_t opcode_func_2ab(insn_t insn, reg_t pc); -reg_t opcode_func_2ac(insn_t insn, reg_t pc); -reg_t opcode_func_2ad(insn_t insn, reg_t pc); -reg_t opcode_func_2ae(insn_t insn, reg_t pc); -reg_t opcode_func_2af(insn_t insn, reg_t pc); -reg_t opcode_func_2b0(insn_t insn, reg_t pc); -reg_t opcode_func_2b1(insn_t insn, reg_t pc); -reg_t opcode_func_2b2(insn_t insn, reg_t pc); -reg_t opcode_func_2b3(insn_t insn, reg_t pc); -reg_t opcode_func_2b4(insn_t insn, reg_t pc); -reg_t opcode_func_2b5(insn_t insn, reg_t pc); -reg_t opcode_func_2b6(insn_t insn, reg_t pc); -reg_t opcode_func_2b7(insn_t insn, reg_t pc); -reg_t opcode_func_2b8(insn_t insn, reg_t pc); -reg_t opcode_func_2b9(insn_t insn, reg_t pc); -reg_t opcode_func_2ba(insn_t insn, reg_t pc); -reg_t opcode_func_2bb(insn_t insn, reg_t pc); -reg_t opcode_func_2bc(insn_t insn, reg_t pc); -reg_t opcode_func_2bd(insn_t insn, reg_t pc); -reg_t opcode_func_2be(insn_t insn, reg_t pc); -reg_t opcode_func_2bf(insn_t insn, reg_t pc); -reg_t opcode_func_2c0(insn_t insn, reg_t pc); -reg_t opcode_func_2c1(insn_t insn, reg_t pc); -reg_t opcode_func_2c2(insn_t insn, reg_t pc); -reg_t opcode_func_2c3(insn_t insn, reg_t pc); -reg_t opcode_func_2c4(insn_t insn, reg_t pc); -reg_t opcode_func_2c5(insn_t insn, reg_t pc); -reg_t opcode_func_2c6(insn_t insn, reg_t pc); -reg_t opcode_func_2c7(insn_t insn, reg_t pc); -reg_t opcode_func_2c8(insn_t insn, reg_t pc); -reg_t opcode_func_2c9(insn_t insn, reg_t pc); -reg_t opcode_func_2ca(insn_t insn, reg_t pc); -reg_t opcode_func_2cb(insn_t insn, reg_t pc); -reg_t opcode_func_2cc(insn_t insn, reg_t pc); -reg_t opcode_func_2cd(insn_t insn, reg_t pc); -reg_t opcode_func_2ce(insn_t insn, reg_t pc); -reg_t opcode_func_2cf(insn_t insn, reg_t pc); -reg_t opcode_func_2d0(insn_t insn, reg_t pc); -reg_t opcode_func_2d1(insn_t insn, reg_t pc); -reg_t opcode_func_2d2(insn_t insn, reg_t pc); -reg_t opcode_func_2d3(insn_t insn, reg_t pc); -reg_t opcode_func_2d4(insn_t insn, reg_t pc); -reg_t opcode_func_2d5(insn_t insn, reg_t pc); -reg_t opcode_func_2d6(insn_t insn, reg_t pc); -reg_t opcode_func_2d7(insn_t insn, reg_t pc); -reg_t opcode_func_2d8(insn_t insn, reg_t pc); -reg_t opcode_func_2d9(insn_t insn, reg_t pc); -reg_t opcode_func_2da(insn_t insn, reg_t pc); -reg_t opcode_func_2db(insn_t insn, reg_t pc); -reg_t opcode_func_2dc(insn_t insn, reg_t pc); -reg_t opcode_func_2dd(insn_t insn, reg_t pc); -reg_t opcode_func_2de(insn_t insn, reg_t pc); -reg_t opcode_func_2df(insn_t insn, reg_t pc); -reg_t opcode_func_2e0(insn_t insn, reg_t pc); -reg_t opcode_func_2e1(insn_t insn, reg_t pc); -reg_t opcode_func_2e2(insn_t insn, reg_t pc); -reg_t opcode_func_2e3(insn_t insn, reg_t pc); -reg_t opcode_func_2e4(insn_t insn, reg_t pc); -reg_t opcode_func_2e5(insn_t insn, reg_t pc); -reg_t opcode_func_2e6(insn_t insn, reg_t pc); -reg_t opcode_func_2e7(insn_t insn, reg_t pc); -reg_t opcode_func_2e8(insn_t insn, reg_t pc); -reg_t opcode_func_2e9(insn_t insn, reg_t pc); -reg_t opcode_func_2ea(insn_t insn, reg_t pc); -reg_t opcode_func_2eb(insn_t insn, reg_t pc); -reg_t opcode_func_2ec(insn_t insn, reg_t pc); -reg_t opcode_func_2ed(insn_t insn, reg_t pc); -reg_t opcode_func_2ee(insn_t insn, reg_t pc); -reg_t opcode_func_2ef(insn_t insn, reg_t pc); -reg_t opcode_func_2f0(insn_t insn, reg_t pc); -reg_t opcode_func_2f1(insn_t insn, reg_t pc); -reg_t opcode_func_2f2(insn_t insn, reg_t pc); -reg_t opcode_func_2f3(insn_t insn, reg_t pc); -reg_t opcode_func_2f4(insn_t insn, reg_t pc); -reg_t opcode_func_2f5(insn_t insn, reg_t pc); -reg_t opcode_func_2f6(insn_t insn, reg_t pc); -reg_t opcode_func_2f7(insn_t insn, reg_t pc); -reg_t opcode_func_2f8(insn_t insn, reg_t pc); -reg_t opcode_func_2f9(insn_t insn, reg_t pc); -reg_t opcode_func_2fa(insn_t insn, reg_t pc); -reg_t opcode_func_2fb(insn_t insn, reg_t pc); -reg_t opcode_func_2fc(insn_t insn, reg_t pc); -reg_t opcode_func_2fd(insn_t insn, reg_t pc); -reg_t opcode_func_2fe(insn_t insn, reg_t pc); -reg_t opcode_func_2ff(insn_t insn, reg_t pc); -reg_t opcode_func_300(insn_t insn, reg_t pc); -reg_t opcode_func_301(insn_t insn, reg_t pc); -reg_t opcode_func_302(insn_t insn, reg_t pc); -reg_t opcode_func_303(insn_t insn, reg_t pc); -reg_t opcode_func_304(insn_t insn, reg_t pc); -reg_t opcode_func_305(insn_t insn, reg_t pc); -reg_t opcode_func_306(insn_t insn, reg_t pc); -reg_t opcode_func_307(insn_t insn, reg_t pc); -reg_t opcode_func_308(insn_t insn, reg_t pc); -reg_t opcode_func_309(insn_t insn, reg_t pc); -reg_t opcode_func_30a(insn_t insn, reg_t pc); -reg_t opcode_func_30b(insn_t insn, reg_t pc); -reg_t opcode_func_30c(insn_t insn, reg_t pc); -reg_t opcode_func_30d(insn_t insn, reg_t pc); -reg_t opcode_func_30e(insn_t insn, reg_t pc); -reg_t opcode_func_30f(insn_t insn, reg_t pc); -reg_t opcode_func_310(insn_t insn, reg_t pc); -reg_t opcode_func_311(insn_t insn, reg_t pc); -reg_t opcode_func_312(insn_t insn, reg_t pc); -reg_t opcode_func_313(insn_t insn, reg_t pc); -reg_t opcode_func_314(insn_t insn, reg_t pc); -reg_t opcode_func_315(insn_t insn, reg_t pc); -reg_t opcode_func_316(insn_t insn, reg_t pc); -reg_t opcode_func_317(insn_t insn, reg_t pc); -reg_t opcode_func_318(insn_t insn, reg_t pc); -reg_t opcode_func_319(insn_t insn, reg_t pc); -reg_t opcode_func_31a(insn_t insn, reg_t pc); -reg_t opcode_func_31b(insn_t insn, reg_t pc); -reg_t opcode_func_31c(insn_t insn, reg_t pc); -reg_t opcode_func_31d(insn_t insn, reg_t pc); -reg_t opcode_func_31e(insn_t insn, reg_t pc); -reg_t opcode_func_31f(insn_t insn, reg_t pc); -reg_t opcode_func_320(insn_t insn, reg_t pc); -reg_t opcode_func_321(insn_t insn, reg_t pc); -reg_t opcode_func_322(insn_t insn, reg_t pc); -reg_t opcode_func_323(insn_t insn, reg_t pc); -reg_t opcode_func_324(insn_t insn, reg_t pc); -reg_t opcode_func_325(insn_t insn, reg_t pc); -reg_t opcode_func_326(insn_t insn, reg_t pc); -reg_t opcode_func_327(insn_t insn, reg_t pc); -reg_t opcode_func_328(insn_t insn, reg_t pc); -reg_t opcode_func_329(insn_t insn, reg_t pc); -reg_t opcode_func_32a(insn_t insn, reg_t pc); -reg_t opcode_func_32b(insn_t insn, reg_t pc); -reg_t opcode_func_32c(insn_t insn, reg_t pc); -reg_t opcode_func_32d(insn_t insn, reg_t pc); -reg_t opcode_func_32e(insn_t insn, reg_t pc); -reg_t opcode_func_32f(insn_t insn, reg_t pc); -reg_t opcode_func_330(insn_t insn, reg_t pc); -reg_t opcode_func_331(insn_t insn, reg_t pc); -reg_t opcode_func_332(insn_t insn, reg_t pc); -reg_t opcode_func_333(insn_t insn, reg_t pc); -reg_t opcode_func_334(insn_t insn, reg_t pc); -reg_t opcode_func_335(insn_t insn, reg_t pc); -reg_t opcode_func_336(insn_t insn, reg_t pc); -reg_t opcode_func_337(insn_t insn, reg_t pc); -reg_t opcode_func_338(insn_t insn, reg_t pc); -reg_t opcode_func_339(insn_t insn, reg_t pc); -reg_t opcode_func_33a(insn_t insn, reg_t pc); -reg_t opcode_func_33b(insn_t insn, reg_t pc); -reg_t opcode_func_33c(insn_t insn, reg_t pc); -reg_t opcode_func_33d(insn_t insn, reg_t pc); -reg_t opcode_func_33e(insn_t insn, reg_t pc); -reg_t opcode_func_33f(insn_t insn, reg_t pc); -reg_t opcode_func_340(insn_t insn, reg_t pc); -reg_t opcode_func_341(insn_t insn, reg_t pc); -reg_t opcode_func_342(insn_t insn, reg_t pc); -reg_t opcode_func_343(insn_t insn, reg_t pc); -reg_t opcode_func_344(insn_t insn, reg_t pc); -reg_t opcode_func_345(insn_t insn, reg_t pc); -reg_t opcode_func_346(insn_t insn, reg_t pc); -reg_t opcode_func_347(insn_t insn, reg_t pc); -reg_t opcode_func_348(insn_t insn, reg_t pc); -reg_t opcode_func_349(insn_t insn, reg_t pc); -reg_t opcode_func_34a(insn_t insn, reg_t pc); -reg_t opcode_func_34b(insn_t insn, reg_t pc); -reg_t opcode_func_34c(insn_t insn, reg_t pc); -reg_t opcode_func_34d(insn_t insn, reg_t pc); -reg_t opcode_func_34e(insn_t insn, reg_t pc); -reg_t opcode_func_34f(insn_t insn, reg_t pc); -reg_t opcode_func_350(insn_t insn, reg_t pc); -reg_t opcode_func_351(insn_t insn, reg_t pc); -reg_t opcode_func_352(insn_t insn, reg_t pc); -reg_t opcode_func_353(insn_t insn, reg_t pc); -reg_t opcode_func_354(insn_t insn, reg_t pc); -reg_t opcode_func_355(insn_t insn, reg_t pc); -reg_t opcode_func_356(insn_t insn, reg_t pc); -reg_t opcode_func_357(insn_t insn, reg_t pc); -reg_t opcode_func_358(insn_t insn, reg_t pc); -reg_t opcode_func_359(insn_t insn, reg_t pc); -reg_t opcode_func_35a(insn_t insn, reg_t pc); -reg_t opcode_func_35b(insn_t insn, reg_t pc); -reg_t opcode_func_35c(insn_t insn, reg_t pc); -reg_t opcode_func_35d(insn_t insn, reg_t pc); -reg_t opcode_func_35e(insn_t insn, reg_t pc); -reg_t opcode_func_35f(insn_t insn, reg_t pc); -reg_t opcode_func_360(insn_t insn, reg_t pc); -reg_t opcode_func_361(insn_t insn, reg_t pc); -reg_t opcode_func_362(insn_t insn, reg_t pc); -reg_t opcode_func_363(insn_t insn, reg_t pc); -reg_t opcode_func_364(insn_t insn, reg_t pc); -reg_t opcode_func_365(insn_t insn, reg_t pc); -reg_t opcode_func_366(insn_t insn, reg_t pc); -reg_t opcode_func_367(insn_t insn, reg_t pc); -reg_t opcode_func_368(insn_t insn, reg_t pc); -reg_t opcode_func_369(insn_t insn, reg_t pc); -reg_t opcode_func_36a(insn_t insn, reg_t pc); -reg_t opcode_func_36b(insn_t insn, reg_t pc); -reg_t opcode_func_36c(insn_t insn, reg_t pc); -reg_t opcode_func_36d(insn_t insn, reg_t pc); -reg_t opcode_func_36e(insn_t insn, reg_t pc); -reg_t opcode_func_36f(insn_t insn, reg_t pc); -reg_t opcode_func_370(insn_t insn, reg_t pc); -reg_t opcode_func_371(insn_t insn, reg_t pc); -reg_t opcode_func_372(insn_t insn, reg_t pc); -reg_t opcode_func_373(insn_t insn, reg_t pc); -reg_t opcode_func_374(insn_t insn, reg_t pc); -reg_t opcode_func_375(insn_t insn, reg_t pc); -reg_t opcode_func_376(insn_t insn, reg_t pc); -reg_t opcode_func_377(insn_t insn, reg_t pc); -reg_t opcode_func_378(insn_t insn, reg_t pc); -reg_t opcode_func_379(insn_t insn, reg_t pc); -reg_t opcode_func_37a(insn_t insn, reg_t pc); -reg_t opcode_func_37b(insn_t insn, reg_t pc); -reg_t opcode_func_37c(insn_t insn, reg_t pc); -reg_t opcode_func_37d(insn_t insn, reg_t pc); -reg_t opcode_func_37e(insn_t insn, reg_t pc); -reg_t opcode_func_37f(insn_t insn, reg_t pc); -reg_t opcode_func_380(insn_t insn, reg_t pc); -reg_t opcode_func_381(insn_t insn, reg_t pc); -reg_t opcode_func_382(insn_t insn, reg_t pc); -reg_t opcode_func_383(insn_t insn, reg_t pc); -reg_t opcode_func_384(insn_t insn, reg_t pc); -reg_t opcode_func_385(insn_t insn, reg_t pc); -reg_t opcode_func_386(insn_t insn, reg_t pc); -reg_t opcode_func_387(insn_t insn, reg_t pc); -reg_t opcode_func_388(insn_t insn, reg_t pc); -reg_t opcode_func_389(insn_t insn, reg_t pc); -reg_t opcode_func_38a(insn_t insn, reg_t pc); -reg_t opcode_func_38b(insn_t insn, reg_t pc); -reg_t opcode_func_38c(insn_t insn, reg_t pc); -reg_t opcode_func_38d(insn_t insn, reg_t pc); -reg_t opcode_func_38e(insn_t insn, reg_t pc); -reg_t opcode_func_38f(insn_t insn, reg_t pc); -reg_t opcode_func_390(insn_t insn, reg_t pc); -reg_t opcode_func_391(insn_t insn, reg_t pc); -reg_t opcode_func_392(insn_t insn, reg_t pc); -reg_t opcode_func_393(insn_t insn, reg_t pc); -reg_t opcode_func_394(insn_t insn, reg_t pc); -reg_t opcode_func_395(insn_t insn, reg_t pc); -reg_t opcode_func_396(insn_t insn, reg_t pc); -reg_t opcode_func_397(insn_t insn, reg_t pc); -reg_t opcode_func_398(insn_t insn, reg_t pc); -reg_t opcode_func_399(insn_t insn, reg_t pc); -reg_t opcode_func_39a(insn_t insn, reg_t pc); -reg_t opcode_func_39b(insn_t insn, reg_t pc); -reg_t opcode_func_39c(insn_t insn, reg_t pc); -reg_t opcode_func_39d(insn_t insn, reg_t pc); -reg_t opcode_func_39e(insn_t insn, reg_t pc); -reg_t opcode_func_39f(insn_t insn, reg_t pc); -reg_t opcode_func_3a0(insn_t insn, reg_t pc); -reg_t opcode_func_3a1(insn_t insn, reg_t pc); -reg_t opcode_func_3a2(insn_t insn, reg_t pc); -reg_t opcode_func_3a3(insn_t insn, reg_t pc); -reg_t opcode_func_3a4(insn_t insn, reg_t pc); -reg_t opcode_func_3a5(insn_t insn, reg_t pc); -reg_t opcode_func_3a6(insn_t insn, reg_t pc); -reg_t opcode_func_3a7(insn_t insn, reg_t pc); -reg_t opcode_func_3a8(insn_t insn, reg_t pc); -reg_t opcode_func_3a9(insn_t insn, reg_t pc); -reg_t opcode_func_3aa(insn_t insn, reg_t pc); -reg_t opcode_func_3ab(insn_t insn, reg_t pc); -reg_t opcode_func_3ac(insn_t insn, reg_t pc); -reg_t opcode_func_3ad(insn_t insn, reg_t pc); -reg_t opcode_func_3ae(insn_t insn, reg_t pc); -reg_t opcode_func_3af(insn_t insn, reg_t pc); -reg_t opcode_func_3b0(insn_t insn, reg_t pc); -reg_t opcode_func_3b1(insn_t insn, reg_t pc); -reg_t opcode_func_3b2(insn_t insn, reg_t pc); -reg_t opcode_func_3b3(insn_t insn, reg_t pc); -reg_t opcode_func_3b4(insn_t insn, reg_t pc); -reg_t opcode_func_3b5(insn_t insn, reg_t pc); -reg_t opcode_func_3b6(insn_t insn, reg_t pc); -reg_t opcode_func_3b7(insn_t insn, reg_t pc); -reg_t opcode_func_3b8(insn_t insn, reg_t pc); -reg_t opcode_func_3b9(insn_t insn, reg_t pc); -reg_t opcode_func_3ba(insn_t insn, reg_t pc); -reg_t opcode_func_3bb(insn_t insn, reg_t pc); -reg_t opcode_func_3bc(insn_t insn, reg_t pc); -reg_t opcode_func_3bd(insn_t insn, reg_t pc); -reg_t opcode_func_3be(insn_t insn, reg_t pc); -reg_t opcode_func_3bf(insn_t insn, reg_t pc); -reg_t opcode_func_3c0(insn_t insn, reg_t pc); -reg_t opcode_func_3c1(insn_t insn, reg_t pc); -reg_t opcode_func_3c2(insn_t insn, reg_t pc); -reg_t opcode_func_3c3(insn_t insn, reg_t pc); -reg_t opcode_func_3c4(insn_t insn, reg_t pc); -reg_t opcode_func_3c5(insn_t insn, reg_t pc); -reg_t opcode_func_3c6(insn_t insn, reg_t pc); -reg_t opcode_func_3c7(insn_t insn, reg_t pc); -reg_t opcode_func_3c8(insn_t insn, reg_t pc); -reg_t opcode_func_3c9(insn_t insn, reg_t pc); -reg_t opcode_func_3ca(insn_t insn, reg_t pc); -reg_t opcode_func_3cb(insn_t insn, reg_t pc); -reg_t opcode_func_3cc(insn_t insn, reg_t pc); -reg_t opcode_func_3cd(insn_t insn, reg_t pc); -reg_t opcode_func_3ce(insn_t insn, reg_t pc); -reg_t opcode_func_3cf(insn_t insn, reg_t pc); -reg_t opcode_func_3d0(insn_t insn, reg_t pc); -reg_t opcode_func_3d1(insn_t insn, reg_t pc); -reg_t opcode_func_3d2(insn_t insn, reg_t pc); -reg_t opcode_func_3d3(insn_t insn, reg_t pc); -reg_t opcode_func_3d4(insn_t insn, reg_t pc); -reg_t opcode_func_3d5(insn_t insn, reg_t pc); -reg_t opcode_func_3d6(insn_t insn, reg_t pc); -reg_t opcode_func_3d7(insn_t insn, reg_t pc); -reg_t opcode_func_3d8(insn_t insn, reg_t pc); -reg_t opcode_func_3d9(insn_t insn, reg_t pc); -reg_t opcode_func_3da(insn_t insn, reg_t pc); -reg_t opcode_func_3db(insn_t insn, reg_t pc); -reg_t opcode_func_3dc(insn_t insn, reg_t pc); -reg_t opcode_func_3dd(insn_t insn, reg_t pc); -reg_t opcode_func_3de(insn_t insn, reg_t pc); -reg_t opcode_func_3df(insn_t insn, reg_t pc); -reg_t opcode_func_3e0(insn_t insn, reg_t pc); -reg_t opcode_func_3e1(insn_t insn, reg_t pc); -reg_t opcode_func_3e2(insn_t insn, reg_t pc); -reg_t opcode_func_3e3(insn_t insn, reg_t pc); -reg_t opcode_func_3e4(insn_t insn, reg_t pc); -reg_t opcode_func_3e5(insn_t insn, reg_t pc); -reg_t opcode_func_3e6(insn_t insn, reg_t pc); -reg_t opcode_func_3e7(insn_t insn, reg_t pc); -reg_t opcode_func_3e8(insn_t insn, reg_t pc); -reg_t opcode_func_3e9(insn_t insn, reg_t pc); -reg_t opcode_func_3ea(insn_t insn, reg_t pc); -reg_t opcode_func_3eb(insn_t insn, reg_t pc); -reg_t opcode_func_3ec(insn_t insn, reg_t pc); -reg_t opcode_func_3ed(insn_t insn, reg_t pc); -reg_t opcode_func_3ee(insn_t insn, reg_t pc); -reg_t opcode_func_3ef(insn_t insn, reg_t pc); -reg_t opcode_func_3f0(insn_t insn, reg_t pc); -reg_t opcode_func_3f1(insn_t insn, reg_t pc); -reg_t opcode_func_3f2(insn_t insn, reg_t pc); -reg_t opcode_func_3f3(insn_t insn, reg_t pc); -reg_t opcode_func_3f4(insn_t insn, reg_t pc); -reg_t opcode_func_3f5(insn_t insn, reg_t pc); -reg_t opcode_func_3f6(insn_t insn, reg_t pc); -reg_t opcode_func_3f7(insn_t insn, reg_t pc); -reg_t opcode_func_3f8(insn_t insn, reg_t pc); -reg_t opcode_func_3f9(insn_t insn, reg_t pc); -reg_t opcode_func_3fa(insn_t insn, reg_t pc); -reg_t opcode_func_3fb(insn_t insn, reg_t pc); -reg_t opcode_func_3fc(insn_t insn, reg_t pc); -reg_t opcode_func_3fd(insn_t insn, reg_t pc); -reg_t opcode_func_3fe(insn_t insn, reg_t pc); -reg_t opcode_func_3ff(insn_t insn, reg_t pc); diff --git a/riscv/insn_footer.h b/riscv/insn_footer.h new file mode 100644 index 0000000..0d53966 --- /dev/null +++ b/riscv/insn_footer.h @@ -0,0 +1,2 @@ + return npc; +} diff --git a/riscv/insn_header.h b/riscv/insn_header.h new file mode 100644 index 0000000..6a8f818 --- /dev/null +++ b/riscv/insn_header.h @@ -0,0 +1,22 @@ +#include "processor.h" +#include "common.h" +#include "config.h" +#include "sim.h" +#include "softfloat.h" +#include "platform.h" // softfloat isNaNF32UI, etc. +#include "internals.h" // ditto + +#define DECLARE_INSN(name, opcode, mask) \ + const uint32_t MATCH_ ## name = opcode; \ + const uint32_t MASK_ ## name = mask; +#include "opcodes.h" +#undef DECLARE_INSN + +reg_t processor_t::FUNC (insn_t insn, reg_t pc) +{ + #define MASK (~(DISPATCH_TABLE_SIZE-1) & OPCODE_MASK) + #define MATCH (~(DISPATCH_TABLE_SIZE-1) & OPCODE_MATCH) + if(unlikely((insn.bits & MASK) != MATCH)) + throw trap_illegal_instruction; + + reg_t npc = pc + insn_length(OPCODE_MATCH); diff --git a/riscv/insn_includes.h b/riscv/insn_includes.h deleted file mode 100644 index 9496572..0000000 --- a/riscv/insn_includes.h +++ /dev/null @@ -1,7 +0,0 @@ -#include "processor.h" -#include "common.h" -#include "config.h" -#include "sim.h" -#include "softfloat.h" -#include "platform.h" // softfloat isNaNF32UI, etc. -#include "internals.h" // ditto diff --git a/riscv/insns/jalr_j.h b/riscv/insns/jalr_j.h index 5e9bb49..0d2ef12 100644 --- a/riscv/insns/jalr_j.h +++ b/riscv/insns/jalr_j.h @@ -1 +1 @@ -#include "jalr_c.h" +#include "insns/jalr_c.h" diff --git a/riscv/insns/jalr_r.h b/riscv/insns/jalr_r.h index 5e9bb49..0d2ef12 100644 --- a/riscv/insns/jalr_r.h +++ b/riscv/insns/jalr_r.h @@ -1 +1 @@ -#include "jalr_c.h" +#include "insns/jalr_c.h" diff --git a/riscv/opcodes.h b/riscv/opcodes.h new file mode 100644 index 0000000..b37b833 --- /dev/null +++ b/riscv/opcodes.h @@ -0,0 +1,272 @@ +DECLARE_INSN(movn, 0x6f7, 0x1ffff) +DECLARE_INSN(vfsstw, 0x150f, 0x1ffff) +DECLARE_INSN(remuw, 0x7bb, 0x1ffff) +DECLARE_INSN(fmin_d, 0x180d3, 0x1ffff) +DECLARE_INSN(vlsthu, 0x128b, 0x1ffff) +DECLARE_INSN(c_swsp, 0x8, 0x1f) +DECLARE_INSN(bltu, 0x363, 0x3ff) +DECLARE_INSN(vlsegstwu, 0xb0b, 0xfff) +DECLARE_INSN(movz, 0x2f7, 0x1ffff) +DECLARE_INSN(fcvt_lu_s, 0x9053, 0x3ff1ff) +DECLARE_INSN(fence_l_cv, 0x32f, 0x3ff) +DECLARE_INSN(fmin_s, 0x18053, 0x1ffff) +DECLARE_INSN(c_lw0, 0x12, 0x801f) +DECLARE_INSN(slliw, 0x9b, 0x3f83ff) +DECLARE_INSN(lb, 0x3, 0x3ff) +DECLARE_INSN(vlwu, 0x30b, 0x3fffff) +DECLARE_INSN(fcvt_d_l, 0xc0d3, 0x3ff1ff) +DECLARE_INSN(lh, 0x83, 0x3ff) +DECLARE_INSN(fcvt_d_w, 0xe0d3, 0x3ff1ff) +DECLARE_INSN(lw, 0x103, 0x3ff) +DECLARE_INSN(add, 0x33, 0x1ffff) +DECLARE_INSN(fcvt_d_s, 0x100d3, 0x3ff1ff) +DECLARE_INSN(fence_g_v, 0x2af, 0x3ff) +DECLARE_INSN(mfpcr, 0x17b, 0x7c1ffff) +DECLARE_INSN(c_fsd, 0x18, 0x1f) +DECLARE_INSN(fmax_d, 0x190d3, 0x1ffff) +DECLARE_INSN(bne, 0xe3, 0x3ff) +DECLARE_INSN(rdcycle, 0x277, 0x7ffffff) +DECLARE_INSN(fcvt_s_d, 0x11053, 0x3ff1ff) +DECLARE_INSN(vlh, 0x8b, 0x3fffff) +DECLARE_INSN(bgeu, 0x3e3, 0x3ff) +DECLARE_INSN(vflstd, 0x158b, 0x1ffff) +DECLARE_INSN(c_li, 0x0, 0x1f) +DECLARE_INSN(di, 0xfb, 0x7ffffff) +DECLARE_INSN(sltiu, 0x193, 0x3ff) +DECLARE_INSN(mtpcr, 0x1fb, 0xf801ffff) +DECLARE_INSN(vlb, 0xb, 0x3fffff) +DECLARE_INSN(stop, 0x177, 0xffffffff) +DECLARE_INSN(vld, 0x18b, 0x3fffff) +DECLARE_INSN(c_slli, 0x19, 0x1c1f) +DECLARE_INSN(break, 0xf7, 0xffffffff) +DECLARE_INSN(cflush, 0x2fb, 0xffffffff) +DECLARE_INSN(fcvt_s_w, 0xe053, 0x3ff1ff) +DECLARE_INSN(vflstw, 0x150b, 0x1ffff) +DECLARE_INSN(mul, 0x433, 0x1ffff) +DECLARE_INSN(c_lw, 0xa, 0x1f) +DECLARE_INSN(vlw, 0x10b, 0x3fffff) +DECLARE_INSN(vssegstw, 0x90f, 0xfff) +DECLARE_INSN(amominu_d, 0x19ab, 0x1ffff) +DECLARE_INSN(c_sdsp, 0x6, 0x1f) +DECLARE_INSN(utidx, 0x1f7, 0x7ffffff) +DECLARE_INSN(srli, 0x293, 0x3f03ff) +DECLARE_INSN(c_srli, 0x819, 0x1c1f) +DECLARE_INSN(c_ldsp, 0x4, 0x1f) +DECLARE_INSN(c_flw, 0x14, 0x1f) +DECLARE_INSN(c_srai32, 0x1419, 0x1c1f) +DECLARE_INSN(amominu_w, 0x192b, 0x1ffff) +DECLARE_INSN(divuw, 0x6bb, 0x1ffff) +DECLARE_INSN(mulw, 0x43b, 0x1ffff) +DECLARE_INSN(vssegstd, 0x98f, 0xfff) +DECLARE_INSN(srlw, 0x2bb, 0x1ffff) +DECLARE_INSN(vssegstb, 0x80f, 0xfff) +DECLARE_INSN(mftx_d, 0x1c0d3, 0x7c1ffff) +DECLARE_INSN(div, 0x633, 0x1ffff) +DECLARE_INSN(c_ld, 0x9, 0x1f) +DECLARE_INSN(mftx_s, 0x1c053, 0x7c1ffff) +DECLARE_INSN(vssegsth, 0x88f, 0xfff) +DECLARE_INSN(vvcfgivl, 0xf3, 0x3ff) +DECLARE_INSN(j, 0x67, 0x7f) +DECLARE_INSN(ei, 0x7b, 0x7ffffff) +DECLARE_INSN(fence, 0x12f, 0x3ff) +DECLARE_INSN(vsw, 0x10f, 0x3fffff) +DECLARE_INSN(fnmsub_s, 0x4b, 0x1ff) +DECLARE_INSN(vfssegstd, 0xd8f, 0xfff) +DECLARE_INSN(fcvt_l_s, 0x8053, 0x3ff1ff) +DECLARE_INSN(fle_s, 0x17053, 0x1ffff) +DECLARE_INSN(vsb, 0xf, 0x3fffff) +DECLARE_INSN(mffsr, 0x1d053, 0x7ffffff) +DECLARE_INSN(fdiv_s, 0x3053, 0x1f1ff) +DECLARE_INSN(vlstbu, 0x120b, 0x1ffff) +DECLARE_INSN(vsetvl, 0x2f3, 0x3fffff) +DECLARE_INSN(fle_d, 0x170d3, 0x1ffff) +DECLARE_INSN(fence_i, 0xaf, 0x3ff) +DECLARE_INSN(vlsegbu, 0x220b, 0x1ffff) +DECLARE_INSN(fnmsub_d, 0xcb, 0x1ff) +DECLARE_INSN(addw, 0x3b, 0x1ffff) +DECLARE_INSN(sll, 0xb3, 0x1ffff) +DECLARE_INSN(xor, 0x233, 0x1ffff) +DECLARE_INSN(sub, 0x10033, 0x1ffff) +DECLARE_INSN(eret, 0x27b, 0xffffffff) +DECLARE_INSN(blt, 0x263, 0x3ff) +DECLARE_INSN(vsstw, 0x110f, 0x1ffff) +DECLARE_INSN(mtfsr, 0x1f053, 0x3fffff) +DECLARE_INSN(vssth, 0x108f, 0x1ffff) +DECLARE_INSN(rem, 0x733, 0x1ffff) +DECLARE_INSN(srliw, 0x29b, 0x3f83ff) +DECLARE_INSN(lui, 0x37, 0x7f) +DECLARE_INSN(vsstb, 0x100f, 0x1ffff) +DECLARE_INSN(fcvt_s_lu, 0xd053, 0x3ff1ff) +DECLARE_INSN(vsstd, 0x118f, 0x1ffff) +DECLARE_INSN(addi, 0x13, 0x3ff) +DECLARE_INSN(vfmst, 0x1173, 0x1ffff) +DECLARE_INSN(mulh, 0x4b3, 0x1ffff) +DECLARE_INSN(fmul_s, 0x2053, 0x1f1ff) +DECLARE_INSN(vlsegsthu, 0xa8b, 0xfff) +DECLARE_INSN(srai, 0x10293, 0x3f03ff) +DECLARE_INSN(amoand_d, 0x9ab, 0x1ffff) +DECLARE_INSN(flt_d, 0x160d3, 0x1ffff) +DECLARE_INSN(sraw, 0x102bb, 0x1ffff) +DECLARE_INSN(fmul_d, 0x20d3, 0x1f1ff) +DECLARE_INSN(ld, 0x183, 0x3ff) +DECLARE_INSN(ori, 0x313, 0x3ff) +DECLARE_INSN(flt_s, 0x16053, 0x1ffff) +DECLARE_INSN(addiw, 0x1b, 0x3ff) +DECLARE_INSN(amoand_w, 0x92b, 0x1ffff) +DECLARE_INSN(feq_s, 0x15053, 0x1ffff) +DECLARE_INSN(fsgnjx_d, 0x70d3, 0x1ffff) +DECLARE_INSN(sra, 0x102b3, 0x1ffff) +DECLARE_INSN(c_lwsp, 0x5, 0x1f) +DECLARE_INSN(bge, 0x2e3, 0x3ff) +DECLARE_INSN(c_add3, 0x1c, 0x31f) +DECLARE_INSN(sraiw, 0x1029b, 0x3f83ff) +DECLARE_INSN(vssegd, 0x218f, 0x1ffff) +DECLARE_INSN(srl, 0x2b3, 0x1ffff) +DECLARE_INSN(vfmts, 0x1973, 0x1ffff) +DECLARE_INSN(fsgnjx_s, 0x7053, 0x1ffff) +DECLARE_INSN(vfmsv, 0x973, 0x3fffff) +DECLARE_INSN(feq_d, 0x150d3, 0x1ffff) +DECLARE_INSN(fcvt_d_wu, 0xf0d3, 0x3ff1ff) +DECLARE_INSN(vmts, 0x1873, 0x1ffff) +DECLARE_INSN(or, 0x333, 0x1ffff) +DECLARE_INSN(rdinstret, 0xa77, 0x7ffffff) +DECLARE_INSN(fcvt_wu_d, 0xb0d3, 0x3ff1ff) +DECLARE_INSN(subw, 0x1003b, 0x1ffff) +DECLARE_INSN(jalr_c, 0x6b, 0x3ff) +DECLARE_INSN(fmax_s, 0x19053, 0x1ffff) +DECLARE_INSN(amomaxu_d, 0x1dab, 0x1ffff) +DECLARE_INSN(c_slliw, 0x1819, 0x1c1f) +DECLARE_INSN(jalr_j, 0x16b, 0x3ff) +DECLARE_INSN(c_fld, 0x15, 0x1f) +DECLARE_INSN(vlstw, 0x110b, 0x1ffff) +DECLARE_INSN(vlsth, 0x108b, 0x1ffff) +DECLARE_INSN(xori, 0x213, 0x3ff) +DECLARE_INSN(jalr_r, 0xeb, 0x3ff) +DECLARE_INSN(amomaxu_w, 0x1d2b, 0x1ffff) +DECLARE_INSN(fcvt_wu_s, 0xb053, 0x3ff1ff) +DECLARE_INSN(vlstb, 0x100b, 0x1ffff) +DECLARE_INSN(vlstd, 0x118b, 0x1ffff) +DECLARE_INSN(c_ld0, 0x8012, 0x801f) +DECLARE_INSN(rdtime, 0x677, 0x7ffffff) +DECLARE_INSN(andi, 0x393, 0x3ff) +DECLARE_INSN(c_srli32, 0xc19, 0x1c1f) +DECLARE_INSN(fsgnjn_d, 0x60d3, 0x1ffff) +DECLARE_INSN(fnmadd_s, 0x4f, 0x1ff) +DECLARE_INSN(jal, 0x6f, 0x7f) +DECLARE_INSN(lwu, 0x303, 0x3ff) +DECLARE_INSN(vlsegstbu, 0xa0b, 0xfff) +DECLARE_INSN(c_beq, 0x10, 0x1f) +DECLARE_INSN(vlhu, 0x28b, 0x3fffff) +DECLARE_INSN(vfsstd, 0x158f, 0x1ffff) +DECLARE_INSN(c_bne, 0x11, 0x1f) +DECLARE_INSN(fnmadd_d, 0xcf, 0x1ff) +DECLARE_INSN(fence_g_cv, 0x3af, 0x3ff) +DECLARE_INSN(amoadd_d, 0x1ab, 0x1ffff) +DECLARE_INSN(c_sw, 0xd, 0x1f) +DECLARE_INSN(amomax_w, 0x152b, 0x1ffff) +DECLARE_INSN(c_move, 0x2, 0x801f) +DECLARE_INSN(fmovn, 0xef7, 0x1ffff) +DECLARE_INSN(c_fsw, 0x16, 0x1f) +DECLARE_INSN(c_j, 0x8002, 0x801f) +DECLARE_INSN(mulhsu, 0x533, 0x1ffff) +DECLARE_INSN(c_sd, 0xc, 0x1f) +DECLARE_INSN(amoadd_w, 0x12b, 0x1ffff) +DECLARE_INSN(fcvt_d_lu, 0xd0d3, 0x3ff1ff) +DECLARE_INSN(amomax_d, 0x15ab, 0x1ffff) +DECLARE_INSN(fcvt_w_d, 0xa0d3, 0x3ff1ff) +DECLARE_INSN(fmovz, 0xaf7, 0x1ffff) +DECLARE_INSN(c_or3, 0x21c, 0x31f) +DECLARE_INSN(vmvv, 0x73, 0x3fffff) +DECLARE_INSN(vfssegstw, 0xd0f, 0xfff) +DECLARE_INSN(slt, 0x133, 0x1ffff) +DECLARE_INSN(mxtf_d, 0x1e0d3, 0x3fffff) +DECLARE_INSN(sllw, 0xbb, 0x1ffff) +DECLARE_INSN(amoor_d, 0xdab, 0x1ffff) +DECLARE_INSN(slti, 0x113, 0x3ff) +DECLARE_INSN(remu, 0x7b3, 0x1ffff) +DECLARE_INSN(flw, 0x107, 0x3ff) +DECLARE_INSN(remw, 0x73b, 0x1ffff) +DECLARE_INSN(sltu, 0x1b3, 0x1ffff) +DECLARE_INSN(slli, 0x93, 0x3f03ff) +DECLARE_INSN(c_and3, 0x31c, 0x31f) +DECLARE_INSN(vssegw, 0x210f, 0x1ffff) +DECLARE_INSN(amoor_w, 0xd2b, 0x1ffff) +DECLARE_INSN(vsd, 0x18f, 0x3fffff) +DECLARE_INSN(beq, 0x63, 0x3ff) +DECLARE_INSN(fld, 0x187, 0x3ff) +DECLARE_INSN(mxtf_s, 0x1e053, 0x3fffff) +DECLARE_INSN(fsub_s, 0x1053, 0x1f1ff) +DECLARE_INSN(and, 0x3b3, 0x1ffff) +DECLARE_INSN(vtcfgivl, 0x1f3, 0x3ff) +DECLARE_INSN(lbu, 0x203, 0x3ff) +DECLARE_INSN(vf, 0x3f3, 0xf80003ff) +DECLARE_INSN(vlsegstw, 0x90b, 0xfff) +DECLARE_INSN(syscall, 0x77, 0xffffffff) +DECLARE_INSN(fsgnj_s, 0x5053, 0x1ffff) +DECLARE_INSN(c_addi, 0x1, 0x1f) +DECLARE_INSN(vfmvv, 0x173, 0x3fffff) +DECLARE_INSN(vlstwu, 0x130b, 0x1ffff) +DECLARE_INSN(c_sub3, 0x11c, 0x31f) +DECLARE_INSN(vsh, 0x8f, 0x3fffff) +DECLARE_INSN(vlsegstb, 0x80b, 0xfff) +DECLARE_INSN(vlsegstd, 0x98b, 0xfff) +DECLARE_INSN(vflsegd, 0x258b, 0x1ffff) +DECLARE_INSN(vflsegw, 0x250b, 0x1ffff) +DECLARE_INSN(vlsegsth, 0x88b, 0xfff) +DECLARE_INSN(fsgnj_d, 0x50d3, 0x1ffff) +DECLARE_INSN(vflsegstw, 0xd0b, 0xfff) +DECLARE_INSN(c_sub, 0x801a, 0x801f) +DECLARE_INSN(mulhu, 0x5b3, 0x1ffff) +DECLARE_INSN(fcvt_l_d, 0x80d3, 0x3ff1ff) +DECLARE_INSN(vmsv, 0x873, 0x3fffff) +DECLARE_INSN(vmst, 0x1073, 0x1ffff) +DECLARE_INSN(fadd_d, 0xd3, 0x1f1ff) +DECLARE_INSN(fcvt_s_wu, 0xf053, 0x3ff1ff) +DECLARE_INSN(rdnpc, 0x26b, 0x7ffffff) +DECLARE_INSN(fcvt_s_l, 0xc053, 0x3ff1ff) +DECLARE_INSN(vflsegstd, 0xd8b, 0xfff) +DECLARE_INSN(c_add, 0x1a, 0x801f) +DECLARE_INSN(fcvt_lu_d, 0x90d3, 0x3ff1ff) +DECLARE_INSN(vfld, 0x58b, 0x3fffff) +DECLARE_INSN(fsub_d, 0x10d3, 0x1f1ff) +DECLARE_INSN(fmadd_s, 0x43, 0x1ff) +DECLARE_INSN(fcvt_w_s, 0xa053, 0x3ff1ff) +DECLARE_INSN(vssegh, 0x208f, 0x1ffff) +DECLARE_INSN(fsqrt_s, 0x4053, 0x3ff1ff) +DECLARE_INSN(c_srai, 0x1019, 0x1c1f) +DECLARE_INSN(amomin_w, 0x112b, 0x1ffff) +DECLARE_INSN(fsgnjn_s, 0x6053, 0x1ffff) +DECLARE_INSN(c_slli32, 0x419, 0x1c1f) +DECLARE_INSN(vlsegwu, 0x230b, 0x1ffff) +DECLARE_INSN(vfsw, 0x50f, 0x3fffff) +DECLARE_INSN(amoswap_d, 0x5ab, 0x1ffff) +DECLARE_INSN(fence_l_v, 0x22f, 0x3ff) +DECLARE_INSN(fsqrt_d, 0x40d3, 0x3ff1ff) +DECLARE_INSN(vflw, 0x50b, 0x3fffff) +DECLARE_INSN(fdiv_d, 0x30d3, 0x1f1ff) +DECLARE_INSN(fmadd_d, 0xc3, 0x1ff) +DECLARE_INSN(divw, 0x63b, 0x1ffff) +DECLARE_INSN(amomin_d, 0x11ab, 0x1ffff) +DECLARE_INSN(divu, 0x6b3, 0x1ffff) +DECLARE_INSN(amoswap_w, 0x52b, 0x1ffff) +DECLARE_INSN(vfsd, 0x58f, 0x3fffff) +DECLARE_INSN(fadd_s, 0x53, 0x1f1ff) +DECLARE_INSN(vlsegb, 0x200b, 0x1ffff) +DECLARE_INSN(fsd, 0x1a7, 0x3ff) +DECLARE_INSN(vlsegd, 0x218b, 0x1ffff) +DECLARE_INSN(vlsegh, 0x208b, 0x1ffff) +DECLARE_INSN(sw, 0x123, 0x3ff) +DECLARE_INSN(fmsub_s, 0x47, 0x1ff) +DECLARE_INSN(vfssegw, 0x250f, 0x1ffff) +DECLARE_INSN(c_addiw, 0x1d, 0x1f) +DECLARE_INSN(lhu, 0x283, 0x3ff) +DECLARE_INSN(sh, 0xa3, 0x3ff) +DECLARE_INSN(vlsegw, 0x210b, 0x1ffff) +DECLARE_INSN(fsw, 0x127, 0x3ff) +DECLARE_INSN(vlbu, 0x20b, 0x3fffff) +DECLARE_INSN(sb, 0x23, 0x3ff) +DECLARE_INSN(fmsub_d, 0xc7, 0x1ff) +DECLARE_INSN(vlseghu, 0x228b, 0x1ffff) +DECLARE_INSN(vssegb, 0x200f, 0x1ffff) +DECLARE_INSN(vfssegd, 0x258f, 0x1ffff) +DECLARE_INSN(sd, 0x1a3, 0x3ff) diff --git a/riscv/processor.cc b/riscv/processor.cc index eea2ce2..cb2188b 100644 --- a/riscv/processor.cc +++ b/riscv/processor.cc @@ -12,6 +12,7 @@ processor_t::processor_t(sim_t* _sim, char* _mem, size_t _memsz) : sim(_sim), mmu(_mem,_memsz) { + initialize_dispatch_table(); // a few assumptions about endianness, including freg_t union static_assert(BYTE_ORDER == LITTLE_ENDIAN); static_assert(sizeof(freg_t) == 8); @@ -172,12 +173,10 @@ void processor_t::step(size_t n, bool noisy) { take_interrupt(); - #include "dispatch.h" - #define execute_insn(noisy) \ do { insn_t insn = mmu.load_insn(pc, sr & SR_EC); \ if(noisy) disasm(insn,pc); \ - pc = dispatch_table[dispatch_index(insn)](this, insn, pc); \ + pc = dispatch_table[insn.bits % DISPATCH_TABLE_SIZE](this, insn, pc); \ XPR[0] = 0; } while(0) if(noisy) for( ; i < n; i++) @@ -267,3 +266,54 @@ void processor_t::disasm(insn_t insn, reg_t pc) #endif printf("\n"); } + +// if the lower log2(DISPATCH_TABLE_SIZE) bits of an instruction +// uniquely identify that instruction, the dispatch table points +// directly to that insn_func. otherwise, we search the short +// list of instructions that match. + +insn_func_t processor_t::dispatch_table[DISPATCH_TABLE_SIZE]; + +struct insn_chain_t +{ + insn_func_t func; + uint32_t opcode; + uint32_t mask; +}; +static std::vector<insn_chain_t> dispatch_chain[DISPATCH_TABLE_SIZE]; + +reg_t processor_t::dispatch(insn_t insn, reg_t pc) +{ + size_t idx = insn.bits % DISPATCH_TABLE_SIZE; + for(size_t i = 0; i < dispatch_chain[idx].size(); i++) + { + insn_chain_t& c = dispatch_chain[idx][i]; + if((insn.bits & c.mask) == c.opcode) + return c.func(this, insn, pc); + } + throw trap_illegal_instruction; +} + +void processor_t::initialize_dispatch_table() +{ + if(dispatch_table[0] != NULL) + return; + + for(size_t i = 0; i < DISPATCH_TABLE_SIZE; i++) + { + #define DECLARE_INSN(name, opcode, mask) \ + if((i & (mask)) == ((opcode) & (mask) & (DISPATCH_TABLE_SIZE-1))) \ + dispatch_chain[i].push_back( \ + (insn_chain_t){&processor_t::insn_func_ ## name, opcode, mask}); + #include "opcodes.h" + #undef DECLARE_INSN + } + + for(size_t i = 0; i < DISPATCH_TABLE_SIZE; i++) + { + if(dispatch_chain[i].size() == 1) + dispatch_table[i] = dispatch_chain[i][0].func; + else + dispatch_table[i] = &processor_t::dispatch; + } +} diff --git a/riscv/processor.h b/riscv/processor.h index 10abe14..b72fa27 100644 --- a/riscv/processor.h +++ b/riscv/processor.h @@ -9,6 +9,10 @@ #define MAX_UTS 2048 +#define DISPATCH_TABLE_SIZE 1024 +class processor_t; +typedef reg_t (*insn_func_t)(processor_t*, insn_t, reg_t); + class sim_t; class processor_t @@ -87,8 +91,14 @@ private: icsim_t* dtlbsim; friend class sim_t; - - #include "dispatch_decl.h" + + static insn_func_t dispatch_table[DISPATCH_TABLE_SIZE]; + reg_t dispatch(insn_t insn, reg_t pc); + static void initialize_dispatch_table(); + + #define DECLARE_INSN(name, m, o) reg_t insn_func_ ## name (insn_t, reg_t); + #include "opcodes.h" + #undef DECLARE_INSN }; #endif diff --git a/riscv/riscv.mk.in b/riscv/riscv.mk.in index 202d437..f6553c1 100644 --- a/riscv/riscv.mk.in +++ b/riscv/riscv.mk.in @@ -2,16 +2,27 @@ riscv_subproject_deps = \ softfloat_riscv \ softfloat \ +riscv_insn_hdrs := $(notdir $(wildcard $(src_dir)/riscv/insns/*.h)) + riscv_hdrs = \ applink.h \ common.h \ decode.h \ - dispatch.h \ mmu.h \ processor.h \ sim.h \ trap.h \ - insns/*.h \ + opcodes.h \ + insn_header.h \ + insn_footer.h \ + +$(patsubst %.h, %.cc, $(riscv_insn_hdrs)): %.cc: insns/%.h $(riscv_hdrs) + @echo \#define FUNC insn_func_$(@:.cc=) > $@ + @echo \#define OPCODE_MASK MASK_$(@:.cc=) >> $@ + @echo \#define OPCODE_MATCH MATCH_$(@:.cc=) >> $@ + @cat $(src_dir)/riscv/insn_header.h >> $@ + @cat $< >> $@ + @cat $(src_dir)/riscv/insn_footer.h >> $@ riscv_srcs = \ applink.cc \ @@ -20,16 +31,7 @@ riscv_srcs = \ trap.cc \ icsim.cc \ mmu.cc \ - dispatch_0.cc \ - dispatch_1.cc \ - dispatch_2.cc \ - dispatch_3.cc \ - dispatch_4.cc \ - dispatch_5.cc \ - dispatch_6.cc \ - dispatch_7.cc \ - dispatch_8.cc \ - dispatch_9.cc \ + $(patsubst %.h, %.cc, $(riscv_insn_hdrs)) \ riscv_test_srcs = |