1 /* Decode header for m32rxf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright 1996-2018 Free Software Foundation, Inc.
7 This file is part of the GNU simulators.
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)
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.
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, see <http://www.gnu.org/licenses/>.
24 #ifndef M32RXF_DECODE_H
25 #define M32RXF_DECODE_H
27 extern const IDESC
*m32rxf_decode (SIM_CPU
*, IADDR
,
28 CGEN_INSN_WORD
, CGEN_INSN_WORD
,
30 extern void m32rxf_init_idesc_table (SIM_CPU
*);
31 extern void m32rxf_sem_init_idesc_table (SIM_CPU
*);
32 extern void m32rxf_semf_init_idesc_table (SIM_CPU
*);
34 /* Enum declaration for instructions in cpu family m32rxf. */
35 typedef enum m32rxf_insn_type
{
36 M32RXF_INSN_X_INVALID
, M32RXF_INSN_X_AFTER
, M32RXF_INSN_X_BEFORE
, M32RXF_INSN_X_CTI_CHAIN
37 , M32RXF_INSN_X_CHAIN
, M32RXF_INSN_X_BEGIN
, M32RXF_INSN_ADD
, M32RXF_INSN_ADD3
38 , M32RXF_INSN_AND
, M32RXF_INSN_AND3
, M32RXF_INSN_OR
, M32RXF_INSN_OR3
39 , M32RXF_INSN_XOR
, M32RXF_INSN_XOR3
, M32RXF_INSN_ADDI
, M32RXF_INSN_ADDV
40 , M32RXF_INSN_ADDV3
, M32RXF_INSN_ADDX
, M32RXF_INSN_BC8
, M32RXF_INSN_BC24
41 , M32RXF_INSN_BEQ
, M32RXF_INSN_BEQZ
, M32RXF_INSN_BGEZ
, M32RXF_INSN_BGTZ
42 , M32RXF_INSN_BLEZ
, M32RXF_INSN_BLTZ
, M32RXF_INSN_BNEZ
, M32RXF_INSN_BL8
43 , M32RXF_INSN_BL24
, M32RXF_INSN_BCL8
, M32RXF_INSN_BCL24
, M32RXF_INSN_BNC8
44 , M32RXF_INSN_BNC24
, M32RXF_INSN_BNE
, M32RXF_INSN_BRA8
, M32RXF_INSN_BRA24
45 , M32RXF_INSN_BNCL8
, M32RXF_INSN_BNCL24
, M32RXF_INSN_CMP
, M32RXF_INSN_CMPI
46 , M32RXF_INSN_CMPU
, M32RXF_INSN_CMPUI
, M32RXF_INSN_CMPEQ
, M32RXF_INSN_CMPZ
47 , M32RXF_INSN_DIV
, M32RXF_INSN_DIVU
, M32RXF_INSN_REM
, M32RXF_INSN_REMU
48 , M32RXF_INSN_DIVH
, M32RXF_INSN_JC
, M32RXF_INSN_JNC
, M32RXF_INSN_JL
49 , M32RXF_INSN_JMP
, M32RXF_INSN_LD
, M32RXF_INSN_LD_D
, M32RXF_INSN_LDB
50 , M32RXF_INSN_LDB_D
, M32RXF_INSN_LDH
, M32RXF_INSN_LDH_D
, M32RXF_INSN_LDUB
51 , M32RXF_INSN_LDUB_D
, M32RXF_INSN_LDUH
, M32RXF_INSN_LDUH_D
, M32RXF_INSN_LD_PLUS
52 , M32RXF_INSN_LD24
, M32RXF_INSN_LDI8
, M32RXF_INSN_LDI16
, M32RXF_INSN_LOCK
53 , M32RXF_INSN_MACHI_A
, M32RXF_INSN_MACLO_A
, M32RXF_INSN_MACWHI_A
, M32RXF_INSN_MACWLO_A
54 , M32RXF_INSN_MUL
, M32RXF_INSN_MULHI_A
, M32RXF_INSN_MULLO_A
, M32RXF_INSN_MULWHI_A
55 , M32RXF_INSN_MULWLO_A
, M32RXF_INSN_MV
, M32RXF_INSN_MVFACHI_A
, M32RXF_INSN_MVFACLO_A
56 , M32RXF_INSN_MVFACMI_A
, M32RXF_INSN_MVFC
, M32RXF_INSN_MVTACHI_A
, M32RXF_INSN_MVTACLO_A
57 , M32RXF_INSN_MVTC
, M32RXF_INSN_NEG
, M32RXF_INSN_NOP
, M32RXF_INSN_NOT
58 , M32RXF_INSN_RAC_DSI
, M32RXF_INSN_RACH_DSI
, M32RXF_INSN_RTE
, M32RXF_INSN_SETH
59 , M32RXF_INSN_SLL
, M32RXF_INSN_SLL3
, M32RXF_INSN_SLLI
, M32RXF_INSN_SRA
60 , M32RXF_INSN_SRA3
, M32RXF_INSN_SRAI
, M32RXF_INSN_SRL
, M32RXF_INSN_SRL3
61 , M32RXF_INSN_SRLI
, M32RXF_INSN_ST
, M32RXF_INSN_ST_D
, M32RXF_INSN_STB
62 , M32RXF_INSN_STB_D
, M32RXF_INSN_STH
, M32RXF_INSN_STH_D
, M32RXF_INSN_ST_PLUS
63 , M32RXF_INSN_STH_PLUS
, M32RXF_INSN_STB_PLUS
, M32RXF_INSN_ST_MINUS
, M32RXF_INSN_SUB
64 , M32RXF_INSN_SUBV
, M32RXF_INSN_SUBX
, M32RXF_INSN_TRAP
, M32RXF_INSN_UNLOCK
65 , M32RXF_INSN_SATB
, M32RXF_INSN_SATH
, M32RXF_INSN_SAT
, M32RXF_INSN_PCMPBZ
66 , M32RXF_INSN_SADD
, M32RXF_INSN_MACWU1
, M32RXF_INSN_MSBLO
, M32RXF_INSN_MULWU1
67 , M32RXF_INSN_MACLH1
, M32RXF_INSN_SC
, M32RXF_INSN_SNC
, M32RXF_INSN_CLRPSW
68 , M32RXF_INSN_SETPSW
, M32RXF_INSN_BSET
, M32RXF_INSN_BCLR
, M32RXF_INSN_BTST
69 , M32RXF_INSN_PAR_ADD
, M32RXF_INSN_WRITE_ADD
, M32RXF_INSN_PAR_AND
, M32RXF_INSN_WRITE_AND
70 , M32RXF_INSN_PAR_OR
, M32RXF_INSN_WRITE_OR
, M32RXF_INSN_PAR_XOR
, M32RXF_INSN_WRITE_XOR
71 , M32RXF_INSN_PAR_ADDI
, M32RXF_INSN_WRITE_ADDI
, M32RXF_INSN_PAR_ADDV
, M32RXF_INSN_WRITE_ADDV
72 , M32RXF_INSN_PAR_ADDX
, M32RXF_INSN_WRITE_ADDX
, M32RXF_INSN_PAR_BC8
, M32RXF_INSN_WRITE_BC8
73 , M32RXF_INSN_PAR_BL8
, M32RXF_INSN_WRITE_BL8
, M32RXF_INSN_PAR_BCL8
, M32RXF_INSN_WRITE_BCL8
74 , M32RXF_INSN_PAR_BNC8
, M32RXF_INSN_WRITE_BNC8
, M32RXF_INSN_PAR_BRA8
, M32RXF_INSN_WRITE_BRA8
75 , M32RXF_INSN_PAR_BNCL8
, M32RXF_INSN_WRITE_BNCL8
, M32RXF_INSN_PAR_CMP
, M32RXF_INSN_WRITE_CMP
76 , M32RXF_INSN_PAR_CMPU
, M32RXF_INSN_WRITE_CMPU
, M32RXF_INSN_PAR_CMPEQ
, M32RXF_INSN_WRITE_CMPEQ
77 , M32RXF_INSN_PAR_CMPZ
, M32RXF_INSN_WRITE_CMPZ
, M32RXF_INSN_PAR_JC
, M32RXF_INSN_WRITE_JC
78 , M32RXF_INSN_PAR_JNC
, M32RXF_INSN_WRITE_JNC
, M32RXF_INSN_PAR_JL
, M32RXF_INSN_WRITE_JL
79 , M32RXF_INSN_PAR_JMP
, M32RXF_INSN_WRITE_JMP
, M32RXF_INSN_PAR_LD
, M32RXF_INSN_WRITE_LD
80 , M32RXF_INSN_PAR_LDB
, M32RXF_INSN_WRITE_LDB
, M32RXF_INSN_PAR_LDH
, M32RXF_INSN_WRITE_LDH
81 , M32RXF_INSN_PAR_LDUB
, M32RXF_INSN_WRITE_LDUB
, M32RXF_INSN_PAR_LDUH
, M32RXF_INSN_WRITE_LDUH
82 , M32RXF_INSN_PAR_LD_PLUS
, M32RXF_INSN_WRITE_LD_PLUS
, M32RXF_INSN_PAR_LDI8
, M32RXF_INSN_WRITE_LDI8
83 , M32RXF_INSN_PAR_LOCK
, M32RXF_INSN_WRITE_LOCK
, M32RXF_INSN_PAR_MACHI_A
, M32RXF_INSN_WRITE_MACHI_A
84 , M32RXF_INSN_PAR_MACLO_A
, M32RXF_INSN_WRITE_MACLO_A
, M32RXF_INSN_PAR_MACWHI_A
, M32RXF_INSN_WRITE_MACWHI_A
85 , M32RXF_INSN_PAR_MACWLO_A
, M32RXF_INSN_WRITE_MACWLO_A
, M32RXF_INSN_PAR_MUL
, M32RXF_INSN_WRITE_MUL
86 , M32RXF_INSN_PAR_MULHI_A
, M32RXF_INSN_WRITE_MULHI_A
, M32RXF_INSN_PAR_MULLO_A
, M32RXF_INSN_WRITE_MULLO_A
87 , M32RXF_INSN_PAR_MULWHI_A
, M32RXF_INSN_WRITE_MULWHI_A
, M32RXF_INSN_PAR_MULWLO_A
, M32RXF_INSN_WRITE_MULWLO_A
88 , M32RXF_INSN_PAR_MV
, M32RXF_INSN_WRITE_MV
, M32RXF_INSN_PAR_MVFACHI_A
, M32RXF_INSN_WRITE_MVFACHI_A
89 , M32RXF_INSN_PAR_MVFACLO_A
, M32RXF_INSN_WRITE_MVFACLO_A
, M32RXF_INSN_PAR_MVFACMI_A
, M32RXF_INSN_WRITE_MVFACMI_A
90 , M32RXF_INSN_PAR_MVFC
, M32RXF_INSN_WRITE_MVFC
, M32RXF_INSN_PAR_MVTACHI_A
, M32RXF_INSN_WRITE_MVTACHI_A
91 , M32RXF_INSN_PAR_MVTACLO_A
, M32RXF_INSN_WRITE_MVTACLO_A
, M32RXF_INSN_PAR_MVTC
, M32RXF_INSN_WRITE_MVTC
92 , M32RXF_INSN_PAR_NEG
, M32RXF_INSN_WRITE_NEG
, M32RXF_INSN_PAR_NOP
, M32RXF_INSN_WRITE_NOP
93 , M32RXF_INSN_PAR_NOT
, M32RXF_INSN_WRITE_NOT
, M32RXF_INSN_PAR_RAC_DSI
, M32RXF_INSN_WRITE_RAC_DSI
94 , M32RXF_INSN_PAR_RACH_DSI
, M32RXF_INSN_WRITE_RACH_DSI
, M32RXF_INSN_PAR_RTE
, M32RXF_INSN_WRITE_RTE
95 , M32RXF_INSN_PAR_SLL
, M32RXF_INSN_WRITE_SLL
, M32RXF_INSN_PAR_SLLI
, M32RXF_INSN_WRITE_SLLI
96 , M32RXF_INSN_PAR_SRA
, M32RXF_INSN_WRITE_SRA
, M32RXF_INSN_PAR_SRAI
, M32RXF_INSN_WRITE_SRAI
97 , M32RXF_INSN_PAR_SRL
, M32RXF_INSN_WRITE_SRL
, M32RXF_INSN_PAR_SRLI
, M32RXF_INSN_WRITE_SRLI
98 , M32RXF_INSN_PAR_ST
, M32RXF_INSN_WRITE_ST
, M32RXF_INSN_PAR_STB
, M32RXF_INSN_WRITE_STB
99 , M32RXF_INSN_PAR_STH
, M32RXF_INSN_WRITE_STH
, M32RXF_INSN_PAR_ST_PLUS
, M32RXF_INSN_WRITE_ST_PLUS
100 , M32RXF_INSN_PAR_STH_PLUS
, M32RXF_INSN_WRITE_STH_PLUS
, M32RXF_INSN_PAR_STB_PLUS
, M32RXF_INSN_WRITE_STB_PLUS
101 , M32RXF_INSN_PAR_ST_MINUS
, M32RXF_INSN_WRITE_ST_MINUS
, M32RXF_INSN_PAR_SUB
, M32RXF_INSN_WRITE_SUB
102 , M32RXF_INSN_PAR_SUBV
, M32RXF_INSN_WRITE_SUBV
, M32RXF_INSN_PAR_SUBX
, M32RXF_INSN_WRITE_SUBX
103 , M32RXF_INSN_PAR_TRAP
, M32RXF_INSN_WRITE_TRAP
, M32RXF_INSN_PAR_UNLOCK
, M32RXF_INSN_WRITE_UNLOCK
104 , M32RXF_INSN_PAR_PCMPBZ
, M32RXF_INSN_WRITE_PCMPBZ
, M32RXF_INSN_PAR_SADD
, M32RXF_INSN_WRITE_SADD
105 , M32RXF_INSN_PAR_MACWU1
, M32RXF_INSN_WRITE_MACWU1
, M32RXF_INSN_PAR_MSBLO
, M32RXF_INSN_WRITE_MSBLO
106 , M32RXF_INSN_PAR_MULWU1
, M32RXF_INSN_WRITE_MULWU1
, M32RXF_INSN_PAR_MACLH1
, M32RXF_INSN_WRITE_MACLH1
107 , M32RXF_INSN_PAR_SC
, M32RXF_INSN_WRITE_SC
, M32RXF_INSN_PAR_SNC
, M32RXF_INSN_WRITE_SNC
108 , M32RXF_INSN_PAR_CLRPSW
, M32RXF_INSN_WRITE_CLRPSW
, M32RXF_INSN_PAR_SETPSW
, M32RXF_INSN_WRITE_SETPSW
109 , M32RXF_INSN_PAR_BTST
, M32RXF_INSN_WRITE_BTST
, M32RXF_INSN__MAX
112 /* Enum declaration for semantic formats in cpu family m32rxf. */
113 typedef enum m32rxf_sfmt_type
{
114 M32RXF_SFMT_EMPTY
, M32RXF_SFMT_ADD
, M32RXF_SFMT_ADD3
, M32RXF_SFMT_AND3
115 , M32RXF_SFMT_OR3
, M32RXF_SFMT_ADDI
, M32RXF_SFMT_ADDV
, M32RXF_SFMT_ADDV3
116 , M32RXF_SFMT_ADDX
, M32RXF_SFMT_BC8
, M32RXF_SFMT_BC24
, M32RXF_SFMT_BEQ
117 , M32RXF_SFMT_BEQZ
, M32RXF_SFMT_BL8
, M32RXF_SFMT_BL24
, M32RXF_SFMT_BCL8
118 , M32RXF_SFMT_BCL24
, M32RXF_SFMT_BRA8
, M32RXF_SFMT_BRA24
, M32RXF_SFMT_CMP
119 , M32RXF_SFMT_CMPI
, M32RXF_SFMT_CMPZ
, M32RXF_SFMT_DIV
, M32RXF_SFMT_JC
120 , M32RXF_SFMT_JL
, M32RXF_SFMT_JMP
, M32RXF_SFMT_LD
, M32RXF_SFMT_LD_D
121 , M32RXF_SFMT_LDB
, M32RXF_SFMT_LDB_D
, M32RXF_SFMT_LDH
, M32RXF_SFMT_LDH_D
122 , M32RXF_SFMT_LD_PLUS
, M32RXF_SFMT_LD24
, M32RXF_SFMT_LDI8
, M32RXF_SFMT_LDI16
123 , M32RXF_SFMT_LOCK
, M32RXF_SFMT_MACHI_A
, M32RXF_SFMT_MULHI_A
, M32RXF_SFMT_MV
124 , M32RXF_SFMT_MVFACHI_A
, M32RXF_SFMT_MVFC
, M32RXF_SFMT_MVTACHI_A
, M32RXF_SFMT_MVTC
125 , M32RXF_SFMT_NOP
, M32RXF_SFMT_RAC_DSI
, M32RXF_SFMT_RTE
, M32RXF_SFMT_SETH
126 , M32RXF_SFMT_SLL3
, M32RXF_SFMT_SLLI
, M32RXF_SFMT_ST
, M32RXF_SFMT_ST_D
127 , M32RXF_SFMT_STB
, M32RXF_SFMT_STB_D
, M32RXF_SFMT_STH
, M32RXF_SFMT_STH_D
128 , M32RXF_SFMT_ST_PLUS
, M32RXF_SFMT_STH_PLUS
, M32RXF_SFMT_STB_PLUS
, M32RXF_SFMT_TRAP
129 , M32RXF_SFMT_UNLOCK
, M32RXF_SFMT_SATB
, M32RXF_SFMT_SAT
, M32RXF_SFMT_SADD
130 , M32RXF_SFMT_MACWU1
, M32RXF_SFMT_MSBLO
, M32RXF_SFMT_MULWU1
, M32RXF_SFMT_SC
131 , M32RXF_SFMT_CLRPSW
, M32RXF_SFMT_SETPSW
, M32RXF_SFMT_BSET
, M32RXF_SFMT_BTST
134 /* Function unit handlers (user written). */
136 extern int m32rxf_model_m32rx_u_store (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*src1*/, INT
/*src2*/);
137 extern int m32rxf_model_m32rx_u_load (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*sr*/, INT
/*dr*/);
138 extern int m32rxf_model_m32rx_u_cti (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*sr*/);
139 extern int m32rxf_model_m32rx_u_mac (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*src1*/, INT
/*src2*/);
140 extern int m32rxf_model_m32rx_u_cmp (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*src1*/, INT
/*src2*/);
141 extern int m32rxf_model_m32rx_u_exec (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*sr*/, INT
/*dr*/, INT
/*dr*/);
143 /* Profiling before/after handlers (user written) */
145 extern void m32rxf_model_insn_before (SIM_CPU
*, int /*first_p*/);
146 extern void m32rxf_model_insn_after (SIM_CPU
*, int /*last_p*/, int /*cycles*/);
148 #endif /* M32RXF_DECODE_H */