summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/rsp/rspcp2d.h
blob: 09263a39cdf3bd10d6bde9c542c5d561626f7339 (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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz
/***************************************************************************

    rspcp2d.h

    Interface file for Reality Signal Processor (RSP) vector extensions
    using Universal Machine Language (UML) dynamic recompilation.

***************************************************************************/
#ifndef MAME_CPU_RSP_RSPCP2D_H
#define MAME_CPU_RSP_RSPCP2D_H

#pragma once

#include "rsp.h"
#include "rspcp2.h"
#include "cpu/drcuml.h"


class rsp_device::cop2_drc : public rsp_device::cop2
{
	friend class rsp_device;
public:
	cop2_drc(rsp_device &rsp, running_machine &machine) : cop2(rsp, machine) { }
private:
	virtual bool generate_cop2(drcuml_block &block, rsp_device::compiler_state &compiler, const opcode_desc *desc) override;
	virtual bool generate_lwc2(drcuml_block &block, rsp_device::compiler_state &compiler, const opcode_desc *desc) override;
	virtual bool generate_swc2(drcuml_block &block, rsp_device::compiler_state &compiler, const opcode_desc *desc) override;

	virtual void state_string_export(const int index, std::string &str) const override;

	void cfunc_unimplemented_opcode() override;

	static void unimplemented_opcode(void *param) { ((cop2 *)param)->cfunc_unimplemented_opcode(); }
	static void cfunc_lbv(void *param) { ((cop2 *)param)->lbv(); }
	static void cfunc_lsv(void *param) { ((cop2 *)param)->lsv(); }
	static void cfunc_llv(void *param) { ((cop2 *)param)->llv(); }
	static void cfunc_ldv(void *param) { ((cop2 *)param)->ldv(); }
	static void cfunc_lqv(void *param) { ((cop2 *)param)->lqv(); }
	static void cfunc_lrv(void *param) { ((cop2 *)param)->lrv(); }
	static void cfunc_lpv(void *param) { ((cop2 *)param)->lpv(); }
	static void cfunc_luv(void *param) { ((cop2 *)param)->luv(); }
	static void cfunc_lhv(void *param) { ((cop2 *)param)->lhv(); }
	static void cfunc_lfv(void *param) { ((cop2 *)param)->lfv(); }
	static void cfunc_lwv(void *param) { ((cop2 *)param)->lwv(); }
	static void cfunc_ltv(void *param) { ((cop2 *)param)->ltv(); }
	static void cfunc_sbv(void *param) { ((cop2 *)param)->sbv(); }
	static void cfunc_ssv(void *param) { ((cop2 *)param)->ssv(); }
	static void cfunc_slv(void *param) { ((cop2 *)param)->slv(); }
	static void cfunc_sdv(void *param) { ((cop2 *)param)->sdv(); }
	static void cfunc_sqv(void *param) { ((cop2 *)param)->sqv(); }
	static void cfunc_srv(void *param) { ((cop2 *)param)->srv(); }
	static void cfunc_spv(void *param) { ((cop2 *)param)->spv(); }
	static void cfunc_suv(void *param) { ((cop2 *)param)->suv(); }
	static void cfunc_shv(void *param) { ((cop2 *)param)->shv(); }
	static void cfunc_sfv(void *param) { ((cop2 *)param)->sfv(); }
	static void cfunc_swv(void *param) { ((cop2 *)param)->swv(); }
	static void cfunc_stv(void *param) { ((cop2 *)param)->stv(); }
	static void cfunc_vmulf(void *param) { ((cop2 *)param)->vmulf(); }
	static void cfunc_vmulu(void *param) { ((cop2 *)param)->vmulu(); }
	static void cfunc_vmudl(void *param) { ((cop2 *)param)->vmudl(); }
	static void cfunc_vmudm(void *param) { ((cop2 *)param)->vmudm(); }
	static void cfunc_vmudn(void *param) { ((cop2 *)param)->vmudn(); }
	static void cfunc_vmudh(void *param) { ((cop2 *)param)->vmudh(); }
	static void cfunc_vmacf(void *param) { ((cop2 *)param)->vmacf(); }
	static void cfunc_vmacu(void *param) { ((cop2 *)param)->vmacu(); }
	static void cfunc_vmadl(void *param) { ((cop2 *)param)->vmadl(); }
	static void cfunc_vmadm(void *param) { ((cop2 *)param)->vmadm(); }
	static void cfunc_vmadn(void *param) { ((cop2 *)param)->vmadn(); }
	static void cfunc_vmadh(void *param) { ((cop2 *)param)->vmadh(); }
	static void cfunc_vadd(void *param) { ((cop2 *)param)->vadd(); }
	static void cfunc_vsub(void *param) { ((cop2 *)param)->vsub(); }
	static void cfunc_vabs(void *param) { ((cop2 *)param)->vabs(); }
	static void cfunc_vaddc(void *param) { ((cop2 *)param)->vaddc(); }
	static void cfunc_vsubc(void *param) { ((cop2 *)param)->vsubc(); }
	static void cfunc_vaddb(void *param) { ((cop2 *)param)->vaddb(); }
	static void cfunc_vsaw(void *param) { ((cop2 *)param)->vsaw(); }
	static void cfunc_vlt(void *param) { ((cop2 *)param)->vlt(); }
	static void cfunc_veq(void *param) { ((cop2 *)param)->veq(); }
	static void cfunc_vne(void *param) { ((cop2 *)param)->vne(); }
	static void cfunc_vge(void *param) { ((cop2 *)param)->vge(); }
	static void cfunc_vcl(void *param) { ((cop2 *)param)->vcl(); }
	static void cfunc_vch(void *param) { ((cop2 *)param)->vch(); }
	static void cfunc_vcr(void *param) { ((cop2 *)param)->vcr(); }
	static void cfunc_vmrg(void *param) { ((cop2 *)param)->vmrg(); }
	static void cfunc_vand(void *param) { ((cop2 *)param)->vand(); }
	static void cfunc_vnand(void *param) { ((cop2 *)param)->vnand(); }
	static void cfunc_vor(void *param) { ((cop2 *)param)->vor(); }
	static void cfunc_vnor(void *param) { ((cop2 *)param)->vnor(); }
	static void cfunc_vxor(void *param) { ((cop2 *)param)->vxor(); }
	static void cfunc_vnxor(void *param) { ((cop2 *)param)->vnxor(); }
	static void cfunc_vrcp(void *param) { ((cop2 *)param)->vrcp(); }
	static void cfunc_vrcpl(void *param) { ((cop2 *)param)->vrcpl(); }
	static void cfunc_vrcph(void *param) { ((cop2 *)param)->vrcph(); }
	static void cfunc_vmov(void *param) { ((cop2 *)param)->vmov(); }
	static void cfunc_vrsq(void *param) { ((cop2 *)param)->vrsq(); }
	static void cfunc_vrsql(void *param) { ((cop2 *)param)->vrsql(); }
	static void cfunc_vrsqh(void *param) { ((cop2 *)param)->vrsqh(); }
	static void cfunc_mfc2(void *param) { ((cop2 *)param)->mfc2(); }
	static void cfunc_cfc2(void *param) { ((cop2 *)param)->cfc2(); }
	static void cfunc_mtc2(void *param) { ((cop2 *)param)->mtc2(); }
	static void cfunc_ctc2(void *param) { ((cop2 *)param)->ctc2(); }

public:
	virtual void lbv() override;
	virtual void lsv() override;
	virtual void llv() override;
	virtual void ldv() override;
	virtual void lqv() override;
	virtual void lrv() override;
	virtual void lpv() override;
	virtual void luv() override;
	virtual void lhv() override;
	virtual void lfv() override;
	virtual void lwv() override;
	virtual void ltv() override;
	virtual void sbv() override;
	virtual void ssv() override;
	virtual void slv() override;
	virtual void sdv() override;
	virtual void sqv() override;
	virtual void srv() override;
	virtual void spv() override;
	virtual void suv() override;
	virtual void shv() override;
	virtual void sfv() override;
	virtual void swv() override;
	virtual void stv() override;
	virtual void vmulf() override;
	virtual void vmulu() override;
	virtual void vmudl() override;
	virtual void vmudm() override;
	virtual void vmudn() override;
	virtual void vmudh() override;
	virtual void vmacf() override;
	virtual void vmacu() override;
	virtual void vmadl() override;
	virtual void vmadm() override;
	virtual void vmadn() override;
	virtual void vmadh() override;
	virtual void vadd() override;
	virtual void vsub() override;
	virtual void vabs() override;
	virtual void vaddc() override;
	virtual void vsubc() override;
	virtual void vaddb() override;
	virtual void vsaw() override;
	virtual void vlt() override;
	virtual void veq() override;
	virtual void vne() override;
	virtual void vge() override;
	virtual void vcl() override;
	virtual void vch() override;
	virtual void vcr() override;
	virtual void vmrg() override;
	virtual void vand() override;
	virtual void vnand() override;
	virtual void vor() override;
	virtual void vnor() override;
	virtual void vxor() override;
	virtual void vnxor() override;
	virtual void vrcp() override;
	virtual void vrcpl() override;
	virtual void vrcph() override;
	virtual void vmov() override;
	virtual void vrsql() override;
	virtual void vrsqh() override;
	virtual void vrsq() override;
	virtual void mfc2() override;
	virtual void cfc2() override;
	virtual void mtc2() override;
	virtual void ctc2() override;

private:
	virtual bool generate_vector_opcode(drcuml_block &block, rsp_device::compiler_state &compiler, const opcode_desc *desc) override;
};

#endif // MAME_CPU_RSP_RSPCP2D_H