1 /* Simulator instruction decoder for fr30bf.
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 fr30bf
26 #define WANT_CPU_FR30BF
29 #include "sim-assert.h"
31 /* FIXME: Need to review choices for the following. */
33 #if WITH_SEM_SWITCH_FULL
36 #define FULL(fn) CONCAT3 (fr30bf,_sem_,fn) ,
40 #if WITH_SEM_SWITCH_FAST
43 #define FAST(fn) CONCAT3 (fr30bf,_semf_,fn) , /* f for fast */
49 /* The INSN_ prefix is not here and is instead part of the `insn' argument
50 to avoid collisions with header files (e.g. `AND' in ansidecl.h). */
51 #define IDX(insn) CONCAT2 (FR30BF_,insn)
52 #define TYPE(insn) CONCAT2 (FR30_,insn)
54 /* The instruction descriptor array.
55 This is computed at runtime. Space for it is not malloc'd to save a
56 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
57 but won't be done until necessary (we don't currently support the runtime
58 addition of instructions nor an SMP machine with different cpus). */
59 static IDESC fr30bf_insn_data
[FR30BF_INSN_MAX
];
61 /* Commas between elements are contained in the macros.
62 Some of these are conditionally compiled out. */
64 static const struct insn_sem fr30bf_insn_sem
[] =
66 { VIRTUAL_INSN_X_INVALID
, IDX (INSN_X_INVALID
), FULL (x_invalid
) FAST (x_invalid
) },
67 { VIRTUAL_INSN_X_AFTER
, IDX (INSN_X_AFTER
), FULL (x_after
) FAST (x_after
) },
68 { VIRTUAL_INSN_X_BEFORE
, IDX (INSN_X_BEFORE
), FULL (x_before
) FAST (x_before
) },
69 { VIRTUAL_INSN_X_CTI_CHAIN
, IDX (INSN_X_CTI_CHAIN
), FULL (x_cti_chain
) FAST (x_cti_chain
) },
70 { VIRTUAL_INSN_X_CHAIN
, IDX (INSN_X_CHAIN
), FULL (x_chain
) FAST (x_chain
) },
71 { VIRTUAL_INSN_X_BEGIN
, IDX (INSN_X_BEGIN
), FULL (x_begin
) FAST (x_begin
) },
72 { TYPE (INSN_ADD
), IDX (INSN_ADD
), FULL (add
) FAST (add
) },
73 { TYPE (INSN_ADDI
), IDX (INSN_ADDI
), FULL (addi
) FAST (addi
) },
74 { TYPE (INSN_ADD2
), IDX (INSN_ADD2
), FULL (add2
) FAST (add2
) },
75 { TYPE (INSN_ADDC
), IDX (INSN_ADDC
), FULL (addc
) FAST (addc
) },
76 { TYPE (INSN_ADDN
), IDX (INSN_ADDN
), FULL (addn
) FAST (addn
) },
77 { TYPE (INSN_ADDNI
), IDX (INSN_ADDNI
), FULL (addni
) FAST (addni
) },
78 { TYPE (INSN_ADDN2
), IDX (INSN_ADDN2
), FULL (addn2
) FAST (addn2
) },
79 { TYPE (INSN_SUB
), IDX (INSN_SUB
), FULL (sub
) FAST (sub
) },
80 { TYPE (INSN_SUBC
), IDX (INSN_SUBC
), FULL (subc
) FAST (subc
) },
81 { TYPE (INSN_SUBN
), IDX (INSN_SUBN
), FULL (subn
) FAST (subn
) },
82 { TYPE (INSN_CMP
), IDX (INSN_CMP
), FULL (cmp
) FAST (cmp
) },
83 { TYPE (INSN_CMPI
), IDX (INSN_CMPI
), FULL (cmpi
) FAST (cmpi
) },
84 { TYPE (INSN_CMP2
), IDX (INSN_CMP2
), FULL (cmp2
) FAST (cmp2
) },
85 { TYPE (INSN_AND
), IDX (INSN_AND
), FULL (and) FAST (and) },
86 { TYPE (INSN_OR
), IDX (INSN_OR
), FULL (or) FAST (or) },
87 { TYPE (INSN_EOR
), IDX (INSN_EOR
), FULL (eor
) FAST (eor
) },
88 { TYPE (INSN_ANDM
), IDX (INSN_ANDM
), FULL (andm
) FAST (andm
) },
89 { TYPE (INSN_ANDH
), IDX (INSN_ANDH
), FULL (andh
) FAST (andh
) },
90 { TYPE (INSN_ANDB
), IDX (INSN_ANDB
), FULL (andb
) FAST (andb
) },
91 { TYPE (INSN_ORM
), IDX (INSN_ORM
), FULL (orm
) FAST (orm
) },
92 { TYPE (INSN_ORH
), IDX (INSN_ORH
), FULL (orh
) FAST (orh
) },
93 { TYPE (INSN_ORB
), IDX (INSN_ORB
), FULL (orb
) FAST (orb
) },
94 { TYPE (INSN_EORM
), IDX (INSN_EORM
), FULL (eorm
) FAST (eorm
) },
95 { TYPE (INSN_EORH
), IDX (INSN_EORH
), FULL (eorh
) FAST (eorh
) },
96 { TYPE (INSN_EORB
), IDX (INSN_EORB
), FULL (eorb
) FAST (eorb
) },
97 { TYPE (INSN_BANDL
), IDX (INSN_BANDL
), FULL (bandl
) FAST (bandl
) },
98 { TYPE (INSN_BORL
), IDX (INSN_BORL
), FULL (borl
) FAST (borl
) },
99 { TYPE (INSN_BEORL
), IDX (INSN_BEORL
), FULL (beorl
) FAST (beorl
) },
100 { TYPE (INSN_BANDH
), IDX (INSN_BANDH
), FULL (bandh
) FAST (bandh
) },
101 { TYPE (INSN_BORH
), IDX (INSN_BORH
), FULL (borh
) FAST (borh
) },
102 { TYPE (INSN_BEORH
), IDX (INSN_BEORH
), FULL (beorh
) FAST (beorh
) },
103 { TYPE (INSN_BTSTL
), IDX (INSN_BTSTL
), FULL (btstl
) FAST (btstl
) },
104 { TYPE (INSN_BTSTH
), IDX (INSN_BTSTH
), FULL (btsth
) FAST (btsth
) },
105 { TYPE (INSN_MUL
), IDX (INSN_MUL
), FULL (mul
) FAST (mul
) },
106 { TYPE (INSN_MULU
), IDX (INSN_MULU
), FULL (mulu
) FAST (mulu
) },
107 { TYPE (INSN_MULH
), IDX (INSN_MULH
), FULL (mulh
) FAST (mulh
) },
108 { TYPE (INSN_MULUH
), IDX (INSN_MULUH
), FULL (muluh
) FAST (muluh
) },
109 { TYPE (INSN_DIV0S
), IDX (INSN_DIV0S
), FULL (div0s
) FAST (div0s
) },
110 { TYPE (INSN_DIV0U
), IDX (INSN_DIV0U
), FULL (div0u
) FAST (div0u
) },
111 { TYPE (INSN_DIV1
), IDX (INSN_DIV1
), FULL (div1
) FAST (div1
) },
112 { TYPE (INSN_DIV2
), IDX (INSN_DIV2
), FULL (div2
) FAST (div2
) },
113 { TYPE (INSN_DIV3
), IDX (INSN_DIV3
), FULL (div3
) FAST (div3
) },
114 { TYPE (INSN_DIV4S
), IDX (INSN_DIV4S
), FULL (div4s
) FAST (div4s
) },
115 { TYPE (INSN_LSL
), IDX (INSN_LSL
), FULL (lsl
) FAST (lsl
) },
116 { TYPE (INSN_LSLI
), IDX (INSN_LSLI
), FULL (lsli
) FAST (lsli
) },
117 { TYPE (INSN_LSL2
), IDX (INSN_LSL2
), FULL (lsl2
) FAST (lsl2
) },
118 { TYPE (INSN_LSR
), IDX (INSN_LSR
), FULL (lsr
) FAST (lsr
) },
119 { TYPE (INSN_LSRI
), IDX (INSN_LSRI
), FULL (lsri
) FAST (lsri
) },
120 { TYPE (INSN_LSR2
), IDX (INSN_LSR2
), FULL (lsr2
) FAST (lsr2
) },
121 { TYPE (INSN_ASR
), IDX (INSN_ASR
), FULL (asr
) FAST (asr
) },
122 { TYPE (INSN_ASRI
), IDX (INSN_ASRI
), FULL (asri
) FAST (asri
) },
123 { TYPE (INSN_ASR2
), IDX (INSN_ASR2
), FULL (asr2
) FAST (asr2
) },
124 { TYPE (INSN_LDI8
), IDX (INSN_LDI8
), FULL (ldi8
) FAST (ldi8
) },
125 { TYPE (INSN_LDI20
), IDX (INSN_LDI20
), FULL (ldi20
) FAST (ldi20
) },
126 { TYPE (INSN_LDI32
), IDX (INSN_LDI32
), FULL (ldi32
) FAST (ldi32
) },
127 { TYPE (INSN_LD
), IDX (INSN_LD
), FULL (ld
) FAST (ld
) },
128 { TYPE (INSN_LDUH
), IDX (INSN_LDUH
), FULL (lduh
) FAST (lduh
) },
129 { TYPE (INSN_LDUB
), IDX (INSN_LDUB
), FULL (ldub
) FAST (ldub
) },
130 { TYPE (INSN_LDR13
), IDX (INSN_LDR13
), FULL (ldr13
) FAST (ldr13
) },
131 { TYPE (INSN_LDR13UH
), IDX (INSN_LDR13UH
), FULL (ldr13uh
) FAST (ldr13uh
) },
132 { TYPE (INSN_LDR13UB
), IDX (INSN_LDR13UB
), FULL (ldr13ub
) FAST (ldr13ub
) },
133 { TYPE (INSN_LDR14
), IDX (INSN_LDR14
), FULL (ldr14
) FAST (ldr14
) },
134 { TYPE (INSN_LDR14UH
), IDX (INSN_LDR14UH
), FULL (ldr14uh
) FAST (ldr14uh
) },
135 { TYPE (INSN_LDR14UB
), IDX (INSN_LDR14UB
), FULL (ldr14ub
) FAST (ldr14ub
) },
136 { TYPE (INSN_LDR15
), IDX (INSN_LDR15
), FULL (ldr15
) FAST (ldr15
) },
137 { TYPE (INSN_LDR15GR
), IDX (INSN_LDR15GR
), FULL (ldr15gr
) FAST (ldr15gr
) },
138 { TYPE (INSN_LDR15DR
), IDX (INSN_LDR15DR
), FULL (ldr15dr
) FAST (ldr15dr
) },
139 { TYPE (INSN_LDR15PS
), IDX (INSN_LDR15PS
), FULL (ldr15ps
) FAST (ldr15ps
) },
140 { TYPE (INSN_ST
), IDX (INSN_ST
), FULL (st
) FAST (st
) },
141 { TYPE (INSN_STH
), IDX (INSN_STH
), FULL (sth
) FAST (sth
) },
142 { TYPE (INSN_STB
), IDX (INSN_STB
), FULL (stb
) FAST (stb
) },
143 { TYPE (INSN_STR13
), IDX (INSN_STR13
), FULL (str13
) FAST (str13
) },
144 { TYPE (INSN_STR13H
), IDX (INSN_STR13H
), FULL (str13h
) FAST (str13h
) },
145 { TYPE (INSN_STR13B
), IDX (INSN_STR13B
), FULL (str13b
) FAST (str13b
) },
146 { TYPE (INSN_STR14
), IDX (INSN_STR14
), FULL (str14
) FAST (str14
) },
147 { TYPE (INSN_STR14H
), IDX (INSN_STR14H
), FULL (str14h
) FAST (str14h
) },
148 { TYPE (INSN_STR14B
), IDX (INSN_STR14B
), FULL (str14b
) FAST (str14b
) },
149 { TYPE (INSN_STR15
), IDX (INSN_STR15
), FULL (str15
) FAST (str15
) },
150 { TYPE (INSN_STR15GR
), IDX (INSN_STR15GR
), FULL (str15gr
) FAST (str15gr
) },
151 { TYPE (INSN_STR15DR
), IDX (INSN_STR15DR
), FULL (str15dr
) FAST (str15dr
) },
152 { TYPE (INSN_STR15PS
), IDX (INSN_STR15PS
), FULL (str15ps
) FAST (str15ps
) },
153 { TYPE (INSN_MOV
), IDX (INSN_MOV
), FULL (mov
) FAST (mov
) },
154 { TYPE (INSN_MOVDR
), IDX (INSN_MOVDR
), FULL (movdr
) FAST (movdr
) },
155 { TYPE (INSN_MOVPS
), IDX (INSN_MOVPS
), FULL (movps
) FAST (movps
) },
156 { TYPE (INSN_MOV2DR
), IDX (INSN_MOV2DR
), FULL (mov2dr
) FAST (mov2dr
) },
157 { TYPE (INSN_MOV2PS
), IDX (INSN_MOV2PS
), FULL (mov2ps
) FAST (mov2ps
) },
158 { TYPE (INSN_JMP
), IDX (INSN_JMP
), FULL (jmp
) FAST (jmp
) },
159 { TYPE (INSN_JMPD
), IDX (INSN_JMPD
), FULL (jmpd
) FAST (jmpd
) },
160 { TYPE (INSN_CALLR
), IDX (INSN_CALLR
), FULL (callr
) FAST (callr
) },
161 { TYPE (INSN_CALLRD
), IDX (INSN_CALLRD
), FULL (callrd
) FAST (callrd
) },
162 { TYPE (INSN_CALL
), IDX (INSN_CALL
), FULL (call
) FAST (call
) },
163 { TYPE (INSN_CALLD
), IDX (INSN_CALLD
), FULL (calld
) FAST (calld
) },
164 { TYPE (INSN_RET
), IDX (INSN_RET
), FULL (ret
) FAST (ret
) },
165 { TYPE (INSN_RET_D
), IDX (INSN_RET_D
), FULL (ret_d
) FAST (ret_d
) },
166 { TYPE (INSN_INT
), IDX (INSN_INT
), FULL (int) FAST (int) },
167 { TYPE (INSN_INTE
), IDX (INSN_INTE
), FULL (inte
) FAST (inte
) },
168 { TYPE (INSN_RETI
), IDX (INSN_RETI
), FULL (reti
) FAST (reti
) },
169 { TYPE (INSN_BRAD
), IDX (INSN_BRAD
), FULL (brad
) FAST (brad
) },
170 { TYPE (INSN_BRA
), IDX (INSN_BRA
), FULL (bra
) FAST (bra
) },
171 { TYPE (INSN_BNOD
), IDX (INSN_BNOD
), FULL (bnod
) FAST (bnod
) },
172 { TYPE (INSN_BNO
), IDX (INSN_BNO
), FULL (bno
) FAST (bno
) },
173 { TYPE (INSN_BEQD
), IDX (INSN_BEQD
), FULL (beqd
) FAST (beqd
) },
174 { TYPE (INSN_BEQ
), IDX (INSN_BEQ
), FULL (beq
) FAST (beq
) },
175 { TYPE (INSN_BNED
), IDX (INSN_BNED
), FULL (bned
) FAST (bned
) },
176 { TYPE (INSN_BNE
), IDX (INSN_BNE
), FULL (bne
) FAST (bne
) },
177 { TYPE (INSN_BCD
), IDX (INSN_BCD
), FULL (bcd
) FAST (bcd
) },
178 { TYPE (INSN_BC
), IDX (INSN_BC
), FULL (bc
) FAST (bc
) },
179 { TYPE (INSN_BNCD
), IDX (INSN_BNCD
), FULL (bncd
) FAST (bncd
) },
180 { TYPE (INSN_BNC
), IDX (INSN_BNC
), FULL (bnc
) FAST (bnc
) },
181 { TYPE (INSN_BND
), IDX (INSN_BND
), FULL (bnd
) FAST (bnd
) },
182 { TYPE (INSN_BN
), IDX (INSN_BN
), FULL (bn
) FAST (bn
) },
183 { TYPE (INSN_BPD
), IDX (INSN_BPD
), FULL (bpd
) FAST (bpd
) },
184 { TYPE (INSN_BP
), IDX (INSN_BP
), FULL (bp
) FAST (bp
) },
185 { TYPE (INSN_BVD
), IDX (INSN_BVD
), FULL (bvd
) FAST (bvd
) },
186 { TYPE (INSN_BV
), IDX (INSN_BV
), FULL (bv
) FAST (bv
) },
187 { TYPE (INSN_BNVD
), IDX (INSN_BNVD
), FULL (bnvd
) FAST (bnvd
) },
188 { TYPE (INSN_BNV
), IDX (INSN_BNV
), FULL (bnv
) FAST (bnv
) },
189 { TYPE (INSN_BLTD
), IDX (INSN_BLTD
), FULL (bltd
) FAST (bltd
) },
190 { TYPE (INSN_BLT
), IDX (INSN_BLT
), FULL (blt
) FAST (blt
) },
191 { TYPE (INSN_BGED
), IDX (INSN_BGED
), FULL (bged
) FAST (bged
) },
192 { TYPE (INSN_BGE
), IDX (INSN_BGE
), FULL (bge
) FAST (bge
) },
193 { TYPE (INSN_BLED
), IDX (INSN_BLED
), FULL (bled
) FAST (bled
) },
194 { TYPE (INSN_BLE
), IDX (INSN_BLE
), FULL (ble
) FAST (ble
) },
195 { TYPE (INSN_BGTD
), IDX (INSN_BGTD
), FULL (bgtd
) FAST (bgtd
) },
196 { TYPE (INSN_BGT
), IDX (INSN_BGT
), FULL (bgt
) FAST (bgt
) },
197 { TYPE (INSN_BLSD
), IDX (INSN_BLSD
), FULL (blsd
) FAST (blsd
) },
198 { TYPE (INSN_BLS
), IDX (INSN_BLS
), FULL (bls
) FAST (bls
) },
199 { TYPE (INSN_BHID
), IDX (INSN_BHID
), FULL (bhid
) FAST (bhid
) },
200 { TYPE (INSN_BHI
), IDX (INSN_BHI
), FULL (bhi
) FAST (bhi
) },
201 { TYPE (INSN_DMOVR13
), IDX (INSN_DMOVR13
), FULL (dmovr13
) FAST (dmovr13
) },
202 { TYPE (INSN_DMOVR13H
), IDX (INSN_DMOVR13H
), FULL (dmovr13h
) FAST (dmovr13h
) },
203 { TYPE (INSN_DMOVR13B
), IDX (INSN_DMOVR13B
), FULL (dmovr13b
) FAST (dmovr13b
) },
204 { TYPE (INSN_DMOVR13PI
), IDX (INSN_DMOVR13PI
), FULL (dmovr13pi
) FAST (dmovr13pi
) },
205 { TYPE (INSN_DMOVR13PIH
), IDX (INSN_DMOVR13PIH
), FULL (dmovr13pih
) FAST (dmovr13pih
) },
206 { TYPE (INSN_DMOVR13PIB
), IDX (INSN_DMOVR13PIB
), FULL (dmovr13pib
) FAST (dmovr13pib
) },
207 { TYPE (INSN_DMOVR15PI
), IDX (INSN_DMOVR15PI
), FULL (dmovr15pi
) FAST (dmovr15pi
) },
208 { TYPE (INSN_DMOV2R13
), IDX (INSN_DMOV2R13
), FULL (dmov2r13
) FAST (dmov2r13
) },
209 { TYPE (INSN_DMOV2R13H
), IDX (INSN_DMOV2R13H
), FULL (dmov2r13h
) FAST (dmov2r13h
) },
210 { TYPE (INSN_DMOV2R13B
), IDX (INSN_DMOV2R13B
), FULL (dmov2r13b
) FAST (dmov2r13b
) },
211 { TYPE (INSN_DMOV2R13PI
), IDX (INSN_DMOV2R13PI
), FULL (dmov2r13pi
) FAST (dmov2r13pi
) },
212 { TYPE (INSN_DMOV2R13PIH
), IDX (INSN_DMOV2R13PIH
), FULL (dmov2r13pih
) FAST (dmov2r13pih
) },
213 { TYPE (INSN_DMOV2R13PIB
), IDX (INSN_DMOV2R13PIB
), FULL (dmov2r13pib
) FAST (dmov2r13pib
) },
214 { TYPE (INSN_DMOV2R15PD
), IDX (INSN_DMOV2R15PD
), FULL (dmov2r15pd
) FAST (dmov2r15pd
) },
215 { TYPE (INSN_LDRES
), IDX (INSN_LDRES
), FULL (ldres
) FAST (ldres
) },
216 { TYPE (INSN_STRES
), IDX (INSN_STRES
), FULL (stres
) FAST (stres
) },
217 { TYPE (INSN_COPOP
), IDX (INSN_COPOP
), FULL (copop
) FAST (copop
) },
218 { TYPE (INSN_COPLD
), IDX (INSN_COPLD
), FULL (copld
) FAST (copld
) },
219 { TYPE (INSN_COPST
), IDX (INSN_COPST
), FULL (copst
) FAST (copst
) },
220 { TYPE (INSN_COPSV
), IDX (INSN_COPSV
), FULL (copsv
) FAST (copsv
) },
221 { TYPE (INSN_NOP
), IDX (INSN_NOP
), FULL (nop
) FAST (nop
) },
222 { TYPE (INSN_ANDCCR
), IDX (INSN_ANDCCR
), FULL (andccr
) FAST (andccr
) },
223 { TYPE (INSN_ORCCR
), IDX (INSN_ORCCR
), FULL (orccr
) FAST (orccr
) },
224 { TYPE (INSN_STILM
), IDX (INSN_STILM
), FULL (stilm
) FAST (stilm
) },
225 { TYPE (INSN_ADDSP
), IDX (INSN_ADDSP
), FULL (addsp
) FAST (addsp
) },
226 { TYPE (INSN_EXTSB
), IDX (INSN_EXTSB
), FULL (extsb
) FAST (extsb
) },
227 { TYPE (INSN_EXTUB
), IDX (INSN_EXTUB
), FULL (extub
) FAST (extub
) },
228 { TYPE (INSN_EXTSH
), IDX (INSN_EXTSH
), FULL (extsh
) FAST (extsh
) },
229 { TYPE (INSN_EXTUH
), IDX (INSN_EXTUH
), FULL (extuh
) FAST (extuh
) },
230 { TYPE (INSN_LDM0
), IDX (INSN_LDM0
), FULL (ldm0
) FAST (ldm0
) },
231 { TYPE (INSN_LDM1
), IDX (INSN_LDM1
), FULL (ldm1
) FAST (ldm1
) },
232 { TYPE (INSN_STM0
), IDX (INSN_STM0
), FULL (stm0
) FAST (stm0
) },
233 { TYPE (INSN_STM1
), IDX (INSN_STM1
), FULL (stm1
) FAST (stm1
) },
234 { TYPE (INSN_ENTER
), IDX (INSN_ENTER
), FULL (enter
) FAST (enter
) },
235 { TYPE (INSN_LEAVE
), IDX (INSN_LEAVE
), FULL (leave
) FAST (leave
) },
236 { TYPE (INSN_XCHB
), IDX (INSN_XCHB
), FULL (xchb
) FAST (xchb
) },
239 static const struct insn_sem fr30bf_insn_sem_invalid
=
241 VIRTUAL_INSN_X_INVALID
, IDX (INSN_X_INVALID
), FULL (x_invalid
) FAST (x_invalid
)
250 /* Initialize an IDESC from the compile-time computable parts. */
253 init_idesc (SIM_CPU
*cpu
, IDESC
*id
, const struct insn_sem
*t
)
255 const CGEN_INSN
*insn_table
= CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu
))->init_entries
;
258 if ((int) t
->type
<= 0)
259 id
->idata
= & cgen_virtual_insn_table
[- (int) t
->type
];
261 id
->idata
= & insn_table
[t
->type
];
262 id
->attrs
= CGEN_INSN_ATTRS (id
->idata
);
263 /* Oh my god, a magic number. */
264 id
->length
= CGEN_INSN_BITSIZE (id
->idata
) / 8;
265 #if ! WITH_SEM_SWITCH_FULL
266 id
->sem_full
= t
->sem_full
;
268 #if WITH_FAST && ! WITH_SEM_SWITCH_FAST
269 id
->sem_fast
= t
->sem_fast
;
271 #if WITH_PROFILE_MODEL_P
272 id
->timing
= & MODEL_TIMING (CPU_MODEL (cpu
)) [t
->index
];
274 SIM_DESC sd
= CPU_STATE (cpu
);
275 SIM_ASSERT (t
->index
== id
->timing
->num
);
280 /* Initialize the instruction descriptor table. */
283 fr30bf_init_idesc_table (SIM_CPU
*cpu
)
286 const struct insn_sem
*t
,*tend
;
287 int tabsize
= FR30BF_INSN_MAX
;
288 IDESC
*table
= fr30bf_insn_data
;
290 memset (table
, 0, tabsize
* sizeof (IDESC
));
292 /* First set all entries to the `invalid insn'. */
293 t
= & fr30bf_insn_sem_invalid
;
294 for (id
= table
, tabend
= table
+ tabsize
; id
< tabend
; ++id
)
295 init_idesc (cpu
, id
, t
);
297 /* Now fill in the values for the chosen cpu. */
298 for (t
= fr30bf_insn_sem
, tend
= t
+ sizeof (fr30bf_insn_sem
) / sizeof (*t
);
301 init_idesc (cpu
, & table
[t
->index
], t
);
304 /* Link the IDESC table into the cpu. */
305 CPU_IDESC (cpu
) = table
;
308 /* Given an instruction, return a pointer to its IDESC entry. */
311 fr30bf_decode (SIM_CPU
*current_cpu
, IADDR pc
,
312 CGEN_INSN_INT base_insn
,
315 /* Result of decoder. */
316 FR30BF_INSN_TYPE itype
;
319 CGEN_INSN_INT insn
= base_insn
;
322 unsigned int val
= (((insn
>> 8) & (255 << 0)));
325 case 0 : itype
= FR30BF_INSN_LDR13
; goto extract_fmt_ldr13
;
326 case 1 : itype
= FR30BF_INSN_LDR13UH
; goto extract_fmt_ldr13
;
327 case 2 : itype
= FR30BF_INSN_LDR13UB
; goto extract_fmt_ldr13
;
328 case 3 : itype
= FR30BF_INSN_LDR15
; goto extract_fmt_ldr15
;
329 case 4 : itype
= FR30BF_INSN_LD
; goto extract_fmt_ld
;
330 case 5 : itype
= FR30BF_INSN_LDUH
; goto extract_fmt_ld
;
331 case 6 : itype
= FR30BF_INSN_LDUB
; goto extract_fmt_ld
;
334 unsigned int val
= (((insn
>> 4) & (15 << 0)));
337 case 0 : itype
= FR30BF_INSN_LDR15GR
; goto extract_fmt_ldr15gr
;
338 case 1 : itype
= FR30BF_INSN_MOV2PS
; goto extract_fmt_mov2ps
;
339 case 8 : itype
= FR30BF_INSN_LDR15DR
; goto extract_fmt_ldr15dr
;
340 case 9 : itype
= FR30BF_INSN_LDR15PS
; goto extract_fmt_ldr15ps
;
341 default : itype
= FR30BF_INSN_X_INVALID
; goto extract_fmt_empty
;
344 case 8 : itype
= FR30BF_INSN_DMOV2R13
; goto extract_fmt_dmov2r13
;
345 case 9 : itype
= FR30BF_INSN_DMOV2R13H
; goto extract_fmt_dmov2r13h
;
346 case 10 : itype
= FR30BF_INSN_DMOV2R13B
; goto extract_fmt_dmov2r13b
;
347 case 11 : itype
= FR30BF_INSN_DMOV2R15PD
; goto extract_fmt_dmov2r15pd
;
348 case 12 : itype
= FR30BF_INSN_DMOV2R13PI
; goto extract_fmt_dmov2r13pi
;
349 case 13 : itype
= FR30BF_INSN_DMOV2R13PIH
; goto extract_fmt_dmov2r13pih
;
350 case 14 : itype
= FR30BF_INSN_DMOV2R13PIB
; goto extract_fmt_dmov2r13pib
;
351 case 15 : itype
= FR30BF_INSN_ENTER
; goto extract_fmt_enter
;
352 case 16 : itype
= FR30BF_INSN_STR13
; goto extract_fmt_str13
;
353 case 17 : itype
= FR30BF_INSN_STR13H
; goto extract_fmt_str13
;
354 case 18 : itype
= FR30BF_INSN_STR13B
; goto extract_fmt_str13
;
355 case 19 : itype
= FR30BF_INSN_STR15
; goto extract_fmt_str15
;
356 case 20 : itype
= FR30BF_INSN_ST
; goto extract_fmt_st
;
357 case 21 : itype
= FR30BF_INSN_STH
; goto extract_fmt_st
;
358 case 22 : itype
= FR30BF_INSN_STB
; goto extract_fmt_st
;
361 unsigned int val
= (((insn
>> 4) & (15 << 0)));
364 case 0 : itype
= FR30BF_INSN_STR15GR
; goto extract_fmt_str15gr
;
365 case 1 : itype
= FR30BF_INSN_MOVPS
; goto extract_fmt_movps
;
366 case 8 : itype
= FR30BF_INSN_STR15DR
; goto extract_fmt_str15dr
;
367 case 9 : itype
= FR30BF_INSN_STR15PS
; goto extract_fmt_str15ps
;
368 default : itype
= FR30BF_INSN_X_INVALID
; goto extract_fmt_empty
;
371 case 24 : itype
= FR30BF_INSN_DMOVR13
; goto extract_fmt_dmovr13
;
372 case 25 : itype
= FR30BF_INSN_DMOVR13H
; goto extract_fmt_dmovr13h
;
373 case 26 : itype
= FR30BF_INSN_DMOVR13B
; goto extract_fmt_dmovr13b
;
374 case 27 : itype
= FR30BF_INSN_DMOVR15PI
; goto extract_fmt_dmovr15pi
;
375 case 28 : itype
= FR30BF_INSN_DMOVR13PI
; goto extract_fmt_dmovr13pi
;
376 case 29 : itype
= FR30BF_INSN_DMOVR13PIH
; goto extract_fmt_dmovr13pih
;
377 case 30 : itype
= FR30BF_INSN_DMOVR13PIB
; goto extract_fmt_dmovr13pib
;
378 case 31 : itype
= FR30BF_INSN_INT
; goto extract_fmt_int
;
379 case 32 : /* fall through */
380 case 33 : /* fall through */
381 case 34 : /* fall through */
382 case 35 : /* fall through */
383 case 36 : /* fall through */
384 case 37 : /* fall through */
385 case 38 : /* fall through */
386 case 39 : /* fall through */
387 case 40 : /* fall through */
388 case 41 : /* fall through */
389 case 42 : /* fall through */
390 case 43 : /* fall through */
391 case 44 : /* fall through */
392 case 45 : /* fall through */
393 case 46 : /* fall through */
394 case 47 : itype
= FR30BF_INSN_LDR14
; goto extract_fmt_ldr14
;
395 case 48 : /* fall through */
396 case 49 : /* fall through */
397 case 50 : /* fall through */
398 case 51 : /* fall through */
399 case 52 : /* fall through */
400 case 53 : /* fall through */
401 case 54 : /* fall through */
402 case 55 : /* fall through */
403 case 56 : /* fall through */
404 case 57 : /* fall through */
405 case 58 : /* fall through */
406 case 59 : /* fall through */
407 case 60 : /* fall through */
408 case 61 : /* fall through */
409 case 62 : /* fall through */
410 case 63 : itype
= FR30BF_INSN_STR14
; goto extract_fmt_str14
;
411 case 64 : /* fall through */
412 case 65 : /* fall through */
413 case 66 : /* fall through */
414 case 67 : /* fall through */
415 case 68 : /* fall through */
416 case 69 : /* fall through */
417 case 70 : /* fall through */
418 case 71 : /* fall through */
419 case 72 : /* fall through */
420 case 73 : /* fall through */
421 case 74 : /* fall through */
422 case 75 : /* fall through */
423 case 76 : /* fall through */
424 case 77 : /* fall through */
425 case 78 : /* fall through */
426 case 79 : itype
= FR30BF_INSN_LDR14UH
; goto extract_fmt_ldr14uh
;
427 case 80 : /* fall through */
428 case 81 : /* fall through */
429 case 82 : /* fall through */
430 case 83 : /* fall through */
431 case 84 : /* fall through */
432 case 85 : /* fall through */
433 case 86 : /* fall through */
434 case 87 : /* fall through */
435 case 88 : /* fall through */
436 case 89 : /* fall through */
437 case 90 : /* fall through */
438 case 91 : /* fall through */
439 case 92 : /* fall through */
440 case 93 : /* fall through */
441 case 94 : /* fall through */
442 case 95 : itype
= FR30BF_INSN_STR14H
; goto extract_fmt_str14h
;
443 case 96 : /* fall through */
444 case 97 : /* fall through */
445 case 98 : /* fall through */
446 case 99 : /* fall through */
447 case 100 : /* fall through */
448 case 101 : /* fall through */
449 case 102 : /* fall through */
450 case 103 : /* fall through */
451 case 104 : /* fall through */
452 case 105 : /* fall through */
453 case 106 : /* fall through */
454 case 107 : /* fall through */
455 case 108 : /* fall through */
456 case 109 : /* fall through */
457 case 110 : /* fall through */
458 case 111 : itype
= FR30BF_INSN_LDR14UB
; goto extract_fmt_ldr14ub
;
459 case 112 : /* fall through */
460 case 113 : /* fall through */
461 case 114 : /* fall through */
462 case 115 : /* fall through */
463 case 116 : /* fall through */
464 case 117 : /* fall through */
465 case 118 : /* fall through */
466 case 119 : /* fall through */
467 case 120 : /* fall through */
468 case 121 : /* fall through */
469 case 122 : /* fall through */
470 case 123 : /* fall through */
471 case 124 : /* fall through */
472 case 125 : /* fall through */
473 case 126 : /* fall through */
474 case 127 : itype
= FR30BF_INSN_STR14B
; goto extract_fmt_str14b
;
475 case 128 : itype
= FR30BF_INSN_BANDL
; goto extract_fmt_bandl
;
476 case 129 : itype
= FR30BF_INSN_BANDH
; goto extract_fmt_bandl
;
477 case 130 : itype
= FR30BF_INSN_AND
; goto extract_fmt_and
;
478 case 131 : itype
= FR30BF_INSN_ANDCCR
; goto extract_fmt_andccr
;
479 case 132 : itype
= FR30BF_INSN_ANDM
; goto extract_fmt_andm
;
480 case 133 : itype
= FR30BF_INSN_ANDH
; goto extract_fmt_andh
;
481 case 134 : itype
= FR30BF_INSN_ANDB
; goto extract_fmt_andb
;
482 case 135 : itype
= FR30BF_INSN_STILM
; goto extract_fmt_stilm
;
483 case 136 : itype
= FR30BF_INSN_BTSTL
; goto extract_fmt_btstl
;
484 case 137 : itype
= FR30BF_INSN_BTSTH
; goto extract_fmt_btstl
;
485 case 138 : itype
= FR30BF_INSN_XCHB
; goto extract_fmt_xchb
;
486 case 139 : itype
= FR30BF_INSN_MOV
; goto extract_fmt_mov
;
487 case 140 : itype
= FR30BF_INSN_LDM0
; goto extract_fmt_ldm0
;
488 case 141 : itype
= FR30BF_INSN_LDM1
; goto extract_fmt_ldm1
;
489 case 142 : itype
= FR30BF_INSN_STM0
; goto extract_fmt_stm0
;
490 case 143 : itype
= FR30BF_INSN_STM1
; goto extract_fmt_stm1
;
491 case 144 : itype
= FR30BF_INSN_BORL
; goto extract_fmt_bandl
;
492 case 145 : itype
= FR30BF_INSN_BORH
; goto extract_fmt_bandl
;
493 case 146 : itype
= FR30BF_INSN_OR
; goto extract_fmt_and
;
494 case 147 : itype
= FR30BF_INSN_ORCCR
; goto extract_fmt_andccr
;
495 case 148 : itype
= FR30BF_INSN_ORM
; goto extract_fmt_andm
;
496 case 149 : itype
= FR30BF_INSN_ORH
; goto extract_fmt_andh
;
497 case 150 : itype
= FR30BF_INSN_ORB
; goto extract_fmt_andb
;
500 unsigned int val
= (((insn
>> 4) & (15 << 0)));
503 case 0 : itype
= FR30BF_INSN_JMP
; goto extract_fmt_jmp
;
504 case 1 : itype
= FR30BF_INSN_CALLR
; goto extract_fmt_callr
;
505 case 2 : itype
= FR30BF_INSN_RET
; goto extract_fmt_ret
;
506 case 3 : itype
= FR30BF_INSN_RETI
; goto extract_fmt_reti
;
507 case 4 : itype
= FR30BF_INSN_DIV0S
; goto extract_fmt_div0s
;
508 case 5 : itype
= FR30BF_INSN_DIV0U
; goto extract_fmt_div0u
;
509 case 6 : itype
= FR30BF_INSN_DIV1
; goto extract_fmt_div1
;
510 case 7 : itype
= FR30BF_INSN_DIV2
; goto extract_fmt_div2
;
511 case 8 : itype
= FR30BF_INSN_EXTSB
; goto extract_fmt_extsb
;
512 case 9 : itype
= FR30BF_INSN_EXTUB
; goto extract_fmt_extub
;
513 case 10 : itype
= FR30BF_INSN_EXTSH
; goto extract_fmt_extsh
;
514 case 11 : itype
= FR30BF_INSN_EXTUH
; goto extract_fmt_extuh
;
515 default : itype
= FR30BF_INSN_X_INVALID
; goto extract_fmt_empty
;
518 case 152 : itype
= FR30BF_INSN_BEORL
; goto extract_fmt_bandl
;
519 case 153 : itype
= FR30BF_INSN_BEORH
; goto extract_fmt_bandl
;
520 case 154 : itype
= FR30BF_INSN_EOR
; goto extract_fmt_and
;
521 case 155 : itype
= FR30BF_INSN_LDI20
; goto extract_fmt_ldi20
;
522 case 156 : itype
= FR30BF_INSN_EORM
; goto extract_fmt_andm
;
523 case 157 : itype
= FR30BF_INSN_EORH
; goto extract_fmt_andh
;
524 case 158 : itype
= FR30BF_INSN_EORB
; goto extract_fmt_andb
;
527 unsigned int val
= (((insn
>> 4) & (15 << 0)));
530 case 0 : itype
= FR30BF_INSN_JMPD
; goto extract_fmt_jmp
;
531 case 1 : itype
= FR30BF_INSN_CALLRD
; goto extract_fmt_callr
;
532 case 2 : itype
= FR30BF_INSN_RET_D
; goto extract_fmt_ret
;
533 case 3 : itype
= FR30BF_INSN_INTE
; goto extract_fmt_inte
;
534 case 6 : itype
= FR30BF_INSN_DIV3
; goto extract_fmt_div3
;
535 case 7 : itype
= FR30BF_INSN_DIV4S
; goto extract_fmt_div4s
;
536 case 8 : itype
= FR30BF_INSN_LDI32
; goto extract_fmt_ldi32
;
537 case 9 : itype
= FR30BF_INSN_LEAVE
; goto extract_fmt_leave
;
538 case 10 : itype
= FR30BF_INSN_NOP
; goto extract_fmt_bnod
;
539 case 12 : itype
= FR30BF_INSN_COPOP
; goto extract_fmt_copop
;
540 case 13 : itype
= FR30BF_INSN_COPLD
; goto extract_fmt_copop
;
541 case 14 : itype
= FR30BF_INSN_COPST
; goto extract_fmt_copop
;
542 case 15 : itype
= FR30BF_INSN_COPSV
; goto extract_fmt_copop
;
543 default : itype
= FR30BF_INSN_X_INVALID
; goto extract_fmt_empty
;
546 case 160 : itype
= FR30BF_INSN_ADDNI
; goto extract_fmt_addni
;
547 case 161 : itype
= FR30BF_INSN_ADDN2
; goto extract_fmt_addn2
;
548 case 162 : itype
= FR30BF_INSN_ADDN
; goto extract_fmt_addn
;
549 case 163 : itype
= FR30BF_INSN_ADDSP
; goto extract_fmt_addsp
;
550 case 164 : itype
= FR30BF_INSN_ADDI
; goto extract_fmt_addi
;
551 case 165 : itype
= FR30BF_INSN_ADD2
; goto extract_fmt_add2
;
552 case 166 : itype
= FR30BF_INSN_ADD
; goto extract_fmt_add
;
553 case 167 : itype
= FR30BF_INSN_ADDC
; goto extract_fmt_addc
;
554 case 168 : itype
= FR30BF_INSN_CMPI
; goto extract_fmt_cmpi
;
555 case 169 : itype
= FR30BF_INSN_CMP2
; goto extract_fmt_cmp2
;
556 case 170 : itype
= FR30BF_INSN_CMP
; goto extract_fmt_cmp
;
557 case 171 : itype
= FR30BF_INSN_MULU
; goto extract_fmt_mulu
;
558 case 172 : itype
= FR30BF_INSN_SUB
; goto extract_fmt_add
;
559 case 173 : itype
= FR30BF_INSN_SUBC
; goto extract_fmt_addc
;
560 case 174 : itype
= FR30BF_INSN_SUBN
; goto extract_fmt_addn
;
561 case 175 : itype
= FR30BF_INSN_MUL
; goto extract_fmt_mul
;
562 case 176 : itype
= FR30BF_INSN_LSRI
; goto extract_fmt_lsli
;
563 case 177 : itype
= FR30BF_INSN_LSR2
; goto extract_fmt_lsli
;
564 case 178 : itype
= FR30BF_INSN_LSR
; goto extract_fmt_lsl
;
565 case 179 : itype
= FR30BF_INSN_MOV2DR
; goto extract_fmt_mov2dr
;
566 case 180 : itype
= FR30BF_INSN_LSLI
; goto extract_fmt_lsli
;
567 case 181 : itype
= FR30BF_INSN_LSL2
; goto extract_fmt_lsli
;
568 case 182 : itype
= FR30BF_INSN_LSL
; goto extract_fmt_lsl
;
569 case 183 : itype
= FR30BF_INSN_MOVDR
; goto extract_fmt_movdr
;
570 case 184 : itype
= FR30BF_INSN_ASRI
; goto extract_fmt_lsli
;
571 case 185 : itype
= FR30BF_INSN_ASR2
; goto extract_fmt_lsli
;
572 case 186 : itype
= FR30BF_INSN_ASR
; goto extract_fmt_lsl
;
573 case 187 : itype
= FR30BF_INSN_MULUH
; goto extract_fmt_mulh
;
574 case 188 : itype
= FR30BF_INSN_LDRES
; goto extract_fmt_ldres
;
575 case 189 : itype
= FR30BF_INSN_STRES
; goto extract_fmt_ldres
;
576 case 191 : itype
= FR30BF_INSN_MULH
; goto extract_fmt_mulh
;
577 case 192 : /* fall through */
578 case 193 : /* fall through */
579 case 194 : /* fall through */
580 case 195 : /* fall through */
581 case 196 : /* fall through */
582 case 197 : /* fall through */
583 case 198 : /* fall through */
584 case 199 : /* fall through */
585 case 200 : /* fall through */
586 case 201 : /* fall through */
587 case 202 : /* fall through */
588 case 203 : /* fall through */
589 case 204 : /* fall through */
590 case 205 : /* fall through */
591 case 206 : /* fall through */
592 case 207 : itype
= FR30BF_INSN_LDI8
; goto extract_fmt_ldi8
;
593 case 208 : /* fall through */
594 case 209 : /* fall through */
595 case 210 : /* fall through */
596 case 211 : /* fall through */
597 case 212 : /* fall through */
598 case 213 : /* fall through */
599 case 214 : /* fall through */
600 case 215 : itype
= FR30BF_INSN_CALL
; goto extract_fmt_call
;
601 case 216 : /* fall through */
602 case 217 : /* fall through */
603 case 218 : /* fall through */
604 case 219 : /* fall through */
605 case 220 : /* fall through */
606 case 221 : /* fall through */
607 case 222 : /* fall through */
608 case 223 : itype
= FR30BF_INSN_CALLD
; goto extract_fmt_call
;
609 case 224 : itype
= FR30BF_INSN_BRA
; goto extract_fmt_brad
;
610 case 225 : itype
= FR30BF_INSN_BNO
; goto extract_fmt_bnod
;
611 case 226 : itype
= FR30BF_INSN_BEQ
; goto extract_fmt_beqd
;
612 case 227 : itype
= FR30BF_INSN_BNE
; goto extract_fmt_beqd
;
613 case 228 : itype
= FR30BF_INSN_BC
; goto extract_fmt_bcd
;
614 case 229 : itype
= FR30BF_INSN_BNC
; goto extract_fmt_bcd
;
615 case 230 : itype
= FR30BF_INSN_BN
; goto extract_fmt_bnd
;
616 case 231 : itype
= FR30BF_INSN_BP
; goto extract_fmt_bnd
;
617 case 232 : itype
= FR30BF_INSN_BV
; goto extract_fmt_bvd
;
618 case 233 : itype
= FR30BF_INSN_BNV
; goto extract_fmt_bvd
;
619 case 234 : itype
= FR30BF_INSN_BLT
; goto extract_fmt_bltd
;
620 case 235 : itype
= FR30BF_INSN_BGE
; goto extract_fmt_bltd
;
621 case 236 : itype
= FR30BF_INSN_BLE
; goto extract_fmt_bled
;
622 case 237 : itype
= FR30BF_INSN_BGT
; goto extract_fmt_bled
;
623 case 238 : itype
= FR30BF_INSN_BLS
; goto extract_fmt_blsd
;
624 case 239 : itype
= FR30BF_INSN_BHI
; goto extract_fmt_blsd
;
625 case 240 : itype
= FR30BF_INSN_BRAD
; goto extract_fmt_brad
;
626 case 241 : itype
= FR30BF_INSN_BNOD
; goto extract_fmt_bnod
;
627 case 242 : itype
= FR30BF_INSN_BEQD
; goto extract_fmt_beqd
;
628 case 243 : itype
= FR30BF_INSN_BNED
; goto extract_fmt_beqd
;
629 case 244 : itype
= FR30BF_INSN_BCD
; goto extract_fmt_bcd
;
630 case 245 : itype
= FR30BF_INSN_BNCD
; goto extract_fmt_bcd
;
631 case 246 : itype
= FR30BF_INSN_BND
; goto extract_fmt_bnd
;
632 case 247 : itype
= FR30BF_INSN_BPD
; goto extract_fmt_bnd
;
633 case 248 : itype
= FR30BF_INSN_BVD
; goto extract_fmt_bvd
;
634 case 249 : itype
= FR30BF_INSN_BNVD
; goto extract_fmt_bvd
;
635 case 250 : itype
= FR30BF_INSN_BLTD
; goto extract_fmt_bltd
;
636 case 251 : itype
= FR30BF_INSN_BGED
; goto extract_fmt_bltd
;
637 case 252 : itype
= FR30BF_INSN_BLED
; goto extract_fmt_bled
;
638 case 253 : itype
= FR30BF_INSN_BGTD
; goto extract_fmt_bled
;
639 case 254 : itype
= FR30BF_INSN_BLSD
; goto extract_fmt_blsd
;
640 case 255 : itype
= FR30BF_INSN_BHID
; goto extract_fmt_blsd
;
641 default : itype
= FR30BF_INSN_X_INVALID
; goto extract_fmt_empty
;
646 /* The instruction has been decoded, now extract the fields. */
650 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
651 CGEN_INSN_INT insn
= base_insn
;
652 #define FLD(f) abuf->fields.fmt_empty.f
655 /* Record the fields for the semantic handler. */
656 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_empty", (char *) 0));
664 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
665 CGEN_INSN_INT insn
= base_insn
;
666 #define FLD(f) abuf->fields.fmt_add.f
670 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
671 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
673 /* Record the fields for the semantic handler. */
674 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
675 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
676 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_add", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
678 #if WITH_PROFILE_MODEL_P
679 /* Record the fields for profiling. */
680 if (PROFILE_MODEL_P (current_cpu
))
693 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
694 CGEN_INSN_INT insn
= base_insn
;
695 #define FLD(f) abuf->fields.fmt_addi.f
699 f_u4
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
700 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
702 /* Record the fields for the semantic handler. */
704 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
705 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addi", "f_u4 0x%x", 'x', f_u4
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
707 #if WITH_PROFILE_MODEL_P
708 /* Record the fields for profiling. */
709 if (PROFILE_MODEL_P (current_cpu
))
721 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
722 CGEN_INSN_INT insn
= base_insn
;
723 #define FLD(f) abuf->fields.fmt_add2.f
727 f_m4
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 4)) | (((-1) << (4))));
728 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
730 /* Record the fields for the semantic handler. */
732 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
733 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_add2", "f_m4 0x%x", 'x', f_m4
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
735 #if WITH_PROFILE_MODEL_P
736 /* Record the fields for profiling. */
737 if (PROFILE_MODEL_P (current_cpu
))
749 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
750 CGEN_INSN_INT insn
= base_insn
;
751 #define FLD(f) abuf->fields.fmt_addc.f
755 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
756 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
758 /* Record the fields for the semantic handler. */
759 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
760 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
761 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addc", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
763 #if WITH_PROFILE_MODEL_P
764 /* Record the fields for profiling. */
765 if (PROFILE_MODEL_P (current_cpu
))
778 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
779 CGEN_INSN_INT insn
= base_insn
;
780 #define FLD(f) abuf->fields.fmt_addn.f
784 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
785 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
787 /* Record the fields for the semantic handler. */
788 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
789 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
790 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addn", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
792 #if WITH_PROFILE_MODEL_P
793 /* Record the fields for profiling. */
794 if (PROFILE_MODEL_P (current_cpu
))
807 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
808 CGEN_INSN_INT insn
= base_insn
;
809 #define FLD(f) abuf->fields.fmt_addni.f
813 f_u4
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
814 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
816 /* Record the fields for the semantic handler. */
818 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
819 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addni", "f_u4 0x%x", 'x', f_u4
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
821 #if WITH_PROFILE_MODEL_P
822 /* Record the fields for profiling. */
823 if (PROFILE_MODEL_P (current_cpu
))
835 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
836 CGEN_INSN_INT insn
= base_insn
;
837 #define FLD(f) abuf->fields.fmt_addn2.f
841 f_m4
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 4)) | (((-1) << (4))));
842 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
844 /* Record the fields for the semantic handler. */
846 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
847 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addn2", "f_m4 0x%x", 'x', f_m4
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
849 #if WITH_PROFILE_MODEL_P
850 /* Record the fields for profiling. */
851 if (PROFILE_MODEL_P (current_cpu
))
863 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
864 CGEN_INSN_INT insn
= base_insn
;
865 #define FLD(f) abuf->fields.fmt_cmp.f
869 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
870 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
872 /* Record the fields for the semantic handler. */
873 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
874 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
875 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_cmp", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
877 #if WITH_PROFILE_MODEL_P
878 /* Record the fields for profiling. */
879 if (PROFILE_MODEL_P (current_cpu
))
891 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
892 CGEN_INSN_INT insn
= base_insn
;
893 #define FLD(f) abuf->fields.fmt_cmpi.f
897 f_u4
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
898 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
900 /* Record the fields for the semantic handler. */
902 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
903 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_cmpi", "f_u4 0x%x", 'x', f_u4
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
905 #if WITH_PROFILE_MODEL_P
906 /* Record the fields for profiling. */
907 if (PROFILE_MODEL_P (current_cpu
))
918 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
919 CGEN_INSN_INT insn
= base_insn
;
920 #define FLD(f) abuf->fields.fmt_cmp2.f
924 f_m4
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 4)) | (((-1) << (4))));
925 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
927 /* Record the fields for the semantic handler. */
929 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
930 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_cmp2", "f_m4 0x%x", 'x', f_m4
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
932 #if WITH_PROFILE_MODEL_P
933 /* Record the fields for profiling. */
934 if (PROFILE_MODEL_P (current_cpu
))
945 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
946 CGEN_INSN_INT insn
= base_insn
;
947 #define FLD(f) abuf->fields.fmt_and.f
951 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
952 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
954 /* Record the fields for the semantic handler. */
955 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
956 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
957 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_and", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
959 #if WITH_PROFILE_MODEL_P
960 /* Record the fields for profiling. */
961 if (PROFILE_MODEL_P (current_cpu
))
974 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
975 CGEN_INSN_INT insn
= base_insn
;
976 #define FLD(f) abuf->fields.fmt_andm.f
980 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
981 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
983 /* Record the fields for the semantic handler. */
984 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
985 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
986 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_andm", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
988 #if WITH_PROFILE_MODEL_P
989 /* Record the fields for profiling. */
990 if (PROFILE_MODEL_P (current_cpu
))
1002 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1003 CGEN_INSN_INT insn
= base_insn
;
1004 #define FLD(f) abuf->fields.fmt_andh.f
1008 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1009 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1011 /* Record the fields for the semantic handler. */
1012 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1013 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1014 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_andh", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
1016 #if WITH_PROFILE_MODEL_P
1017 /* Record the fields for profiling. */
1018 if (PROFILE_MODEL_P (current_cpu
))
1030 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1031 CGEN_INSN_INT insn
= base_insn
;
1032 #define FLD(f) abuf->fields.fmt_andb.f
1036 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1037 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1039 /* Record the fields for the semantic handler. */
1040 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1041 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1042 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_andb", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
1044 #if WITH_PROFILE_MODEL_P
1045 /* Record the fields for profiling. */
1046 if (PROFILE_MODEL_P (current_cpu
))
1058 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1059 CGEN_INSN_INT insn
= base_insn
;
1060 #define FLD(f) abuf->fields.fmt_bandl.f
1064 f_u4
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1065 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1067 /* Record the fields for the semantic handler. */
1069 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1070 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bandl", "f_u4 0x%x", 'x', f_u4
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1072 #if WITH_PROFILE_MODEL_P
1073 /* Record the fields for profiling. */
1074 if (PROFILE_MODEL_P (current_cpu
))
1085 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1086 CGEN_INSN_INT insn
= base_insn
;
1087 #define FLD(f) abuf->fields.fmt_btstl.f
1091 f_u4
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1092 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1094 /* Record the fields for the semantic handler. */
1096 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1097 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_btstl", "f_u4 0x%x", 'x', f_u4
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1099 #if WITH_PROFILE_MODEL_P
1100 /* Record the fields for profiling. */
1101 if (PROFILE_MODEL_P (current_cpu
))
1112 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1113 CGEN_INSN_INT insn
= base_insn
;
1114 #define FLD(f) abuf->fields.fmt_mul.f
1118 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1119 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1121 /* Record the fields for the semantic handler. */
1122 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1123 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1124 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mul", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
1126 #if WITH_PROFILE_MODEL_P
1127 /* Record the fields for profiling. */
1128 if (PROFILE_MODEL_P (current_cpu
))
1140 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1141 CGEN_INSN_INT insn
= base_insn
;
1142 #define FLD(f) abuf->fields.fmt_mulu.f
1146 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1147 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1149 /* Record the fields for the semantic handler. */
1150 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1151 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1152 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mulu", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
1154 #if WITH_PROFILE_MODEL_P
1155 /* Record the fields for profiling. */
1156 if (PROFILE_MODEL_P (current_cpu
))
1168 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1169 CGEN_INSN_INT insn
= base_insn
;
1170 #define FLD(f) abuf->fields.fmt_mulh.f
1174 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1175 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1177 /* Record the fields for the semantic handler. */
1178 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1179 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1180 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mulh", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
1182 #if WITH_PROFILE_MODEL_P
1183 /* Record the fields for profiling. */
1184 if (PROFILE_MODEL_P (current_cpu
))
1196 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1197 CGEN_INSN_INT insn
= base_insn
;
1198 #define FLD(f) abuf->fields.fmt_div0s.f
1201 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1203 /* Record the fields for the semantic handler. */
1204 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1205 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_div0s", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1207 #if WITH_PROFILE_MODEL_P
1208 /* Record the fields for profiling. */
1209 if (PROFILE_MODEL_P (current_cpu
))
1220 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1221 CGEN_INSN_INT insn
= base_insn
;
1222 #define FLD(f) abuf->fields.fmt_div0u.f
1225 /* Record the fields for the semantic handler. */
1226 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_div0u", (char *) 0));
1234 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1235 CGEN_INSN_INT insn
= base_insn
;
1236 #define FLD(f) abuf->fields.fmt_div1.f
1239 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1241 /* Record the fields for the semantic handler. */
1242 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1243 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_div1", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1245 #if WITH_PROFILE_MODEL_P
1246 /* Record the fields for profiling. */
1247 if (PROFILE_MODEL_P (current_cpu
))
1258 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1259 CGEN_INSN_INT insn
= base_insn
;
1260 #define FLD(f) abuf->fields.fmt_div2.f
1263 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1265 /* Record the fields for the semantic handler. */
1266 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1267 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_div2", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1269 #if WITH_PROFILE_MODEL_P
1270 /* Record the fields for profiling. */
1271 if (PROFILE_MODEL_P (current_cpu
))
1282 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1283 CGEN_INSN_INT insn
= base_insn
;
1284 #define FLD(f) abuf->fields.fmt_div3.f
1287 /* Record the fields for the semantic handler. */
1288 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_div3", (char *) 0));
1296 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1297 CGEN_INSN_INT insn
= base_insn
;
1298 #define FLD(f) abuf->fields.fmt_div4s.f
1301 /* Record the fields for the semantic handler. */
1302 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_div4s", (char *) 0));
1310 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1311 CGEN_INSN_INT insn
= base_insn
;
1312 #define FLD(f) abuf->fields.fmt_lsl.f
1316 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1317 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1319 /* Record the fields for the semantic handler. */
1320 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1321 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1322 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_lsl", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
1324 #if WITH_PROFILE_MODEL_P
1325 /* Record the fields for profiling. */
1326 if (PROFILE_MODEL_P (current_cpu
))
1330 FLD (out_Ri
) = f_Ri
;
1339 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1340 CGEN_INSN_INT insn
= base_insn
;
1341 #define FLD(f) abuf->fields.fmt_lsli.f
1345 f_u4
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1346 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1348 /* Record the fields for the semantic handler. */
1350 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1351 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_lsli", "f_u4 0x%x", 'x', f_u4
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1353 #if WITH_PROFILE_MODEL_P
1354 /* Record the fields for profiling. */
1355 if (PROFILE_MODEL_P (current_cpu
))
1358 FLD (out_Ri
) = f_Ri
;
1367 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1368 CGEN_INSN_INT insn
= base_insn
;
1369 #define FLD(f) abuf->fields.fmt_ldi8.f
1373 f_i8
= EXTRACT_MSB0_UINT (insn
, 16, 4, 8);
1374 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1376 /* Record the fields for the semantic handler. */
1378 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1379 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldi8", "f_i8 0x%x", 'x', f_i8
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1381 #if WITH_PROFILE_MODEL_P
1382 /* Record the fields for profiling. */
1383 if (PROFILE_MODEL_P (current_cpu
))
1385 FLD (out_Ri
) = f_Ri
;
1394 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1395 CGEN_INSN_INT insn
= base_insn
;
1396 #define FLD(f) abuf->fields.fmt_ldi20.f
1401 /* Contents of trailing part of insn. */
1404 word_1
= GETIMEMUHI (current_cpu
, pc
+ 2);
1405 f_i20_16
= (0|(EXTRACT_MSB0_UINT (word_1
, 16, 0, 16) << 0));
1406 f_i20_4
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1407 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1409 f_i20
= ((((f_i20_4
) << (16))) | (f_i20_16
));
1412 /* Record the fields for the semantic handler. */
1413 FLD (f_i20
) = f_i20
;
1414 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1415 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldi20", "f_i20 0x%x", 'x', f_i20
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1417 #if WITH_PROFILE_MODEL_P
1418 /* Record the fields for profiling. */
1419 if (PROFILE_MODEL_P (current_cpu
))
1421 FLD (out_Ri
) = f_Ri
;
1430 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1431 CGEN_INSN_INT insn
= base_insn
;
1432 #define FLD(f) abuf->fields.fmt_ldi32.f
1435 /* Contents of trailing part of insn. */
1439 word_1
= GETIMEMUHI (current_cpu
, pc
+ 2);
1440 word_2
= GETIMEMUHI (current_cpu
, pc
+ 4);
1441 f_i32
= (0|(EXTRACT_MSB0_UINT (word_2
, 16, 0, 16) << 0)|(EXTRACT_MSB0_UINT (word_1
, 16, 0, 16) << 16));
1442 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1444 /* Record the fields for the semantic handler. */
1445 FLD (f_i32
) = f_i32
;
1446 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1447 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldi32", "f_i32 0x%x", 'x', f_i32
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1449 #if WITH_PROFILE_MODEL_P
1450 /* Record the fields for profiling. */
1451 if (PROFILE_MODEL_P (current_cpu
))
1453 FLD (out_Ri
) = f_Ri
;
1462 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1463 CGEN_INSN_INT insn
= base_insn
;
1464 #define FLD(f) abuf->fields.fmt_ld.f
1468 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1469 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1471 /* Record the fields for the semantic handler. */
1472 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1473 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1474 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ld", "Rj 0x%x", 'x', f_Rj
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1476 #if WITH_PROFILE_MODEL_P
1477 /* Record the fields for profiling. */
1478 if (PROFILE_MODEL_P (current_cpu
))
1481 FLD (out_Ri
) = f_Ri
;
1490 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1491 CGEN_INSN_INT insn
= base_insn
;
1492 #define FLD(f) abuf->fields.fmt_ldr13.f
1496 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1497 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1499 /* Record the fields for the semantic handler. */
1500 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1501 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1502 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldr13", "Rj 0x%x", 'x', f_Rj
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1504 #if WITH_PROFILE_MODEL_P
1505 /* Record the fields for profiling. */
1506 if (PROFILE_MODEL_P (current_cpu
))
1509 FLD (in_h_gr_13
) = 13;
1510 FLD (out_Ri
) = f_Ri
;
1519 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1520 CGEN_INSN_INT insn
= base_insn
;
1521 #define FLD(f) abuf->fields.fmt_ldr14.f
1525 f_disp10
= ((EXTRACT_MSB0_INT (insn
, 16, 4, 8)) << (2));
1526 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1528 /* Record the fields for the semantic handler. */
1529 FLD (f_disp10
) = f_disp10
;
1530 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1531 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldr14", "f_disp10 0x%x", 'x', f_disp10
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1533 #if WITH_PROFILE_MODEL_P
1534 /* Record the fields for profiling. */
1535 if (PROFILE_MODEL_P (current_cpu
))
1537 FLD (in_h_gr_14
) = 14;
1538 FLD (out_Ri
) = f_Ri
;
1545 extract_fmt_ldr14uh
:
1547 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1548 CGEN_INSN_INT insn
= base_insn
;
1549 #define FLD(f) abuf->fields.fmt_ldr14uh.f
1553 f_disp9
= ((EXTRACT_MSB0_INT (insn
, 16, 4, 8)) << (1));
1554 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1556 /* Record the fields for the semantic handler. */
1557 FLD (f_disp9
) = f_disp9
;
1558 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1559 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldr14uh", "f_disp9 0x%x", 'x', f_disp9
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1561 #if WITH_PROFILE_MODEL_P
1562 /* Record the fields for profiling. */
1563 if (PROFILE_MODEL_P (current_cpu
))
1565 FLD (in_h_gr_14
) = 14;
1566 FLD (out_Ri
) = f_Ri
;
1573 extract_fmt_ldr14ub
:
1575 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1576 CGEN_INSN_INT insn
= base_insn
;
1577 #define FLD(f) abuf->fields.fmt_ldr14ub.f
1581 f_disp8
= EXTRACT_MSB0_INT (insn
, 16, 4, 8);
1582 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1584 /* Record the fields for the semantic handler. */
1585 FLD (f_disp8
) = f_disp8
;
1586 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1587 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldr14ub", "f_disp8 0x%x", 'x', f_disp8
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1589 #if WITH_PROFILE_MODEL_P
1590 /* Record the fields for profiling. */
1591 if (PROFILE_MODEL_P (current_cpu
))
1593 FLD (in_h_gr_14
) = 14;
1594 FLD (out_Ri
) = f_Ri
;
1603 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1604 CGEN_INSN_INT insn
= base_insn
;
1605 #define FLD(f) abuf->fields.fmt_ldr15.f
1609 f_udisp6
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 4)) << (2));
1610 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1612 /* Record the fields for the semantic handler. */
1613 FLD (f_udisp6
) = f_udisp6
;
1614 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1615 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldr15", "f_udisp6 0x%x", 'x', f_udisp6
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1617 #if WITH_PROFILE_MODEL_P
1618 /* Record the fields for profiling. */
1619 if (PROFILE_MODEL_P (current_cpu
))
1621 FLD (in_h_gr_15
) = 15;
1622 FLD (out_Ri
) = f_Ri
;
1629 extract_fmt_ldr15gr
:
1631 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1632 CGEN_INSN_INT insn
= base_insn
;
1633 #define FLD(f) abuf->fields.fmt_ldr15gr.f
1636 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1638 /* Record the fields for the semantic handler. */
1640 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1641 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldr15gr", "f_Ri 0x%x", 'x', f_Ri
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1643 #if WITH_PROFILE_MODEL_P
1644 /* Record the fields for profiling. */
1645 if (PROFILE_MODEL_P (current_cpu
))
1647 FLD (in_h_gr_15
) = 15;
1648 FLD (out_Ri
) = f_Ri
;
1649 FLD (out_h_gr_15
) = 15;
1656 extract_fmt_ldr15dr
:
1658 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1659 CGEN_INSN_INT insn
= base_insn
;
1660 #define FLD(f) abuf->fields.fmt_ldr15dr.f
1663 f_Rs2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1665 /* Record the fields for the semantic handler. */
1666 FLD (f_Rs2
) = f_Rs2
;
1667 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldr15dr", "f_Rs2 0x%x", 'x', f_Rs2
, (char *) 0));
1669 #if WITH_PROFILE_MODEL_P
1670 /* Record the fields for profiling. */
1671 if (PROFILE_MODEL_P (current_cpu
))
1673 FLD (in_h_gr_15
) = 15;
1674 FLD (out_h_gr_15
) = 15;
1681 extract_fmt_ldr15ps
:
1683 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1684 CGEN_INSN_INT insn
= base_insn
;
1685 #define FLD(f) abuf->fields.fmt_ldr15ps.f
1688 /* Record the fields for the semantic handler. */
1689 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldr15ps", (char *) 0));
1691 #if WITH_PROFILE_MODEL_P
1692 /* Record the fields for profiling. */
1693 if (PROFILE_MODEL_P (current_cpu
))
1695 FLD (in_h_gr_15
) = 15;
1696 FLD (out_h_gr_15
) = 15;
1705 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1706 CGEN_INSN_INT insn
= base_insn
;
1707 #define FLD(f) abuf->fields.fmt_st.f
1711 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1712 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1714 /* Record the fields for the semantic handler. */
1715 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1716 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1717 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_st", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
1719 #if WITH_PROFILE_MODEL_P
1720 /* Record the fields for profiling. */
1721 if (PROFILE_MODEL_P (current_cpu
))
1733 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1734 CGEN_INSN_INT insn
= base_insn
;
1735 #define FLD(f) abuf->fields.fmt_str13.f
1739 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1740 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1742 /* Record the fields for the semantic handler. */
1743 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1744 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1745 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_str13", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
1747 #if WITH_PROFILE_MODEL_P
1748 /* Record the fields for profiling. */
1749 if (PROFILE_MODEL_P (current_cpu
))
1753 FLD (in_h_gr_13
) = 13;
1762 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1763 CGEN_INSN_INT insn
= base_insn
;
1764 #define FLD(f) abuf->fields.fmt_str14.f
1768 f_disp10
= ((EXTRACT_MSB0_INT (insn
, 16, 4, 8)) << (2));
1769 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1771 /* Record the fields for the semantic handler. */
1772 FLD (f_disp10
) = f_disp10
;
1773 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1774 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_str14", "f_disp10 0x%x", 'x', f_disp10
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1776 #if WITH_PROFILE_MODEL_P
1777 /* Record the fields for profiling. */
1778 if (PROFILE_MODEL_P (current_cpu
))
1781 FLD (in_h_gr_14
) = 14;
1790 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1791 CGEN_INSN_INT insn
= base_insn
;
1792 #define FLD(f) abuf->fields.fmt_str14h.f
1796 f_disp9
= ((EXTRACT_MSB0_INT (insn
, 16, 4, 8)) << (1));
1797 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1799 /* Record the fields for the semantic handler. */
1800 FLD (f_disp9
) = f_disp9
;
1801 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1802 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_str14h", "f_disp9 0x%x", 'x', f_disp9
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1804 #if WITH_PROFILE_MODEL_P
1805 /* Record the fields for profiling. */
1806 if (PROFILE_MODEL_P (current_cpu
))
1809 FLD (in_h_gr_14
) = 14;
1818 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1819 CGEN_INSN_INT insn
= base_insn
;
1820 #define FLD(f) abuf->fields.fmt_str14b.f
1824 f_disp8
= EXTRACT_MSB0_INT (insn
, 16, 4, 8);
1825 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1827 /* Record the fields for the semantic handler. */
1828 FLD (f_disp8
) = f_disp8
;
1829 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1830 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_str14b", "f_disp8 0x%x", 'x', f_disp8
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1832 #if WITH_PROFILE_MODEL_P
1833 /* Record the fields for profiling. */
1834 if (PROFILE_MODEL_P (current_cpu
))
1837 FLD (in_h_gr_14
) = 14;
1846 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1847 CGEN_INSN_INT insn
= base_insn
;
1848 #define FLD(f) abuf->fields.fmt_str15.f
1852 f_udisp6
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 4)) << (2));
1853 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1855 /* Record the fields for the semantic handler. */
1856 FLD (f_udisp6
) = f_udisp6
;
1857 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1858 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_str15", "f_udisp6 0x%x", 'x', f_udisp6
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1860 #if WITH_PROFILE_MODEL_P
1861 /* Record the fields for profiling. */
1862 if (PROFILE_MODEL_P (current_cpu
))
1865 FLD (in_h_gr_15
) = 15;
1872 extract_fmt_str15gr
:
1874 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1875 CGEN_INSN_INT insn
= base_insn
;
1876 #define FLD(f) abuf->fields.fmt_str15gr.f
1879 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1881 /* Record the fields for the semantic handler. */
1882 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1883 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_str15gr", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1885 #if WITH_PROFILE_MODEL_P
1886 /* Record the fields for profiling. */
1887 if (PROFILE_MODEL_P (current_cpu
))
1890 FLD (in_h_gr_15
) = 15;
1891 FLD (out_h_gr_15
) = 15;
1898 extract_fmt_str15dr
:
1900 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1901 CGEN_INSN_INT insn
= base_insn
;
1902 #define FLD(f) abuf->fields.fmt_str15dr.f
1905 f_Rs2
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1907 /* Record the fields for the semantic handler. */
1908 FLD (f_Rs2
) = f_Rs2
;
1909 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_str15dr", "f_Rs2 0x%x", 'x', f_Rs2
, (char *) 0));
1911 #if WITH_PROFILE_MODEL_P
1912 /* Record the fields for profiling. */
1913 if (PROFILE_MODEL_P (current_cpu
))
1915 FLD (in_h_gr_15
) = 15;
1916 FLD (out_h_gr_15
) = 15;
1923 extract_fmt_str15ps
:
1925 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1926 CGEN_INSN_INT insn
= base_insn
;
1927 #define FLD(f) abuf->fields.fmt_str15ps.f
1930 /* Record the fields for the semantic handler. */
1931 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_str15ps", (char *) 0));
1933 #if WITH_PROFILE_MODEL_P
1934 /* Record the fields for profiling. */
1935 if (PROFILE_MODEL_P (current_cpu
))
1937 FLD (in_h_gr_15
) = 15;
1938 FLD (out_h_gr_15
) = 15;
1947 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1948 CGEN_INSN_INT insn
= base_insn
;
1949 #define FLD(f) abuf->fields.fmt_mov.f
1953 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1954 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1956 /* Record the fields for the semantic handler. */
1957 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
1958 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1959 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mov", "Rj 0x%x", 'x', f_Rj
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1961 #if WITH_PROFILE_MODEL_P
1962 /* Record the fields for profiling. */
1963 if (PROFILE_MODEL_P (current_cpu
))
1966 FLD (out_Ri
) = f_Ri
;
1975 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
1976 CGEN_INSN_INT insn
= base_insn
;
1977 #define FLD(f) abuf->fields.fmt_movdr.f
1981 f_Rs1
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
1982 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
1984 /* Record the fields for the semantic handler. */
1985 FLD (f_Rs1
) = f_Rs1
;
1986 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
1987 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_movdr", "f_Rs1 0x%x", 'x', f_Rs1
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
1989 #if WITH_PROFILE_MODEL_P
1990 /* Record the fields for profiling. */
1991 if (PROFILE_MODEL_P (current_cpu
))
1993 FLD (out_Ri
) = f_Ri
;
2002 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2003 CGEN_INSN_INT insn
= base_insn
;
2004 #define FLD(f) abuf->fields.fmt_movps.f
2007 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2009 /* Record the fields for the semantic handler. */
2010 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2011 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_movps", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2013 #if WITH_PROFILE_MODEL_P
2014 /* Record the fields for profiling. */
2015 if (PROFILE_MODEL_P (current_cpu
))
2017 FLD (out_Ri
) = f_Ri
;
2026 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2027 CGEN_INSN_INT insn
= base_insn
;
2028 #define FLD(f) abuf->fields.fmt_mov2dr.f
2032 f_Rs1
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
2033 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2035 /* Record the fields for the semantic handler. */
2036 FLD (f_Rs1
) = f_Rs1
;
2037 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2038 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mov2dr", "f_Rs1 0x%x", 'x', f_Rs1
, "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2040 #if WITH_PROFILE_MODEL_P
2041 /* Record the fields for profiling. */
2042 if (PROFILE_MODEL_P (current_cpu
))
2053 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2054 CGEN_INSN_INT insn
= base_insn
;
2055 #define FLD(f) abuf->fields.fmt_mov2ps.f
2058 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2060 /* Record the fields for the semantic handler. */
2061 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2062 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mov2ps", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2064 #if WITH_PROFILE_MODEL_P
2065 /* Record the fields for profiling. */
2066 if (PROFILE_MODEL_P (current_cpu
))
2077 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2078 CGEN_INSN_INT insn
= base_insn
;
2079 #define FLD(f) abuf->fields.cti.fields.fmt_jmp.f
2082 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2084 /* Record the fields for the semantic handler. */
2085 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2086 SEM_BRANCH_INIT_EXTRACT (abuf
);
2087 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_jmp", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2089 #if WITH_PROFILE_MODEL_P
2090 /* Record the fields for profiling. */
2091 if (PROFILE_MODEL_P (current_cpu
))
2102 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2103 CGEN_INSN_INT insn
= base_insn
;
2104 #define FLD(f) abuf->fields.cti.fields.fmt_callr.f
2107 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2109 /* Record the fields for the semantic handler. */
2110 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2111 SEM_BRANCH_INIT_EXTRACT (abuf
);
2112 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_callr", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2114 #if WITH_PROFILE_MODEL_P
2115 /* Record the fields for profiling. */
2116 if (PROFILE_MODEL_P (current_cpu
))
2127 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2128 CGEN_INSN_INT insn
= base_insn
;
2129 #define FLD(f) abuf->fields.cti.fields.fmt_call.f
2132 f_rel12
= ((((EXTRACT_MSB0_INT (insn
, 16, 5, 11)) << (1))) + (((pc
) + (2))));
2134 /* Record the fields for the semantic handler. */
2135 FLD (i_label12
) = f_rel12
;
2136 SEM_BRANCH_INIT_EXTRACT (abuf
);
2137 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_call", "label12 0x%x", 'x', f_rel12
, (char *) 0));
2139 #if WITH_PROFILE_MODEL_P
2140 /* Record the fields for profiling. */
2141 if (PROFILE_MODEL_P (current_cpu
))
2151 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2152 CGEN_INSN_INT insn
= base_insn
;
2153 #define FLD(f) abuf->fields.cti.fields.fmt_ret.f
2156 /* Record the fields for the semantic handler. */
2157 SEM_BRANCH_INIT_EXTRACT (abuf
);
2158 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ret", (char *) 0));
2160 #if WITH_PROFILE_MODEL_P
2161 /* Record the fields for profiling. */
2162 if (PROFILE_MODEL_P (current_cpu
))
2172 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2173 CGEN_INSN_INT insn
= base_insn
;
2174 #define FLD(f) abuf->fields.cti.fields.fmt_int.f
2177 f_u8
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2179 /* Record the fields for the semantic handler. */
2181 SEM_BRANCH_INIT_EXTRACT (abuf
);
2182 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_int", "f_u8 0x%x", 'x', f_u8
, (char *) 0));
2184 #if WITH_PROFILE_MODEL_P
2185 /* Record the fields for profiling. */
2186 if (PROFILE_MODEL_P (current_cpu
))
2196 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2197 CGEN_INSN_INT insn
= base_insn
;
2198 #define FLD(f) abuf->fields.cti.fields.fmt_inte.f
2201 /* Record the fields for the semantic handler. */
2202 SEM_BRANCH_INIT_EXTRACT (abuf
);
2203 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_inte", (char *) 0));
2205 #if WITH_PROFILE_MODEL_P
2206 /* Record the fields for profiling. */
2207 if (PROFILE_MODEL_P (current_cpu
))
2217 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2218 CGEN_INSN_INT insn
= base_insn
;
2219 #define FLD(f) abuf->fields.cti.fields.fmt_reti.f
2222 /* Record the fields for the semantic handler. */
2223 SEM_BRANCH_INIT_EXTRACT (abuf
);
2224 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_reti", (char *) 0));
2226 #if WITH_PROFILE_MODEL_P
2227 /* Record the fields for profiling. */
2228 if (PROFILE_MODEL_P (current_cpu
))
2238 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2239 CGEN_INSN_INT insn
= base_insn
;
2240 #define FLD(f) abuf->fields.cti.fields.fmt_brad.f
2243 f_rel9
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (1))) + (((pc
) + (2))));
2245 /* Record the fields for the semantic handler. */
2246 FLD (i_label9
) = f_rel9
;
2247 SEM_BRANCH_INIT_EXTRACT (abuf
);
2248 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_brad", "label9 0x%x", 'x', f_rel9
, (char *) 0));
2250 #if WITH_PROFILE_MODEL_P
2251 /* Record the fields for profiling. */
2252 if (PROFILE_MODEL_P (current_cpu
))
2262 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2263 CGEN_INSN_INT insn
= base_insn
;
2264 #define FLD(f) abuf->fields.fmt_bnod.f
2267 /* Record the fields for the semantic handler. */
2268 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bnod", (char *) 0));
2276 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2277 CGEN_INSN_INT insn
= base_insn
;
2278 #define FLD(f) abuf->fields.cti.fields.fmt_beqd.f
2281 f_rel9
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (1))) + (((pc
) + (2))));
2283 /* Record the fields for the semantic handler. */
2284 FLD (i_label9
) = f_rel9
;
2285 SEM_BRANCH_INIT_EXTRACT (abuf
);
2286 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_beqd", "label9 0x%x", 'x', f_rel9
, (char *) 0));
2288 #if WITH_PROFILE_MODEL_P
2289 /* Record the fields for profiling. */
2290 if (PROFILE_MODEL_P (current_cpu
))
2300 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2301 CGEN_INSN_INT insn
= base_insn
;
2302 #define FLD(f) abuf->fields.cti.fields.fmt_bcd.f
2305 f_rel9
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (1))) + (((pc
) + (2))));
2307 /* Record the fields for the semantic handler. */
2308 FLD (i_label9
) = f_rel9
;
2309 SEM_BRANCH_INIT_EXTRACT (abuf
);
2310 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bcd", "label9 0x%x", 'x', f_rel9
, (char *) 0));
2312 #if WITH_PROFILE_MODEL_P
2313 /* Record the fields for profiling. */
2314 if (PROFILE_MODEL_P (current_cpu
))
2324 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2325 CGEN_INSN_INT insn
= base_insn
;
2326 #define FLD(f) abuf->fields.cti.fields.fmt_bnd.f
2329 f_rel9
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (1))) + (((pc
) + (2))));
2331 /* Record the fields for the semantic handler. */
2332 FLD (i_label9
) = f_rel9
;
2333 SEM_BRANCH_INIT_EXTRACT (abuf
);
2334 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bnd", "label9 0x%x", 'x', f_rel9
, (char *) 0));
2336 #if WITH_PROFILE_MODEL_P
2337 /* Record the fields for profiling. */
2338 if (PROFILE_MODEL_P (current_cpu
))
2348 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2349 CGEN_INSN_INT insn
= base_insn
;
2350 #define FLD(f) abuf->fields.cti.fields.fmt_bvd.f
2353 f_rel9
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (1))) + (((pc
) + (2))));
2355 /* Record the fields for the semantic handler. */
2356 FLD (i_label9
) = f_rel9
;
2357 SEM_BRANCH_INIT_EXTRACT (abuf
);
2358 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bvd", "label9 0x%x", 'x', f_rel9
, (char *) 0));
2360 #if WITH_PROFILE_MODEL_P
2361 /* Record the fields for profiling. */
2362 if (PROFILE_MODEL_P (current_cpu
))
2372 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2373 CGEN_INSN_INT insn
= base_insn
;
2374 #define FLD(f) abuf->fields.cti.fields.fmt_bltd.f
2377 f_rel9
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (1))) + (((pc
) + (2))));
2379 /* Record the fields for the semantic handler. */
2380 FLD (i_label9
) = f_rel9
;
2381 SEM_BRANCH_INIT_EXTRACT (abuf
);
2382 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bltd", "label9 0x%x", 'x', f_rel9
, (char *) 0));
2384 #if WITH_PROFILE_MODEL_P
2385 /* Record the fields for profiling. */
2386 if (PROFILE_MODEL_P (current_cpu
))
2396 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2397 CGEN_INSN_INT insn
= base_insn
;
2398 #define FLD(f) abuf->fields.cti.fields.fmt_bled.f
2401 f_rel9
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (1))) + (((pc
) + (2))));
2403 /* Record the fields for the semantic handler. */
2404 FLD (i_label9
) = f_rel9
;
2405 SEM_BRANCH_INIT_EXTRACT (abuf
);
2406 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bled", "label9 0x%x", 'x', f_rel9
, (char *) 0));
2408 #if WITH_PROFILE_MODEL_P
2409 /* Record the fields for profiling. */
2410 if (PROFILE_MODEL_P (current_cpu
))
2420 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2421 CGEN_INSN_INT insn
= base_insn
;
2422 #define FLD(f) abuf->fields.cti.fields.fmt_blsd.f
2425 f_rel9
= ((((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (1))) + (((pc
) + (2))));
2427 /* Record the fields for the semantic handler. */
2428 FLD (i_label9
) = f_rel9
;
2429 SEM_BRANCH_INIT_EXTRACT (abuf
);
2430 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_blsd", "label9 0x%x", 'x', f_rel9
, (char *) 0));
2432 #if WITH_PROFILE_MODEL_P
2433 /* Record the fields for profiling. */
2434 if (PROFILE_MODEL_P (current_cpu
))
2442 extract_fmt_dmovr13
:
2444 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2445 CGEN_INSN_INT insn
= base_insn
;
2446 #define FLD(f) abuf->fields.fmt_dmovr13.f
2449 f_dir10
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (2));
2451 /* Record the fields for the semantic handler. */
2452 FLD (f_dir10
) = f_dir10
;
2453 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmovr13", "f_dir10 0x%x", 'x', f_dir10
, (char *) 0));
2455 #if WITH_PROFILE_MODEL_P
2456 /* Record the fields for profiling. */
2457 if (PROFILE_MODEL_P (current_cpu
))
2459 FLD (in_h_gr_13
) = 13;
2466 extract_fmt_dmovr13h
:
2468 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2469 CGEN_INSN_INT insn
= base_insn
;
2470 #define FLD(f) abuf->fields.fmt_dmovr13h.f
2473 f_dir9
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (1));
2475 /* Record the fields for the semantic handler. */
2476 FLD (f_dir9
) = f_dir9
;
2477 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmovr13h", "f_dir9 0x%x", 'x', f_dir9
, (char *) 0));
2479 #if WITH_PROFILE_MODEL_P
2480 /* Record the fields for profiling. */
2481 if (PROFILE_MODEL_P (current_cpu
))
2483 FLD (in_h_gr_13
) = 13;
2490 extract_fmt_dmovr13b
:
2492 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2493 CGEN_INSN_INT insn
= base_insn
;
2494 #define FLD(f) abuf->fields.fmt_dmovr13b.f
2497 f_dir8
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2499 /* Record the fields for the semantic handler. */
2500 FLD (f_dir8
) = f_dir8
;
2501 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmovr13b", "f_dir8 0x%x", 'x', f_dir8
, (char *) 0));
2503 #if WITH_PROFILE_MODEL_P
2504 /* Record the fields for profiling. */
2505 if (PROFILE_MODEL_P (current_cpu
))
2507 FLD (in_h_gr_13
) = 13;
2514 extract_fmt_dmovr13pi
:
2516 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2517 CGEN_INSN_INT insn
= base_insn
;
2518 #define FLD(f) abuf->fields.fmt_dmovr13pi.f
2521 f_dir10
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (2));
2523 /* Record the fields for the semantic handler. */
2524 FLD (f_dir10
) = f_dir10
;
2525 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmovr13pi", "f_dir10 0x%x", 'x', f_dir10
, (char *) 0));
2527 #if WITH_PROFILE_MODEL_P
2528 /* Record the fields for profiling. */
2529 if (PROFILE_MODEL_P (current_cpu
))
2531 FLD (in_h_gr_13
) = 13;
2532 FLD (out_h_gr_13
) = 13;
2539 extract_fmt_dmovr13pih
:
2541 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2542 CGEN_INSN_INT insn
= base_insn
;
2543 #define FLD(f) abuf->fields.fmt_dmovr13pih.f
2546 f_dir9
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (1));
2548 /* Record the fields for the semantic handler. */
2549 FLD (f_dir9
) = f_dir9
;
2550 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmovr13pih", "f_dir9 0x%x", 'x', f_dir9
, (char *) 0));
2552 #if WITH_PROFILE_MODEL_P
2553 /* Record the fields for profiling. */
2554 if (PROFILE_MODEL_P (current_cpu
))
2556 FLD (in_h_gr_13
) = 13;
2557 FLD (out_h_gr_13
) = 13;
2564 extract_fmt_dmovr13pib
:
2566 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2567 CGEN_INSN_INT insn
= base_insn
;
2568 #define FLD(f) abuf->fields.fmt_dmovr13pib.f
2571 f_dir8
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2573 /* Record the fields for the semantic handler. */
2574 FLD (f_dir8
) = f_dir8
;
2575 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmovr13pib", "f_dir8 0x%x", 'x', f_dir8
, (char *) 0));
2577 #if WITH_PROFILE_MODEL_P
2578 /* Record the fields for profiling. */
2579 if (PROFILE_MODEL_P (current_cpu
))
2581 FLD (in_h_gr_13
) = 13;
2582 FLD (out_h_gr_13
) = 13;
2589 extract_fmt_dmovr15pi
:
2591 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2592 CGEN_INSN_INT insn
= base_insn
;
2593 #define FLD(f) abuf->fields.fmt_dmovr15pi.f
2596 f_dir10
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (2));
2598 /* Record the fields for the semantic handler. */
2599 FLD (f_dir10
) = f_dir10
;
2600 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmovr15pi", "f_dir10 0x%x", 'x', f_dir10
, (char *) 0));
2602 #if WITH_PROFILE_MODEL_P
2603 /* Record the fields for profiling. */
2604 if (PROFILE_MODEL_P (current_cpu
))
2606 FLD (in_h_gr_15
) = 15;
2607 FLD (out_h_gr_15
) = 15;
2614 extract_fmt_dmov2r13
:
2616 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2617 CGEN_INSN_INT insn
= base_insn
;
2618 #define FLD(f) abuf->fields.fmt_dmov2r13.f
2621 f_dir10
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (2));
2623 /* Record the fields for the semantic handler. */
2624 FLD (f_dir10
) = f_dir10
;
2625 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmov2r13", "f_dir10 0x%x", 'x', f_dir10
, (char *) 0));
2627 #if WITH_PROFILE_MODEL_P
2628 /* Record the fields for profiling. */
2629 if (PROFILE_MODEL_P (current_cpu
))
2631 FLD (out_h_gr_13
) = 13;
2638 extract_fmt_dmov2r13h
:
2640 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2641 CGEN_INSN_INT insn
= base_insn
;
2642 #define FLD(f) abuf->fields.fmt_dmov2r13h.f
2645 f_dir9
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (1));
2647 /* Record the fields for the semantic handler. */
2648 FLD (f_dir9
) = f_dir9
;
2649 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmov2r13h", "f_dir9 0x%x", 'x', f_dir9
, (char *) 0));
2651 #if WITH_PROFILE_MODEL_P
2652 /* Record the fields for profiling. */
2653 if (PROFILE_MODEL_P (current_cpu
))
2655 FLD (out_h_gr_13
) = 13;
2662 extract_fmt_dmov2r13b
:
2664 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2665 CGEN_INSN_INT insn
= base_insn
;
2666 #define FLD(f) abuf->fields.fmt_dmov2r13b.f
2669 f_dir8
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2671 /* Record the fields for the semantic handler. */
2672 FLD (f_dir8
) = f_dir8
;
2673 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmov2r13b", "f_dir8 0x%x", 'x', f_dir8
, (char *) 0));
2675 #if WITH_PROFILE_MODEL_P
2676 /* Record the fields for profiling. */
2677 if (PROFILE_MODEL_P (current_cpu
))
2679 FLD (out_h_gr_13
) = 13;
2686 extract_fmt_dmov2r13pi
:
2688 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2689 CGEN_INSN_INT insn
= base_insn
;
2690 #define FLD(f) abuf->fields.fmt_dmov2r13pi.f
2693 f_dir10
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (2));
2695 /* Record the fields for the semantic handler. */
2696 FLD (f_dir10
) = f_dir10
;
2697 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmov2r13pi", "f_dir10 0x%x", 'x', f_dir10
, (char *) 0));
2699 #if WITH_PROFILE_MODEL_P
2700 /* Record the fields for profiling. */
2701 if (PROFILE_MODEL_P (current_cpu
))
2703 FLD (in_h_gr_13
) = 13;
2704 FLD (out_h_gr_13
) = 13;
2711 extract_fmt_dmov2r13pih
:
2713 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2714 CGEN_INSN_INT insn
= base_insn
;
2715 #define FLD(f) abuf->fields.fmt_dmov2r13pih.f
2718 f_dir9
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (1));
2720 /* Record the fields for the semantic handler. */
2721 FLD (f_dir9
) = f_dir9
;
2722 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmov2r13pih", "f_dir9 0x%x", 'x', f_dir9
, (char *) 0));
2724 #if WITH_PROFILE_MODEL_P
2725 /* Record the fields for profiling. */
2726 if (PROFILE_MODEL_P (current_cpu
))
2728 FLD (in_h_gr_13
) = 13;
2729 FLD (out_h_gr_13
) = 13;
2736 extract_fmt_dmov2r13pib
:
2738 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2739 CGEN_INSN_INT insn
= base_insn
;
2740 #define FLD(f) abuf->fields.fmt_dmov2r13pib.f
2743 f_dir8
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2745 /* Record the fields for the semantic handler. */
2746 FLD (f_dir8
) = f_dir8
;
2747 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmov2r13pib", "f_dir8 0x%x", 'x', f_dir8
, (char *) 0));
2749 #if WITH_PROFILE_MODEL_P
2750 /* Record the fields for profiling. */
2751 if (PROFILE_MODEL_P (current_cpu
))
2753 FLD (in_h_gr_13
) = 13;
2754 FLD (out_h_gr_13
) = 13;
2761 extract_fmt_dmov2r15pd
:
2763 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2764 CGEN_INSN_INT insn
= base_insn
;
2765 #define FLD(f) abuf->fields.fmt_dmov2r15pd.f
2768 f_dir10
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (2));
2770 /* Record the fields for the semantic handler. */
2771 FLD (f_dir10
) = f_dir10
;
2772 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_dmov2r15pd", "f_dir10 0x%x", 'x', f_dir10
, (char *) 0));
2774 #if WITH_PROFILE_MODEL_P
2775 /* Record the fields for profiling. */
2776 if (PROFILE_MODEL_P (current_cpu
))
2778 FLD (in_h_gr_15
) = 15;
2779 FLD (out_h_gr_15
) = 15;
2788 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2789 CGEN_INSN_INT insn
= base_insn
;
2790 #define FLD(f) abuf->fields.fmt_ldres.f
2793 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2795 /* Record the fields for the semantic handler. */
2796 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2797 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldres", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2799 #if WITH_PROFILE_MODEL_P
2800 /* Record the fields for profiling. */
2801 if (PROFILE_MODEL_P (current_cpu
))
2804 FLD (out_Ri
) = f_Ri
;
2813 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2814 CGEN_INSN_INT insn
= base_insn
;
2815 #define FLD(f) abuf->fields.fmt_copop.f
2816 /* Contents of trailing part of insn. */
2819 word_1
= GETIMEMUHI (current_cpu
, pc
+ 2);
2821 /* Record the fields for the semantic handler. */
2822 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_copop", (char *) 0));
2830 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2831 CGEN_INSN_INT insn
= base_insn
;
2832 #define FLD(f) abuf->fields.fmt_andccr.f
2835 f_u8
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2837 /* Record the fields for the semantic handler. */
2839 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_andccr", "f_u8 0x%x", 'x', f_u8
, (char *) 0));
2847 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2848 CGEN_INSN_INT insn
= base_insn
;
2849 #define FLD(f) abuf->fields.fmt_stilm.f
2852 f_u8
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2854 /* Record the fields for the semantic handler. */
2856 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_stilm", "f_u8 0x%x", 'x', f_u8
, (char *) 0));
2864 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2865 CGEN_INSN_INT insn
= base_insn
;
2866 #define FLD(f) abuf->fields.fmt_addsp.f
2869 f_s10
= ((EXTRACT_MSB0_INT (insn
, 16, 8, 8)) << (2));
2871 /* Record the fields for the semantic handler. */
2872 FLD (f_s10
) = f_s10
;
2873 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addsp", "f_s10 0x%x", 'x', f_s10
, (char *) 0));
2875 #if WITH_PROFILE_MODEL_P
2876 /* Record the fields for profiling. */
2877 if (PROFILE_MODEL_P (current_cpu
))
2879 FLD (in_h_gr_15
) = 15;
2880 FLD (out_h_gr_15
) = 15;
2889 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2890 CGEN_INSN_INT insn
= base_insn
;
2891 #define FLD(f) abuf->fields.fmt_extsb.f
2894 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2896 /* Record the fields for the semantic handler. */
2897 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2898 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_extsb", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2900 #if WITH_PROFILE_MODEL_P
2901 /* Record the fields for profiling. */
2902 if (PROFILE_MODEL_P (current_cpu
))
2905 FLD (out_Ri
) = f_Ri
;
2914 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2915 CGEN_INSN_INT insn
= base_insn
;
2916 #define FLD(f) abuf->fields.fmt_extub.f
2919 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2921 /* Record the fields for the semantic handler. */
2922 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2923 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_extub", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2925 #if WITH_PROFILE_MODEL_P
2926 /* Record the fields for profiling. */
2927 if (PROFILE_MODEL_P (current_cpu
))
2930 FLD (out_Ri
) = f_Ri
;
2939 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2940 CGEN_INSN_INT insn
= base_insn
;
2941 #define FLD(f) abuf->fields.fmt_extsh.f
2944 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2946 /* Record the fields for the semantic handler. */
2947 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2948 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_extsh", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2950 #if WITH_PROFILE_MODEL_P
2951 /* Record the fields for profiling. */
2952 if (PROFILE_MODEL_P (current_cpu
))
2955 FLD (out_Ri
) = f_Ri
;
2964 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2965 CGEN_INSN_INT insn
= base_insn
;
2966 #define FLD(f) abuf->fields.fmt_extuh.f
2969 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
2971 /* Record the fields for the semantic handler. */
2972 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
2973 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_extuh", "Ri 0x%x", 'x', f_Ri
, (char *) 0));
2975 #if WITH_PROFILE_MODEL_P
2976 /* Record the fields for profiling. */
2977 if (PROFILE_MODEL_P (current_cpu
))
2980 FLD (out_Ri
) = f_Ri
;
2989 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
2990 CGEN_INSN_INT insn
= base_insn
;
2991 #define FLD(f) abuf->fields.fmt_ldm0.f
2992 UINT f_reglist_low_ld
;
2994 f_reglist_low_ld
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
2996 /* Record the fields for the semantic handler. */
2997 FLD (f_reglist_low_ld
) = f_reglist_low_ld
;
2998 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldm0", "f_reglist_low_ld 0x%x", 'x', f_reglist_low_ld
, (char *) 0));
3000 #if WITH_PROFILE_MODEL_P
3001 /* Record the fields for profiling. */
3002 if (PROFILE_MODEL_P (current_cpu
))
3004 FLD (in_h_gr_15
) = 15;
3005 FLD (out_h_gr_0
) = 0;
3006 FLD (out_h_gr_1
) = 1;
3007 FLD (out_h_gr_15
) = 15;
3008 FLD (out_h_gr_2
) = 2;
3009 FLD (out_h_gr_3
) = 3;
3010 FLD (out_h_gr_4
) = 4;
3011 FLD (out_h_gr_5
) = 5;
3012 FLD (out_h_gr_6
) = 6;
3013 FLD (out_h_gr_7
) = 7;
3022 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
3023 CGEN_INSN_INT insn
= base_insn
;
3024 #define FLD(f) abuf->fields.fmt_ldm1.f
3025 UINT f_reglist_hi_ld
;
3027 f_reglist_hi_ld
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
3029 /* Record the fields for the semantic handler. */
3030 FLD (f_reglist_hi_ld
) = f_reglist_hi_ld
;
3031 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldm1", "f_reglist_hi_ld 0x%x", 'x', f_reglist_hi_ld
, (char *) 0));
3033 #if WITH_PROFILE_MODEL_P
3034 /* Record the fields for profiling. */
3035 if (PROFILE_MODEL_P (current_cpu
))
3037 FLD (in_h_gr_15
) = 15;
3038 FLD (out_h_gr_10
) = 10;
3039 FLD (out_h_gr_11
) = 11;
3040 FLD (out_h_gr_12
) = 12;
3041 FLD (out_h_gr_13
) = 13;
3042 FLD (out_h_gr_14
) = 14;
3043 FLD (out_h_gr_15
) = 15;
3044 FLD (out_h_gr_8
) = 8;
3045 FLD (out_h_gr_9
) = 9;
3054 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
3055 CGEN_INSN_INT insn
= base_insn
;
3056 #define FLD(f) abuf->fields.fmt_stm0.f
3057 UINT f_reglist_low_st
;
3059 f_reglist_low_st
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
3061 /* Record the fields for the semantic handler. */
3062 FLD (f_reglist_low_st
) = f_reglist_low_st
;
3063 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_stm0", "f_reglist_low_st 0x%x", 'x', f_reglist_low_st
, (char *) 0));
3065 #if WITH_PROFILE_MODEL_P
3066 /* Record the fields for profiling. */
3067 if (PROFILE_MODEL_P (current_cpu
))
3069 FLD (in_h_gr_0
) = 0;
3070 FLD (in_h_gr_1
) = 1;
3071 FLD (in_h_gr_15
) = 15;
3072 FLD (in_h_gr_2
) = 2;
3073 FLD (in_h_gr_3
) = 3;
3074 FLD (in_h_gr_4
) = 4;
3075 FLD (in_h_gr_5
) = 5;
3076 FLD (in_h_gr_6
) = 6;
3077 FLD (in_h_gr_7
) = 7;
3078 FLD (out_h_gr_15
) = 15;
3087 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
3088 CGEN_INSN_INT insn
= base_insn
;
3089 #define FLD(f) abuf->fields.fmt_stm1.f
3090 UINT f_reglist_hi_st
;
3092 f_reglist_hi_st
= EXTRACT_MSB0_UINT (insn
, 16, 8, 8);
3094 /* Record the fields for the semantic handler. */
3095 FLD (f_reglist_hi_st
) = f_reglist_hi_st
;
3096 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_stm1", "f_reglist_hi_st 0x%x", 'x', f_reglist_hi_st
, (char *) 0));
3098 #if WITH_PROFILE_MODEL_P
3099 /* Record the fields for profiling. */
3100 if (PROFILE_MODEL_P (current_cpu
))
3102 FLD (in_h_gr_10
) = 10;
3103 FLD (in_h_gr_11
) = 11;
3104 FLD (in_h_gr_12
) = 12;
3105 FLD (in_h_gr_13
) = 13;
3106 FLD (in_h_gr_14
) = 14;
3107 FLD (in_h_gr_15
) = 15;
3108 FLD (in_h_gr_8
) = 8;
3109 FLD (in_h_gr_9
) = 9;
3110 FLD (out_h_gr_15
) = 15;
3119 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
3120 CGEN_INSN_INT insn
= base_insn
;
3121 #define FLD(f) abuf->fields.fmt_enter.f
3124 f_u10
= ((EXTRACT_MSB0_UINT (insn
, 16, 8, 8)) << (2));
3126 /* Record the fields for the semantic handler. */
3127 FLD (f_u10
) = f_u10
;
3128 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_enter", "f_u10 0x%x", 'x', f_u10
, (char *) 0));
3130 #if WITH_PROFILE_MODEL_P
3131 /* Record the fields for profiling. */
3132 if (PROFILE_MODEL_P (current_cpu
))
3134 FLD (in_h_gr_14
) = 14;
3135 FLD (in_h_gr_15
) = 15;
3136 FLD (out_h_gr_14
) = 14;
3137 FLD (out_h_gr_15
) = 15;
3146 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
3147 CGEN_INSN_INT insn
= base_insn
;
3148 #define FLD(f) abuf->fields.fmt_leave.f
3151 /* Record the fields for the semantic handler. */
3152 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_leave", (char *) 0));
3154 #if WITH_PROFILE_MODEL_P
3155 /* Record the fields for profiling. */
3156 if (PROFILE_MODEL_P (current_cpu
))
3158 FLD (in_h_gr_14
) = 14;
3159 FLD (in_h_gr_15
) = 15;
3160 FLD (out_h_gr_14
) = 14;
3161 FLD (out_h_gr_15
) = 15;
3170 const IDESC
*idesc
= &fr30bf_insn_data
[itype
];
3171 CGEN_INSN_INT insn
= base_insn
;
3172 #define FLD(f) abuf->fields.fmt_xchb.f
3176 f_Rj
= EXTRACT_MSB0_UINT (insn
, 16, 8, 4);
3177 f_Ri
= EXTRACT_MSB0_UINT (insn
, 16, 12, 4);
3179 /* Record the fields for the semantic handler. */
3180 FLD (i_Ri
) = & CPU (h_gr
)[f_Ri
];
3181 FLD (i_Rj
) = & CPU (h_gr
)[f_Rj
];
3182 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_xchb", "Ri 0x%x", 'x', f_Ri
, "Rj 0x%x", 'x', f_Rj
, (char *) 0));
3184 #if WITH_PROFILE_MODEL_P
3185 /* Record the fields for profiling. */
3186 if (PROFILE_MODEL_P (current_cpu
))
3190 FLD (out_Ri
) = f_Ri
;