Copyright year update in most files of the GDB Project.
[deliverable/binutils-gdb.git] / sim / sh64 / defs-media.h
1 /* ISA definitions header for media.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996-2010, 2012 Free Software Foundation, Inc.
6
7 This file is part of the GNU simulators.
8
9 This file is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
12 any later version.
13
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
22
23 */
24
25 #ifndef DEFS_SH64_MEDIA_H
26 #define DEFS_SH64_MEDIA_H
27
28 /* Instruction argument buffer. */
29
30 union sem_fields {
31 struct { /* no operands */
32 int empty;
33 } sfmt_empty;
34 struct { /* */
35 UINT f_dest;
36 UINT f_uimm16;
37 } sfmt_shori;
38 struct { /* */
39 DI f_disp16;
40 UINT f_tra;
41 } sfmt_pta;
42 struct { /* */
43 INT f_imm16;
44 UINT f_dest;
45 } sfmt_movi;
46 struct { /* */
47 UINT f_dest;
48 UINT f_left_right;
49 } sfmt_fabsd;
50 struct { /* */
51 UINT f_dest;
52 UINT f_trb;
53 } sfmt_blink;
54 struct { /* */
55 INT f_imm6;
56 UINT f_dest;
57 UINT f_left;
58 } sfmt_xori;
59 struct { /* */
60 UINT f_dest;
61 UINT f_left;
62 UINT f_uimm6;
63 } sfmt_shari;
64 struct { /* */
65 INT f_imm10;
66 UINT f_dest;
67 UINT f_left;
68 } sfmt_ori;
69 struct { /* */
70 SI f_disp10x2;
71 UINT f_dest;
72 UINT f_left;
73 } sfmt_lduw;
74 struct { /* */
75 INT f_disp6;
76 UINT f_dest;
77 UINT f_left;
78 } sfmt_getcfg;
79 struct { /* */
80 SI f_disp10x4;
81 UINT f_dest;
82 UINT f_left;
83 } sfmt_flds;
84 struct { /* */
85 SI f_disp10x8;
86 UINT f_dest;
87 UINT f_left;
88 } sfmt_fldd;
89 struct { /* */
90 INT f_imm6;
91 UINT f_left;
92 UINT f_tra;
93 } sfmt_beqi;
94 struct { /* */
95 UINT f_left;
96 UINT f_right;
97 UINT f_tra;
98 } sfmt_beq;
99 struct { /* */
100 INT f_disp10;
101 UINT f_dest;
102 UINT f_left;
103 } sfmt_addi;
104 struct { /* */
105 UINT f_dest;
106 UINT f_left;
107 UINT f_right;
108 } sfmt_add;
109 #if WITH_SCACHE_PBB
110 /* Writeback handler. */
111 struct {
112 /* Pointer to argbuf entry for insn whose results need writing back. */
113 const struct argbuf *abuf;
114 } write;
115 /* x-before handler */
116 struct {
117 /*const SCACHE *insns[MAX_PARALLEL_INSNS];*/
118 int first_p;
119 } before;
120 /* x-after handler */
121 struct {
122 int empty;
123 } after;
124 /* This entry is used to terminate each pbb. */
125 struct {
126 /* Number of insns in pbb. */
127 int insn_count;
128 /* Next pbb to execute. */
129 SCACHE *next;
130 SCACHE *branch_target;
131 } chain;
132 #endif
133 };
134
135 /* The ARGBUF struct. */
136 struct argbuf {
137 /* These are the baseclass definitions. */
138 IADDR addr;
139 const IDESC *idesc;
140 char trace_p;
141 char profile_p;
142 /* ??? Temporary hack for skip insns. */
143 char skip_count;
144 char unused;
145 /* cpu specific data follows */
146 union sem semantic;
147 int written;
148 union sem_fields fields;
149 };
150
151 /* A cached insn.
152
153 ??? SCACHE used to contain more than just argbuf. We could delete the
154 type entirely and always just use ARGBUF, but for future concerns and as
155 a level of abstraction it is left in. */
156
157 struct scache {
158 struct argbuf argbuf;
159 };
160
161 /* Macros to simplify extraction, reading and semantic code.
162 These define and assign the local vars that contain the insn's fields. */
163
164 #define EXTRACT_IFMT_EMPTY_VARS \
165 unsigned int length;
166 #define EXTRACT_IFMT_EMPTY_CODE \
167 length = 0; \
168
169 #define EXTRACT_IFMT_ADD_VARS \
170 UINT f_op; \
171 UINT f_left; \
172 UINT f_ext; \
173 UINT f_right; \
174 UINT f_dest; \
175 UINT f_rsvd; \
176 unsigned int length;
177 #define EXTRACT_IFMT_ADD_CODE \
178 length = 4; \
179 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
180 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
181 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
182 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
183 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
184 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
185
186 #define EXTRACT_IFMT_ADDI_VARS \
187 UINT f_op; \
188 UINT f_left; \
189 INT f_disp10; \
190 UINT f_dest; \
191 UINT f_rsvd; \
192 unsigned int length;
193 #define EXTRACT_IFMT_ADDI_CODE \
194 length = 4; \
195 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
196 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
197 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10); \
198 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
199 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
200
201 #define EXTRACT_IFMT_ALLOCO_VARS \
202 UINT f_op; \
203 UINT f_left; \
204 UINT f_ext; \
205 SI f_disp6x32; \
206 UINT f_dest; \
207 UINT f_rsvd; \
208 unsigned int length;
209 #define EXTRACT_IFMT_ALLOCO_CODE \
210 length = 4; \
211 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
212 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
213 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
214 f_disp6x32 = ((EXTRACT_MSB0_SINT (insn, 32, 16, 6)) << (5)); \
215 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
216 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
217
218 #define EXTRACT_IFMT_BEQ_VARS \
219 UINT f_op; \
220 UINT f_left; \
221 UINT f_ext; \
222 UINT f_right; \
223 UINT f_likely; \
224 UINT f_23_2; \
225 UINT f_tra; \
226 UINT f_rsvd; \
227 unsigned int length;
228 #define EXTRACT_IFMT_BEQ_CODE \
229 length = 4; \
230 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
231 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
232 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
233 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
234 f_likely = EXTRACT_MSB0_UINT (insn, 32, 22, 1); \
235 f_23_2 = EXTRACT_MSB0_UINT (insn, 32, 23, 2); \
236 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3); \
237 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
238
239 #define EXTRACT_IFMT_BEQI_VARS \
240 UINT f_op; \
241 UINT f_left; \
242 UINT f_ext; \
243 INT f_imm6; \
244 UINT f_likely; \
245 UINT f_23_2; \
246 UINT f_tra; \
247 UINT f_rsvd; \
248 unsigned int length;
249 #define EXTRACT_IFMT_BEQI_CODE \
250 length = 4; \
251 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
252 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
253 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
254 f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6); \
255 f_likely = EXTRACT_MSB0_UINT (insn, 32, 22, 1); \
256 f_23_2 = EXTRACT_MSB0_UINT (insn, 32, 23, 2); \
257 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3); \
258 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
259
260 #define EXTRACT_IFMT_BLINK_VARS \
261 UINT f_op; \
262 UINT f_6_3; \
263 UINT f_trb; \
264 UINT f_ext; \
265 UINT f_right; \
266 UINT f_dest; \
267 UINT f_rsvd; \
268 unsigned int length;
269 #define EXTRACT_IFMT_BLINK_CODE \
270 length = 4; \
271 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
272 f_6_3 = EXTRACT_MSB0_UINT (insn, 32, 6, 3); \
273 f_trb = EXTRACT_MSB0_UINT (insn, 32, 9, 3); \
274 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
275 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
276 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
277 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
278
279 #define EXTRACT_IFMT_BRK_VARS \
280 UINT f_op; \
281 UINT f_left; \
282 UINT f_ext; \
283 UINT f_right; \
284 UINT f_dest; \
285 UINT f_rsvd; \
286 unsigned int length;
287 #define EXTRACT_IFMT_BRK_CODE \
288 length = 4; \
289 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
290 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
291 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
292 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
293 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
294 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
295
296 #define EXTRACT_IFMT_BYTEREV_VARS \
297 UINT f_op; \
298 UINT f_left; \
299 UINT f_ext; \
300 UINT f_right; \
301 UINT f_dest; \
302 UINT f_rsvd; \
303 unsigned int length;
304 #define EXTRACT_IFMT_BYTEREV_CODE \
305 length = 4; \
306 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
307 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
308 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
309 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
310 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
311 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
312
313 #define EXTRACT_IFMT_FABSD_VARS \
314 UINT f_op; \
315 UINT f_left; \
316 UINT f_right; \
317 UINT f_left_right; \
318 UINT f_ext; \
319 UINT f_dest; \
320 UINT f_rsvd; \
321 unsigned int length;
322 #define EXTRACT_IFMT_FABSD_CODE \
323 length = 4; \
324 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
325 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
326 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
327 f_left_right = f_left;\
328 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
329 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
330 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
331
332 #define EXTRACT_IFMT_FABSS_VARS \
333 UINT f_op; \
334 UINT f_left; \
335 UINT f_right; \
336 UINT f_left_right; \
337 UINT f_ext; \
338 UINT f_dest; \
339 UINT f_rsvd; \
340 unsigned int length;
341 #define EXTRACT_IFMT_FABSS_CODE \
342 length = 4; \
343 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
344 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
345 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
346 f_left_right = f_left;\
347 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
348 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
349 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
350
351 #define EXTRACT_IFMT_FADDD_VARS \
352 UINT f_op; \
353 UINT f_left; \
354 UINT f_ext; \
355 UINT f_right; \
356 UINT f_dest; \
357 UINT f_rsvd; \
358 unsigned int length;
359 #define EXTRACT_IFMT_FADDD_CODE \
360 length = 4; \
361 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
362 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
363 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
364 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
365 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
366 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
367
368 #define EXTRACT_IFMT_FADDS_VARS \
369 UINT f_op; \
370 UINT f_left; \
371 UINT f_ext; \
372 UINT f_right; \
373 UINT f_dest; \
374 UINT f_rsvd; \
375 unsigned int length;
376 #define EXTRACT_IFMT_FADDS_CODE \
377 length = 4; \
378 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
379 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
380 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
381 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
382 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
383 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
384
385 #define EXTRACT_IFMT_FCMPEQD_VARS \
386 UINT f_op; \
387 UINT f_left; \
388 UINT f_ext; \
389 UINT f_right; \
390 UINT f_dest; \
391 UINT f_rsvd; \
392 unsigned int length;
393 #define EXTRACT_IFMT_FCMPEQD_CODE \
394 length = 4; \
395 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
396 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
397 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
398 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
399 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
400 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
401
402 #define EXTRACT_IFMT_FCMPEQS_VARS \
403 UINT f_op; \
404 UINT f_left; \
405 UINT f_ext; \
406 UINT f_right; \
407 UINT f_dest; \
408 UINT f_rsvd; \
409 unsigned int length;
410 #define EXTRACT_IFMT_FCMPEQS_CODE \
411 length = 4; \
412 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
413 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
414 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
415 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
416 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
417 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
418
419 #define EXTRACT_IFMT_FCNVDS_VARS \
420 UINT f_op; \
421 UINT f_left; \
422 UINT f_right; \
423 UINT f_left_right; \
424 UINT f_ext; \
425 UINT f_dest; \
426 UINT f_rsvd; \
427 unsigned int length;
428 #define EXTRACT_IFMT_FCNVDS_CODE \
429 length = 4; \
430 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
431 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
432 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
433 f_left_right = f_left;\
434 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
435 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
436 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
437
438 #define EXTRACT_IFMT_FCNVSD_VARS \
439 UINT f_op; \
440 UINT f_left; \
441 UINT f_right; \
442 UINT f_left_right; \
443 UINT f_ext; \
444 UINT f_dest; \
445 UINT f_rsvd; \
446 unsigned int length;
447 #define EXTRACT_IFMT_FCNVSD_CODE \
448 length = 4; \
449 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
450 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
451 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
452 f_left_right = f_left;\
453 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
454 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
455 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
456
457 #define EXTRACT_IFMT_FGETSCR_VARS \
458 UINT f_op; \
459 UINT f_left; \
460 UINT f_ext; \
461 UINT f_right; \
462 UINT f_dest; \
463 UINT f_rsvd; \
464 unsigned int length;
465 #define EXTRACT_IFMT_FGETSCR_CODE \
466 length = 4; \
467 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
468 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
469 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
470 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
471 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
472 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
473
474 #define EXTRACT_IFMT_FIPRS_VARS \
475 UINT f_op; \
476 UINT f_left; \
477 UINT f_ext; \
478 UINT f_right; \
479 UINT f_dest; \
480 UINT f_rsvd; \
481 unsigned int length;
482 #define EXTRACT_IFMT_FIPRS_CODE \
483 length = 4; \
484 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
485 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
486 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
487 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
488 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
489 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
490
491 #define EXTRACT_IFMT_FLDD_VARS \
492 UINT f_op; \
493 UINT f_left; \
494 SI f_disp10x8; \
495 UINT f_dest; \
496 UINT f_rsvd; \
497 unsigned int length;
498 #define EXTRACT_IFMT_FLDD_CODE \
499 length = 4; \
500 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
501 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
502 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3)); \
503 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
504 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
505
506 #define EXTRACT_IFMT_FLDP_VARS \
507 UINT f_op; \
508 UINT f_left; \
509 SI f_disp10x8; \
510 UINT f_dest; \
511 UINT f_rsvd; \
512 unsigned int length;
513 #define EXTRACT_IFMT_FLDP_CODE \
514 length = 4; \
515 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
516 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
517 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3)); \
518 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
519 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
520
521 #define EXTRACT_IFMT_FLDS_VARS \
522 UINT f_op; \
523 UINT f_left; \
524 SI f_disp10x4; \
525 UINT f_dest; \
526 UINT f_rsvd; \
527 unsigned int length;
528 #define EXTRACT_IFMT_FLDS_CODE \
529 length = 4; \
530 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
531 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
532 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2)); \
533 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
534 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
535
536 #define EXTRACT_IFMT_FLDXD_VARS \
537 UINT f_op; \
538 UINT f_left; \
539 UINT f_ext; \
540 UINT f_right; \
541 UINT f_dest; \
542 UINT f_rsvd; \
543 unsigned int length;
544 #define EXTRACT_IFMT_FLDXD_CODE \
545 length = 4; \
546 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
547 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
548 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
549 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
550 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
551 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
552
553 #define EXTRACT_IFMT_FLDXP_VARS \
554 UINT f_op; \
555 UINT f_left; \
556 UINT f_ext; \
557 UINT f_right; \
558 UINT f_dest; \
559 UINT f_rsvd; \
560 unsigned int length;
561 #define EXTRACT_IFMT_FLDXP_CODE \
562 length = 4; \
563 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
564 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
565 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
566 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
567 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
568 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
569
570 #define EXTRACT_IFMT_FMOVDQ_VARS \
571 UINT f_op; \
572 UINT f_left; \
573 UINT f_right; \
574 UINT f_left_right; \
575 UINT f_ext; \
576 UINT f_dest; \
577 UINT f_rsvd; \
578 unsigned int length;
579 #define EXTRACT_IFMT_FMOVDQ_CODE \
580 length = 4; \
581 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
582 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
583 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
584 f_left_right = f_left;\
585 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
586 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
587 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
588
589 #define EXTRACT_IFMT_FMOVLS_VARS \
590 UINT f_op; \
591 UINT f_left; \
592 UINT f_ext; \
593 UINT f_right; \
594 UINT f_dest; \
595 UINT f_rsvd; \
596 unsigned int length;
597 #define EXTRACT_IFMT_FMOVLS_CODE \
598 length = 4; \
599 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
600 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
601 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
602 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
603 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
604 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
605
606 #define EXTRACT_IFMT_FMOVSL_VARS \
607 UINT f_op; \
608 UINT f_left; \
609 UINT f_right; \
610 UINT f_left_right; \
611 UINT f_ext; \
612 UINT f_dest; \
613 UINT f_rsvd; \
614 unsigned int length;
615 #define EXTRACT_IFMT_FMOVSL_CODE \
616 length = 4; \
617 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
618 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
619 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
620 f_left_right = f_left;\
621 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
622 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
623 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
624
625 #define EXTRACT_IFMT_FPUTSCR_VARS \
626 UINT f_op; \
627 UINT f_left; \
628 UINT f_right; \
629 UINT f_left_right; \
630 UINT f_ext; \
631 UINT f_dest; \
632 UINT f_rsvd; \
633 unsigned int length;
634 #define EXTRACT_IFMT_FPUTSCR_CODE \
635 length = 4; \
636 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
637 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
638 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
639 f_left_right = f_left;\
640 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
641 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
642 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
643
644 #define EXTRACT_IFMT_FSTXD_VARS \
645 UINT f_op; \
646 UINT f_left; \
647 UINT f_ext; \
648 UINT f_right; \
649 UINT f_dest; \
650 UINT f_rsvd; \
651 unsigned int length;
652 #define EXTRACT_IFMT_FSTXD_CODE \
653 length = 4; \
654 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
655 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
656 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
657 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
658 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
659 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
660
661 #define EXTRACT_IFMT_FTRVS_VARS \
662 UINT f_op; \
663 UINT f_left; \
664 UINT f_ext; \
665 UINT f_right; \
666 UINT f_dest; \
667 UINT f_rsvd; \
668 unsigned int length;
669 #define EXTRACT_IFMT_FTRVS_CODE \
670 length = 4; \
671 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
672 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
673 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
674 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
675 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
676 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
677
678 #define EXTRACT_IFMT_GETCFG_VARS \
679 UINT f_op; \
680 UINT f_left; \
681 UINT f_ext; \
682 INT f_disp6; \
683 UINT f_dest; \
684 UINT f_rsvd; \
685 unsigned int length;
686 #define EXTRACT_IFMT_GETCFG_CODE \
687 length = 4; \
688 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
689 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
690 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
691 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6); \
692 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
693 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
694
695 #define EXTRACT_IFMT_GETCON_VARS \
696 UINT f_op; \
697 UINT f_left; \
698 UINT f_ext; \
699 UINT f_right; \
700 UINT f_dest; \
701 UINT f_rsvd; \
702 unsigned int length;
703 #define EXTRACT_IFMT_GETCON_CODE \
704 length = 4; \
705 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
706 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
707 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
708 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
709 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
710 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
711
712 #define EXTRACT_IFMT_LDL_VARS \
713 UINT f_op; \
714 UINT f_left; \
715 SI f_disp10x4; \
716 UINT f_dest; \
717 UINT f_rsvd; \
718 unsigned int length;
719 #define EXTRACT_IFMT_LDL_CODE \
720 length = 4; \
721 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
722 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
723 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2)); \
724 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
725 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
726
727 #define EXTRACT_IFMT_LDQ_VARS \
728 UINT f_op; \
729 UINT f_left; \
730 SI f_disp10x8; \
731 UINT f_dest; \
732 UINT f_rsvd; \
733 unsigned int length;
734 #define EXTRACT_IFMT_LDQ_CODE \
735 length = 4; \
736 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
737 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
738 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3)); \
739 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
740 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
741
742 #define EXTRACT_IFMT_MMACNFX_WL_VARS \
743 UINT f_op; \
744 UINT f_ext; \
745 UINT f_right; \
746 UINT f_right; \
747 UINT f_dest; \
748 UINT f_rsvd; \
749 unsigned int length;
750 #define EXTRACT_IFMT_MMACNFX_WL_CODE \
751 length = 4; \
752 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
753 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
754 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
755 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
756 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
757 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
758
759 #define EXTRACT_IFMT_MOVI_VARS \
760 UINT f_op; \
761 INT f_imm16; \
762 UINT f_dest; \
763 UINT f_rsvd; \
764 unsigned int length;
765 #define EXTRACT_IFMT_MOVI_CODE \
766 length = 4; \
767 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
768 f_imm16 = EXTRACT_MSB0_SINT (insn, 32, 6, 16); \
769 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
770 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
771
772 #define EXTRACT_IFMT_ORI_VARS \
773 UINT f_op; \
774 UINT f_left; \
775 INT f_imm10; \
776 UINT f_dest; \
777 UINT f_rsvd; \
778 unsigned int length;
779 #define EXTRACT_IFMT_ORI_CODE \
780 length = 4; \
781 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
782 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
783 f_imm10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10); \
784 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
785 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
786
787 #define EXTRACT_IFMT_PREFI_VARS \
788 UINT f_op; \
789 UINT f_left; \
790 UINT f_ext; \
791 SI f_disp6x32; \
792 UINT f_right; \
793 UINT f_rsvd; \
794 unsigned int length;
795 #define EXTRACT_IFMT_PREFI_CODE \
796 length = 4; \
797 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
798 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
799 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
800 f_disp6x32 = ((EXTRACT_MSB0_SINT (insn, 32, 16, 6)) << (5)); \
801 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
802 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
803
804 #define EXTRACT_IFMT_PTA_VARS \
805 UINT f_op; \
806 DI f_disp16; \
807 UINT f_likely; \
808 UINT f_23_2; \
809 UINT f_tra; \
810 UINT f_rsvd; \
811 unsigned int length;
812 #define EXTRACT_IFMT_PTA_CODE \
813 length = 4; \
814 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
815 f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 6, 16)) << (2))) + (pc)); \
816 f_likely = EXTRACT_MSB0_UINT (insn, 32, 22, 1); \
817 f_23_2 = EXTRACT_MSB0_UINT (insn, 32, 23, 2); \
818 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3); \
819 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
820
821 #define EXTRACT_IFMT_PTABS_VARS \
822 UINT f_op; \
823 UINT f_left; \
824 UINT f_ext; \
825 UINT f_right; \
826 UINT f_likely; \
827 UINT f_23_2; \
828 UINT f_tra; \
829 UINT f_rsvd; \
830 unsigned int length;
831 #define EXTRACT_IFMT_PTABS_CODE \
832 length = 4; \
833 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
834 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
835 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
836 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
837 f_likely = EXTRACT_MSB0_UINT (insn, 32, 22, 1); \
838 f_23_2 = EXTRACT_MSB0_UINT (insn, 32, 23, 2); \
839 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3); \
840 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
841
842 #define EXTRACT_IFMT_PUTCON_VARS \
843 UINT f_op; \
844 UINT f_left; \
845 UINT f_ext; \
846 UINT f_right; \
847 UINT f_dest; \
848 UINT f_rsvd; \
849 unsigned int length;
850 #define EXTRACT_IFMT_PUTCON_CODE \
851 length = 4; \
852 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
853 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
854 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
855 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
856 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
857 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
858
859 #define EXTRACT_IFMT_SHARI_VARS \
860 UINT f_op; \
861 UINT f_left; \
862 UINT f_ext; \
863 UINT f_uimm6; \
864 UINT f_dest; \
865 UINT f_rsvd; \
866 unsigned int length;
867 #define EXTRACT_IFMT_SHARI_CODE \
868 length = 4; \
869 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
870 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
871 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
872 f_uimm6 = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
873 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
874 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
875
876 #define EXTRACT_IFMT_SHORI_VARS \
877 UINT f_op; \
878 UINT f_uimm16; \
879 UINT f_dest; \
880 UINT f_rsvd; \
881 unsigned int length;
882 #define EXTRACT_IFMT_SHORI_CODE \
883 length = 4; \
884 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
885 f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 6, 16); \
886 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
887 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
888
889 #define EXTRACT_IFMT_STW_VARS \
890 UINT f_op; \
891 UINT f_left; \
892 SI f_disp10x2; \
893 UINT f_dest; \
894 UINT f_rsvd; \
895 unsigned int length;
896 #define EXTRACT_IFMT_STW_CODE \
897 length = 4; \
898 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
899 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
900 f_disp10x2 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (1)); \
901 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
902 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
903
904 #define EXTRACT_IFMT_TRAPA_VARS \
905 UINT f_op; \
906 UINT f_left; \
907 UINT f_ext; \
908 UINT f_right; \
909 UINT f_dest; \
910 UINT f_rsvd; \
911 unsigned int length;
912 #define EXTRACT_IFMT_TRAPA_CODE \
913 length = 4; \
914 f_op = EXTRACT_MSB0_UINT (insn, 32, 0, 6); \
915 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6); \
916 f_ext = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
917 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6); \
918 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6); \
919 f_rsvd = EXTRACT_MSB0_UINT (insn, 32, 28, 4); \
920
921 #endif /* DEFS_SH64_MEDIA_H */
This page took 0.050007 seconds and 4 git commands to generate.