1 /* CPU family header for m32rxf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright 1996, 1997, 1998, 1999, 2000, 2001 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.
28 /* Maximum number of instructions that are fetched at a time.
29 This is for LIW type instructions sets (e.g. m32r). */
30 #define MAX_LIW_INSNS 2
32 /* Maximum number of instructions that can be executed in parallel. */
33 #define MAX_PARALLEL_INSNS 2
35 /* CPU state information. */
37 /* Hardware elements. */
41 #define GET_H_PC() CPU (h_pc)
42 #define SET_H_PC(x) (CPU (h_pc) = (x))
43 /* general registers */
45 #define GET_H_GR(a1) CPU (h_gr)[a1]
46 #define SET_H_GR(a1, x) (CPU (h_gr)[a1] = (x))
47 /* control registers */
49 #define GET_H_CR(index) m32rxf_h_cr_get_handler (current_cpu, index)
50 #define SET_H_CR(index, x) \
52 m32rxf_h_cr_set_handler (current_cpu, (index), (x));\
56 #define GET_H_ACCUM() m32rxf_h_accum_get_handler (current_cpu)
57 #define SET_H_ACCUM(x) \
59 m32rxf_h_accum_set_handler (current_cpu, (x));\
63 #define GET_H_ACCUMS(index) m32rxf_h_accums_get_handler (current_cpu, index)
64 #define SET_H_ACCUMS(index, x) \
66 m32rxf_h_accums_set_handler (current_cpu, (index), (x));\
70 #define GET_H_COND() CPU (h_cond)
71 #define SET_H_COND(x) (CPU (h_cond) = (x))
74 #define GET_H_PSW() m32rxf_h_psw_get_handler (current_cpu)
75 #define SET_H_PSW(x) \
77 m32rxf_h_psw_set_handler (current_cpu, (x));\
81 #define GET_H_BPSW() CPU (h_bpsw)
82 #define SET_H_BPSW(x) (CPU (h_bpsw) = (x))
85 #define GET_H_BBPSW() CPU (h_bbpsw)
86 #define SET_H_BBPSW(x) (CPU (h_bbpsw) = (x))
89 #define GET_H_LOCK() CPU (h_lock)
90 #define SET_H_LOCK(x) (CPU (h_lock) = (x))
92 #define CPU_CGEN_HW(cpu) (& (cpu)->cpu_data.hardware)
95 /* Cover fns for register access. */
96 USI m32rxf_h_pc_get (SIM_CPU *);
97 void m32rxf_h_pc_set (SIM_CPU *, USI);
98 SI m32rxf_h_gr_get (SIM_CPU *, UINT);
99 void m32rxf_h_gr_set (SIM_CPU *, UINT, SI);
100 USI m32rxf_h_cr_get (SIM_CPU *, UINT);
101 void m32rxf_h_cr_set (SIM_CPU *, UINT, USI);
102 DI m32rxf_h_accum_get (SIM_CPU *);
103 void m32rxf_h_accum_set (SIM_CPU *, DI);
104 DI m32rxf_h_accums_get (SIM_CPU *, UINT);
105 void m32rxf_h_accums_set (SIM_CPU *, UINT, DI);
106 BI m32rxf_h_cond_get (SIM_CPU *);
107 void m32rxf_h_cond_set (SIM_CPU *, BI);
108 UQI m32rxf_h_psw_get (SIM_CPU *);
109 void m32rxf_h_psw_set (SIM_CPU *, UQI);
110 UQI m32rxf_h_bpsw_get (SIM_CPU *);
111 void m32rxf_h_bpsw_set (SIM_CPU *, UQI);
112 UQI m32rxf_h_bbpsw_get (SIM_CPU *);
113 void m32rxf_h_bbpsw_set (SIM_CPU *, UQI);
114 BI m32rxf_h_lock_get (SIM_CPU *);
115 void m32rxf_h_lock_set (SIM_CPU *, BI);
117 /* These must be hand-written. */
118 extern CPUREG_FETCH_FN m32rxf_fetch_register;
119 extern CPUREG_STORE_FN m32rxf_store_register;
125 /* Instruction argument buffer. */
128 struct { /* no operands */
136 unsigned char out_h_gr_SI_14;
140 unsigned char out_h_gr_SI_14;
151 unsigned char out_dr;
157 unsigned char in_src1;
163 unsigned char out_dr;
169 unsigned char out_dr;
175 unsigned char out_h_gr_SI_14;
182 unsigned char out_dr;
189 unsigned char out_dr;
196 unsigned char in_src1;
197 unsigned char in_src2;
198 unsigned char out_src2;
206 unsigned char in_src1;
207 unsigned char in_src2;
215 unsigned char in_src1;
216 unsigned char in_src2;
224 unsigned char out_dr;
225 unsigned char out_sr;
233 unsigned char in_src1;
234 unsigned char in_src2;
243 unsigned char out_dr;
252 unsigned char out_dr;
261 unsigned char out_dr;
264 /* Writeback handler. */
266 /* Pointer to argbuf entry for insn whose results need writing back. */
267 const struct argbuf *abuf;
269 /* x-before handler */
271 /*const SCACHE *insns[MAX_PARALLEL_INSNS];*/
274 /* x-after handler */
278 /* This entry is used to terminate each pbb. */
280 /* Number of insns in pbb. */
282 /* Next pbb to execute. */
284 SCACHE *branch_target;
289 /* The ARGBUF struct. */
291 /* These are the baseclass definitions. */
296 /* ??? Temporary hack for skip insns. */
299 /* cpu specific data follows */
302 union sem_fields fields;
307 ??? SCACHE used to contain more than just argbuf. We could delete the
308 type entirely and always just use ARGBUF, but for future concerns and as
309 a level of abstraction it is left in. */
312 struct argbuf argbuf;
315 /* Macros to simplify extraction, reading and semantic code.
316 These define and assign the local vars that contain the insn's fields. */
318 #define EXTRACT_IFMT_EMPTY_VARS \
320 #define EXTRACT_IFMT_EMPTY_CODE \
323 #define EXTRACT_IFMT_ADD_VARS \
329 #define EXTRACT_IFMT_ADD_CODE \
331 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
332 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
333 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
334 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \
336 #define EXTRACT_IFMT_ADD3_VARS \
343 #define EXTRACT_IFMT_ADD3_CODE \
345 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
346 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
347 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
348 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
349 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \
351 #define EXTRACT_IFMT_AND3_VARS \
358 #define EXTRACT_IFMT_AND3_CODE \
360 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
361 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
362 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
363 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
364 f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16); \
366 #define EXTRACT_IFMT_OR3_VARS \
373 #define EXTRACT_IFMT_OR3_CODE \
375 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
376 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
377 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
378 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
379 f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16); \
381 #define EXTRACT_IFMT_ADDI_VARS \
386 #define EXTRACT_IFMT_ADDI_CODE \
388 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
389 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
390 f_simm8 = EXTRACT_MSB0_INT (insn, 16, 8, 8); \
392 #define EXTRACT_IFMT_ADDV3_VARS \
399 #define EXTRACT_IFMT_ADDV3_CODE \
401 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
402 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
403 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
404 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
405 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \
407 #define EXTRACT_IFMT_BC8_VARS \
412 #define EXTRACT_IFMT_BC8_CODE \
414 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
415 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
416 f_disp8 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4)))); \
418 #define EXTRACT_IFMT_BC24_VARS \
423 #define EXTRACT_IFMT_BC24_CODE \
425 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
426 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
427 f_disp24 = ((((EXTRACT_MSB0_INT (insn, 32, 8, 24)) << (2))) + (pc)); \
429 #define EXTRACT_IFMT_BEQ_VARS \
436 #define EXTRACT_IFMT_BEQ_CODE \
438 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
439 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
440 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
441 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
442 f_disp16 = ((((EXTRACT_MSB0_INT (insn, 32, 16, 16)) << (2))) + (pc)); \
444 #define EXTRACT_IFMT_BEQZ_VARS \
451 #define EXTRACT_IFMT_BEQZ_CODE \
453 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
454 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
455 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
456 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
457 f_disp16 = ((((EXTRACT_MSB0_INT (insn, 32, 16, 16)) << (2))) + (pc)); \
459 #define EXTRACT_IFMT_CMP_VARS \
465 #define EXTRACT_IFMT_CMP_CODE \
467 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
468 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
469 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
470 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \
472 #define EXTRACT_IFMT_CMPI_VARS \
479 #define EXTRACT_IFMT_CMPI_CODE \
481 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
482 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
483 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
484 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
485 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \
487 #define EXTRACT_IFMT_CMPZ_VARS \
493 #define EXTRACT_IFMT_CMPZ_CODE \
495 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
496 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
497 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
498 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \
500 #define EXTRACT_IFMT_DIV_VARS \
507 #define EXTRACT_IFMT_DIV_CODE \
509 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
510 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
511 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
512 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
513 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \
515 #define EXTRACT_IFMT_JC_VARS \
521 #define EXTRACT_IFMT_JC_CODE \
523 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
524 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
525 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
526 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \
528 #define EXTRACT_IFMT_LD24_VARS \
533 #define EXTRACT_IFMT_LD24_CODE \
535 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
536 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
537 f_uimm24 = EXTRACT_MSB0_UINT (insn, 32, 8, 24); \
539 #define EXTRACT_IFMT_LDI16_VARS \
546 #define EXTRACT_IFMT_LDI16_CODE \
548 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
549 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
550 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
551 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
552 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \
554 #define EXTRACT_IFMT_MACHI_A_VARS \
561 #define EXTRACT_IFMT_MACHI_A_CODE \
563 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
564 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
565 f_acc = EXTRACT_MSB0_UINT (insn, 16, 8, 1); \
566 f_op23 = EXTRACT_MSB0_UINT (insn, 16, 9, 3); \
567 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \
569 #define EXTRACT_IFMT_MVFACHI_A_VARS \
576 #define EXTRACT_IFMT_MVFACHI_A_CODE \
578 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
579 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
580 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
581 f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2); \
582 f_op3 = EXTRACT_MSB0_UINT (insn, 16, 14, 2); \
584 #define EXTRACT_IFMT_MVFC_VARS \
590 #define EXTRACT_IFMT_MVFC_CODE \
592 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
593 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
594 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
595 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \
597 #define EXTRACT_IFMT_MVTACHI_A_VARS \
604 #define EXTRACT_IFMT_MVTACHI_A_CODE \
606 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
607 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
608 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
609 f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2); \
610 f_op3 = EXTRACT_MSB0_UINT (insn, 16, 14, 2); \
612 #define EXTRACT_IFMT_MVTC_VARS \
618 #define EXTRACT_IFMT_MVTC_CODE \
620 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
621 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
622 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
623 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \
625 #define EXTRACT_IFMT_NOP_VARS \
631 #define EXTRACT_IFMT_NOP_CODE \
633 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
634 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
635 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
636 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \
638 #define EXTRACT_IFMT_RAC_DSI_VARS \
647 #define EXTRACT_IFMT_RAC_DSI_CODE \
649 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
650 f_accd = EXTRACT_MSB0_UINT (insn, 16, 4, 2); \
651 f_bits67 = EXTRACT_MSB0_UINT (insn, 16, 6, 2); \
652 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
653 f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2); \
654 f_bit14 = EXTRACT_MSB0_UINT (insn, 16, 14, 1); \
655 f_imm1 = ((EXTRACT_MSB0_UINT (insn, 16, 15, 1)) + (1)); \
657 #define EXTRACT_IFMT_SETH_VARS \
664 #define EXTRACT_IFMT_SETH_CODE \
666 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
667 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
668 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
669 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
670 f_hi16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16); \
672 #define EXTRACT_IFMT_SLLI_VARS \
678 #define EXTRACT_IFMT_SLLI_CODE \
680 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
681 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
682 f_shift_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 3); \
683 f_uimm5 = EXTRACT_MSB0_UINT (insn, 16, 11, 5); \
685 #define EXTRACT_IFMT_ST_D_VARS \
692 #define EXTRACT_IFMT_ST_D_CODE \
694 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
695 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
696 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
697 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
698 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \
700 #define EXTRACT_IFMT_TRAP_VARS \
706 #define EXTRACT_IFMT_TRAP_CODE \
708 f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \
709 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \
710 f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \
711 f_uimm4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \
713 #define EXTRACT_IFMT_SATB_VARS \
720 #define EXTRACT_IFMT_SATB_CODE \
722 f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \
723 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \
724 f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \
725 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \
726 f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16); \
728 /* Queued output values of an instruction. */
732 struct { /* empty sformat for unspecified field list */
735 struct { /* e.g. add $dr,$sr */
738 struct { /* e.g. add3 $dr,$sr,$hash$slo16 */
741 struct { /* e.g. and3 $dr,$sr,$uimm16 */
744 struct { /* e.g. or3 $dr,$sr,$hash$ulo16 */
747 struct { /* e.g. addi $dr,$simm8 */
750 struct { /* e.g. addv $dr,$sr */
754 struct { /* e.g. addv3 $dr,$sr,$simm16 */
758 struct { /* e.g. addx $dr,$sr */
762 struct { /* e.g. bc.s $disp8 */
765 struct { /* e.g. bc.l $disp24 */
768 struct { /* e.g. beq $src1,$src2,$disp16 */
771 struct { /* e.g. beqz $src2,$disp16 */
774 struct { /* e.g. bl.s $disp8 */
778 struct { /* e.g. bl.l $disp24 */
782 struct { /* e.g. bcl.s $disp8 */
786 struct { /* e.g. bcl.l $disp24 */
790 struct { /* e.g. bra.s $disp8 */
793 struct { /* e.g. bra.l $disp24 */
796 struct { /* e.g. cmp $src1,$src2 */
799 struct { /* e.g. cmpi $src2,$simm16 */
802 struct { /* e.g. cmpz $src2 */
805 struct { /* e.g. div $dr,$sr */
808 struct { /* e.g. jc $sr */
811 struct { /* e.g. jl $sr */
815 struct { /* e.g. jmp $sr */
818 struct { /* e.g. ld $dr,@$sr */
821 struct { /* e.g. ld $dr,@($slo16,$sr) */
824 struct { /* e.g. ldb $dr,@$sr */
827 struct { /* e.g. ldb $dr,@($slo16,$sr) */
830 struct { /* e.g. ldh $dr,@$sr */
833 struct { /* e.g. ldh $dr,@($slo16,$sr) */
836 struct { /* e.g. ld $dr,@$sr+ */
840 struct { /* e.g. ld24 $dr,$uimm24 */
843 struct { /* e.g. ldi8 $dr,$simm8 */
846 struct { /* e.g. ldi16 $dr,$hash$slo16 */
849 struct { /* e.g. lock $dr,@$sr */
853 struct { /* e.g. machi $src1,$src2,$acc */
856 struct { /* e.g. mulhi $src1,$src2,$acc */
859 struct { /* e.g. mv $dr,$sr */
862 struct { /* e.g. mvfachi $dr,$accs */
865 struct { /* e.g. mvfc $dr,$scr */
868 struct { /* e.g. mvtachi $src1,$accs */
871 struct { /* e.g. mvtc $sr,$dcr */
874 struct { /* e.g. nop */
877 struct { /* e.g. rac $accd,$accs,$imm1 */
880 struct { /* e.g. rte */
886 struct { /* e.g. seth $dr,$hash$hi16 */
889 struct { /* e.g. sll3 $dr,$sr,$simm16 */
892 struct { /* e.g. slli $dr,$uimm5 */
895 struct { /* e.g. st $src1,@$src2 */
897 USI h_memory_SI_src2_idx;
899 struct { /* e.g. st $src1,@($slo16,$src2) */
900 SI h_memory_SI_add__DFLT_src2_slo16;
901 USI h_memory_SI_add__DFLT_src2_slo16_idx;
903 struct { /* e.g. stb $src1,@$src2 */
905 USI h_memory_QI_src2_idx;
907 struct { /* e.g. stb $src1,@($slo16,$src2) */
908 QI h_memory_QI_add__DFLT_src2_slo16;
909 USI h_memory_QI_add__DFLT_src2_slo16_idx;
911 struct { /* e.g. sth $src1,@$src2 */
913 USI h_memory_HI_src2_idx;
915 struct { /* e.g. sth $src1,@($slo16,$src2) */
916 HI h_memory_HI_add__DFLT_src2_slo16;
917 USI h_memory_HI_add__DFLT_src2_slo16_idx;
919 struct { /* e.g. st $src1,@+$src2 */
920 SI h_memory_SI_new_src2;
921 USI h_memory_SI_new_src2_idx;
924 struct { /* e.g. trap $uimm4 */
932 struct { /* e.g. unlock $src1,@$src2 */
935 USI h_memory_SI_src2_idx;
937 struct { /* e.g. satb $dr,$sr */
940 struct { /* e.g. sat $dr,$sr */
943 struct { /* e.g. sadd */
946 struct { /* e.g. macwu1 $src1,$src2 */
949 struct { /* e.g. msblo $src1,$src2 */
952 struct { /* e.g. mulwu1 $src1,$src2 */
955 struct { /* e.g. sc */
959 /* For conditionally written operands, bitmask of which ones were. */
963 /* Collection of various things for the trace handler to use. */
965 typedef struct trace_record {
970 #endif /* CPU_M32RXF_H */