1 /* ISA definitions header for media.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
9 This program 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 2, or (at your option)
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
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 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 #ifndef DEFS_SH64_MEDIA_H
26 #define DEFS_SH64_MEDIA_H
28 /* Instruction argument buffer. */
31 struct { /* no operands */
115 /* Writeback handler. */
117 /* Pointer to argbuf entry for insn whose results need writing back. */
118 const struct argbuf *abuf;
120 /* x-before handler */
122 /*const SCACHE *insns[MAX_PARALLEL_INSNS];*/
125 /* x-after handler */
129 /* This entry is used to terminate each pbb. */
131 /* Number of insns in pbb. */
133 /* Next pbb to execute. */
135 SCACHE *branch_target;
140 /* The ARGBUF struct. */
142 /* These are the baseclass definitions. */
147 /* ??? Temporary hack for skip insns. */
150 /* cpu specific data follows */
153 union sem_fields fields;
158 ??? SCACHE used to contain more than just argbuf. We could delete the
159 type entirely and always just use ARGBUF, but for future concerns and as
160 a level of abstraction it is left in. */
163 struct argbuf argbuf;
166 /* Macros to simplify extraction, reading and semantic code.
167 These define and assign the local vars that contain the insn's fields. */
169 #define EXTRACT_IFMT_EMPTY_VARS \
171 #define EXTRACT_IFMT_EMPTY_CODE \
174 #define EXTRACT_IFMT_ADD_VARS \
182 #define EXTRACT_IFMT_ADD_CODE \
184 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
185 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
186 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
187 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
188 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
189 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
191 #define EXTRACT_IFMT_ADDI_VARS \
198 #define EXTRACT_IFMT_ADDI_CODE \
200 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
201 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
202 f_disp10 = EXTRACT_LSB0_INT (insn, 32, 19, 10); \
203 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
204 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
206 #define EXTRACT_IFMT_ALLOCO_VARS \
214 #define EXTRACT_IFMT_ALLOCO_CODE \
216 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
217 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
218 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
219 f_disp6x32 = ((EXTRACT_LSB0_INT (insn, 32, 15, 6)) << (5)); \
220 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
221 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
223 #define EXTRACT_IFMT_BEQ_VARS \
233 #define EXTRACT_IFMT_BEQ_CODE \
235 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
236 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
237 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
238 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
239 f_likely = EXTRACT_LSB0_UINT (insn, 32, 9, 1); \
240 f_8_2 = EXTRACT_LSB0_UINT (insn, 32, 8, 2); \
241 f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3); \
242 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
244 #define EXTRACT_IFMT_BEQI_VARS \
254 #define EXTRACT_IFMT_BEQI_CODE \
256 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
257 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
258 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
259 f_imm6 = EXTRACT_LSB0_INT (insn, 32, 15, 6); \
260 f_likely = EXTRACT_LSB0_UINT (insn, 32, 9, 1); \
261 f_8_2 = EXTRACT_LSB0_UINT (insn, 32, 8, 2); \
262 f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3); \
263 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
265 #define EXTRACT_IFMT_BLINK_VARS \
274 #define EXTRACT_IFMT_BLINK_CODE \
276 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
277 f_25 = EXTRACT_LSB0_UINT (insn, 32, 25, 3); \
278 f_trb = EXTRACT_LSB0_UINT (insn, 32, 22, 3); \
279 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
280 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
281 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
282 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
284 #define EXTRACT_IFMT_BRK_VARS \
292 #define EXTRACT_IFMT_BRK_CODE \
294 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
295 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
296 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
297 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
298 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
299 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
301 #define EXTRACT_IFMT_BYTEREV_VARS \
309 #define EXTRACT_IFMT_BYTEREV_CODE \
311 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
312 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
313 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
314 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
315 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
316 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
318 #define EXTRACT_IFMT_FABSD_VARS \
327 #define EXTRACT_IFMT_FABSD_CODE \
329 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
330 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
331 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
332 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
333 f_left_right = f_left;\
334 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
335 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
337 #define EXTRACT_IFMT_FABSS_VARS \
346 #define EXTRACT_IFMT_FABSS_CODE \
348 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
349 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
350 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
351 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
352 f_left_right = f_left;\
353 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
354 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
356 #define EXTRACT_IFMT_FADDD_VARS \
364 #define EXTRACT_IFMT_FADDD_CODE \
366 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
367 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
368 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
369 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
370 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
371 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
373 #define EXTRACT_IFMT_FADDS_VARS \
381 #define EXTRACT_IFMT_FADDS_CODE \
383 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
384 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
385 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
386 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
387 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
388 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
390 #define EXTRACT_IFMT_FCMPEQD_VARS \
398 #define EXTRACT_IFMT_FCMPEQD_CODE \
400 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
401 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
402 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
403 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
404 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
405 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
407 #define EXTRACT_IFMT_FCMPEQS_VARS \
415 #define EXTRACT_IFMT_FCMPEQS_CODE \
417 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
418 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
419 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
420 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
421 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
422 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
424 #define EXTRACT_IFMT_FCNVDS_VARS \
433 #define EXTRACT_IFMT_FCNVDS_CODE \
435 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
436 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
437 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
438 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
439 f_left_right = f_left;\
440 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
441 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
443 #define EXTRACT_IFMT_FCNVSD_VARS \
452 #define EXTRACT_IFMT_FCNVSD_CODE \
454 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
455 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
456 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
457 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
458 f_left_right = f_left;\
459 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
460 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
462 #define EXTRACT_IFMT_FGETSCR_VARS \
470 #define EXTRACT_IFMT_FGETSCR_CODE \
472 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
473 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
474 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
475 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
476 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
477 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
479 #define EXTRACT_IFMT_FIPRS_VARS \
487 #define EXTRACT_IFMT_FIPRS_CODE \
489 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
490 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
491 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
492 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
493 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
494 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
496 #define EXTRACT_IFMT_FLDD_VARS \
503 #define EXTRACT_IFMT_FLDD_CODE \
505 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
506 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
507 f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3)); \
508 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
509 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
511 #define EXTRACT_IFMT_FLDP_VARS \
518 #define EXTRACT_IFMT_FLDP_CODE \
520 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
521 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
522 f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3)); \
523 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
524 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
526 #define EXTRACT_IFMT_FLDS_VARS \
533 #define EXTRACT_IFMT_FLDS_CODE \
535 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
536 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
537 f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2)); \
538 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
539 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
541 #define EXTRACT_IFMT_FLDXD_VARS \
549 #define EXTRACT_IFMT_FLDXD_CODE \
551 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
552 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
553 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
554 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
555 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
556 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
558 #define EXTRACT_IFMT_FLDXP_VARS \
566 #define EXTRACT_IFMT_FLDXP_CODE \
568 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
569 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
570 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
571 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
572 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
573 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
575 #define EXTRACT_IFMT_FMOVDQ_VARS \
584 #define EXTRACT_IFMT_FMOVDQ_CODE \
586 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
587 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
588 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
589 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
590 f_left_right = f_left;\
591 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
592 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
594 #define EXTRACT_IFMT_FMOVLS_VARS \
602 #define EXTRACT_IFMT_FMOVLS_CODE \
604 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
605 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
606 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
607 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
608 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
609 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
611 #define EXTRACT_IFMT_FMOVSL_VARS \
620 #define EXTRACT_IFMT_FMOVSL_CODE \
622 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
623 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
624 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
625 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
626 f_left_right = f_left;\
627 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
628 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
630 #define EXTRACT_IFMT_FPUTSCR_VARS \
639 #define EXTRACT_IFMT_FPUTSCR_CODE \
641 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
642 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
643 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
644 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
645 f_left_right = f_left;\
646 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
647 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
649 #define EXTRACT_IFMT_FSTXD_VARS \
657 #define EXTRACT_IFMT_FSTXD_CODE \
659 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
660 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
661 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
662 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
663 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
664 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
666 #define EXTRACT_IFMT_FTRVS_VARS \
674 #define EXTRACT_IFMT_FTRVS_CODE \
676 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
677 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
678 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
679 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
680 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
681 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
683 #define EXTRACT_IFMT_GETCFG_VARS \
691 #define EXTRACT_IFMT_GETCFG_CODE \
693 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
694 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
695 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
696 f_disp6 = EXTRACT_LSB0_INT (insn, 32, 15, 6); \
697 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
698 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
700 #define EXTRACT_IFMT_GETCON_VARS \
708 #define EXTRACT_IFMT_GETCON_CODE \
710 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
711 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
712 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
713 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
714 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
715 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
717 #define EXTRACT_IFMT_LDL_VARS \
724 #define EXTRACT_IFMT_LDL_CODE \
726 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
727 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
728 f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2)); \
729 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
730 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
732 #define EXTRACT_IFMT_LDQ_VARS \
739 #define EXTRACT_IFMT_LDQ_CODE \
741 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
742 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
743 f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3)); \
744 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
745 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
747 #define EXTRACT_IFMT_MMACNFX_WL_VARS \
755 #define EXTRACT_IFMT_MMACNFX_WL_CODE \
757 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
758 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
759 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
760 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
761 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
762 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
764 #define EXTRACT_IFMT_MOVI_VARS \
770 #define EXTRACT_IFMT_MOVI_CODE \
772 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
773 f_imm16 = EXTRACT_LSB0_INT (insn, 32, 25, 16); \
774 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
775 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
777 #define EXTRACT_IFMT_ORI_VARS \
784 #define EXTRACT_IFMT_ORI_CODE \
786 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
787 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
788 f_imm10 = EXTRACT_LSB0_INT (insn, 32, 19, 10); \
789 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
790 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
792 #define EXTRACT_IFMT_PREFI_VARS \
800 #define EXTRACT_IFMT_PREFI_CODE \
802 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
803 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
804 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
805 f_disp6x32 = ((EXTRACT_LSB0_INT (insn, 32, 15, 6)) << (5)); \
806 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
807 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
809 #define EXTRACT_IFMT_PTA_VARS \
817 #define EXTRACT_IFMT_PTA_CODE \
819 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
820 f_disp16 = ((((EXTRACT_LSB0_INT (insn, 32, 25, 16)) << (2))) + (pc)); \
821 f_likely = EXTRACT_LSB0_UINT (insn, 32, 9, 1); \
822 f_8_2 = EXTRACT_LSB0_UINT (insn, 32, 8, 2); \
823 f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3); \
824 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
826 #define EXTRACT_IFMT_PTABS_VARS \
836 #define EXTRACT_IFMT_PTABS_CODE \
838 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
839 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
840 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
841 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
842 f_likely = EXTRACT_LSB0_UINT (insn, 32, 9, 1); \
843 f_8_2 = EXTRACT_LSB0_UINT (insn, 32, 8, 2); \
844 f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3); \
845 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
847 #define EXTRACT_IFMT_PUTCON_VARS \
855 #define EXTRACT_IFMT_PUTCON_CODE \
857 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
858 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
859 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
860 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
861 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
862 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
864 #define EXTRACT_IFMT_SHARI_VARS \
872 #define EXTRACT_IFMT_SHARI_CODE \
874 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
875 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
876 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
877 f_uimm6 = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
878 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
879 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
881 #define EXTRACT_IFMT_SHORI_VARS \
887 #define EXTRACT_IFMT_SHORI_CODE \
889 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
890 f_uimm16 = EXTRACT_LSB0_UINT (insn, 32, 25, 16); \
891 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
892 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
894 #define EXTRACT_IFMT_STW_VARS \
901 #define EXTRACT_IFMT_STW_CODE \
903 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
904 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
905 f_disp10x2 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (1)); \
906 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
907 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
909 #define EXTRACT_IFMT_TRAPA_VARS \
917 #define EXTRACT_IFMT_TRAPA_CODE \
919 f_op = EXTRACT_LSB0_UINT (insn, 32, 31, 6); \
920 f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); \
921 f_ext = EXTRACT_LSB0_UINT (insn, 32, 19, 4); \
922 f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); \
923 f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); \
924 f_rsvd = EXTRACT_LSB0_UINT (insn, 32, 3, 4); \
926 #endif /* DEFS_SH64_MEDIA_H */