1 /* Simulator instruction decoder for m32rxf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999 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 #define WANT_CPU m32rxf
26 #define WANT_CPU_M32RXF
29 #include "sim-assert.h"
34 #define FMT(n) CONCAT2 (M32RXF_,n) ,
37 /* FIXME: Need to review choices for the following. */
39 #if WITH_SEM_SWITCH_FULL
42 #define FULL(fn) CONCAT3 (m32rxf,_sem_,fn) ,
46 #if WITH_SEM_SWITCH_FAST
49 #define FAST(fn) CONCAT3 (m32rxf,_semf_,fn) , /* f for fast */
55 /* The instruction descriptor array.
56 This is computed at runtime. Space for it is not malloc'd to save a
57 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
58 but won't be done until necessary (we don't currently support the runtime
59 addition of instructions nor an SMP machine with different cpus). */
60 static IDESC m32rxf_insn_data
[M32RXF_INSN_MAX
];
62 /* Instruction semantic handlers and support.
63 This struct defines the part of an IDESC that can be computed at
67 /* The instruction type (a number that identifies each insn over the
68 entire architecture). */
71 /* Index in IDESC table. */
74 /* Index in IDESC table of parallel handler. */
77 /* Index in IDESC table of writeback handler. */
80 /* Routines to execute the insn.
81 The full version has all features (profiling,tracing) compiled in.
82 The fast version has none of that. */
83 #if ! WITH_SEM_SWITCH_FULL
84 SEMANTIC_FN
*sem_full
;
86 #if WITH_FAST && ! WITH_SEM_SWITCH_FAST
87 SEMANTIC_FN
*sem_fast
;
91 /* The INSN_ prefix is not here and is instead part of the `insn' argument
92 to avoid collisions with header files (e.g. `AND' in ansidecl.h). */
93 #define IDX(insn) CONCAT2 (M32RXF_,insn)
94 #define TYPE(insn) CONCAT2 (M32R_,insn)
96 /* Insn can't be executed in parallel.
97 Or is that "do NOt Pass to Air defense Radar"? :-) */
100 /* Commas between elements are contained in the macros.
101 Some of these are conditionally compiled out. */
103 static const struct insn_sem m32rxf_insn_sem
[] =
105 { VIRTUAL_INSN_X_INVALID
, IDX (INSN_X_INVALID
), NOPAR
, NOPAR
, FULL (x_invalid
) FAST (x_invalid
) },
106 { VIRTUAL_INSN_X_AFTER
, IDX (INSN_X_AFTER
), NOPAR
, NOPAR
, FULL (x_after
) FAST (x_after
) },
107 { VIRTUAL_INSN_X_BEFORE
, IDX (INSN_X_BEFORE
), NOPAR
, NOPAR
, FULL (x_before
) FAST (x_before
) },
108 { VIRTUAL_INSN_X_CTI_CHAIN
, IDX (INSN_X_CTI_CHAIN
), NOPAR
, NOPAR
, FULL (x_cti_chain
) FAST (x_cti_chain
) },
109 { VIRTUAL_INSN_X_CHAIN
, IDX (INSN_X_CHAIN
), NOPAR
, NOPAR
, FULL (x_chain
) FAST (x_chain
) },
110 { VIRTUAL_INSN_X_BEGIN
, IDX (INSN_X_BEGIN
), NOPAR
, NOPAR
, FULL (x_begin
) FAST (x_begin
) },
111 { TYPE (INSN_ADD
), IDX (INSN_ADD
), IDX (INSN_PAR_ADD
), IDX (INSN_WRITE_ADD
), FULL (add
) FAST (add
) },
112 { TYPE (INSN_ADD3
), IDX (INSN_ADD3
), NOPAR
, NOPAR
, FULL (add3
) FAST (add3
) },
113 { TYPE (INSN_AND
), IDX (INSN_AND
), IDX (INSN_PAR_AND
), IDX (INSN_WRITE_AND
), FULL (and) FAST (and) },
114 { TYPE (INSN_AND3
), IDX (INSN_AND3
), NOPAR
, NOPAR
, FULL (and3
) FAST (and3
) },
115 { TYPE (INSN_OR
), IDX (INSN_OR
), IDX (INSN_PAR_OR
), IDX (INSN_WRITE_OR
), FULL (or) FAST (or) },
116 { TYPE (INSN_OR3
), IDX (INSN_OR3
), NOPAR
, NOPAR
, FULL (or3
) FAST (or3
) },
117 { TYPE (INSN_XOR
), IDX (INSN_XOR
), IDX (INSN_PAR_XOR
), IDX (INSN_WRITE_XOR
), FULL (xor) FAST (xor) },
118 { TYPE (INSN_XOR3
), IDX (INSN_XOR3
), NOPAR
, NOPAR
, FULL (xor3
) FAST (xor3
) },
119 { TYPE (INSN_ADDI
), IDX (INSN_ADDI
), IDX (INSN_PAR_ADDI
), IDX (INSN_WRITE_ADDI
), FULL (addi
) FAST (addi
) },
120 { TYPE (INSN_ADDV
), IDX (INSN_ADDV
), IDX (INSN_PAR_ADDV
), IDX (INSN_WRITE_ADDV
), FULL (addv
) FAST (addv
) },
121 { TYPE (INSN_ADDV3
), IDX (INSN_ADDV3
), NOPAR
, NOPAR
, FULL (addv3
) FAST (addv3
) },
122 { TYPE (INSN_ADDX
), IDX (INSN_ADDX
), IDX (INSN_PAR_ADDX
), IDX (INSN_WRITE_ADDX
), FULL (addx
) FAST (addx
) },
123 { TYPE (INSN_BC8
), IDX (INSN_BC8
), IDX (INSN_PAR_BC8
), IDX (INSN_WRITE_BC8
), FULL (bc8
) FAST (bc8
) },
124 { TYPE (INSN_BC24
), IDX (INSN_BC24
), NOPAR
, NOPAR
, FULL (bc24
) FAST (bc24
) },
125 { TYPE (INSN_BEQ
), IDX (INSN_BEQ
), NOPAR
, NOPAR
, FULL (beq
) FAST (beq
) },
126 { TYPE (INSN_BEQZ
), IDX (INSN_BEQZ
), NOPAR
, NOPAR
, FULL (beqz
) FAST (beqz
) },
127 { TYPE (INSN_BGEZ
), IDX (INSN_BGEZ
), NOPAR
, NOPAR
, FULL (bgez
) FAST (bgez
) },
128 { TYPE (INSN_BGTZ
), IDX (INSN_BGTZ
), NOPAR
, NOPAR
, FULL (bgtz
) FAST (bgtz
) },
129 { TYPE (INSN_BLEZ
), IDX (INSN_BLEZ
), NOPAR
, NOPAR
, FULL (blez
) FAST (blez
) },
130 { TYPE (INSN_BLTZ
), IDX (INSN_BLTZ
), NOPAR
, NOPAR
, FULL (bltz
) FAST (bltz
) },
131 { TYPE (INSN_BNEZ
), IDX (INSN_BNEZ
), NOPAR
, NOPAR
, FULL (bnez
) FAST (bnez
) },
132 { TYPE (INSN_BL8
), IDX (INSN_BL8
), IDX (INSN_PAR_BL8
), IDX (INSN_WRITE_BL8
), FULL (bl8
) FAST (bl8
) },
133 { TYPE (INSN_BL24
), IDX (INSN_BL24
), NOPAR
, NOPAR
, FULL (bl24
) FAST (bl24
) },
134 { TYPE (INSN_BCL8
), IDX (INSN_BCL8
), IDX (INSN_PAR_BCL8
), IDX (INSN_WRITE_BCL8
), FULL (bcl8
) FAST (bcl8
) },
135 { TYPE (INSN_BCL24
), IDX (INSN_BCL24
), NOPAR
, NOPAR
, FULL (bcl24
) FAST (bcl24
) },
136 { TYPE (INSN_BNC8
), IDX (INSN_BNC8
), IDX (INSN_PAR_BNC8
), IDX (INSN_WRITE_BNC8
), FULL (bnc8
) FAST (bnc8
) },
137 { TYPE (INSN_BNC24
), IDX (INSN_BNC24
), NOPAR
, NOPAR
, FULL (bnc24
) FAST (bnc24
) },
138 { TYPE (INSN_BNE
), IDX (INSN_BNE
), NOPAR
, NOPAR
, FULL (bne
) FAST (bne
) },
139 { TYPE (INSN_BRA8
), IDX (INSN_BRA8
), IDX (INSN_PAR_BRA8
), IDX (INSN_WRITE_BRA8
), FULL (bra8
) FAST (bra8
) },
140 { TYPE (INSN_BRA24
), IDX (INSN_BRA24
), NOPAR
, NOPAR
, FULL (bra24
) FAST (bra24
) },
141 { TYPE (INSN_BNCL8
), IDX (INSN_BNCL8
), IDX (INSN_PAR_BNCL8
), IDX (INSN_WRITE_BNCL8
), FULL (bncl8
) FAST (bncl8
) },
142 { TYPE (INSN_BNCL24
), IDX (INSN_BNCL24
), NOPAR
, NOPAR
, FULL (bncl24
) FAST (bncl24
) },
143 { TYPE (INSN_CMP
), IDX (INSN_CMP
), IDX (INSN_PAR_CMP
), IDX (INSN_WRITE_CMP
), FULL (cmp
) FAST (cmp
) },
144 { TYPE (INSN_CMPI
), IDX (INSN_CMPI
), NOPAR
, NOPAR
, FULL (cmpi
) FAST (cmpi
) },
145 { TYPE (INSN_CMPU
), IDX (INSN_CMPU
), IDX (INSN_PAR_CMPU
), IDX (INSN_WRITE_CMPU
), FULL (cmpu
) FAST (cmpu
) },
146 { TYPE (INSN_CMPUI
), IDX (INSN_CMPUI
), NOPAR
, NOPAR
, FULL (cmpui
) FAST (cmpui
) },
147 { TYPE (INSN_CMPEQ
), IDX (INSN_CMPEQ
), IDX (INSN_PAR_CMPEQ
), IDX (INSN_WRITE_CMPEQ
), FULL (cmpeq
) FAST (cmpeq
) },
148 { TYPE (INSN_CMPZ
), IDX (INSN_CMPZ
), IDX (INSN_PAR_CMPZ
), IDX (INSN_WRITE_CMPZ
), FULL (cmpz
) FAST (cmpz
) },
149 { TYPE (INSN_DIV
), IDX (INSN_DIV
), NOPAR
, NOPAR
, FULL (div
) FAST (div
) },
150 { TYPE (INSN_DIVU
), IDX (INSN_DIVU
), NOPAR
, NOPAR
, FULL (divu
) FAST (divu
) },
151 { TYPE (INSN_REM
), IDX (INSN_REM
), NOPAR
, NOPAR
, FULL (rem
) FAST (rem
) },
152 { TYPE (INSN_REMU
), IDX (INSN_REMU
), NOPAR
, NOPAR
, FULL (remu
) FAST (remu
) },
153 { TYPE (INSN_DIVH
), IDX (INSN_DIVH
), NOPAR
, NOPAR
, FULL (divh
) FAST (divh
) },
154 { TYPE (INSN_JC
), IDX (INSN_JC
), IDX (INSN_PAR_JC
), IDX (INSN_WRITE_JC
), FULL (jc
) FAST (jc
) },
155 { TYPE (INSN_JNC
), IDX (INSN_JNC
), IDX (INSN_PAR_JNC
), IDX (INSN_WRITE_JNC
), FULL (jnc
) FAST (jnc
) },
156 { TYPE (INSN_JL
), IDX (INSN_JL
), IDX (INSN_PAR_JL
), IDX (INSN_WRITE_JL
), FULL (jl
) FAST (jl
) },
157 { TYPE (INSN_JMP
), IDX (INSN_JMP
), IDX (INSN_PAR_JMP
), IDX (INSN_WRITE_JMP
), FULL (jmp
) FAST (jmp
) },
158 { TYPE (INSN_LD
), IDX (INSN_LD
), IDX (INSN_PAR_LD
), IDX (INSN_WRITE_LD
), FULL (ld
) FAST (ld
) },
159 { TYPE (INSN_LD_D
), IDX (INSN_LD_D
), NOPAR
, NOPAR
, FULL (ld_d
) FAST (ld_d
) },
160 { TYPE (INSN_LDB
), IDX (INSN_LDB
), IDX (INSN_PAR_LDB
), IDX (INSN_WRITE_LDB
), FULL (ldb
) FAST (ldb
) },
161 { TYPE (INSN_LDB_D
), IDX (INSN_LDB_D
), NOPAR
, NOPAR
, FULL (ldb_d
) FAST (ldb_d
) },
162 { TYPE (INSN_LDH
), IDX (INSN_LDH
), IDX (INSN_PAR_LDH
), IDX (INSN_WRITE_LDH
), FULL (ldh
) FAST (ldh
) },
163 { TYPE (INSN_LDH_D
), IDX (INSN_LDH_D
), NOPAR
, NOPAR
, FULL (ldh_d
) FAST (ldh_d
) },
164 { TYPE (INSN_LDUB
), IDX (INSN_LDUB
), IDX (INSN_PAR_LDUB
), IDX (INSN_WRITE_LDUB
), FULL (ldub
) FAST (ldub
) },
165 { TYPE (INSN_LDUB_D
), IDX (INSN_LDUB_D
), NOPAR
, NOPAR
, FULL (ldub_d
) FAST (ldub_d
) },
166 { TYPE (INSN_LDUH
), IDX (INSN_LDUH
), IDX (INSN_PAR_LDUH
), IDX (INSN_WRITE_LDUH
), FULL (lduh
) FAST (lduh
) },
167 { TYPE (INSN_LDUH_D
), IDX (INSN_LDUH_D
), NOPAR
, NOPAR
, FULL (lduh_d
) FAST (lduh_d
) },
168 { TYPE (INSN_LD_PLUS
), IDX (INSN_LD_PLUS
), IDX (INSN_PAR_LD_PLUS
), IDX (INSN_WRITE_LD_PLUS
), FULL (ld_plus
) FAST (ld_plus
) },
169 { TYPE (INSN_LD24
), IDX (INSN_LD24
), NOPAR
, NOPAR
, FULL (ld24
) FAST (ld24
) },
170 { TYPE (INSN_LDI8
), IDX (INSN_LDI8
), IDX (INSN_PAR_LDI8
), IDX (INSN_WRITE_LDI8
), FULL (ldi8
) FAST (ldi8
) },
171 { TYPE (INSN_LDI16
), IDX (INSN_LDI16
), NOPAR
, NOPAR
, FULL (ldi16
) FAST (ldi16
) },
172 { TYPE (INSN_LOCK
), IDX (INSN_LOCK
), IDX (INSN_PAR_LOCK
), IDX (INSN_WRITE_LOCK
), FULL (lock
) FAST (lock
) },
173 { TYPE (INSN_MACHI_A
), IDX (INSN_MACHI_A
), IDX (INSN_PAR_MACHI_A
), IDX (INSN_WRITE_MACHI_A
), FULL (machi_a
) FAST (machi_a
) },
174 { TYPE (INSN_MACLO_A
), IDX (INSN_MACLO_A
), IDX (INSN_PAR_MACLO_A
), IDX (INSN_WRITE_MACLO_A
), FULL (maclo_a
) FAST (maclo_a
) },
175 { TYPE (INSN_MACWHI_A
), IDX (INSN_MACWHI_A
), IDX (INSN_PAR_MACWHI_A
), IDX (INSN_WRITE_MACWHI_A
), FULL (macwhi_a
) FAST (macwhi_a
) },
176 { TYPE (INSN_MACWLO_A
), IDX (INSN_MACWLO_A
), IDX (INSN_PAR_MACWLO_A
), IDX (INSN_WRITE_MACWLO_A
), FULL (macwlo_a
) FAST (macwlo_a
) },
177 { TYPE (INSN_MUL
), IDX (INSN_MUL
), IDX (INSN_PAR_MUL
), IDX (INSN_WRITE_MUL
), FULL (mul
) FAST (mul
) },
178 { TYPE (INSN_MULHI_A
), IDX (INSN_MULHI_A
), IDX (INSN_PAR_MULHI_A
), IDX (INSN_WRITE_MULHI_A
), FULL (mulhi_a
) FAST (mulhi_a
) },
179 { TYPE (INSN_MULLO_A
), IDX (INSN_MULLO_A
), IDX (INSN_PAR_MULLO_A
), IDX (INSN_WRITE_MULLO_A
), FULL (mullo_a
) FAST (mullo_a
) },
180 { TYPE (INSN_MULWHI_A
), IDX (INSN_MULWHI_A
), IDX (INSN_PAR_MULWHI_A
), IDX (INSN_WRITE_MULWHI_A
), FULL (mulwhi_a
) FAST (mulwhi_a
) },
181 { TYPE (INSN_MULWLO_A
), IDX (INSN_MULWLO_A
), IDX (INSN_PAR_MULWLO_A
), IDX (INSN_WRITE_MULWLO_A
), FULL (mulwlo_a
) FAST (mulwlo_a
) },
182 { TYPE (INSN_MV
), IDX (INSN_MV
), IDX (INSN_PAR_MV
), IDX (INSN_WRITE_MV
), FULL (mv
) FAST (mv
) },
183 { TYPE (INSN_MVFACHI_A
), IDX (INSN_MVFACHI_A
), IDX (INSN_PAR_MVFACHI_A
), IDX (INSN_WRITE_MVFACHI_A
), FULL (mvfachi_a
) FAST (mvfachi_a
) },
184 { TYPE (INSN_MVFACLO_A
), IDX (INSN_MVFACLO_A
), IDX (INSN_PAR_MVFACLO_A
), IDX (INSN_WRITE_MVFACLO_A
), FULL (mvfaclo_a
) FAST (mvfaclo_a
) },
185 { TYPE (INSN_MVFACMI_A
), IDX (INSN_MVFACMI_A
), IDX (INSN_PAR_MVFACMI_A
), IDX (INSN_WRITE_MVFACMI_A
), FULL (mvfacmi_a
) FAST (mvfacmi_a
) },
186 { TYPE (INSN_MVFC
), IDX (INSN_MVFC
), IDX (INSN_PAR_MVFC
), IDX (INSN_WRITE_MVFC
), FULL (mvfc
) FAST (mvfc
) },
187 { TYPE (INSN_MVTACHI_A
), IDX (INSN_MVTACHI_A
), IDX (INSN_PAR_MVTACHI_A
), IDX (INSN_WRITE_MVTACHI_A
), FULL (mvtachi_a
) FAST (mvtachi_a
) },
188 { TYPE (INSN_MVTACLO_A
), IDX (INSN_MVTACLO_A
), IDX (INSN_PAR_MVTACLO_A
), IDX (INSN_WRITE_MVTACLO_A
), FULL (mvtaclo_a
) FAST (mvtaclo_a
) },
189 { TYPE (INSN_MVTC
), IDX (INSN_MVTC
), IDX (INSN_PAR_MVTC
), IDX (INSN_WRITE_MVTC
), FULL (mvtc
) FAST (mvtc
) },
190 { TYPE (INSN_NEG
), IDX (INSN_NEG
), IDX (INSN_PAR_NEG
), IDX (INSN_WRITE_NEG
), FULL (neg
) FAST (neg
) },
191 { TYPE (INSN_NOP
), IDX (INSN_NOP
), IDX (INSN_PAR_NOP
), IDX (INSN_WRITE_NOP
), FULL (nop
) FAST (nop
) },
192 { TYPE (INSN_NOT
), IDX (INSN_NOT
), IDX (INSN_PAR_NOT
), IDX (INSN_WRITE_NOT
), FULL (not) FAST (not) },
193 { TYPE (INSN_RAC_DSI
), IDX (INSN_RAC_DSI
), IDX (INSN_PAR_RAC_DSI
), IDX (INSN_WRITE_RAC_DSI
), FULL (rac_dsi
) FAST (rac_dsi
) },
194 { TYPE (INSN_RACH_DSI
), IDX (INSN_RACH_DSI
), IDX (INSN_PAR_RACH_DSI
), IDX (INSN_WRITE_RACH_DSI
), FULL (rach_dsi
) FAST (rach_dsi
) },
195 { TYPE (INSN_RTE
), IDX (INSN_RTE
), IDX (INSN_PAR_RTE
), IDX (INSN_WRITE_RTE
), FULL (rte
) FAST (rte
) },
196 { TYPE (INSN_SETH
), IDX (INSN_SETH
), NOPAR
, NOPAR
, FULL (seth
) FAST (seth
) },
197 { TYPE (INSN_SLL
), IDX (INSN_SLL
), IDX (INSN_PAR_SLL
), IDX (INSN_WRITE_SLL
), FULL (sll
) FAST (sll
) },
198 { TYPE (INSN_SLL3
), IDX (INSN_SLL3
), NOPAR
, NOPAR
, FULL (sll3
) FAST (sll3
) },
199 { TYPE (INSN_SLLI
), IDX (INSN_SLLI
), IDX (INSN_PAR_SLLI
), IDX (INSN_WRITE_SLLI
), FULL (slli
) FAST (slli
) },
200 { TYPE (INSN_SRA
), IDX (INSN_SRA
), IDX (INSN_PAR_SRA
), IDX (INSN_WRITE_SRA
), FULL (sra
) FAST (sra
) },
201 { TYPE (INSN_SRA3
), IDX (INSN_SRA3
), NOPAR
, NOPAR
, FULL (sra3
) FAST (sra3
) },
202 { TYPE (INSN_SRAI
), IDX (INSN_SRAI
), IDX (INSN_PAR_SRAI
), IDX (INSN_WRITE_SRAI
), FULL (srai
) FAST (srai
) },
203 { TYPE (INSN_SRL
), IDX (INSN_SRL
), IDX (INSN_PAR_SRL
), IDX (INSN_WRITE_SRL
), FULL (srl
) FAST (srl
) },
204 { TYPE (INSN_SRL3
), IDX (INSN_SRL3
), NOPAR
, NOPAR
, FULL (srl3
) FAST (srl3
) },
205 { TYPE (INSN_SRLI
), IDX (INSN_SRLI
), IDX (INSN_PAR_SRLI
), IDX (INSN_WRITE_SRLI
), FULL (srli
) FAST (srli
) },
206 { TYPE (INSN_ST
), IDX (INSN_ST
), IDX (INSN_PAR_ST
), IDX (INSN_WRITE_ST
), FULL (st
) FAST (st
) },
207 { TYPE (INSN_ST_D
), IDX (INSN_ST_D
), NOPAR
, NOPAR
, FULL (st_d
) FAST (st_d
) },
208 { TYPE (INSN_STB
), IDX (INSN_STB
), IDX (INSN_PAR_STB
), IDX (INSN_WRITE_STB
), FULL (stb
) FAST (stb
) },
209 { TYPE (INSN_STB_D
), IDX (INSN_STB_D
), NOPAR
, NOPAR
, FULL (stb_d
) FAST (stb_d
) },
210 { TYPE (INSN_STH
), IDX (INSN_STH
), IDX (INSN_PAR_STH
), IDX (INSN_WRITE_STH
), FULL (sth
) FAST (sth
) },
211 { TYPE (INSN_STH_D
), IDX (INSN_STH_D
), NOPAR
, NOPAR
, FULL (sth_d
) FAST (sth_d
) },
212 { TYPE (INSN_ST_PLUS
), IDX (INSN_ST_PLUS
), IDX (INSN_PAR_ST_PLUS
), IDX (INSN_WRITE_ST_PLUS
), FULL (st_plus
) FAST (st_plus
) },
213 { TYPE (INSN_ST_MINUS
), IDX (INSN_ST_MINUS
), IDX (INSN_PAR_ST_MINUS
), IDX (INSN_WRITE_ST_MINUS
), FULL (st_minus
) FAST (st_minus
) },
214 { TYPE (INSN_SUB
), IDX (INSN_SUB
), IDX (INSN_PAR_SUB
), IDX (INSN_WRITE_SUB
), FULL (sub
) FAST (sub
) },
215 { TYPE (INSN_SUBV
), IDX (INSN_SUBV
), IDX (INSN_PAR_SUBV
), IDX (INSN_WRITE_SUBV
), FULL (subv
) FAST (subv
) },
216 { TYPE (INSN_SUBX
), IDX (INSN_SUBX
), IDX (INSN_PAR_SUBX
), IDX (INSN_WRITE_SUBX
), FULL (subx
) FAST (subx
) },
217 { TYPE (INSN_TRAP
), IDX (INSN_TRAP
), IDX (INSN_PAR_TRAP
), IDX (INSN_WRITE_TRAP
), FULL (trap
) FAST (trap
) },
218 { TYPE (INSN_UNLOCK
), IDX (INSN_UNLOCK
), IDX (INSN_PAR_UNLOCK
), IDX (INSN_WRITE_UNLOCK
), FULL (unlock
) FAST (unlock
) },
219 { TYPE (INSN_SATB
), IDX (INSN_SATB
), NOPAR
, NOPAR
, FULL (satb
) FAST (satb
) },
220 { TYPE (INSN_SATH
), IDX (INSN_SATH
), NOPAR
, NOPAR
, FULL (sath
) FAST (sath
) },
221 { TYPE (INSN_SAT
), IDX (INSN_SAT
), NOPAR
, NOPAR
, FULL (sat
) FAST (sat
) },
222 { TYPE (INSN_PCMPBZ
), IDX (INSN_PCMPBZ
), IDX (INSN_PAR_PCMPBZ
), IDX (INSN_WRITE_PCMPBZ
), FULL (pcmpbz
) FAST (pcmpbz
) },
223 { TYPE (INSN_SADD
), IDX (INSN_SADD
), IDX (INSN_PAR_SADD
), IDX (INSN_WRITE_SADD
), FULL (sadd
) FAST (sadd
) },
224 { TYPE (INSN_MACWU1
), IDX (INSN_MACWU1
), IDX (INSN_PAR_MACWU1
), IDX (INSN_WRITE_MACWU1
), FULL (macwu1
) FAST (macwu1
) },
225 { TYPE (INSN_MSBLO
), IDX (INSN_MSBLO
), IDX (INSN_PAR_MSBLO
), IDX (INSN_WRITE_MSBLO
), FULL (msblo
) FAST (msblo
) },
226 { TYPE (INSN_MULWU1
), IDX (INSN_MULWU1
), IDX (INSN_PAR_MULWU1
), IDX (INSN_WRITE_MULWU1
), FULL (mulwu1
) FAST (mulwu1
) },
227 { TYPE (INSN_MACLH1
), IDX (INSN_MACLH1
), IDX (INSN_PAR_MACLH1
), IDX (INSN_WRITE_MACLH1
), FULL (maclh1
) FAST (maclh1
) },
228 { TYPE (INSN_SC
), IDX (INSN_SC
), IDX (INSN_PAR_SC
), IDX (INSN_WRITE_SC
), FULL (sc
) FAST (sc
) },
229 { TYPE (INSN_SNC
), IDX (INSN_SNC
), IDX (INSN_PAR_SNC
), IDX (INSN_WRITE_SNC
), FULL (snc
) FAST (snc
) },
232 static const struct insn_sem m32rxf_insn_sem_invalid
=
234 VIRTUAL_INSN_X_INVALID
, IDX (INSN_X_INVALID
), IDX (INSN_X_INVALID
), 0 /*unused*/, FULL (x_invalid
) FAST (x_invalid
)
240 /* Initialize an IDESC from the compile-time computable parts. */
243 init_idesc (SIM_CPU
*cpu
, IDESC
*id
, const struct insn_sem
*t
)
245 const CGEN_INSN
*opcode_table
= m32r_cgen_insn_table_entries
;
248 if ((int) t
->type
<= 0)
249 id
->opcode
= & cgen_virtual_opcode_table
[- t
->type
];
251 id
->opcode
= & opcode_table
[t
->type
];
252 #if ! WITH_SEM_SWITCH_FULL
253 id
->sem_full
= t
->sem_full
;
255 #if WITH_FAST && ! WITH_SEM_SWITCH_FAST
256 id
->sem_fast
= t
->sem_fast
;
258 #if WITH_PROFILE_MODEL_P
259 id
->timing
= & MODEL_TIMING (CPU_MODEL (cpu
)) [t
->index
];
261 SIM_DESC sd
= CPU_STATE (cpu
);
262 SIM_ASSERT (t
->index
== id
->timing
->num
);
267 /* Initialize the instruction descriptor table. */
270 m32rxf_init_idesc_table (SIM_CPU
*cpu
)
273 const struct insn_sem
*t
,*tend
;
274 int tabsize
= M32RXF_INSN_MAX
;
275 IDESC
*table
= m32rxf_insn_data
;
277 memset (table
, 0, tabsize
* sizeof (IDESC
));
279 /* First set all entries to the `invalid insn'. */
280 t
= & m32rxf_insn_sem_invalid
;
281 for (id
= table
, tabend
= table
+ tabsize
; id
< tabend
; ++id
)
282 init_idesc (cpu
, id
, t
);
284 /* Now fill in the values for the chosen cpu. */
285 for (t
= m32rxf_insn_sem
, tend
= t
+ sizeof (m32rxf_insn_sem
) / sizeof (*t
);
288 init_idesc (cpu
, & table
[t
->index
], t
);
289 if (t
->par_index
!= NOPAR
)
291 init_idesc (cpu
, &table
[t
->par_index
], t
);
292 table
[t
->index
].par_idesc
= &table
[t
->par_index
];
294 if (t
->par_index
!= NOPAR
)
296 init_idesc (cpu
, &table
[t
->write_index
], t
);
297 table
[t
->par_index
].par_idesc
= &table
[t
->write_index
];
301 /* Link the IDESC table into the cpu. */
302 CPU_IDESC (cpu
) = table
;
305 /* Enum declaration for all instruction semantic formats. */
307 FMT_EMPTY
, FMT_ADD
, FMT_ADD3
, FMT_AND3
308 , FMT_OR3
, FMT_ADDI
, FMT_ADDV
, FMT_ADDV3
309 , FMT_ADDX
, FMT_BC8
, FMT_BC24
, FMT_BEQ
310 , FMT_BEQZ
, FMT_BL8
, FMT_BL24
, FMT_BCL8
311 , FMT_BCL24
, FMT_BRA8
, FMT_BRA24
, FMT_CMP
312 , FMT_CMPI
, FMT_CMPZ
, FMT_DIV
, FMT_JC
313 , FMT_JL
, FMT_JMP
, FMT_LD
, FMT_LD_D
314 , FMT_LDB
, FMT_LDB_D
, FMT_LDH
, FMT_LDH_D
315 , FMT_LD_PLUS
, FMT_LD24
, FMT_LDI8
, FMT_LDI16
316 , FMT_LOCK
, FMT_MACHI_A
, FMT_MULHI_A
, FMT_MV
317 , FMT_MVFACHI_A
, FMT_MVFC
, FMT_MVTACHI_A
, FMT_MVTC
318 , FMT_NOP
, FMT_RAC_DSI
, FMT_RTE
, FMT_SETH
319 , FMT_SLL3
, FMT_SLLI
, FMT_ST
, FMT_ST_D
320 , FMT_STB
, FMT_STB_D
, FMT_STH
, FMT_STH_D
321 , FMT_ST_PLUS
, FMT_TRAP
, FMT_UNLOCK
, FMT_SATB
322 , FMT_SAT
, FMT_SADD
, FMT_MACWU1
, FMT_MSBLO
326 /* The decoder uses this to record insns and direct extraction handling. */
337 /* Macro to go from decode phase to extraction phase. */
340 #define GOTO_EXTRACT(id) goto *(id)->sfmt
342 #define GOTO_EXTRACT(id) goto extract
345 /* The decoder needs a slightly different computed goto switch control. */
347 #define DECODE_SWITCH(N, X) goto *labels_##N[X];
349 #define DECODE_SWITCH(N, X) switch (X)
352 /* Given an instruction, return a pointer to its IDESC entry. */
355 m32rxf_decode (SIM_CPU
*current_cpu
, IADDR pc
,
356 CGEN_INSN_INT base_insn
, CGEN_INSN_INT entire_insn
,
359 /* Result of decoder, used by extractor. */
360 const DECODE_DESC
*idecode
;
362 /* First decode the instruction. */
365 #define I(insn) & m32rxf_insn_data[CONCAT2 (M32RXF_,insn)]
367 #define E(fmt) && case_ex_##fmt
371 CGEN_INSN_INT insn
= base_insn
;
372 static const DECODE_DESC idecode_invalid
= { I (INSN_X_INVALID
), E (FMT_EMPTY
) };
376 static const void *labels_0
[256] = {
377 && default_0
, && default_0
, && default_0
, && default_0
,
378 && default_0
, && default_0
, && default_0
, && case_0_7
,
379 && default_0
, && default_0
, && default_0
, && default_0
,
380 && default_0
, && default_0
, && default_0
, && default_0
,
381 && default_0
, && default_0
, && default_0
, && default_0
,
382 && default_0
, && default_0
, && default_0
, && default_0
,
383 && default_0
, && default_0
, && default_0
, && default_0
,
384 && case_0_28
, && default_0
, && default_0
, && default_0
,
385 && default_0
, && default_0
, && default_0
, && default_0
,
386 && default_0
, && default_0
, && default_0
, && default_0
,
387 && default_0
, && default_0
, && default_0
, && default_0
,
388 && default_0
, && default_0
, && default_0
, && default_0
,
389 && default_0
, && default_0
, && default_0
, && default_0
,
390 && default_0
, && default_0
, && default_0
, && default_0
,
391 && default_0
, && default_0
, && default_0
, && default_0
,
392 && default_0
, && default_0
, && default_0
, && default_0
,
393 && default_0
, && default_0
, && default_0
, && default_0
,
394 && default_0
, && default_0
, && default_0
, && default_0
,
395 && default_0
, && default_0
, && default_0
, && default_0
,
396 && default_0
, && default_0
, && default_0
, && default_0
,
397 && default_0
, && default_0
, && default_0
, && default_0
,
398 && default_0
, && default_0
, && default_0
, && case_0_87
,
399 && default_0
, && default_0
, && default_0
, && default_0
,
400 && default_0
, && default_0
, && default_0
, && case_0_95
,
401 && default_0
, && default_0
, && default_0
, && default_0
,
402 && default_0
, && default_0
, && default_0
, && default_0
,
403 && default_0
, && default_0
, && default_0
, && default_0
,
404 && default_0
, && default_0
, && default_0
, && default_0
,
405 && case_0_112
, && case_0_113
, && case_0_114
, && case_0_115
,
406 && case_0_116
, && case_0_117
, && case_0_118
, && case_0_119
,
407 && case_0_120
, && case_0_121
, && case_0_122
, && case_0_123
,
408 && case_0_124
, && case_0_125
, && case_0_126
, && case_0_127
,
409 && default_0
, && default_0
, && default_0
, && default_0
,
410 && default_0
, && default_0
, && case_0_134
, && default_0
,
411 && default_0
, && default_0
, && default_0
, && default_0
,
412 && default_0
, && default_0
, && default_0
, && default_0
,
413 && case_0_144
, && default_0
, && default_0
, && default_0
,
414 && default_0
, && default_0
, && default_0
, && default_0
,
415 && default_0
, && default_0
, && default_0
, && default_0
,
416 && default_0
, && default_0
, && default_0
, && default_0
,
417 && default_0
, && default_0
, && default_0
, && default_0
,
418 && default_0
, && default_0
, && default_0
, && default_0
,
419 && default_0
, && default_0
, && default_0
, && default_0
,
420 && default_0
, && default_0
, && default_0
, && default_0
,
421 && default_0
, && default_0
, && default_0
, && default_0
,
422 && default_0
, && default_0
, && default_0
, && default_0
,
423 && default_0
, && default_0
, && default_0
, && default_0
,
424 && default_0
, && default_0
, && default_0
, && default_0
,
425 && default_0
, && default_0
, && default_0
, && default_0
,
426 && default_0
, && default_0
, && default_0
, && default_0
,
427 && default_0
, && default_0
, && default_0
, && default_0
,
428 && default_0
, && default_0
, && default_0
, && default_0
,
429 && default_0
, && default_0
, && default_0
, && default_0
,
430 && default_0
, && default_0
, && default_0
, && default_0
,
431 && default_0
, && default_0
, && default_0
, && default_0
,
432 && default_0
, && default_0
, && default_0
, && default_0
,
433 && default_0
, && default_0
, && default_0
, && default_0
,
434 && default_0
, && default_0
, && default_0
, && default_0
,
435 && default_0
, && default_0
, && default_0
, && default_0
,
436 && default_0
, && default_0
, && default_0
, && default_0
,
437 && case_0_240
, && case_0_241
, && case_0_242
, && case_0_243
,
438 && case_0_244
, && case_0_245
, && case_0_246
, && case_0_247
,
439 && case_0_248
, && case_0_249
, && case_0_250
, && case_0_251
,
440 && case_0_252
, && case_0_253
, && case_0_254
, && case_0_255
,
443 static const DECODE_DESC insns
[256] = {
444 { I (INSN_SUBV
), E (FMT_ADDV
) }, { I (INSN_SUBX
), E (FMT_ADDX
) },
445 { I (INSN_SUB
), E (FMT_ADD
) }, { I (INSN_NEG
), E (FMT_MV
) },
446 { I (INSN_CMP
), E (FMT_CMP
) }, { I (INSN_CMPU
), E (FMT_CMP
) },
447 { I (INSN_CMPEQ
), E (FMT_CMP
) }, { 0 },
448 { I (INSN_ADDV
), E (FMT_ADDV
) }, { I (INSN_ADDX
), E (FMT_ADDX
) },
449 { I (INSN_ADD
), E (FMT_ADD
) }, { I (INSN_NOT
), E (FMT_MV
) },
450 { I (INSN_AND
), E (FMT_ADD
) }, { I (INSN_XOR
), E (FMT_ADD
) },
451 { I (INSN_OR
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
452 { I (INSN_SRL
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
453 { I (INSN_SRA
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
454 { I (INSN_SLL
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
455 { I (INSN_MUL
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
456 { I (INSN_MV
), E (FMT_MV
) }, { I (INSN_MVFC
), E (FMT_MVFC
) },
457 { I (INSN_MVTC
), E (FMT_MVTC
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
458 { 0 }, { I (INSN_RTE
), E (FMT_RTE
) },
459 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_TRAP
), E (FMT_TRAP
) },
460 { I (INSN_STB
), E (FMT_STB
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
461 { I (INSN_STH
), E (FMT_STH
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
462 { I (INSN_ST
), E (FMT_ST
) }, { I (INSN_UNLOCK
), E (FMT_UNLOCK
) },
463 { I (INSN_ST_PLUS
), E (FMT_ST_PLUS
) }, { I (INSN_ST_MINUS
), E (FMT_ST_PLUS
) },
464 { I (INSN_LDB
), E (FMT_LDB
) }, { I (INSN_LDUB
), E (FMT_LDB
) },
465 { I (INSN_LDH
), E (FMT_LDH
) }, { I (INSN_LDUH
), E (FMT_LDH
) },
466 { I (INSN_LD
), E (FMT_LD
) }, { I (INSN_LOCK
), E (FMT_LOCK
) },
467 { I (INSN_LD_PLUS
), E (FMT_LD_PLUS
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
468 { I (INSN_MULHI_A
), E (FMT_MULHI_A
) }, { I (INSN_MULLO_A
), E (FMT_MULHI_A
) },
469 { I (INSN_MULWHI_A
), E (FMT_MULHI_A
) }, { I (INSN_MULWLO_A
), E (FMT_MULHI_A
) },
470 { I (INSN_MACHI_A
), E (FMT_MACHI_A
) }, { I (INSN_MACLO_A
), E (FMT_MACHI_A
) },
471 { I (INSN_MACWHI_A
), E (FMT_MACHI_A
) }, { I (INSN_MACWLO_A
), E (FMT_MACHI_A
) },
472 { I (INSN_MULHI_A
), E (FMT_MULHI_A
) }, { I (INSN_MULLO_A
), E (FMT_MULHI_A
) },
473 { I (INSN_MULWHI_A
), E (FMT_MULHI_A
) }, { I (INSN_MULWLO_A
), E (FMT_MULHI_A
) },
474 { I (INSN_MACHI_A
), E (FMT_MACHI_A
) }, { I (INSN_MACLO_A
), E (FMT_MACHI_A
) },
475 { I (INSN_MACWHI_A
), E (FMT_MACHI_A
) }, { I (INSN_MACWLO_A
), E (FMT_MACHI_A
) },
476 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
477 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
478 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
479 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
480 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
481 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
482 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
483 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
484 { I (INSN_SRLI
), E (FMT_SLLI
) }, { I (INSN_SRLI
), E (FMT_SLLI
) },
485 { I (INSN_SRAI
), E (FMT_SLLI
) }, { I (INSN_SRAI
), E (FMT_SLLI
) },
486 { I (INSN_SLLI
), E (FMT_SLLI
) }, { I (INSN_SLLI
), E (FMT_SLLI
) },
487 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { 0 },
488 { I (INSN_RACH_DSI
), E (FMT_RAC_DSI
) }, { I (INSN_RAC_DSI
), E (FMT_RAC_DSI
) },
489 { I (INSN_MULWU1
), E (FMT_MULWU1
) }, { I (INSN_MACWU1
), E (FMT_MACWU1
) },
490 { I (INSN_MACLH1
), E (FMT_MACWU1
) }, { I (INSN_MSBLO
), E (FMT_MSBLO
) },
491 { I (INSN_SADD
), E (FMT_SADD
) }, { 0 },
492 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
493 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
494 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
495 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
496 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
497 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
498 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
499 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
508 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
509 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
510 { I (INSN_CMPI
), E (FMT_CMPI
) }, { I (INSN_CMPUI
), E (FMT_CMPI
) },
511 { 0 }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
512 { I (INSN_ADDV3
), E (FMT_ADDV3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
513 { I (INSN_ADD3
), E (FMT_ADD3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
514 { I (INSN_AND3
), E (FMT_AND3
) }, { I (INSN_XOR3
), E (FMT_AND3
) },
515 { I (INSN_OR3
), E (FMT_OR3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
516 { 0 }, { I (INSN_DIVU
), E (FMT_DIV
) },
517 { I (INSN_REM
), E (FMT_DIV
) }, { I (INSN_REMU
), E (FMT_DIV
) },
518 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
519 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
520 { I (INSN_SRL3
), E (FMT_SLL3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
521 { I (INSN_SRA3
), E (FMT_SLL3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
522 { I (INSN_SLL3
), E (FMT_SLL3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
523 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_LDI16
), E (FMT_LDI16
) },
524 { I (INSN_STB_D
), E (FMT_STB_D
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
525 { I (INSN_STH_D
), E (FMT_STH_D
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
526 { I (INSN_ST_D
), E (FMT_ST_D
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
527 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
528 { I (INSN_LDB_D
), E (FMT_LDB_D
) }, { I (INSN_LDUB_D
), E (FMT_LDB_D
) },
529 { I (INSN_LDH_D
), E (FMT_LDH_D
) }, { I (INSN_LDUH_D
), E (FMT_LDH_D
) },
530 { I (INSN_LD_D
), E (FMT_LD_D
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
531 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
532 { I (INSN_BEQ
), E (FMT_BEQ
) }, { I (INSN_BNE
), E (FMT_BEQ
) },
533 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
534 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
535 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
536 { I (INSN_BEQZ
), E (FMT_BEQZ
) }, { I (INSN_BNEZ
), E (FMT_BEQZ
) },
537 { I (INSN_BLTZ
), E (FMT_BEQZ
) }, { I (INSN_BGEZ
), E (FMT_BEQZ
) },
538 { I (INSN_BLEZ
), E (FMT_BEQZ
) }, { I (INSN_BGTZ
), E (FMT_BEQZ
) },
539 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
540 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
541 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
542 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
543 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
544 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
545 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
546 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
547 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
548 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
549 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
550 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
551 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
552 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
553 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
554 { I (INSN_SETH
), E (FMT_SETH
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
555 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
556 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
557 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
558 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
559 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
560 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
561 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
562 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
563 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
574 val
= (((insn
>> 8) & (15 << 4)) | ((insn
>> 4) & (15 << 0)));
575 DECODE_SWITCH (0, val
)
579 static const DECODE_DESC insns
[16] = {
580 { I (INSN_CMPZ
), E (FMT_CMPZ
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
581 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_PCMPBZ
), E (FMT_CMPZ
) },
582 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
583 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
584 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
585 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
586 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
587 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
589 unsigned int val
= (((insn
>> 8) & (15 << 0)));
590 idecode
= &insns
[val
];
591 GOTO_EXTRACT (idecode
);
595 static const DECODE_DESC insns
[16] = {
596 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
597 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
598 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
599 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
600 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
601 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
602 { I (INSN_JC
), E (FMT_JC
) }, { I (INSN_JNC
), E (FMT_JC
) },
603 { I (INSN_JL
), E (FMT_JL
) }, { I (INSN_JMP
), E (FMT_JMP
) },
605 unsigned int val
= (((insn
>> 8) & (15 << 0)));
606 idecode
= &insns
[val
];
607 GOTO_EXTRACT (idecode
);
611 static const DECODE_DESC insns
[4] = {
612 { I (INSN_MVTACHI_A
), E (FMT_MVTACHI_A
) }, { I (INSN_MVTACLO_A
), E (FMT_MVTACHI_A
) },
613 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
615 unsigned int val
= (((insn
>> 0) & (3 << 0)));
616 idecode
= &insns
[val
];
617 GOTO_EXTRACT (idecode
);
621 static const DECODE_DESC insns
[4] = {
622 { I (INSN_MVFACHI_A
), E (FMT_MVFACHI_A
) }, { I (INSN_MVFACLO_A
), E (FMT_MVFACHI_A
) },
623 { I (INSN_MVFACMI_A
), E (FMT_MVFACHI_A
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
625 unsigned int val
= (((insn
>> 0) & (3 << 0)));
626 idecode
= &insns
[val
];
627 GOTO_EXTRACT (idecode
);
631 static const DECODE_DESC insns
[16] = {
632 { I (INSN_NOP
), E (FMT_NOP
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
633 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
634 { I (INSN_SC
), E (FMT_SC
) }, { I (INSN_SNC
), E (FMT_SC
) },
635 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
636 { I (INSN_BCL8
), E (FMT_BCL8
) }, { I (INSN_BNCL8
), E (FMT_BCL8
) },
637 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
638 { I (INSN_BC8
), E (FMT_BC8
) }, { I (INSN_BNC8
), E (FMT_BC8
) },
639 { I (INSN_BL8
), E (FMT_BL8
) }, { I (INSN_BRA8
), E (FMT_BRA8
) },
641 unsigned int val
= (((insn
>> 8) & (15 << 0)));
642 idecode
= &insns
[val
];
643 GOTO_EXTRACT (idecode
);
645 CASE (0, 113) : /* fall through */
646 CASE (0, 114) : /* fall through */
647 CASE (0, 115) : /* fall through */
648 CASE (0, 116) : /* fall through */
649 CASE (0, 117) : /* fall through */
650 CASE (0, 118) : /* fall through */
651 CASE (0, 119) : /* fall through */
652 CASE (0, 120) : /* fall through */
653 CASE (0, 121) : /* fall through */
654 CASE (0, 122) : /* fall through */
655 CASE (0, 123) : /* fall through */
656 CASE (0, 124) : /* fall through */
657 CASE (0, 125) : /* fall through */
658 CASE (0, 126) : /* fall through */
661 static const DECODE_DESC insns
[16] = {
662 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
663 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
664 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
665 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
666 { I (INSN_BCL8
), E (FMT_BCL8
) }, { I (INSN_BNCL8
), E (FMT_BCL8
) },
667 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
668 { I (INSN_BC8
), E (FMT_BC8
) }, { I (INSN_BNC8
), E (FMT_BC8
) },
669 { I (INSN_BL8
), E (FMT_BL8
) }, { I (INSN_BRA8
), E (FMT_BRA8
) },
671 unsigned int val
= (((insn
>> 8) & (15 << 0)));
672 idecode
= &insns
[val
];
673 GOTO_EXTRACT (idecode
);
678 static const void *labels_0_134
[16] = {
679 && case_0_134_0
, && default_0_134
, && default_0_134
, && default_0_134
,
680 && default_0_134
, && default_0_134
, && default_0_134
, && default_0_134
,
681 && default_0_134
, && default_0_134
, && default_0_134
, && default_0_134
,
682 && default_0_134
, && default_0_134
, && default_0_134
, && default_0_134
,
685 static const DECODE_DESC insns
[16] = {
686 { 0 }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
687 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
688 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
689 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
690 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
691 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
692 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
693 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
696 /* Must fetch more bits. */
697 insn
= GETIMEMUHI (current_cpu
, pc
+ 2);
698 val
= (((insn
>> 12) & (15 << 0)));
699 DECODE_SWITCH (0_134
, val
)
703 static const DECODE_DESC insns
[16] = {
704 { I (INSN_SAT
), E (FMT_SAT
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
705 { I (INSN_SATH
), E (FMT_SATB
) }, { I (INSN_SATB
), E (FMT_SATB
) },
706 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
707 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
708 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
709 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
710 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
711 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
713 unsigned int val
= (((insn
>> 8) & (15 << 0)));
714 idecode
= &insns
[val
];
715 GOTO_EXTRACT (idecode
);
718 idecode
= &insns
[val
];
719 GOTO_EXTRACT (idecode
);
726 static const void *labels_0_144
[16] = {
727 && case_0_144_0
, && default_0_144
, && default_0_144
, && default_0_144
,
728 && default_0_144
, && default_0_144
, && default_0_144
, && default_0_144
,
729 && default_0_144
, && default_0_144
, && default_0_144
, && default_0_144
,
730 && default_0_144
, && default_0_144
, && default_0_144
, && default_0_144
,
733 static const DECODE_DESC insns
[16] = {
734 { 0 }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
735 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
736 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
737 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
738 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
739 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
740 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
741 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
744 /* Must fetch more bits. */
745 insn
= GETIMEMUHI (current_cpu
, pc
+ 2);
746 val
= (((insn
>> 12) & (15 << 0)));
747 DECODE_SWITCH (0_144
, val
)
752 static const void *labels_0_144_0
[16] = {
753 && case_0_144_0_0
, && default_0_144_0
, && default_0_144_0
, && default_0_144_0
,
754 && default_0_144_0
, && default_0_144_0
, && default_0_144_0
, && default_0_144_0
,
755 && default_0_144_0
, && default_0_144_0
, && default_0_144_0
, && default_0_144_0
,
756 && default_0_144_0
, && default_0_144_0
, && default_0_144_0
, && default_0_144_0
,
759 static const DECODE_DESC insns
[16] = {
760 { 0 }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
761 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
762 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
763 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
764 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
765 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
766 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
767 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
770 val
= (((insn
>> 8) & (15 << 0)));
771 DECODE_SWITCH (0_144_0
, val
)
775 static const DECODE_DESC insns
[16] = {
776 { I (INSN_DIV
), E (FMT_DIV
) }, { I (INSN_DIVH
), E (FMT_DIV
) },
777 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
778 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
779 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
780 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
781 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
782 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
783 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
785 unsigned int val
= (((insn
>> 4) & (15 << 0)));
786 idecode
= &insns
[val
];
787 GOTO_EXTRACT (idecode
);
790 idecode
= &insns
[val
];
791 GOTO_EXTRACT (idecode
);
796 idecode
= &insns
[val
];
797 GOTO_EXTRACT (idecode
);
801 CASE (0, 240) : /* fall through */
802 CASE (0, 241) : /* fall through */
803 CASE (0, 242) : /* fall through */
804 CASE (0, 243) : /* fall through */
805 CASE (0, 244) : /* fall through */
806 CASE (0, 245) : /* fall through */
807 CASE (0, 246) : /* fall through */
808 CASE (0, 247) : /* fall through */
809 CASE (0, 248) : /* fall through */
810 CASE (0, 249) : /* fall through */
811 CASE (0, 250) : /* fall through */
812 CASE (0, 251) : /* fall through */
813 CASE (0, 252) : /* fall through */
814 CASE (0, 253) : /* fall through */
815 CASE (0, 254) : /* fall through */
818 static const DECODE_DESC insns
[16] = {
819 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
820 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
821 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
822 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
823 { I (INSN_BCL24
), E (FMT_BCL24
) }, { I (INSN_BNCL24
), E (FMT_BCL24
) },
824 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
825 { I (INSN_BC24
), E (FMT_BC24
) }, { I (INSN_BNC24
), E (FMT_BC24
) },
826 { I (INSN_BL24
), E (FMT_BL24
) }, { I (INSN_BRA24
), E (FMT_BRA24
) },
828 unsigned int val
= (((insn
>> 8) & (15 << 0)));
829 idecode
= &insns
[val
];
830 GOTO_EXTRACT (idecode
);
833 idecode
= &insns
[val
];
834 GOTO_EXTRACT (idecode
);
842 /* The instruction has been decoded, now extract the fields. */
847 switch (idecode
->sfmt
)
851 CASE (ex
, FMT_EMPTY
) :
853 CGEN_INSN_INT insn
= entire_insn
;
854 #define FLD(f) abuf->fields.fmt_empty.f
855 EXTRACT_IFMT_EMPTY_VARS
/* */
857 EXTRACT_IFMT_EMPTY_CODE
859 /* Record the fields for the semantic handler. */
860 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_empty", (char *) 0));
868 CGEN_INSN_INT insn
= entire_insn
;
869 #define FLD(f) abuf->fields.fmt_add.f
870 EXTRACT_IFMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
872 EXTRACT_IFMT_ADD_CODE
874 /* Record the fields for the semantic handler. */
875 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
876 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
877 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_add", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
879 #if WITH_PROFILE_MODEL_P
880 /* Record the fields for profiling. */
881 if (PROFILE_MODEL_P (current_cpu
))
892 CASE (ex
, FMT_ADD3
) :
894 CGEN_INSN_INT insn
= entire_insn
;
895 #define FLD(f) abuf->fields.fmt_add3.f
896 EXTRACT_IFMT_ADD3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
898 EXTRACT_IFMT_ADD3_CODE
900 /* Record the fields for the semantic handler. */
901 FLD (f_simm16
) = f_simm16
;
902 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
903 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
904 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_add3", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
906 #if WITH_PROFILE_MODEL_P
907 /* Record the fields for profiling. */
908 if (PROFILE_MODEL_P (current_cpu
))
918 CASE (ex
, FMT_AND3
) :
920 CGEN_INSN_INT insn
= entire_insn
;
921 #define FLD(f) abuf->fields.fmt_and3.f
922 EXTRACT_IFMT_AND3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
924 EXTRACT_IFMT_AND3_CODE
926 /* Record the fields for the semantic handler. */
927 FLD (f_uimm16
) = f_uimm16
;
928 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
929 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
930 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_and3", "f_uimm16 0x%x", 'x', f_uimm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
932 #if WITH_PROFILE_MODEL_P
933 /* Record the fields for profiling. */
934 if (PROFILE_MODEL_P (current_cpu
))
946 CGEN_INSN_INT insn
= entire_insn
;
947 #define FLD(f) abuf->fields.fmt_or3.f
948 EXTRACT_IFMT_OR3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
950 EXTRACT_IFMT_OR3_CODE
952 /* Record the fields for the semantic handler. */
953 FLD (f_uimm16
) = f_uimm16
;
954 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
955 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
956 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_or3", "f_uimm16 0x%x", 'x', f_uimm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
958 #if WITH_PROFILE_MODEL_P
959 /* Record the fields for profiling. */
960 if (PROFILE_MODEL_P (current_cpu
))
970 CASE (ex
, FMT_ADDI
) :
972 CGEN_INSN_INT insn
= entire_insn
;
973 #define FLD(f) abuf->fields.fmt_addi.f
974 EXTRACT_IFMT_ADDI_VARS
/* f-op1 f-r1 f-simm8 */
976 EXTRACT_IFMT_ADDI_CODE
978 /* Record the fields for the semantic handler. */
979 FLD (f_simm8
) = f_simm8
;
980 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
981 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addi", "f_simm8 0x%x", 'x', f_simm8
, "dr 0x%x", 'x', f_r1
, (char *) 0));
983 #if WITH_PROFILE_MODEL_P
984 /* Record the fields for profiling. */
985 if (PROFILE_MODEL_P (current_cpu
))
995 CASE (ex
, FMT_ADDV
) :
997 CGEN_INSN_INT insn
= entire_insn
;
998 #define FLD(f) abuf->fields.fmt_addv.f
999 EXTRACT_IFMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1001 EXTRACT_IFMT_ADD_CODE
1003 /* Record the fields for the semantic handler. */
1004 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1005 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1006 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addv", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1008 #if WITH_PROFILE_MODEL_P
1009 /* Record the fields for profiling. */
1010 if (PROFILE_MODEL_P (current_cpu
))
1014 FLD (out_dr
) = f_r1
;
1021 CASE (ex
, FMT_ADDV3
) :
1023 CGEN_INSN_INT insn
= entire_insn
;
1024 #define FLD(f) abuf->fields.fmt_addv3.f
1025 EXTRACT_IFMT_ADDV3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1027 EXTRACT_IFMT_ADDV3_CODE
1029 /* Record the fields for the semantic handler. */
1030 FLD (f_simm16
) = f_simm16
;
1031 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1032 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1033 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addv3", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1035 #if WITH_PROFILE_MODEL_P
1036 /* Record the fields for profiling. */
1037 if (PROFILE_MODEL_P (current_cpu
))
1040 FLD (out_dr
) = f_r1
;
1047 CASE (ex
, FMT_ADDX
) :
1049 CGEN_INSN_INT insn
= entire_insn
;
1050 #define FLD(f) abuf->fields.fmt_addx.f
1051 EXTRACT_IFMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1053 EXTRACT_IFMT_ADD_CODE
1055 /* Record the fields for the semantic handler. */
1056 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1057 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1058 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addx", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1060 #if WITH_PROFILE_MODEL_P
1061 /* Record the fields for profiling. */
1062 if (PROFILE_MODEL_P (current_cpu
))
1066 FLD (out_dr
) = f_r1
;
1073 CASE (ex
, FMT_BC8
) :
1075 CGEN_INSN_INT insn
= entire_insn
;
1076 #define FLD(f) abuf->fields.cti.fields.fmt_bc8.f
1077 EXTRACT_IFMT_BC8_VARS
/* f-op1 f-r1 f-disp8 */
1079 EXTRACT_IFMT_BC8_CODE
1081 /* Record the fields for the semantic handler. */
1082 FLD (i_disp8
) = f_disp8
;
1083 SEM_BRANCH_INIT_EXTRACT (abuf
);
1084 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bc8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1086 #if WITH_PROFILE_MODEL_P
1087 /* Record the fields for profiling. */
1088 if (PROFILE_MODEL_P (current_cpu
))
1096 CASE (ex
, FMT_BC24
) :
1098 CGEN_INSN_INT insn
= entire_insn
;
1099 #define FLD(f) abuf->fields.cti.fields.fmt_bc24.f
1100 EXTRACT_IFMT_BC24_VARS
/* f-op1 f-r1 f-disp24 */
1102 EXTRACT_IFMT_BC24_CODE
1104 /* Record the fields for the semantic handler. */
1105 FLD (i_disp24
) = f_disp24
;
1106 SEM_BRANCH_INIT_EXTRACT (abuf
);
1107 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bc24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1109 #if WITH_PROFILE_MODEL_P
1110 /* Record the fields for profiling. */
1111 if (PROFILE_MODEL_P (current_cpu
))
1119 CASE (ex
, FMT_BEQ
) :
1121 CGEN_INSN_INT insn
= entire_insn
;
1122 #define FLD(f) abuf->fields.cti.fields.fmt_beq.f
1123 EXTRACT_IFMT_BEQ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
1125 EXTRACT_IFMT_BEQ_CODE
1127 /* Record the fields for the semantic handler. */
1128 FLD (i_disp16
) = f_disp16
;
1129 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1130 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1131 SEM_BRANCH_INIT_EXTRACT (abuf
);
1132 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_beq", "disp16 0x%x", 'x', f_disp16
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1134 #if WITH_PROFILE_MODEL_P
1135 /* Record the fields for profiling. */
1136 if (PROFILE_MODEL_P (current_cpu
))
1138 FLD (in_src1
) = f_r1
;
1139 FLD (in_src2
) = f_r2
;
1146 CASE (ex
, FMT_BEQZ
) :
1148 CGEN_INSN_INT insn
= entire_insn
;
1149 #define FLD(f) abuf->fields.cti.fields.fmt_beqz.f
1150 EXTRACT_IFMT_BEQZ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
1152 EXTRACT_IFMT_BEQZ_CODE
1154 /* Record the fields for the semantic handler. */
1155 FLD (i_disp16
) = f_disp16
;
1156 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1157 SEM_BRANCH_INIT_EXTRACT (abuf
);
1158 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_beqz", "disp16 0x%x", 'x', f_disp16
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1160 #if WITH_PROFILE_MODEL_P
1161 /* Record the fields for profiling. */
1162 if (PROFILE_MODEL_P (current_cpu
))
1164 FLD (in_src2
) = f_r2
;
1171 CASE (ex
, FMT_BL8
) :
1173 CGEN_INSN_INT insn
= entire_insn
;
1174 #define FLD(f) abuf->fields.cti.fields.fmt_bl8.f
1175 EXTRACT_IFMT_BC8_VARS
/* f-op1 f-r1 f-disp8 */
1177 EXTRACT_IFMT_BC8_CODE
1179 /* Record the fields for the semantic handler. */
1180 FLD (i_disp8
) = f_disp8
;
1181 SEM_BRANCH_INIT_EXTRACT (abuf
);
1182 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bl8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1184 #if WITH_PROFILE_MODEL_P
1185 /* Record the fields for profiling. */
1186 if (PROFILE_MODEL_P (current_cpu
))
1188 FLD (out_h_gr_14
) = 14;
1195 CASE (ex
, FMT_BL24
) :
1197 CGEN_INSN_INT insn
= entire_insn
;
1198 #define FLD(f) abuf->fields.cti.fields.fmt_bl24.f
1199 EXTRACT_IFMT_BC24_VARS
/* f-op1 f-r1 f-disp24 */
1201 EXTRACT_IFMT_BC24_CODE
1203 /* Record the fields for the semantic handler. */
1204 FLD (i_disp24
) = f_disp24
;
1205 SEM_BRANCH_INIT_EXTRACT (abuf
);
1206 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bl24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1208 #if WITH_PROFILE_MODEL_P
1209 /* Record the fields for profiling. */
1210 if (PROFILE_MODEL_P (current_cpu
))
1212 FLD (out_h_gr_14
) = 14;
1219 CASE (ex
, FMT_BCL8
) :
1221 CGEN_INSN_INT insn
= entire_insn
;
1222 #define FLD(f) abuf->fields.cti.fields.fmt_bcl8.f
1223 EXTRACT_IFMT_BC8_VARS
/* f-op1 f-r1 f-disp8 */
1225 EXTRACT_IFMT_BC8_CODE
1227 /* Record the fields for the semantic handler. */
1228 FLD (i_disp8
) = f_disp8
;
1229 SEM_BRANCH_INIT_EXTRACT (abuf
);
1230 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bcl8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1232 #if WITH_PROFILE_MODEL_P
1233 /* Record the fields for profiling. */
1234 if (PROFILE_MODEL_P (current_cpu
))
1236 FLD (out_h_gr_14
) = 14;
1243 CASE (ex
, FMT_BCL24
) :
1245 CGEN_INSN_INT insn
= entire_insn
;
1246 #define FLD(f) abuf->fields.cti.fields.fmt_bcl24.f
1247 EXTRACT_IFMT_BC24_VARS
/* f-op1 f-r1 f-disp24 */
1249 EXTRACT_IFMT_BC24_CODE
1251 /* Record the fields for the semantic handler. */
1252 FLD (i_disp24
) = f_disp24
;
1253 SEM_BRANCH_INIT_EXTRACT (abuf
);
1254 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bcl24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1256 #if WITH_PROFILE_MODEL_P
1257 /* Record the fields for profiling. */
1258 if (PROFILE_MODEL_P (current_cpu
))
1260 FLD (out_h_gr_14
) = 14;
1267 CASE (ex
, FMT_BRA8
) :
1269 CGEN_INSN_INT insn
= entire_insn
;
1270 #define FLD(f) abuf->fields.cti.fields.fmt_bra8.f
1271 EXTRACT_IFMT_BC8_VARS
/* f-op1 f-r1 f-disp8 */
1273 EXTRACT_IFMT_BC8_CODE
1275 /* Record the fields for the semantic handler. */
1276 FLD (i_disp8
) = f_disp8
;
1277 SEM_BRANCH_INIT_EXTRACT (abuf
);
1278 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bra8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1280 #if WITH_PROFILE_MODEL_P
1281 /* Record the fields for profiling. */
1282 if (PROFILE_MODEL_P (current_cpu
))
1290 CASE (ex
, FMT_BRA24
) :
1292 CGEN_INSN_INT insn
= entire_insn
;
1293 #define FLD(f) abuf->fields.cti.fields.fmt_bra24.f
1294 EXTRACT_IFMT_BC24_VARS
/* f-op1 f-r1 f-disp24 */
1296 EXTRACT_IFMT_BC24_CODE
1298 /* Record the fields for the semantic handler. */
1299 FLD (i_disp24
) = f_disp24
;
1300 SEM_BRANCH_INIT_EXTRACT (abuf
);
1301 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bra24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1303 #if WITH_PROFILE_MODEL_P
1304 /* Record the fields for profiling. */
1305 if (PROFILE_MODEL_P (current_cpu
))
1313 CASE (ex
, FMT_CMP
) :
1315 CGEN_INSN_INT insn
= entire_insn
;
1316 #define FLD(f) abuf->fields.fmt_cmp.f
1317 EXTRACT_IFMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1319 EXTRACT_IFMT_CMP_CODE
1321 /* Record the fields for the semantic handler. */
1322 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1323 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1324 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_cmp", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1326 #if WITH_PROFILE_MODEL_P
1327 /* Record the fields for profiling. */
1328 if (PROFILE_MODEL_P (current_cpu
))
1330 FLD (in_src1
) = f_r1
;
1331 FLD (in_src2
) = f_r2
;
1338 CASE (ex
, FMT_CMPI
) :
1340 CGEN_INSN_INT insn
= entire_insn
;
1341 #define FLD(f) abuf->fields.fmt_cmpi.f
1342 EXTRACT_IFMT_CMPI_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1344 EXTRACT_IFMT_CMPI_CODE
1346 /* Record the fields for the semantic handler. */
1347 FLD (f_simm16
) = f_simm16
;
1348 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1349 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_cmpi", "f_simm16 0x%x", 'x', f_simm16
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1351 #if WITH_PROFILE_MODEL_P
1352 /* Record the fields for profiling. */
1353 if (PROFILE_MODEL_P (current_cpu
))
1355 FLD (in_src2
) = f_r2
;
1362 CASE (ex
, FMT_CMPZ
) :
1364 CGEN_INSN_INT insn
= entire_insn
;
1365 #define FLD(f) abuf->fields.fmt_cmpz.f
1366 EXTRACT_IFMT_CMPZ_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1368 EXTRACT_IFMT_CMPZ_CODE
1370 /* Record the fields for the semantic handler. */
1371 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1372 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_cmpz", "src2 0x%x", 'x', f_r2
, (char *) 0));
1374 #if WITH_PROFILE_MODEL_P
1375 /* Record the fields for profiling. */
1376 if (PROFILE_MODEL_P (current_cpu
))
1378 FLD (in_src2
) = f_r2
;
1385 CASE (ex
, FMT_DIV
) :
1387 CGEN_INSN_INT insn
= entire_insn
;
1388 #define FLD(f) abuf->fields.fmt_div.f
1389 EXTRACT_IFMT_DIV_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1391 EXTRACT_IFMT_DIV_CODE
1393 /* Record the fields for the semantic handler. */
1394 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1395 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1396 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_div", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1398 #if WITH_PROFILE_MODEL_P
1399 /* Record the fields for profiling. */
1400 if (PROFILE_MODEL_P (current_cpu
))
1404 FLD (out_dr
) = f_r1
;
1413 CGEN_INSN_INT insn
= entire_insn
;
1414 #define FLD(f) abuf->fields.cti.fields.fmt_jc.f
1415 EXTRACT_IFMT_JC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1417 EXTRACT_IFMT_JC_CODE
1419 /* Record the fields for the semantic handler. */
1420 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1421 SEM_BRANCH_INIT_EXTRACT (abuf
);
1422 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_jc", "sr 0x%x", 'x', f_r2
, (char *) 0));
1424 #if WITH_PROFILE_MODEL_P
1425 /* Record the fields for profiling. */
1426 if (PROFILE_MODEL_P (current_cpu
))
1437 CGEN_INSN_INT insn
= entire_insn
;
1438 #define FLD(f) abuf->fields.cti.fields.fmt_jl.f
1439 EXTRACT_IFMT_JC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1441 EXTRACT_IFMT_JC_CODE
1443 /* Record the fields for the semantic handler. */
1444 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1445 SEM_BRANCH_INIT_EXTRACT (abuf
);
1446 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_jl", "sr 0x%x", 'x', f_r2
, (char *) 0));
1448 #if WITH_PROFILE_MODEL_P
1449 /* Record the fields for profiling. */
1450 if (PROFILE_MODEL_P (current_cpu
))
1453 FLD (out_h_gr_14
) = 14;
1460 CASE (ex
, FMT_JMP
) :
1462 CGEN_INSN_INT insn
= entire_insn
;
1463 #define FLD(f) abuf->fields.cti.fields.fmt_jmp.f
1464 EXTRACT_IFMT_JC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1466 EXTRACT_IFMT_JC_CODE
1468 /* Record the fields for the semantic handler. */
1469 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1470 SEM_BRANCH_INIT_EXTRACT (abuf
);
1471 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_jmp", "sr 0x%x", 'x', f_r2
, (char *) 0));
1473 #if WITH_PROFILE_MODEL_P
1474 /* Record the fields for profiling. */
1475 if (PROFILE_MODEL_P (current_cpu
))
1486 CGEN_INSN_INT insn
= entire_insn
;
1487 #define FLD(f) abuf->fields.fmt_ld.f
1488 EXTRACT_IFMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1490 EXTRACT_IFMT_ADD_CODE
1492 /* Record the fields for the semantic handler. */
1493 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1494 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1495 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ld", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1497 #if WITH_PROFILE_MODEL_P
1498 /* Record the fields for profiling. */
1499 if (PROFILE_MODEL_P (current_cpu
))
1502 FLD (out_dr
) = f_r1
;
1509 CASE (ex
, FMT_LD_D
) :
1511 CGEN_INSN_INT insn
= entire_insn
;
1512 #define FLD(f) abuf->fields.fmt_ld_d.f
1513 EXTRACT_IFMT_ADD3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1515 EXTRACT_IFMT_ADD3_CODE
1517 /* Record the fields for the semantic handler. */
1518 FLD (f_simm16
) = f_simm16
;
1519 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1520 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1521 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ld_d", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1523 #if WITH_PROFILE_MODEL_P
1524 /* Record the fields for profiling. */
1525 if (PROFILE_MODEL_P (current_cpu
))
1528 FLD (out_dr
) = f_r1
;
1535 CASE (ex
, FMT_LDB
) :
1537 CGEN_INSN_INT insn
= entire_insn
;
1538 #define FLD(f) abuf->fields.fmt_ldb.f
1539 EXTRACT_IFMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1541 EXTRACT_IFMT_ADD_CODE
1543 /* Record the fields for the semantic handler. */
1544 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1545 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1546 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldb", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1548 #if WITH_PROFILE_MODEL_P
1549 /* Record the fields for profiling. */
1550 if (PROFILE_MODEL_P (current_cpu
))
1553 FLD (out_dr
) = f_r1
;
1560 CASE (ex
, FMT_LDB_D
) :
1562 CGEN_INSN_INT insn
= entire_insn
;
1563 #define FLD(f) abuf->fields.fmt_ldb_d.f
1564 EXTRACT_IFMT_ADD3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1566 EXTRACT_IFMT_ADD3_CODE
1568 /* Record the fields for the semantic handler. */
1569 FLD (f_simm16
) = f_simm16
;
1570 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1571 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1572 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldb_d", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1574 #if WITH_PROFILE_MODEL_P
1575 /* Record the fields for profiling. */
1576 if (PROFILE_MODEL_P (current_cpu
))
1579 FLD (out_dr
) = f_r1
;
1586 CASE (ex
, FMT_LDH
) :
1588 CGEN_INSN_INT insn
= entire_insn
;
1589 #define FLD(f) abuf->fields.fmt_ldh.f
1590 EXTRACT_IFMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1592 EXTRACT_IFMT_ADD_CODE
1594 /* Record the fields for the semantic handler. */
1595 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1596 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1597 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldh", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1599 #if WITH_PROFILE_MODEL_P
1600 /* Record the fields for profiling. */
1601 if (PROFILE_MODEL_P (current_cpu
))
1604 FLD (out_dr
) = f_r1
;
1611 CASE (ex
, FMT_LDH_D
) :
1613 CGEN_INSN_INT insn
= entire_insn
;
1614 #define FLD(f) abuf->fields.fmt_ldh_d.f
1615 EXTRACT_IFMT_ADD3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1617 EXTRACT_IFMT_ADD3_CODE
1619 /* Record the fields for the semantic handler. */
1620 FLD (f_simm16
) = f_simm16
;
1621 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1622 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1623 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldh_d", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1625 #if WITH_PROFILE_MODEL_P
1626 /* Record the fields for profiling. */
1627 if (PROFILE_MODEL_P (current_cpu
))
1630 FLD (out_dr
) = f_r1
;
1637 CASE (ex
, FMT_LD_PLUS
) :
1639 CGEN_INSN_INT insn
= entire_insn
;
1640 #define FLD(f) abuf->fields.fmt_ld_plus.f
1641 EXTRACT_IFMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1643 EXTRACT_IFMT_ADD_CODE
1645 /* Record the fields for the semantic handler. */
1646 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1647 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1648 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ld_plus", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1650 #if WITH_PROFILE_MODEL_P
1651 /* Record the fields for profiling. */
1652 if (PROFILE_MODEL_P (current_cpu
))
1655 FLD (out_dr
) = f_r1
;
1656 FLD (out_sr
) = f_r2
;
1663 CASE (ex
, FMT_LD24
) :
1665 CGEN_INSN_INT insn
= entire_insn
;
1666 #define FLD(f) abuf->fields.fmt_ld24.f
1667 EXTRACT_IFMT_LD24_VARS
/* f-op1 f-r1 f-uimm24 */
1669 EXTRACT_IFMT_LD24_CODE
1671 /* Record the fields for the semantic handler. */
1672 FLD (i_uimm24
) = f_uimm24
;
1673 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1674 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ld24", "uimm24 0x%x", 'x', f_uimm24
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1676 #if WITH_PROFILE_MODEL_P
1677 /* Record the fields for profiling. */
1678 if (PROFILE_MODEL_P (current_cpu
))
1680 FLD (out_dr
) = f_r1
;
1687 CASE (ex
, FMT_LDI8
) :
1689 CGEN_INSN_INT insn
= entire_insn
;
1690 #define FLD(f) abuf->fields.fmt_ldi8.f
1691 EXTRACT_IFMT_ADDI_VARS
/* f-op1 f-r1 f-simm8 */
1693 EXTRACT_IFMT_ADDI_CODE
1695 /* Record the fields for the semantic handler. */
1696 FLD (f_simm8
) = f_simm8
;
1697 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1698 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldi8", "f_simm8 0x%x", 'x', f_simm8
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1700 #if WITH_PROFILE_MODEL_P
1701 /* Record the fields for profiling. */
1702 if (PROFILE_MODEL_P (current_cpu
))
1704 FLD (out_dr
) = f_r1
;
1711 CASE (ex
, FMT_LDI16
) :
1713 CGEN_INSN_INT insn
= entire_insn
;
1714 #define FLD(f) abuf->fields.fmt_ldi16.f
1715 EXTRACT_IFMT_LDI16_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1717 EXTRACT_IFMT_LDI16_CODE
1719 /* Record the fields for the semantic handler. */
1720 FLD (f_simm16
) = f_simm16
;
1721 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1722 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldi16", "f_simm16 0x%x", 'x', f_simm16
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1724 #if WITH_PROFILE_MODEL_P
1725 /* Record the fields for profiling. */
1726 if (PROFILE_MODEL_P (current_cpu
))
1728 FLD (out_dr
) = f_r1
;
1735 CASE (ex
, FMT_LOCK
) :
1737 CGEN_INSN_INT insn
= entire_insn
;
1738 #define FLD(f) abuf->fields.fmt_lock.f
1739 EXTRACT_IFMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1741 EXTRACT_IFMT_ADD_CODE
1743 /* Record the fields for the semantic handler. */
1744 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1745 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1746 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_lock", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1748 #if WITH_PROFILE_MODEL_P
1749 /* Record the fields for profiling. */
1750 if (PROFILE_MODEL_P (current_cpu
))
1753 FLD (out_dr
) = f_r1
;
1760 CASE (ex
, FMT_MACHI_A
) :
1762 CGEN_INSN_INT insn
= entire_insn
;
1763 #define FLD(f) abuf->fields.fmt_machi_a.f
1764 EXTRACT_IFMT_MACHI_A_VARS
/* f-op1 f-r1 f-acc f-op23 f-r2 */
1766 EXTRACT_IFMT_MACHI_A_CODE
1768 /* Record the fields for the semantic handler. */
1769 FLD (f_acc
) = f_acc
;
1770 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1771 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1772 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_machi_a", "f_acc 0x%x", 'x', f_acc
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1774 #if WITH_PROFILE_MODEL_P
1775 /* Record the fields for profiling. */
1776 if (PROFILE_MODEL_P (current_cpu
))
1778 FLD (in_src1
) = f_r1
;
1779 FLD (in_src2
) = f_r2
;
1786 CASE (ex
, FMT_MULHI_A
) :
1788 CGEN_INSN_INT insn
= entire_insn
;
1789 #define FLD(f) abuf->fields.fmt_mulhi_a.f
1790 EXTRACT_IFMT_MACHI_A_VARS
/* f-op1 f-r1 f-acc f-op23 f-r2 */
1792 EXTRACT_IFMT_MACHI_A_CODE
1794 /* Record the fields for the semantic handler. */
1795 FLD (f_acc
) = f_acc
;
1796 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1797 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1798 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mulhi_a", "f_acc 0x%x", 'x', f_acc
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1800 #if WITH_PROFILE_MODEL_P
1801 /* Record the fields for profiling. */
1802 if (PROFILE_MODEL_P (current_cpu
))
1804 FLD (in_src1
) = f_r1
;
1805 FLD (in_src2
) = f_r2
;
1814 CGEN_INSN_INT insn
= entire_insn
;
1815 #define FLD(f) abuf->fields.fmt_mv.f
1816 EXTRACT_IFMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1818 EXTRACT_IFMT_ADD_CODE
1820 /* Record the fields for the semantic handler. */
1821 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1822 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1823 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mv", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1825 #if WITH_PROFILE_MODEL_P
1826 /* Record the fields for profiling. */
1827 if (PROFILE_MODEL_P (current_cpu
))
1830 FLD (out_dr
) = f_r1
;
1837 CASE (ex
, FMT_MVFACHI_A
) :
1839 CGEN_INSN_INT insn
= entire_insn
;
1840 #define FLD(f) abuf->fields.fmt_mvfachi_a.f
1841 EXTRACT_IFMT_MVFACHI_A_VARS
/* f-op1 f-r1 f-op2 f-accs f-op3 */
1843 EXTRACT_IFMT_MVFACHI_A_CODE
1845 /* Record the fields for the semantic handler. */
1846 FLD (f_accs
) = f_accs
;
1847 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1848 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mvfachi_a", "f_accs 0x%x", 'x', f_accs
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1850 #if WITH_PROFILE_MODEL_P
1851 /* Record the fields for profiling. */
1852 if (PROFILE_MODEL_P (current_cpu
))
1854 FLD (out_dr
) = f_r1
;
1861 CASE (ex
, FMT_MVFC
) :
1863 CGEN_INSN_INT insn
= entire_insn
;
1864 #define FLD(f) abuf->fields.fmt_mvfc.f
1865 EXTRACT_IFMT_MVFC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1867 EXTRACT_IFMT_MVFC_CODE
1869 /* Record the fields for the semantic handler. */
1871 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1872 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mvfc", "f_r2 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1874 #if WITH_PROFILE_MODEL_P
1875 /* Record the fields for profiling. */
1876 if (PROFILE_MODEL_P (current_cpu
))
1878 FLD (out_dr
) = f_r1
;
1885 CASE (ex
, FMT_MVTACHI_A
) :
1887 CGEN_INSN_INT insn
= entire_insn
;
1888 #define FLD(f) abuf->fields.fmt_mvtachi_a.f
1889 EXTRACT_IFMT_MVTACHI_A_VARS
/* f-op1 f-r1 f-op2 f-accs f-op3 */
1891 EXTRACT_IFMT_MVTACHI_A_CODE
1893 /* Record the fields for the semantic handler. */
1894 FLD (f_accs
) = f_accs
;
1895 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1896 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mvtachi_a", "f_accs 0x%x", 'x', f_accs
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1898 #if WITH_PROFILE_MODEL_P
1899 /* Record the fields for profiling. */
1900 if (PROFILE_MODEL_P (current_cpu
))
1902 FLD (in_src1
) = f_r1
;
1909 CASE (ex
, FMT_MVTC
) :
1911 CGEN_INSN_INT insn
= entire_insn
;
1912 #define FLD(f) abuf->fields.fmt_mvtc.f
1913 EXTRACT_IFMT_MVTC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1915 EXTRACT_IFMT_MVTC_CODE
1917 /* Record the fields for the semantic handler. */
1919 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1920 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mvtc", "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1922 #if WITH_PROFILE_MODEL_P
1923 /* Record the fields for profiling. */
1924 if (PROFILE_MODEL_P (current_cpu
))
1933 CASE (ex
, FMT_NOP
) :
1935 CGEN_INSN_INT insn
= entire_insn
;
1936 #define FLD(f) abuf->fields.fmt_nop.f
1937 EXTRACT_IFMT_NOP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1939 EXTRACT_IFMT_NOP_CODE
1941 /* Record the fields for the semantic handler. */
1942 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_nop", (char *) 0));
1948 CASE (ex
, FMT_RAC_DSI
) :
1950 CGEN_INSN_INT insn
= entire_insn
;
1951 #define FLD(f) abuf->fields.fmt_rac_dsi.f
1952 EXTRACT_IFMT_RAC_DSI_VARS
/* f-op1 f-accd f-bits67 f-op2 f-accs f-bit14 f-imm1 */
1954 EXTRACT_IFMT_RAC_DSI_CODE
1956 /* Record the fields for the semantic handler. */
1957 FLD (f_accs
) = f_accs
;
1958 FLD (f_imm1
) = f_imm1
;
1959 FLD (f_accd
) = f_accd
;
1960 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_rac_dsi", "f_accs 0x%x", 'x', f_accs
, "f_imm1 0x%x", 'x', f_imm1
, "f_accd 0x%x", 'x', f_accd
, (char *) 0));
1966 CASE (ex
, FMT_RTE
) :
1968 CGEN_INSN_INT insn
= entire_insn
;
1969 #define FLD(f) abuf->fields.cti.fields.fmt_rte.f
1970 EXTRACT_IFMT_NOP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1972 EXTRACT_IFMT_NOP_CODE
1974 /* Record the fields for the semantic handler. */
1975 SEM_BRANCH_INIT_EXTRACT (abuf
);
1976 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_rte", (char *) 0));
1978 #if WITH_PROFILE_MODEL_P
1979 /* Record the fields for profiling. */
1980 if (PROFILE_MODEL_P (current_cpu
))
1988 CASE (ex
, FMT_SETH
) :
1990 CGEN_INSN_INT insn
= entire_insn
;
1991 #define FLD(f) abuf->fields.fmt_seth.f
1992 EXTRACT_IFMT_SETH_VARS
/* f-op1 f-r1 f-op2 f-r2 f-hi16 */
1994 EXTRACT_IFMT_SETH_CODE
1996 /* Record the fields for the semantic handler. */
1997 FLD (f_hi16
) = f_hi16
;
1998 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1999 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_seth", "f_hi16 0x%x", 'x', f_hi16
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2001 #if WITH_PROFILE_MODEL_P
2002 /* Record the fields for profiling. */
2003 if (PROFILE_MODEL_P (current_cpu
))
2005 FLD (out_dr
) = f_r1
;
2012 CASE (ex
, FMT_SLL3
) :
2014 CGEN_INSN_INT insn
= entire_insn
;
2015 #define FLD(f) abuf->fields.fmt_sll3.f
2016 EXTRACT_IFMT_ADDV3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
2018 EXTRACT_IFMT_ADDV3_CODE
2020 /* Record the fields for the semantic handler. */
2021 FLD (f_simm16
) = f_simm16
;
2022 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2023 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2024 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_sll3", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2026 #if WITH_PROFILE_MODEL_P
2027 /* Record the fields for profiling. */
2028 if (PROFILE_MODEL_P (current_cpu
))
2031 FLD (out_dr
) = f_r1
;
2038 CASE (ex
, FMT_SLLI
) :
2040 CGEN_INSN_INT insn
= entire_insn
;
2041 #define FLD(f) abuf->fields.fmt_slli.f
2042 EXTRACT_IFMT_SLLI_VARS
/* f-op1 f-r1 f-shift-op2 f-uimm5 */
2044 EXTRACT_IFMT_SLLI_CODE
2046 /* Record the fields for the semantic handler. */
2047 FLD (f_uimm5
) = f_uimm5
;
2048 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2049 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_slli", "f_uimm5 0x%x", 'x', f_uimm5
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2051 #if WITH_PROFILE_MODEL_P
2052 /* Record the fields for profiling. */
2053 if (PROFILE_MODEL_P (current_cpu
))
2056 FLD (out_dr
) = f_r1
;
2065 CGEN_INSN_INT insn
= entire_insn
;
2066 #define FLD(f) abuf->fields.fmt_st.f
2067 EXTRACT_IFMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2069 EXTRACT_IFMT_CMP_CODE
2071 /* Record the fields for the semantic handler. */
2072 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2073 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2074 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_st", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2076 #if WITH_PROFILE_MODEL_P
2077 /* Record the fields for profiling. */
2078 if (PROFILE_MODEL_P (current_cpu
))
2080 FLD (in_src1
) = f_r1
;
2081 FLD (in_src2
) = f_r2
;
2088 CASE (ex
, FMT_ST_D
) :
2090 CGEN_INSN_INT insn
= entire_insn
;
2091 #define FLD(f) abuf->fields.fmt_st_d.f
2092 EXTRACT_IFMT_ST_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
2094 EXTRACT_IFMT_ST_D_CODE
2096 /* Record the fields for the semantic handler. */
2097 FLD (f_simm16
) = f_simm16
;
2098 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2099 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2100 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_st_d", "f_simm16 0x%x", 'x', f_simm16
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2102 #if WITH_PROFILE_MODEL_P
2103 /* Record the fields for profiling. */
2104 if (PROFILE_MODEL_P (current_cpu
))
2106 FLD (in_src1
) = f_r1
;
2107 FLD (in_src2
) = f_r2
;
2114 CASE (ex
, FMT_STB
) :
2116 CGEN_INSN_INT insn
= entire_insn
;
2117 #define FLD(f) abuf->fields.fmt_stb.f
2118 EXTRACT_IFMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2120 EXTRACT_IFMT_CMP_CODE
2122 /* Record the fields for the semantic handler. */
2123 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2124 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2125 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_stb", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2127 #if WITH_PROFILE_MODEL_P
2128 /* Record the fields for profiling. */
2129 if (PROFILE_MODEL_P (current_cpu
))
2131 FLD (in_src1
) = f_r1
;
2132 FLD (in_src2
) = f_r2
;
2139 CASE (ex
, FMT_STB_D
) :
2141 CGEN_INSN_INT insn
= entire_insn
;
2142 #define FLD(f) abuf->fields.fmt_stb_d.f
2143 EXTRACT_IFMT_ST_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
2145 EXTRACT_IFMT_ST_D_CODE
2147 /* Record the fields for the semantic handler. */
2148 FLD (f_simm16
) = f_simm16
;
2149 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2150 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2151 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_stb_d", "f_simm16 0x%x", 'x', f_simm16
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2153 #if WITH_PROFILE_MODEL_P
2154 /* Record the fields for profiling. */
2155 if (PROFILE_MODEL_P (current_cpu
))
2157 FLD (in_src1
) = f_r1
;
2158 FLD (in_src2
) = f_r2
;
2165 CASE (ex
, FMT_STH
) :
2167 CGEN_INSN_INT insn
= entire_insn
;
2168 #define FLD(f) abuf->fields.fmt_sth.f
2169 EXTRACT_IFMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2171 EXTRACT_IFMT_CMP_CODE
2173 /* Record the fields for the semantic handler. */
2174 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2175 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2176 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_sth", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2178 #if WITH_PROFILE_MODEL_P
2179 /* Record the fields for profiling. */
2180 if (PROFILE_MODEL_P (current_cpu
))
2182 FLD (in_src1
) = f_r1
;
2183 FLD (in_src2
) = f_r2
;
2190 CASE (ex
, FMT_STH_D
) :
2192 CGEN_INSN_INT insn
= entire_insn
;
2193 #define FLD(f) abuf->fields.fmt_sth_d.f
2194 EXTRACT_IFMT_ST_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
2196 EXTRACT_IFMT_ST_D_CODE
2198 /* Record the fields for the semantic handler. */
2199 FLD (f_simm16
) = f_simm16
;
2200 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2201 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2202 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_sth_d", "f_simm16 0x%x", 'x', f_simm16
, "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2204 #if WITH_PROFILE_MODEL_P
2205 /* Record the fields for profiling. */
2206 if (PROFILE_MODEL_P (current_cpu
))
2208 FLD (in_src1
) = f_r1
;
2209 FLD (in_src2
) = f_r2
;
2216 CASE (ex
, FMT_ST_PLUS
) :
2218 CGEN_INSN_INT insn
= entire_insn
;
2219 #define FLD(f) abuf->fields.fmt_st_plus.f
2220 EXTRACT_IFMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2222 EXTRACT_IFMT_CMP_CODE
2224 /* Record the fields for the semantic handler. */
2225 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2226 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2227 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_st_plus", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2229 #if WITH_PROFILE_MODEL_P
2230 /* Record the fields for profiling. */
2231 if (PROFILE_MODEL_P (current_cpu
))
2233 FLD (in_src1
) = f_r1
;
2234 FLD (in_src2
) = f_r2
;
2235 FLD (out_src2
) = f_r2
;
2242 CASE (ex
, FMT_TRAP
) :
2244 CGEN_INSN_INT insn
= entire_insn
;
2245 #define FLD(f) abuf->fields.cti.fields.fmt_trap.f
2246 EXTRACT_IFMT_TRAP_VARS
/* f-op1 f-r1 f-op2 f-uimm4 */
2248 EXTRACT_IFMT_TRAP_CODE
2250 /* Record the fields for the semantic handler. */
2251 FLD (f_uimm4
) = f_uimm4
;
2252 SEM_BRANCH_INIT_EXTRACT (abuf
);
2253 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_trap", "f_uimm4 0x%x", 'x', f_uimm4
, (char *) 0));
2255 #if WITH_PROFILE_MODEL_P
2256 /* Record the fields for profiling. */
2257 if (PROFILE_MODEL_P (current_cpu
))
2265 CASE (ex
, FMT_UNLOCK
) :
2267 CGEN_INSN_INT insn
= entire_insn
;
2268 #define FLD(f) abuf->fields.fmt_unlock.f
2269 EXTRACT_IFMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2271 EXTRACT_IFMT_CMP_CODE
2273 /* Record the fields for the semantic handler. */
2274 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2275 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2276 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_unlock", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2278 #if WITH_PROFILE_MODEL_P
2279 /* Record the fields for profiling. */
2280 if (PROFILE_MODEL_P (current_cpu
))
2282 FLD (in_src1
) = f_r1
;
2283 FLD (in_src2
) = f_r2
;
2290 CASE (ex
, FMT_SATB
) :
2292 CGEN_INSN_INT insn
= entire_insn
;
2293 #define FLD(f) abuf->fields.fmt_satb.f
2294 EXTRACT_IFMT_SATB_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
2296 EXTRACT_IFMT_SATB_CODE
2298 /* Record the fields for the semantic handler. */
2299 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2300 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2301 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_satb", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2303 #if WITH_PROFILE_MODEL_P
2304 /* Record the fields for profiling. */
2305 if (PROFILE_MODEL_P (current_cpu
))
2308 FLD (out_dr
) = f_r1
;
2315 CASE (ex
, FMT_SAT
) :
2317 CGEN_INSN_INT insn
= entire_insn
;
2318 #define FLD(f) abuf->fields.fmt_sat.f
2319 EXTRACT_IFMT_SATB_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
2321 EXTRACT_IFMT_SATB_CODE
2323 /* Record the fields for the semantic handler. */
2324 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
2325 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
2326 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_sat", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
2328 #if WITH_PROFILE_MODEL_P
2329 /* Record the fields for profiling. */
2330 if (PROFILE_MODEL_P (current_cpu
))
2333 FLD (out_dr
) = f_r1
;
2340 CASE (ex
, FMT_SADD
) :
2342 CGEN_INSN_INT insn
= entire_insn
;
2343 #define FLD(f) abuf->fields.fmt_sadd.f
2344 EXTRACT_IFMT_NOP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2346 EXTRACT_IFMT_NOP_CODE
2348 /* Record the fields for the semantic handler. */
2349 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_sadd", (char *) 0));
2355 CASE (ex
, FMT_MACWU1
) :
2357 CGEN_INSN_INT insn
= entire_insn
;
2358 #define FLD(f) abuf->fields.fmt_macwu1.f
2359 EXTRACT_IFMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2361 EXTRACT_IFMT_CMP_CODE
2363 /* Record the fields for the semantic handler. */
2364 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2365 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2366 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_macwu1", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2368 #if WITH_PROFILE_MODEL_P
2369 /* Record the fields for profiling. */
2370 if (PROFILE_MODEL_P (current_cpu
))
2372 FLD (in_src1
) = f_r1
;
2373 FLD (in_src2
) = f_r2
;
2380 CASE (ex
, FMT_MSBLO
) :
2382 CGEN_INSN_INT insn
= entire_insn
;
2383 #define FLD(f) abuf->fields.fmt_msblo.f
2384 EXTRACT_IFMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2386 EXTRACT_IFMT_CMP_CODE
2388 /* Record the fields for the semantic handler. */
2389 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2390 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2391 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_msblo", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2393 #if WITH_PROFILE_MODEL_P
2394 /* Record the fields for profiling. */
2395 if (PROFILE_MODEL_P (current_cpu
))
2397 FLD (in_src1
) = f_r1
;
2398 FLD (in_src2
) = f_r2
;
2405 CASE (ex
, FMT_MULWU1
) :
2407 CGEN_INSN_INT insn
= entire_insn
;
2408 #define FLD(f) abuf->fields.fmt_mulwu1.f
2409 EXTRACT_IFMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2411 EXTRACT_IFMT_CMP_CODE
2413 /* Record the fields for the semantic handler. */
2414 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
2415 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
2416 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mulwu1", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
2418 #if WITH_PROFILE_MODEL_P
2419 /* Record the fields for profiling. */
2420 if (PROFILE_MODEL_P (current_cpu
))
2422 FLD (in_src1
) = f_r1
;
2423 FLD (in_src2
) = f_r2
;
2432 CGEN_INSN_INT insn
= entire_insn
;
2433 #define FLD(f) abuf->fields.cti.fields.fmt_sc.f
2434 EXTRACT_IFMT_NOP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
2436 EXTRACT_IFMT_NOP_CODE
2438 /* Record the fields for the semantic handler. */
2439 SEM_BRANCH_INIT_EXTRACT (abuf
);
2440 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_sc", (char *) 0));
2452 return idecode
->idesc
;