summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/sharc/sharcops.h
blob: 6c6a9ee0a427e36bd2cf664e05e61dbbb06a4366 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// license:???
// copyright-holders:Ville Linde

const adsp21062_device::SHARC_OP adsp21062_device::s_sharc_opcode_table[] =
{
	//  |0 0 1|
	{   0xe000,     0x2000,     &adsp21062_device::sharcop_compute_dreg_dm_dreg_pm                     },

	//  |0 0 0|0 0 0 0 1|
	{   0xff00,     0x0100,     &adsp21062_device::sharcop_compute                                     },

	//  |0 1 0|0|
	{   0xf000,     0x4000,     &adsp21062_device::sharcop_compute_ureg_dmpm_premod                    },

	//  |0 1 0|1|
	{   0xf000,     0x5000,     &adsp21062_device::sharcop_compute_ureg_dmpm_postmod                   },

	//  |0 1 1|0|x x x|0|0|
	{   0xf180,     0x6000,     &adsp21062_device::sharcop_compute_dm_to_dreg_immmod                   },

	//  |0 1 1|0|x x x|0|1|
	{   0xf180,     0x6080,     &adsp21062_device::sharcop_compute_dreg_to_dm_immmod                   },

	//  |0 1 1|0|x x x|1|0|
	{   0xf180,     0x6100,     &adsp21062_device::sharcop_compute_pm_to_dreg_immmod                   },

	//  |0 1 1|0|x x x|1|1|
	{   0xf180,     0x6180,     &adsp21062_device::sharcop_compute_dreg_to_pm_immmod                   },

	//  |0 1 1|1|
	{   0xf000,     0x7000,     &adsp21062_device::sharcop_compute_ureg_to_ureg                        },

	//  |1 0 0|0|
	{   0xf000,     0x8000,     &adsp21062_device::sharcop_imm_shift_dreg_dmpm                         },

	//  |0 0 0|0 0 0 1 0|
	{   0xff00,     0x0200,     &adsp21062_device::sharcop_imm_shift                                   },

	//  |0 0 0|0 0 1 0 0|
	{   0xff00,     0x0400,     &adsp21062_device::sharcop_compute_modify                              },

	//  |0 0 0|0 0 1 1 0|0|
	{   0xff80,     0x0600,     &adsp21062_device::sharcop_direct_jump                                 },

	//  |0 0 0|0 0 1 1 0|1|
	{   0xff80,     0x0680,     &adsp21062_device::sharcop_direct_call                                 },

	//  |0 0 0|0 0 1 1 1|0|
	{   0xff80,     0x0700,     &adsp21062_device::sharcop_relative_jump                               },

	//  |0 0 0|0 0 1 1 1|1|
	{   0xff80,     0x0780,     &adsp21062_device::sharcop_relative_call                               },

	//  |0 0 0|0 1 0 0 0|0|
	{   0xff80,     0x0800,     &adsp21062_device::sharcop_indirect_jump                               },

	//  |0 0 0|0 1 0 0 0|1|
	{   0xff80,     0x0880,     &adsp21062_device::sharcop_indirect_call                               },

	//  |0 0 0|0 1 0 0 1|0|
	{   0xff80,     0x0900,     &adsp21062_device::sharcop_relative_jump_compute                       },

	//  |0 0 0|0 1 0 0 1|1|
	{   0xff80,     0x0980,     &adsp21062_device::sharcop_relative_call_compute                       },

	//  |1 1 0|
	{   0xe000,     0xc000,     &adsp21062_device::sharcop_indirect_jump_compute_dreg_dm               },

	//  |1 1 1|
	{   0xe000,     0xe000,     &adsp21062_device::sharcop_relative_jump_compute_dreg_dm               },

	//  |0 0 0|0 1 0 1 0|
	{   0xff00,     0x0a00,     &adsp21062_device::sharcop_rts                                         },

	//  |0 0 0|0 1 0 1 1|
	{   0xff00,     0x0b00,     &adsp21062_device::sharcop_rti                                         },

	//  |0 0 0|0 1 1 0 0|
	{   0xff00,     0x0c00,     &adsp21062_device::sharcop_do_until_counter_imm                        },

	//  |0 0 0|0 1 1 0 1|
	{   0xff00,     0x0d00,     &adsp21062_device::sharcop_do_until_counter_ureg                       },

	//  |0 0 0|0 1 1 1 0|
	{   0xff00,     0x0e00,     &adsp21062_device::sharcop_do_until                                    },

	//  |0 0 0|1 0 0|0|0|
	{   0xff00,     0x1000,     &adsp21062_device::sharcop_dm_to_ureg_direct                           },

	//  |0 0 0|1 0 0|0|1|
	{   0xff00,     0x1100,     &adsp21062_device::sharcop_ureg_to_dm_direct                           },

	//  |0 0 0|1 0 0|1|0|
	{   0xff00,     0x1200,     &adsp21062_device::sharcop_pm_to_ureg_direct                           },

	//  |0 0 0|1 0 0|1|1|
	{   0xff00,     0x1300,     &adsp21062_device::sharcop_ureg_to_pm_direct                           },

	//  |1 0 1|0|x x x|0|
	{   0xf100,     0xa000,     &adsp21062_device::sharcop_dm_to_ureg_indirect                         },

	//  |1 0 1|0|x x x|1|
	{   0xf100,     0xa100,     &adsp21062_device::sharcop_ureg_to_dm_indirect                         },

	//  |1 0 1|1|x x x|0|
	{   0xf100,     0xb000,     &adsp21062_device::sharcop_pm_to_ureg_indirect                         },

	//  |1 0 1|1|x x x|1|
	{   0xf100,     0xb100,     &adsp21062_device::sharcop_ureg_to_pm_indirect                         },

	//  |1 0 0|1|
	{   0xf000,     0x9000,     &adsp21062_device::sharcop_imm_to_dmpm                                 },

	//  |0 0 0|0 1 1 1 1|
	{   0xff00,     0x0f00,     &adsp21062_device::sharcop_imm_to_ureg                                 },

	//  |0 0 0|1 0 1 0 0|
	{   0xff00,     0x1400,     &adsp21062_device::sharcop_sysreg_bitop                                },

	//  |0 0 0|1 0 1 1 0|0|
	{   0xff80,     0x1600,     &adsp21062_device::sharcop_modify                                      },

	//  |0 0 0|1 0 1 1 0|1|
	{   0xff80,     0x1680,     &adsp21062_device::sharcop_bit_reverse                                 },

	//  |0 0 0|1 0 1 1 1|
	{   0xff00,     0x1700,     &adsp21062_device::sharcop_push_pop_stacks                             },

	//  |0 0 0|0 0 0 0 0|0|
	{   0xff80,     0x0000,     &adsp21062_device::sharcop_nop                                         },

	//  |0 0 0|0 0 0 0 0|1|
	{   0xff80,     0x0080,     &adsp21062_device::sharcop_idle                                        },
};