Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include	"l.h"
2
 
3
Optab	optab[] =
4
{
5
	{ ATEXT,	C_LEXT,	C_NONE,	C_LCON, 	 0, 0, 0 },
6
	{ ATEXT,	C_LEXT,	C_REG,	C_LCON, 	 0, 0, 0 },
7
	{ ATEXT,	C_ADDR,	C_NONE,	C_LCON, 	 0, 0, 0 },
8
	{ ATEXT,	C_ADDR,	C_REG,	C_LCON, 	 0, 0, 0 },
9
 
10
	{ AADD,		C_REG,	C_REG,	C_REG,		 1, 4, 0 },
11
	{ AADD,		C_REG,	C_NONE,	C_REG,		 1, 4, 0 },
12
	{ AMOVW,	C_REG,	C_NONE,	C_REG,		 1, 4, 0 },
13
	{ AMVN,		C_REG,	C_NONE,	C_REG,		 1, 4, 0 },
14
	{ ACMP,		C_REG,	C_REG,	C_NONE,		 1, 4, 0 },
15
 
16
	{ AADD,		C_RCON,	C_REG,	C_REG,		 2, 4, 0 },
17
	{ AADD,		C_RCON,	C_NONE,	C_REG,		 2, 4, 0 },
18
	{ AMOVW,	C_RCON,	C_NONE,	C_REG,		 2, 4, 0 },
19
	{ AMVN,		C_RCON,	C_NONE,	C_REG,		 2, 4, 0 },
20
	{ ACMP,		C_RCON,	C_REG,	C_NONE,		 2, 4, 0 },
21
 
22
	{ AADD,		C_SHIFT,C_REG,	C_REG,		 3, 4, 0 },
23
	{ AADD,		C_SHIFT,C_NONE,	C_REG,		 3, 4, 0 },
24
	{ AMVN,		C_SHIFT,C_NONE,	C_REG,		 3, 4, 0 },
25
	{ ACMP,		C_SHIFT,C_REG,	C_NONE,		 3, 4, 0 },
26
 
27
	{ AMOVW,	C_RECON,C_NONE,	C_REG,		 4, 4, REGSB },
28
	{ AMOVW,	C_RACON,C_NONE,	C_REG,		 4, 4, REGSP },
29
 
30
	{ AB,		C_NONE,	C_NONE,	C_SBRA,		 5, 4, 0,	LPOOL },
31
	{ ABL,		C_NONE,	C_NONE,	C_SBRA,		 5, 4, 0 },
32
	{ ABEQ,		C_NONE,	C_NONE,	C_SBRA,		 5, 4, 0 },
33
 
34
	{ AB,		C_NONE,	C_NONE,	C_ROREG,	 6, 4, 0,	LPOOL },
35
	{ ABL,		C_NONE,	C_NONE,	C_ROREG,	 7, 8, 0 },
36
 
37
	{ ASLL,		C_RCON,	C_REG,	C_REG,		 8, 4, 0 },
38
	{ ASLL,		C_RCON,	C_NONE,	C_REG,		 8, 4, 0 },
39
 
40
	{ ASLL,		C_REG,	C_NONE,	C_REG,		 9, 4, 0 },
41
	{ ASLL,		C_REG,	C_REG,	C_REG,		 9, 4, 0 },
42
 
43
	{ ASWI,		C_NONE,	C_NONE,	C_NONE,		10, 4, 0 },
44
	{ ASWI,		C_NONE,	C_NONE,	C_LOREG,	10, 4, 0 },
45
 
46
	{ AWORD,	C_NONE,	C_NONE,	C_LCON,		11, 4, 0 },
47
	{ AWORD,	C_NONE,	C_NONE,	C_LEXT,		11, 4, 0 },
48
	{ AWORD,	C_NONE,	C_NONE,	C_ADDR,		11, 4, 0 },
49
 
50
	{ AMOVW,	C_NCON,	C_NONE,	C_REG,		12, 4, 0 },
51
	{ AMOVW,	C_LCON,	C_NONE,	C_REG,		12, 4, 0,	LFROM },
52
 
53
	{ AADD,		C_NCON,	C_REG,	C_REG,		13, 8, 0 },
54
	{ AADD,		C_NCON,	C_NONE,	C_REG,		13, 8, 0 },
55
	{ AMVN,		C_NCON,	C_NONE,	C_REG,		13, 8, 0 },
56
	{ ACMP,		C_NCON,	C_REG,	C_NONE,		13, 8, 0 },
57
	{ AADD,		C_LCON,	C_REG,	C_REG,		13, 8, 0,	LFROM },
58
	{ AADD,		C_LCON,	C_NONE,	C_REG,		13, 8, 0,	LFROM },
59
	{ AMVN,		C_LCON,	C_NONE,	C_REG,		13, 8, 0,	LFROM },
60
	{ ACMP,		C_LCON,	C_REG,	C_NONE,		13, 8, 0,	LFROM },
61
 
62
	{ AMOVB,	C_REG,	C_NONE,	C_REG,		14, 8, 0 },
63
	{ AMOVBU,	C_REG,	C_NONE,	C_REG,		58, 4, 0 },
64
	{ AMOVH,	C_REG,	C_NONE,	C_REG,		14, 8, 0 },
65
	{ AMOVHU,	C_REG,	C_NONE,	C_REG,		14, 8, 0 },
66
 
67
	{ AMUL,		C_REG,	C_REG,	C_REG,		15, 4, 0 },
68
	{ AMUL,		C_REG,	C_NONE,	C_REG,		15, 4, 0 },
69
 
70
	{ ADIV,		C_REG,	C_REG,	C_REG,		16, 4, 0 },
71
	{ ADIV,		C_REG,	C_NONE,	C_REG,		16, 4, 0 },
72
 
73
	{ AMULL,	C_REG,	C_REG,	C_REGREG,	17, 4, 0 },
74
 
75
	{ AMOVW,	C_REG,	C_NONE,	C_SEXT,		20, 4, REGSB },
76
	{ AMOVW,	C_REG,	C_NONE,	C_SAUTO,	20, 4, REGSP },
77
	{ AMOVW,	C_REG,	C_NONE,	C_SOREG,	20, 4, 0 },
78
	{ AMOVB,	C_REG,	C_NONE,	C_SEXT,		20, 4, REGSB },
79
	{ AMOVB,	C_REG,	C_NONE,	C_SAUTO,	20, 4, REGSP },
80
	{ AMOVB,	C_REG,	C_NONE,	C_SOREG,	20, 4, 0 },
81
	{ AMOVBU,	C_REG,	C_NONE,	C_SEXT,		20, 4, REGSB },
82
	{ AMOVBU,	C_REG,	C_NONE,	C_SAUTO,	20, 4, REGSP },
83
	{ AMOVBU,	C_REG,	C_NONE,	C_SOREG,	20, 4, 0 },
84
 
85
	{ AMOVW,	C_SEXT,	C_NONE,	C_REG,		21, 4, REGSB },
86
	{ AMOVW,	C_SAUTO,C_NONE,	C_REG,		21, 4, REGSP },
87
	{ AMOVW,	C_SOREG,C_NONE,	C_REG,		21, 4, 0 },
88
	{ AMOVBU,	C_SEXT,	C_NONE,	C_REG,		21, 4, REGSB },
89
	{ AMOVBU,	C_SAUTO,C_NONE,	C_REG,		21, 4, REGSP },
90
	{ AMOVBU,	C_SOREG,C_NONE,	C_REG,		21, 4, 0 },
91
 
92
	{ AMOVB,	C_SEXT,	C_NONE,	C_REG,		22, 12, REGSB },
93
	{ AMOVB,	C_SAUTO,C_NONE,	C_REG,		22, 12, REGSP },
94
	{ AMOVB,	C_SOREG,C_NONE,	C_REG,		22, 12, 0 },
95
	{ AMOVH,	C_SEXT,	C_NONE,	C_REG,		22, 12, REGSB },
96
	{ AMOVH,	C_SAUTO,C_NONE,	C_REG,		22, 12, REGSP },
97
	{ AMOVH,	C_SOREG,C_NONE,	C_REG,		22, 12, 0 },
98
	{ AMOVHU,	C_SEXT,	C_NONE,	C_REG,		22, 12, REGSB },
99
	{ AMOVHU,	C_SAUTO,C_NONE,	C_REG,		22, 12, REGSP },
100
	{ AMOVHU,	C_SOREG,C_NONE,	C_REG,		22, 12, 0 },
101
 
102
	{ AMOVH,	C_REG,	C_NONE,	C_SEXT,		23, 12, REGSB },
103
	{ AMOVH,	C_REG,	C_NONE,	C_SAUTO,	23, 12, REGSP },
104
	{ AMOVH,	C_REG,	C_NONE,	C_SOREG,	23, 12, 0 },
105
	{ AMOVHU,	C_REG,	C_NONE,	C_SEXT,		23, 12, REGSB },
106
	{ AMOVHU,	C_REG,	C_NONE,	C_SAUTO,	23, 12, REGSP },
107
	{ AMOVHU,	C_REG,	C_NONE,	C_SOREG,	23, 12, 0 },
108
 
109
	{ AMOVW,	C_REG,	C_NONE,	C_LEXT,		30, 8, REGSB,	LTO },
110
	{ AMOVW,	C_REG,	C_NONE,	C_LAUTO,	30, 8, REGSP,	LTO },
111
	{ AMOVW,	C_REG,	C_NONE,	C_LOREG,	30, 8, 0,	LTO },
112
	{ AMOVW,	C_REG,	C_NONE,	C_ADDR,		64, 8, 0,	LTO },
113
	{ AMOVB,	C_REG,	C_NONE,	C_LEXT,		30, 8, REGSB,	LTO },
114
	{ AMOVB,	C_REG,	C_NONE,	C_LAUTO,	30, 8, REGSP,	LTO },
115
	{ AMOVB,	C_REG,	C_NONE,	C_LOREG,	30, 8, 0,	LTO },
116
	{ AMOVB,	C_REG,	C_NONE,	C_ADDR,		64, 8, 0,	LTO },
117
	{ AMOVBU,	C_REG,	C_NONE,	C_LEXT,		30, 8, REGSB,	LTO },
118
	{ AMOVBU,	C_REG,	C_NONE,	C_LAUTO,	30, 8, REGSP,	LTO },
119
	{ AMOVBU,	C_REG,	C_NONE,	C_LOREG,	30, 8, 0,	LTO },
120
	{ AMOVBU,	C_REG,	C_NONE,	C_ADDR,		64, 8, 0,	LTO },
121
 
122
	{ AMOVW,	C_LEXT,	C_NONE,	C_REG,		31, 8, REGSB,	LFROM },
123
	{ AMOVW,	C_LAUTO,C_NONE,	C_REG,		31, 8, REGSP,	LFROM },
124
	{ AMOVW,	C_LOREG,C_NONE,	C_REG,		31, 8, 0,	LFROM },
125
	{ AMOVW,	C_ADDR,	C_NONE,	C_REG,		65, 8, 0,	LFROM },
126
	{ AMOVBU,	C_LEXT,	C_NONE,	C_REG,		31, 8, REGSB,	LFROM },
127
	{ AMOVBU,	C_LAUTO,C_NONE,	C_REG,		31, 8, REGSP,	LFROM },
128
	{ AMOVBU,	C_LOREG,C_NONE,	C_REG,		31, 8, 0,	LFROM },
129
	{ AMOVBU,	C_ADDR,	C_NONE,	C_REG,		65, 8, 0,	LFROM },
130
 
131
	{ AMOVB,	C_LEXT,	C_NONE,	C_REG,		32, 16, REGSB,	LFROM },
132
	{ AMOVB,	C_LAUTO,C_NONE,	C_REG,		32, 16, REGSP,	LFROM },
133
	{ AMOVB,	C_LOREG,C_NONE,	C_REG,		32, 16, 0,	LFROM },
134
	{ AMOVB,	C_ADDR,	C_NONE,	C_REG,		66, 16, 0,	LFROM },
135
	{ AMOVH,	C_LEXT,	C_NONE,	C_REG,		32, 16, REGSB,	LFROM },
136
	{ AMOVH,	C_LAUTO,C_NONE,	C_REG,		32, 16, REGSP,	LFROM },
137
	{ AMOVH,	C_LOREG,C_NONE,	C_REG,		32, 16, 0,	LFROM },
138
	{ AMOVH,	C_ADDR,	C_NONE,	C_REG,		66, 16, 0,	LFROM },
139
	{ AMOVHU,	C_LEXT,	C_NONE,	C_REG,		32, 16, REGSB,	LFROM },
140
	{ AMOVHU,	C_LAUTO,C_NONE,	C_REG,		32, 16, REGSP,	LFROM },
141
	{ AMOVHU,	C_LOREG,C_NONE,	C_REG,		32, 16, 0,	LFROM },
142
	{ AMOVHU,	C_ADDR,	C_NONE,	C_REG,		66, 16, 0,	LFROM },
143
 
144
	{ AMOVH,	C_REG,	C_NONE,	C_LEXT,		33, 24, REGSB,	LTO },
145
	{ AMOVH,	C_REG,	C_NONE,	C_LAUTO,	33, 24, REGSP,	LTO },
146
	{ AMOVH,	C_REG,	C_NONE,	C_LOREG,	33, 24, 0,	LTO },
147
	{ AMOVH,	C_REG,	C_NONE,	C_ADDR,		67, 24, 0,	LTO },
148
	{ AMOVHU,	C_REG,	C_NONE,	C_LEXT,		33, 24, REGSB,	LTO },
149
	{ AMOVHU,	C_REG,	C_NONE,	C_LAUTO,	33, 24, REGSP,	LTO },
150
	{ AMOVHU,	C_REG,	C_NONE,	C_LOREG,	33, 24, 0,	LTO },
151
	{ AMOVHU,	C_REG,	C_NONE,	C_ADDR,		67, 24, 0,	LTO },
152
 
153
	{ AMOVW,	C_LECON,C_NONE,	C_REG,		34, 8, REGSB,	LFROM },
154
	{ AMOVW,	C_LACON,C_NONE,	C_REG,		34, 8, REGSP,	LFROM },
155
 
156
	{ AMOVW,	C_PSR,	C_NONE,	C_REG,		35, 4, 0 },
157
	{ AMOVW,	C_REG,	C_NONE,	C_PSR,		36, 4, 0 },
158
	{ AMOVW,	C_RCON,	C_NONE,	C_PSR,		37, 4, 0 },
159
 
160
	{ AMOVM,	C_LCON,	C_NONE,	C_SOREG,	38, 4, 0 },
161
	{ AMOVM,	C_SOREG,C_NONE,	C_LCON,		39, 4, 0 },
162
 
163
	{ ASWPW,	C_SOREG,C_REG,	C_REG,		40, 4, 0 },
164
 
165
	{ ARFE,		C_NONE,	C_NONE,	C_NONE,		41, 4, 0 },
166
 
167
	{ AMOVF,	C_FREG,	C_NONE,	C_FEXT,		50, 4, REGSB },
168
	{ AMOVF,	C_FREG,	C_NONE,	C_FAUTO,	50, 4, REGSP },
169
	{ AMOVF,	C_FREG,	C_NONE,	C_FOREG,	50, 4, 0 },
170
 
171
	{ AMOVF,	C_FEXT,	C_NONE,	C_FREG,		51, 4, REGSB },
172
	{ AMOVF,	C_FAUTO,C_NONE,	C_FREG,		51, 4, REGSP },
173
	{ AMOVF,	C_FOREG,C_NONE,	C_FREG,		51, 4, 0 },
174
 
175
	{ AMOVF,	C_FREG,	C_NONE,	C_LEXT,		52, 12, REGSB,	LTO },
176
	{ AMOVF,	C_FREG,	C_NONE,	C_LAUTO,	52, 12, REGSP,	LTO },
177
	{ AMOVF,	C_FREG,	C_NONE,	C_LOREG,	52, 12, 0,	LTO },
178
 
179
	{ AMOVF,	C_LEXT,	C_NONE,	C_FREG,		53, 12, REGSB,	LFROM },
180
	{ AMOVF,	C_LAUTO,C_NONE,	C_FREG,		53, 12, REGSP,	LFROM },
181
	{ AMOVF,	C_LOREG,C_NONE,	C_FREG,		53, 12, 0,	LFROM },
182
 
183
	{ AMOVF,	C_FREG,	C_NONE,	C_ADDR,		68, 8, 0,	LTO },
184
	{ AMOVF,	C_ADDR,	C_NONE,	C_FREG,		69, 8, 0,	LFROM },
185
 
186
	{ AADDF,	C_FREG,	C_NONE,	C_FREG,		54, 4, 0 },
187
	{ AADDF,	C_FREG,	C_REG,	C_FREG,		54, 4, 0 },
188
	{ AADDF,	C_FCON,	C_NONE,	C_FREG,		54, 4, 0 },
189
	{ AADDF,	C_FCON,	C_REG,	C_FREG,		54, 4, 0 },
190
	{ AMOVF,	C_FCON,	C_NONE,	C_FREG,		54, 4, 0 },
191
	{ AMOVF,	C_FREG, C_NONE, C_FREG,		54, 4, 0 },
192
 
193
	{ ACMPF,	C_FREG,	C_REG,	C_NONE,		54, 4, 0 },
194
	{ ACMPF,	C_FCON,	C_REG,	C_NONE,		54, 4, 0 },
195
 
196
	{ AMOVFW,	C_FREG,	C_NONE,	C_REG,		55, 4, 0 },
197
	{ AMOVFW,	C_REG,	C_NONE,	C_FREG,		55, 4, 0 },
198
 
199
	{ AMOVW,	C_REG,	C_NONE,	C_FCR,		56, 4, 0 },
200
	{ AMOVW,	C_FCR,	C_NONE,	C_REG,		57, 4, 0 },
201
 
202
	{ AMOVW,	C_SHIFT,C_NONE,	C_REG,		59, 4, 0 },
203
	{ AMOVBU,	C_SHIFT,C_NONE,	C_REG,		59, 4, 0 },
204
 
205
	{ AMOVB,	C_SHIFT,C_NONE,	C_REG,		60, 4, 0 },
206
 
207
	{ AMOVW,	C_REG,	C_NONE,	C_SHIFT,	61, 4, 0 },
208
	{ AMOVB,	C_REG,	C_NONE,	C_SHIFT,	61, 4, 0 },
209
	{ AMOVBU,	C_REG,	C_NONE,	C_SHIFT,	61, 4, 0 },
210
 
211
	{ ACASE,	C_REG,	C_NONE,	C_NONE,		62, 4, 0 },
212
	{ ABCASE,	C_NONE, C_NONE, C_SBRA,		63, 4, 0 },
213
 
214
	{ AADDF,	C_FREG,	C_NONE,	C_FREG,		74, 4, 0, VFP },
215
	{ AADDF,	C_FREG,	C_REG,	C_FREG,		74, 4, 0, VFP },
216
	{ AMOVF,	C_FREG, C_NONE, C_FREG,		74, 4, 0, VFP },
217
	{ ACMPF,	C_FREG,	C_REG,	C_NONE,		75, 8, 0, VFP },
218
	{ ACMPF,	C_FCON,	C_REG,	C_NONE,		75, 8, 0, VFP },
219
	{ AMOVFW,	C_FREG,	C_NONE,	C_REG,		76, 8, 0, VFP },
220
	{ AMOVFW,	C_REG,	C_NONE,	C_FREG,		76, 8, 0, VFP },
221
 
222
	{ AMOVH,	C_REG,	C_NONE,	C_HEXT,		70, 4, REGSB,	V4 },
223
	{ AMOVH,	C_REG,	C_NONE, C_HAUTO,	70, 4, REGSP,	V4 },
224
	{ AMOVH,	C_REG,	C_NONE,	C_HOREG,	70, 4, 0,	V4 },
225
	{ AMOVHU,	C_REG,	C_NONE,	C_HEXT,		70, 4, REGSB,	V4 },
226
	{ AMOVHU,	C_REG,	C_NONE, C_HAUTO,	70, 4, REGSP,	V4 },
227
	{ AMOVHU,	C_REG,	C_NONE,	C_HOREG,	70, 4, 0,	V4 },
228
 
229
	{ AMOVB,	C_HEXT,	C_NONE, C_REG,		71, 4, REGSB,	V4 },
230
	{ AMOVB,	C_HAUTO,C_NONE,	C_REG,		71, 4, REGSP,	V4 },
231
	{ AMOVB,	C_HOREG,C_NONE,	C_REG,		71, 4, 0,	V4 },
232
	{ AMOVH,	C_HEXT,	C_NONE,	C_REG,		71, 4, REGSB,	V4 },
233
	{ AMOVH,	C_HAUTO,C_NONE, C_REG,		71, 4, REGSP,	V4 },
234
	{ AMOVH,	C_HOREG,C_NONE,	C_REG,		71, 4, 0,	V4 },
235
	{ AMOVHU,	C_HEXT,	C_NONE,	C_REG,		71, 4, REGSB,	V4 },
236
	{ AMOVHU,	C_HAUTO,C_NONE, C_REG,		71, 4, REGSP,	V4 },
237
	{ AMOVHU,	C_HOREG,C_NONE,	C_REG,		71, 4, 0,	V4 },
238
 
239
	{ AMOVH,	C_REG,	C_NONE,	C_LEXT,		72, 8, REGSB,	LTO|V4 },
240
	{ AMOVH,	C_REG,	C_NONE, C_LAUTO,	72, 8, REGSP,	LTO|V4 },
241
	{ AMOVH,	C_REG,	C_NONE,	C_LOREG,	72, 8, 0,	LTO|V4 },
242
	{ AMOVHU,	C_REG,	C_NONE,	C_LEXT,		72, 8, REGSB,	LTO|V4 },
243
	{ AMOVHU,	C_REG,	C_NONE, C_LAUTO,	72, 8, REGSP,	LTO|V4 },
244
	{ AMOVHU,	C_REG,	C_NONE,	C_LOREG,	72, 8, 0,	LTO|V4 },
245
 
246
	{ AMOVB,	C_LEXT,	C_NONE, C_REG,		73, 8, REGSB,	LFROM|V4 },
247
	{ AMOVB,	C_LAUTO,C_NONE,	C_REG,		73, 8, REGSP,	LFROM|V4 },
248
	{ AMOVB,	C_LOREG,C_NONE,	C_REG,		73, 8, 0,	LFROM|V4 },
249
	{ AMOVH,	C_LEXT,	C_NONE,	C_REG,		73, 8, REGSB,	LFROM|V4 },
250
	{ AMOVH,	C_LAUTO,C_NONE, C_REG,		73, 8, REGSP,	LFROM|V4 },
251
	{ AMOVH,	C_LOREG,C_NONE,	C_REG,		73, 8, 0,	LFROM|V4 },
252
	{ AMOVHU,	C_LEXT,	C_NONE,	C_REG,		73, 8, REGSB,	LFROM|V4 },
253
	{ AMOVHU,	C_LAUTO,C_NONE, C_REG,		73, 8, REGSP,	LFROM|V4 },
254
	{ AMOVHU,	C_LOREG,C_NONE,	C_REG,		73, 8, 0,	LFROM|V4 },
255
 
256
	{ AXXX,		C_NONE,	C_NONE,	C_NONE,		 0, 4, 0 },
257
};