Commit | Line | Data |
---|---|---|
c906108c SS |
1 | /* Simulator instruction decoder for fr30bf. |
2 | ||
3 | THIS FILE IS MACHINE GENERATED WITH CGEN. | |
4 | ||
3e43c635 | 5 | Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. |
c906108c | 6 | |
3e43c635 | 7 | This file is part of the GNU simulators. |
c906108c SS |
8 | |
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) | |
12 | any later version. | |
13 | ||
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. | |
18 | ||
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. | |
22 | ||
23 | */ | |
24 | ||
25 | #define WANT_CPU fr30bf | |
26 | #define WANT_CPU_FR30BF | |
27 | ||
28 | #include "sim-main.h" | |
29 | #include "sim-assert.h" | |
30 | ||
c906108c SS |
31 | /* The instruction descriptor array. |
32 | This is computed at runtime. Space for it is not malloc'd to save a | |
33 | teensy bit of cpu in the decoder. Moving it to malloc space is trivial | |
34 | but won't be done until necessary (we don't currently support the runtime | |
35 | addition of instructions nor an SMP machine with different cpus). */ | |
3e43c635 | 36 | static IDESC fr30bf_insn_data[FR30BF_INSN_XCHB + 1]; |
c906108c | 37 | |
c906108c SS |
38 | /* Commas between elements are contained in the macros. |
39 | Some of these are conditionally compiled out. */ | |
40 | ||
41 | static const struct insn_sem fr30bf_insn_sem[] = | |
42 | { | |
96baa820 JM |
43 | { VIRTUAL_INSN_X_INVALID, FR30BF_INSN_X_INVALID, FR30BF_SFMT_EMPTY }, |
44 | { VIRTUAL_INSN_X_AFTER, FR30BF_INSN_X_AFTER, FR30BF_SFMT_EMPTY }, | |
45 | { VIRTUAL_INSN_X_BEFORE, FR30BF_INSN_X_BEFORE, FR30BF_SFMT_EMPTY }, | |
46 | { VIRTUAL_INSN_X_CTI_CHAIN, FR30BF_INSN_X_CTI_CHAIN, FR30BF_SFMT_EMPTY }, | |
47 | { VIRTUAL_INSN_X_CHAIN, FR30BF_INSN_X_CHAIN, FR30BF_SFMT_EMPTY }, | |
48 | { VIRTUAL_INSN_X_BEGIN, FR30BF_INSN_X_BEGIN, FR30BF_SFMT_EMPTY }, | |
49 | { FR30_INSN_ADD, FR30BF_INSN_ADD, FR30BF_SFMT_ADD }, | |
50 | { FR30_INSN_ADDI, FR30BF_INSN_ADDI, FR30BF_SFMT_ADDI }, | |
51 | { FR30_INSN_ADD2, FR30BF_INSN_ADD2, FR30BF_SFMT_ADD2 }, | |
52 | { FR30_INSN_ADDC, FR30BF_INSN_ADDC, FR30BF_SFMT_ADDC }, | |
53 | { FR30_INSN_ADDN, FR30BF_INSN_ADDN, FR30BF_SFMT_ADDN }, | |
54 | { FR30_INSN_ADDNI, FR30BF_INSN_ADDNI, FR30BF_SFMT_ADDNI }, | |
55 | { FR30_INSN_ADDN2, FR30BF_INSN_ADDN2, FR30BF_SFMT_ADDN2 }, | |
56 | { FR30_INSN_SUB, FR30BF_INSN_SUB, FR30BF_SFMT_ADD }, | |
57 | { FR30_INSN_SUBC, FR30BF_INSN_SUBC, FR30BF_SFMT_ADDC }, | |
58 | { FR30_INSN_SUBN, FR30BF_INSN_SUBN, FR30BF_SFMT_ADDN }, | |
59 | { FR30_INSN_CMP, FR30BF_INSN_CMP, FR30BF_SFMT_CMP }, | |
60 | { FR30_INSN_CMPI, FR30BF_INSN_CMPI, FR30BF_SFMT_CMPI }, | |
61 | { FR30_INSN_CMP2, FR30BF_INSN_CMP2, FR30BF_SFMT_CMP2 }, | |
62 | { FR30_INSN_AND, FR30BF_INSN_AND, FR30BF_SFMT_AND }, | |
63 | { FR30_INSN_OR, FR30BF_INSN_OR, FR30BF_SFMT_AND }, | |
64 | { FR30_INSN_EOR, FR30BF_INSN_EOR, FR30BF_SFMT_AND }, | |
65 | { FR30_INSN_ANDM, FR30BF_INSN_ANDM, FR30BF_SFMT_ANDM }, | |
66 | { FR30_INSN_ANDH, FR30BF_INSN_ANDH, FR30BF_SFMT_ANDH }, | |
67 | { FR30_INSN_ANDB, FR30BF_INSN_ANDB, FR30BF_SFMT_ANDB }, | |
68 | { FR30_INSN_ORM, FR30BF_INSN_ORM, FR30BF_SFMT_ANDM }, | |
69 | { FR30_INSN_ORH, FR30BF_INSN_ORH, FR30BF_SFMT_ANDH }, | |
70 | { FR30_INSN_ORB, FR30BF_INSN_ORB, FR30BF_SFMT_ANDB }, | |
71 | { FR30_INSN_EORM, FR30BF_INSN_EORM, FR30BF_SFMT_ANDM }, | |
72 | { FR30_INSN_EORH, FR30BF_INSN_EORH, FR30BF_SFMT_ANDH }, | |
73 | { FR30_INSN_EORB, FR30BF_INSN_EORB, FR30BF_SFMT_ANDB }, | |
74 | { FR30_INSN_BANDL, FR30BF_INSN_BANDL, FR30BF_SFMT_BANDL }, | |
75 | { FR30_INSN_BORL, FR30BF_INSN_BORL, FR30BF_SFMT_BANDL }, | |
76 | { FR30_INSN_BEORL, FR30BF_INSN_BEORL, FR30BF_SFMT_BANDL }, | |
77 | { FR30_INSN_BANDH, FR30BF_INSN_BANDH, FR30BF_SFMT_BANDL }, | |
78 | { FR30_INSN_BORH, FR30BF_INSN_BORH, FR30BF_SFMT_BANDL }, | |
79 | { FR30_INSN_BEORH, FR30BF_INSN_BEORH, FR30BF_SFMT_BANDL }, | |
80 | { FR30_INSN_BTSTL, FR30BF_INSN_BTSTL, FR30BF_SFMT_BTSTL }, | |
81 | { FR30_INSN_BTSTH, FR30BF_INSN_BTSTH, FR30BF_SFMT_BTSTL }, | |
82 | { FR30_INSN_MUL, FR30BF_INSN_MUL, FR30BF_SFMT_MUL }, | |
83 | { FR30_INSN_MULU, FR30BF_INSN_MULU, FR30BF_SFMT_MULU }, | |
84 | { FR30_INSN_MULH, FR30BF_INSN_MULH, FR30BF_SFMT_MULH }, | |
85 | { FR30_INSN_MULUH, FR30BF_INSN_MULUH, FR30BF_SFMT_MULH }, | |
86 | { FR30_INSN_DIV0S, FR30BF_INSN_DIV0S, FR30BF_SFMT_DIV0S }, | |
87 | { FR30_INSN_DIV0U, FR30BF_INSN_DIV0U, FR30BF_SFMT_DIV0U }, | |
88 | { FR30_INSN_DIV1, FR30BF_INSN_DIV1, FR30BF_SFMT_DIV1 }, | |
89 | { FR30_INSN_DIV2, FR30BF_INSN_DIV2, FR30BF_SFMT_DIV2 }, | |
90 | { FR30_INSN_DIV3, FR30BF_INSN_DIV3, FR30BF_SFMT_DIV3 }, | |
91 | { FR30_INSN_DIV4S, FR30BF_INSN_DIV4S, FR30BF_SFMT_DIV4S }, | |
92 | { FR30_INSN_LSL, FR30BF_INSN_LSL, FR30BF_SFMT_LSL }, | |
93 | { FR30_INSN_LSLI, FR30BF_INSN_LSLI, FR30BF_SFMT_LSLI }, | |
94 | { FR30_INSN_LSL2, FR30BF_INSN_LSL2, FR30BF_SFMT_LSLI }, | |
95 | { FR30_INSN_LSR, FR30BF_INSN_LSR, FR30BF_SFMT_LSL }, | |
96 | { FR30_INSN_LSRI, FR30BF_INSN_LSRI, FR30BF_SFMT_LSLI }, | |
97 | { FR30_INSN_LSR2, FR30BF_INSN_LSR2, FR30BF_SFMT_LSLI }, | |
98 | { FR30_INSN_ASR, FR30BF_INSN_ASR, FR30BF_SFMT_LSL }, | |
99 | { FR30_INSN_ASRI, FR30BF_INSN_ASRI, FR30BF_SFMT_LSLI }, | |
100 | { FR30_INSN_ASR2, FR30BF_INSN_ASR2, FR30BF_SFMT_LSLI }, | |
101 | { FR30_INSN_LDI8, FR30BF_INSN_LDI8, FR30BF_SFMT_LDI8 }, | |
102 | { FR30_INSN_LDI20, FR30BF_INSN_LDI20, FR30BF_SFMT_LDI20 }, | |
103 | { FR30_INSN_LDI32, FR30BF_INSN_LDI32, FR30BF_SFMT_LDI32 }, | |
104 | { FR30_INSN_LD, FR30BF_INSN_LD, FR30BF_SFMT_LD }, | |
3e43c635 DB |
105 | { FR30_INSN_LDUH, FR30BF_INSN_LDUH, FR30BF_SFMT_LDUH }, |
106 | { FR30_INSN_LDUB, FR30BF_INSN_LDUB, FR30BF_SFMT_LDUB }, | |
96baa820 | 107 | { FR30_INSN_LDR13, FR30BF_INSN_LDR13, FR30BF_SFMT_LDR13 }, |
3e43c635 DB |
108 | { FR30_INSN_LDR13UH, FR30BF_INSN_LDR13UH, FR30BF_SFMT_LDR13UH }, |
109 | { FR30_INSN_LDR13UB, FR30BF_INSN_LDR13UB, FR30BF_SFMT_LDR13UB }, | |
96baa820 JM |
110 | { FR30_INSN_LDR14, FR30BF_INSN_LDR14, FR30BF_SFMT_LDR14 }, |
111 | { FR30_INSN_LDR14UH, FR30BF_INSN_LDR14UH, FR30BF_SFMT_LDR14UH }, | |
112 | { FR30_INSN_LDR14UB, FR30BF_INSN_LDR14UB, FR30BF_SFMT_LDR14UB }, | |
113 | { FR30_INSN_LDR15, FR30BF_INSN_LDR15, FR30BF_SFMT_LDR15 }, | |
114 | { FR30_INSN_LDR15GR, FR30BF_INSN_LDR15GR, FR30BF_SFMT_LDR15GR }, | |
115 | { FR30_INSN_LDR15DR, FR30BF_INSN_LDR15DR, FR30BF_SFMT_LDR15DR }, | |
116 | { FR30_INSN_LDR15PS, FR30BF_INSN_LDR15PS, FR30BF_SFMT_LDR15PS }, | |
117 | { FR30_INSN_ST, FR30BF_INSN_ST, FR30BF_SFMT_ST }, | |
3e43c635 DB |
118 | { FR30_INSN_STH, FR30BF_INSN_STH, FR30BF_SFMT_STH }, |
119 | { FR30_INSN_STB, FR30BF_INSN_STB, FR30BF_SFMT_STB }, | |
96baa820 | 120 | { FR30_INSN_STR13, FR30BF_INSN_STR13, FR30BF_SFMT_STR13 }, |
3e43c635 DB |
121 | { FR30_INSN_STR13H, FR30BF_INSN_STR13H, FR30BF_SFMT_STR13H }, |
122 | { FR30_INSN_STR13B, FR30BF_INSN_STR13B, FR30BF_SFMT_STR13B }, | |
96baa820 JM |
123 | { FR30_INSN_STR14, FR30BF_INSN_STR14, FR30BF_SFMT_STR14 }, |
124 | { FR30_INSN_STR14H, FR30BF_INSN_STR14H, FR30BF_SFMT_STR14H }, | |
125 | { FR30_INSN_STR14B, FR30BF_INSN_STR14B, FR30BF_SFMT_STR14B }, | |
126 | { FR30_INSN_STR15, FR30BF_INSN_STR15, FR30BF_SFMT_STR15 }, | |
127 | { FR30_INSN_STR15GR, FR30BF_INSN_STR15GR, FR30BF_SFMT_STR15GR }, | |
128 | { FR30_INSN_STR15DR, FR30BF_INSN_STR15DR, FR30BF_SFMT_STR15DR }, | |
129 | { FR30_INSN_STR15PS, FR30BF_INSN_STR15PS, FR30BF_SFMT_STR15PS }, | |
130 | { FR30_INSN_MOV, FR30BF_INSN_MOV, FR30BF_SFMT_MOV }, | |
131 | { FR30_INSN_MOVDR, FR30BF_INSN_MOVDR, FR30BF_SFMT_MOVDR }, | |
132 | { FR30_INSN_MOVPS, FR30BF_INSN_MOVPS, FR30BF_SFMT_MOVPS }, | |
133 | { FR30_INSN_MOV2DR, FR30BF_INSN_MOV2DR, FR30BF_SFMT_MOV2DR }, | |
134 | { FR30_INSN_MOV2PS, FR30BF_INSN_MOV2PS, FR30BF_SFMT_MOV2PS }, | |
135 | { FR30_INSN_JMP, FR30BF_INSN_JMP, FR30BF_SFMT_JMP }, | |
136 | { FR30_INSN_JMPD, FR30BF_INSN_JMPD, FR30BF_SFMT_JMP }, | |
137 | { FR30_INSN_CALLR, FR30BF_INSN_CALLR, FR30BF_SFMT_CALLR }, | |
138 | { FR30_INSN_CALLRD, FR30BF_INSN_CALLRD, FR30BF_SFMT_CALLR }, | |
139 | { FR30_INSN_CALL, FR30BF_INSN_CALL, FR30BF_SFMT_CALL }, | |
140 | { FR30_INSN_CALLD, FR30BF_INSN_CALLD, FR30BF_SFMT_CALL }, | |
141 | { FR30_INSN_RET, FR30BF_INSN_RET, FR30BF_SFMT_RET }, | |
142 | { FR30_INSN_RET_D, FR30BF_INSN_RET_D, FR30BF_SFMT_RET }, | |
143 | { FR30_INSN_INT, FR30BF_INSN_INT, FR30BF_SFMT_INT }, | |
144 | { FR30_INSN_INTE, FR30BF_INSN_INTE, FR30BF_SFMT_INTE }, | |
145 | { FR30_INSN_RETI, FR30BF_INSN_RETI, FR30BF_SFMT_RETI }, | |
146 | { FR30_INSN_BRAD, FR30BF_INSN_BRAD, FR30BF_SFMT_BRAD }, | |
147 | { FR30_INSN_BRA, FR30BF_INSN_BRA, FR30BF_SFMT_BRAD }, | |
148 | { FR30_INSN_BNOD, FR30BF_INSN_BNOD, FR30BF_SFMT_BNOD }, | |
149 | { FR30_INSN_BNO, FR30BF_INSN_BNO, FR30BF_SFMT_BNOD }, | |
150 | { FR30_INSN_BEQD, FR30BF_INSN_BEQD, FR30BF_SFMT_BEQD }, | |
151 | { FR30_INSN_BEQ, FR30BF_INSN_BEQ, FR30BF_SFMT_BEQD }, | |
152 | { FR30_INSN_BNED, FR30BF_INSN_BNED, FR30BF_SFMT_BEQD }, | |
153 | { FR30_INSN_BNE, FR30BF_INSN_BNE, FR30BF_SFMT_BEQD }, | |
154 | { FR30_INSN_BCD, FR30BF_INSN_BCD, FR30BF_SFMT_BCD }, | |
155 | { FR30_INSN_BC, FR30BF_INSN_BC, FR30BF_SFMT_BCD }, | |
156 | { FR30_INSN_BNCD, FR30BF_INSN_BNCD, FR30BF_SFMT_BCD }, | |
157 | { FR30_INSN_BNC, FR30BF_INSN_BNC, FR30BF_SFMT_BCD }, | |
158 | { FR30_INSN_BND, FR30BF_INSN_BND, FR30BF_SFMT_BND }, | |
159 | { FR30_INSN_BN, FR30BF_INSN_BN, FR30BF_SFMT_BND }, | |
160 | { FR30_INSN_BPD, FR30BF_INSN_BPD, FR30BF_SFMT_BND }, | |
161 | { FR30_INSN_BP, FR30BF_INSN_BP, FR30BF_SFMT_BND }, | |
162 | { FR30_INSN_BVD, FR30BF_INSN_BVD, FR30BF_SFMT_BVD }, | |
163 | { FR30_INSN_BV, FR30BF_INSN_BV, FR30BF_SFMT_BVD }, | |
164 | { FR30_INSN_BNVD, FR30BF_INSN_BNVD, FR30BF_SFMT_BVD }, | |
165 | { FR30_INSN_BNV, FR30BF_INSN_BNV, FR30BF_SFMT_BVD }, | |
166 | { FR30_INSN_BLTD, FR30BF_INSN_BLTD, FR30BF_SFMT_BLTD }, | |
167 | { FR30_INSN_BLT, FR30BF_INSN_BLT, FR30BF_SFMT_BLTD }, | |
168 | { FR30_INSN_BGED, FR30BF_INSN_BGED, FR30BF_SFMT_BLTD }, | |
169 | { FR30_INSN_BGE, FR30BF_INSN_BGE, FR30BF_SFMT_BLTD }, | |
170 | { FR30_INSN_BLED, FR30BF_INSN_BLED, FR30BF_SFMT_BLED }, | |
171 | { FR30_INSN_BLE, FR30BF_INSN_BLE, FR30BF_SFMT_BLED }, | |
172 | { FR30_INSN_BGTD, FR30BF_INSN_BGTD, FR30BF_SFMT_BLED }, | |
173 | { FR30_INSN_BGT, FR30BF_INSN_BGT, FR30BF_SFMT_BLED }, | |
174 | { FR30_INSN_BLSD, FR30BF_INSN_BLSD, FR30BF_SFMT_BLSD }, | |
175 | { FR30_INSN_BLS, FR30BF_INSN_BLS, FR30BF_SFMT_BLSD }, | |
176 | { FR30_INSN_BHID, FR30BF_INSN_BHID, FR30BF_SFMT_BLSD }, | |
177 | { FR30_INSN_BHI, FR30BF_INSN_BHI, FR30BF_SFMT_BLSD }, | |
178 | { FR30_INSN_DMOVR13, FR30BF_INSN_DMOVR13, FR30BF_SFMT_DMOVR13 }, | |
179 | { FR30_INSN_DMOVR13H, FR30BF_INSN_DMOVR13H, FR30BF_SFMT_DMOVR13H }, | |
180 | { FR30_INSN_DMOVR13B, FR30BF_INSN_DMOVR13B, FR30BF_SFMT_DMOVR13B }, | |
181 | { FR30_INSN_DMOVR13PI, FR30BF_INSN_DMOVR13PI, FR30BF_SFMT_DMOVR13PI }, | |
182 | { FR30_INSN_DMOVR13PIH, FR30BF_INSN_DMOVR13PIH, FR30BF_SFMT_DMOVR13PIH }, | |
183 | { FR30_INSN_DMOVR13PIB, FR30BF_INSN_DMOVR13PIB, FR30BF_SFMT_DMOVR13PIB }, | |
184 | { FR30_INSN_DMOVR15PI, FR30BF_INSN_DMOVR15PI, FR30BF_SFMT_DMOVR15PI }, | |
185 | { FR30_INSN_DMOV2R13, FR30BF_INSN_DMOV2R13, FR30BF_SFMT_DMOV2R13 }, | |
186 | { FR30_INSN_DMOV2R13H, FR30BF_INSN_DMOV2R13H, FR30BF_SFMT_DMOV2R13H }, | |
187 | { FR30_INSN_DMOV2R13B, FR30BF_INSN_DMOV2R13B, FR30BF_SFMT_DMOV2R13B }, | |
188 | { FR30_INSN_DMOV2R13PI, FR30BF_INSN_DMOV2R13PI, FR30BF_SFMT_DMOV2R13PI }, | |
189 | { FR30_INSN_DMOV2R13PIH, FR30BF_INSN_DMOV2R13PIH, FR30BF_SFMT_DMOV2R13PIH }, | |
190 | { FR30_INSN_DMOV2R13PIB, FR30BF_INSN_DMOV2R13PIB, FR30BF_SFMT_DMOV2R13PIB }, | |
191 | { FR30_INSN_DMOV2R15PD, FR30BF_INSN_DMOV2R15PD, FR30BF_SFMT_DMOV2R15PD }, | |
192 | { FR30_INSN_LDRES, FR30BF_INSN_LDRES, FR30BF_SFMT_LDRES }, | |
193 | { FR30_INSN_STRES, FR30BF_INSN_STRES, FR30BF_SFMT_LDRES }, | |
194 | { FR30_INSN_COPOP, FR30BF_INSN_COPOP, FR30BF_SFMT_COPOP }, | |
195 | { FR30_INSN_COPLD, FR30BF_INSN_COPLD, FR30BF_SFMT_COPOP }, | |
196 | { FR30_INSN_COPST, FR30BF_INSN_COPST, FR30BF_SFMT_COPOP }, | |
197 | { FR30_INSN_COPSV, FR30BF_INSN_COPSV, FR30BF_SFMT_COPOP }, | |
198 | { FR30_INSN_NOP, FR30BF_INSN_NOP, FR30BF_SFMT_BNOD }, | |
199 | { FR30_INSN_ANDCCR, FR30BF_INSN_ANDCCR, FR30BF_SFMT_ANDCCR }, | |
200 | { FR30_INSN_ORCCR, FR30BF_INSN_ORCCR, FR30BF_SFMT_ANDCCR }, | |
201 | { FR30_INSN_STILM, FR30BF_INSN_STILM, FR30BF_SFMT_STILM }, | |
202 | { FR30_INSN_ADDSP, FR30BF_INSN_ADDSP, FR30BF_SFMT_ADDSP }, | |
203 | { FR30_INSN_EXTSB, FR30BF_INSN_EXTSB, FR30BF_SFMT_EXTSB }, | |
204 | { FR30_INSN_EXTUB, FR30BF_INSN_EXTUB, FR30BF_SFMT_EXTUB }, | |
205 | { FR30_INSN_EXTSH, FR30BF_INSN_EXTSH, FR30BF_SFMT_EXTSH }, | |
206 | { FR30_INSN_EXTUH, FR30BF_INSN_EXTUH, FR30BF_SFMT_EXTUH }, | |
207 | { FR30_INSN_LDM0, FR30BF_INSN_LDM0, FR30BF_SFMT_LDM0 }, | |
208 | { FR30_INSN_LDM1, FR30BF_INSN_LDM1, FR30BF_SFMT_LDM1 }, | |
209 | { FR30_INSN_STM0, FR30BF_INSN_STM0, FR30BF_SFMT_STM0 }, | |
210 | { FR30_INSN_STM1, FR30BF_INSN_STM1, FR30BF_SFMT_STM1 }, | |
211 | { FR30_INSN_ENTER, FR30BF_INSN_ENTER, FR30BF_SFMT_ENTER }, | |
212 | { FR30_INSN_LEAVE, FR30BF_INSN_LEAVE, FR30BF_SFMT_LEAVE }, | |
213 | { FR30_INSN_XCHB, FR30BF_INSN_XCHB, FR30BF_SFMT_XCHB }, | |
c906108c SS |
214 | }; |
215 | ||
96baa820 JM |
216 | static const struct insn_sem fr30bf_insn_sem_invalid = { |
217 | VIRTUAL_INSN_X_INVALID, FR30BF_INSN_X_INVALID, FR30BF_SFMT_EMPTY | |
c906108c SS |
218 | }; |
219 | ||
c906108c SS |
220 | /* Initialize an IDESC from the compile-time computable parts. */ |
221 | ||
222 | static INLINE void | |
223 | init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t) | |
224 | { | |
225 | const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries; | |
226 | ||
227 | id->num = t->index; | |
96baa820 | 228 | id->sfmt = t->sfmt; |
c906108c SS |
229 | if ((int) t->type <= 0) |
230 | id->idata = & cgen_virtual_insn_table[- (int) t->type]; | |
231 | else | |
232 | id->idata = & insn_table[t->type]; | |
233 | id->attrs = CGEN_INSN_ATTRS (id->idata); | |
234 | /* Oh my god, a magic number. */ | |
235 | id->length = CGEN_INSN_BITSIZE (id->idata) / 8; | |
96baa820 | 236 | |
c906108c SS |
237 | #if WITH_PROFILE_MODEL_P |
238 | id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index]; | |
239 | { | |
240 | SIM_DESC sd = CPU_STATE (cpu); | |
241 | SIM_ASSERT (t->index == id->timing->num); | |
242 | } | |
243 | #endif | |
96baa820 JM |
244 | |
245 | /* Semantic pointers are initialized elsewhere. */ | |
c906108c SS |
246 | } |
247 | ||
248 | /* Initialize the instruction descriptor table. */ | |
249 | ||
250 | void | |
251 | fr30bf_init_idesc_table (SIM_CPU *cpu) | |
252 | { | |
253 | IDESC *id,*tabend; | |
254 | const struct insn_sem *t,*tend; | |
3e43c635 | 255 | int tabsize = sizeof (fr30bf_insn_data) / sizeof (IDESC); |
c906108c SS |
256 | IDESC *table = fr30bf_insn_data; |
257 | ||
258 | memset (table, 0, tabsize * sizeof (IDESC)); | |
259 | ||
260 | /* First set all entries to the `invalid insn'. */ | |
261 | t = & fr30bf_insn_sem_invalid; | |
262 | for (id = table, tabend = table + tabsize; id < tabend; ++id) | |
263 | init_idesc (cpu, id, t); | |
264 | ||
265 | /* Now fill in the values for the chosen cpu. */ | |
266 | for (t = fr30bf_insn_sem, tend = t + sizeof (fr30bf_insn_sem) / sizeof (*t); | |
267 | t != tend; ++t) | |
268 | { | |
269 | init_idesc (cpu, & table[t->index], t); | |
270 | } | |
271 | ||
272 | /* Link the IDESC table into the cpu. */ | |
273 | CPU_IDESC (cpu) = table; | |
274 | } | |
275 | ||
c906108c SS |
276 | /* Given an instruction, return a pointer to its IDESC entry. */ |
277 | ||
278 | const IDESC * | |
279 | fr30bf_decode (SIM_CPU *current_cpu, IADDR pc, | |
280 | CGEN_INSN_INT base_insn, | |
281 | ARGBUF *abuf) | |
282 | { | |
7a292a7a SS |
283 | /* Result of decoder. */ |
284 | FR30BF_INSN_TYPE itype; | |
c906108c SS |
285 | |
286 | { | |
3e43c635 | 287 | CGEN_INSN_INT insn = base_insn; |
7a292a7a SS |
288 | |
289 | { | |
290 | unsigned int val = (((insn >> 8) & (255 << 0))); | |
291 | switch (val) | |
292 | { | |
3e43c635 DB |
293 | case 0 : itype = FR30BF_INSN_LDR13;goto extract_sfmt_ldr13; |
294 | case 1 : itype = FR30BF_INSN_LDR13UH;goto extract_sfmt_ldr13uh; | |
295 | case 2 : itype = FR30BF_INSN_LDR13UB;goto extract_sfmt_ldr13ub; | |
296 | case 3 : itype = FR30BF_INSN_LDR15;goto extract_sfmt_ldr15; | |
297 | case 4 : itype = FR30BF_INSN_LD;goto extract_sfmt_ld; | |
298 | case 5 : itype = FR30BF_INSN_LDUH;goto extract_sfmt_lduh; | |
299 | case 6 : itype = FR30BF_INSN_LDUB;goto extract_sfmt_ldub; | |
300 | case 7 : | |
c906108c | 301 | { |
52fa932e | 302 | unsigned int val = (((insn >> 6) & (1 << 1)) | ((insn >> 4) & (1 << 0))); |
7a292a7a | 303 | switch (val) |
c906108c | 304 | { |
3e43c635 DB |
305 | case 0 : itype = FR30BF_INSN_LDR15GR;goto extract_sfmt_ldr15gr; |
306 | case 1 : itype = FR30BF_INSN_MOV2PS;goto extract_sfmt_mov2ps; | |
307 | case 2 : itype = FR30BF_INSN_LDR15DR;goto extract_sfmt_ldr15dr; | |
308 | case 3 : itype = FR30BF_INSN_LDR15PS;goto extract_sfmt_ldr15ps; | |
309 | default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty; | |
c906108c | 310 | } |
7a292a7a | 311 | } |
3e43c635 DB |
312 | case 8 : itype = FR30BF_INSN_DMOV2R13;goto extract_sfmt_dmov2r13; |
313 | case 9 : itype = FR30BF_INSN_DMOV2R13H;goto extract_sfmt_dmov2r13h; | |
314 | case 10 : itype = FR30BF_INSN_DMOV2R13B;goto extract_sfmt_dmov2r13b; | |
315 | case 11 : itype = FR30BF_INSN_DMOV2R15PD;goto extract_sfmt_dmov2r15pd; | |
316 | case 12 : itype = FR30BF_INSN_DMOV2R13PI;goto extract_sfmt_dmov2r13pi; | |
317 | case 13 : itype = FR30BF_INSN_DMOV2R13PIH;goto extract_sfmt_dmov2r13pih; | |
318 | case 14 : itype = FR30BF_INSN_DMOV2R13PIB;goto extract_sfmt_dmov2r13pib; | |
319 | case 15 : itype = FR30BF_INSN_ENTER;goto extract_sfmt_enter; | |
320 | case 16 : itype = FR30BF_INSN_STR13;goto extract_sfmt_str13; | |
321 | case 17 : itype = FR30BF_INSN_STR13H;goto extract_sfmt_str13h; | |
322 | case 18 : itype = FR30BF_INSN_STR13B;goto extract_sfmt_str13b; | |
323 | case 19 : itype = FR30BF_INSN_STR15;goto extract_sfmt_str15; | |
324 | case 20 : itype = FR30BF_INSN_ST;goto extract_sfmt_st; | |
325 | case 21 : itype = FR30BF_INSN_STH;goto extract_sfmt_sth; | |
326 | case 22 : itype = FR30BF_INSN_STB;goto extract_sfmt_stb; | |
327 | case 23 : | |
7a292a7a | 328 | { |
52fa932e | 329 | unsigned int val = (((insn >> 6) & (1 << 1)) | ((insn >> 4) & (1 << 0))); |
7a292a7a | 330 | switch (val) |
c906108c | 331 | { |
3e43c635 DB |
332 | case 0 : itype = FR30BF_INSN_STR15GR;goto extract_sfmt_str15gr; |
333 | case 1 : itype = FR30BF_INSN_MOVPS;goto extract_sfmt_movps; | |
334 | case 2 : itype = FR30BF_INSN_STR15DR;goto extract_sfmt_str15dr; | |
335 | case 3 : itype = FR30BF_INSN_STR15PS;goto extract_sfmt_str15ps; | |
336 | default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty; | |
c906108c | 337 | } |
7a292a7a | 338 | } |
3e43c635 DB |
339 | case 24 : itype = FR30BF_INSN_DMOVR13;goto extract_sfmt_dmovr13; |
340 | case 25 : itype = FR30BF_INSN_DMOVR13H;goto extract_sfmt_dmovr13h; | |
341 | case 26 : itype = FR30BF_INSN_DMOVR13B;goto extract_sfmt_dmovr13b; | |
342 | case 27 : itype = FR30BF_INSN_DMOVR15PI;goto extract_sfmt_dmovr15pi; | |
343 | case 28 : itype = FR30BF_INSN_DMOVR13PI;goto extract_sfmt_dmovr13pi; | |
344 | case 29 : itype = FR30BF_INSN_DMOVR13PIH;goto extract_sfmt_dmovr13pih; | |
345 | case 30 : itype = FR30BF_INSN_DMOVR13PIB;goto extract_sfmt_dmovr13pib; | |
346 | case 31 : itype = FR30BF_INSN_INT;goto extract_sfmt_int; | |
347 | case 32 : /* fall through */ | |
7a292a7a SS |
348 | case 33 : /* fall through */ |
349 | case 34 : /* fall through */ | |
350 | case 35 : /* fall through */ | |
351 | case 36 : /* fall through */ | |
352 | case 37 : /* fall through */ | |
353 | case 38 : /* fall through */ | |
354 | case 39 : /* fall through */ | |
355 | case 40 : /* fall through */ | |
356 | case 41 : /* fall through */ | |
357 | case 42 : /* fall through */ | |
358 | case 43 : /* fall through */ | |
359 | case 44 : /* fall through */ | |
360 | case 45 : /* fall through */ | |
361 | case 46 : /* fall through */ | |
3e43c635 DB |
362 | case 47 : itype = FR30BF_INSN_LDR14;goto extract_sfmt_ldr14; |
363 | case 48 : /* fall through */ | |
7a292a7a SS |
364 | case 49 : /* fall through */ |
365 | case 50 : /* fall through */ | |
366 | case 51 : /* fall through */ | |
367 | case 52 : /* fall through */ | |
368 | case 53 : /* fall through */ | |
369 | case 54 : /* fall through */ | |
370 | case 55 : /* fall through */ | |
371 | case 56 : /* fall through */ | |
372 | case 57 : /* fall through */ | |
373 | case 58 : /* fall through */ | |
374 | case 59 : /* fall through */ | |
375 | case 60 : /* fall through */ | |
376 | case 61 : /* fall through */ | |
377 | case 62 : /* fall through */ | |
3e43c635 DB |
378 | case 63 : itype = FR30BF_INSN_STR14;goto extract_sfmt_str14; |
379 | case 64 : /* fall through */ | |
7a292a7a SS |
380 | case 65 : /* fall through */ |
381 | case 66 : /* fall through */ | |
382 | case 67 : /* fall through */ | |
383 | case 68 : /* fall through */ | |
384 | case 69 : /* fall through */ | |
385 | case 70 : /* fall through */ | |
386 | case 71 : /* fall through */ | |
387 | case 72 : /* fall through */ | |
388 | case 73 : /* fall through */ | |
389 | case 74 : /* fall through */ | |
390 | case 75 : /* fall through */ | |
391 | case 76 : /* fall through */ | |
392 | case 77 : /* fall through */ | |
393 | case 78 : /* fall through */ | |
3e43c635 DB |
394 | case 79 : itype = FR30BF_INSN_LDR14UH;goto extract_sfmt_ldr14uh; |
395 | case 80 : /* fall through */ | |
7a292a7a SS |
396 | case 81 : /* fall through */ |
397 | case 82 : /* fall through */ | |
398 | case 83 : /* fall through */ | |
399 | case 84 : /* fall through */ | |
400 | case 85 : /* fall through */ | |
401 | case 86 : /* fall through */ | |
402 | case 87 : /* fall through */ | |
403 | case 88 : /* fall through */ | |
404 | case 89 : /* fall through */ | |
405 | case 90 : /* fall through */ | |
406 | case 91 : /* fall through */ | |
407 | case 92 : /* fall through */ | |
408 | case 93 : /* fall through */ | |
409 | case 94 : /* fall through */ | |
3e43c635 DB |
410 | case 95 : itype = FR30BF_INSN_STR14H;goto extract_sfmt_str14h; |
411 | case 96 : /* fall through */ | |
7a292a7a SS |
412 | case 97 : /* fall through */ |
413 | case 98 : /* fall through */ | |
414 | case 99 : /* fall through */ | |
415 | case 100 : /* fall through */ | |
416 | case 101 : /* fall through */ | |
417 | case 102 : /* fall through */ | |
418 | case 103 : /* fall through */ | |
419 | case 104 : /* fall through */ | |
420 | case 105 : /* fall through */ | |
421 | case 106 : /* fall through */ | |
422 | case 107 : /* fall through */ | |
423 | case 108 : /* fall through */ | |
424 | case 109 : /* fall through */ | |
425 | case 110 : /* fall through */ | |
3e43c635 DB |
426 | case 111 : itype = FR30BF_INSN_LDR14UB;goto extract_sfmt_ldr14ub; |
427 | case 112 : /* fall through */ | |
7a292a7a SS |
428 | case 113 : /* fall through */ |
429 | case 114 : /* fall through */ | |
430 | case 115 : /* fall through */ | |
431 | case 116 : /* fall through */ | |
432 | case 117 : /* fall through */ | |
433 | case 118 : /* fall through */ | |
434 | case 119 : /* fall through */ | |
435 | case 120 : /* fall through */ | |
436 | case 121 : /* fall through */ | |
437 | case 122 : /* fall through */ | |
438 | case 123 : /* fall through */ | |
439 | case 124 : /* fall through */ | |
440 | case 125 : /* fall through */ | |
441 | case 126 : /* fall through */ | |
3e43c635 DB |
442 | case 127 : itype = FR30BF_INSN_STR14B;goto extract_sfmt_str14b; |
443 | case 128 : itype = FR30BF_INSN_BANDL;goto extract_sfmt_bandl; | |
444 | case 129 : itype = FR30BF_INSN_BANDH;goto extract_sfmt_bandl; | |
445 | case 130 : itype = FR30BF_INSN_AND;goto extract_sfmt_and; | |
446 | case 131 : itype = FR30BF_INSN_ANDCCR;goto extract_sfmt_andccr; | |
447 | case 132 : itype = FR30BF_INSN_ANDM;goto extract_sfmt_andm; | |
448 | case 133 : itype = FR30BF_INSN_ANDH;goto extract_sfmt_andh; | |
449 | case 134 : itype = FR30BF_INSN_ANDB;goto extract_sfmt_andb; | |
450 | case 135 : itype = FR30BF_INSN_STILM;goto extract_sfmt_stilm; | |
451 | case 136 : itype = FR30BF_INSN_BTSTL;goto extract_sfmt_btstl; | |
452 | case 137 : itype = FR30BF_INSN_BTSTH;goto extract_sfmt_btstl; | |
453 | case 138 : itype = FR30BF_INSN_XCHB;goto extract_sfmt_xchb; | |
454 | case 139 : itype = FR30BF_INSN_MOV;goto extract_sfmt_mov; | |
455 | case 140 : itype = FR30BF_INSN_LDM0;goto extract_sfmt_ldm0; | |
456 | case 141 : itype = FR30BF_INSN_LDM1;goto extract_sfmt_ldm1; | |
457 | case 142 : itype = FR30BF_INSN_STM0;goto extract_sfmt_stm0; | |
458 | case 143 : itype = FR30BF_INSN_STM1;goto extract_sfmt_stm1; | |
459 | case 144 : itype = FR30BF_INSN_BORL;goto extract_sfmt_bandl; | |
460 | case 145 : itype = FR30BF_INSN_BORH;goto extract_sfmt_bandl; | |
461 | case 146 : itype = FR30BF_INSN_OR;goto extract_sfmt_and; | |
462 | case 147 : itype = FR30BF_INSN_ORCCR;goto extract_sfmt_andccr; | |
463 | case 148 : itype = FR30BF_INSN_ORM;goto extract_sfmt_andm; | |
464 | case 149 : itype = FR30BF_INSN_ORH;goto extract_sfmt_andh; | |
465 | case 150 : itype = FR30BF_INSN_ORB;goto extract_sfmt_andb; | |
466 | case 151 : | |
7a292a7a SS |
467 | { |
468 | unsigned int val = (((insn >> 4) & (15 << 0))); | |
469 | switch (val) | |
c906108c | 470 | { |
3e43c635 DB |
471 | case 0 : itype = FR30BF_INSN_JMP;goto extract_sfmt_jmp; |
472 | case 1 : itype = FR30BF_INSN_CALLR;goto extract_sfmt_callr; | |
473 | case 2 : itype = FR30BF_INSN_RET;goto extract_sfmt_ret; | |
474 | case 3 : itype = FR30BF_INSN_RETI;goto extract_sfmt_reti; | |
475 | case 4 : itype = FR30BF_INSN_DIV0S;goto extract_sfmt_div0s; | |
476 | case 5 : itype = FR30BF_INSN_DIV0U;goto extract_sfmt_div0u; | |
477 | case 6 : itype = FR30BF_INSN_DIV1;goto extract_sfmt_div1; | |
478 | case 7 : itype = FR30BF_INSN_DIV2;goto extract_sfmt_div2; | |
479 | case 8 : itype = FR30BF_INSN_EXTSB;goto extract_sfmt_extsb; | |
480 | case 9 : itype = FR30BF_INSN_EXTUB;goto extract_sfmt_extub; | |
481 | case 10 : itype = FR30BF_INSN_EXTSH;goto extract_sfmt_extsh; | |
482 | case 11 : itype = FR30BF_INSN_EXTUH;goto extract_sfmt_extuh; | |
483 | default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty; | |
c906108c | 484 | } |
7a292a7a | 485 | } |
3e43c635 DB |
486 | case 152 : itype = FR30BF_INSN_BEORL;goto extract_sfmt_bandl; |
487 | case 153 : itype = FR30BF_INSN_BEORH;goto extract_sfmt_bandl; | |
488 | case 154 : itype = FR30BF_INSN_EOR;goto extract_sfmt_and; | |
489 | case 155 : itype = FR30BF_INSN_LDI20;goto extract_sfmt_ldi20; | |
490 | case 156 : itype = FR30BF_INSN_EORM;goto extract_sfmt_andm; | |
491 | case 157 : itype = FR30BF_INSN_EORH;goto extract_sfmt_andh; | |
492 | case 158 : itype = FR30BF_INSN_EORB;goto extract_sfmt_andb; | |
493 | case 159 : | |
7a292a7a SS |
494 | { |
495 | unsigned int val = (((insn >> 4) & (15 << 0))); | |
496 | switch (val) | |
c906108c | 497 | { |
3e43c635 DB |
498 | case 0 : itype = FR30BF_INSN_JMPD;goto extract_sfmt_jmp; |
499 | case 1 : itype = FR30BF_INSN_CALLRD;goto extract_sfmt_callr; | |
500 | case 2 : itype = FR30BF_INSN_RET_D;goto extract_sfmt_ret; | |
501 | case 3 : itype = FR30BF_INSN_INTE;goto extract_sfmt_inte; | |
502 | case 6 : itype = FR30BF_INSN_DIV3;goto extract_sfmt_div3; | |
503 | case 7 : itype = FR30BF_INSN_DIV4S;goto extract_sfmt_div4s; | |
504 | case 8 : itype = FR30BF_INSN_LDI32;goto extract_sfmt_ldi32; | |
505 | case 9 : itype = FR30BF_INSN_LEAVE;goto extract_sfmt_leave; | |
506 | case 10 : itype = FR30BF_INSN_NOP;goto extract_sfmt_bnod; | |
507 | case 12 : itype = FR30BF_INSN_COPOP;goto extract_sfmt_copop; | |
508 | case 13 : itype = FR30BF_INSN_COPLD;goto extract_sfmt_copop; | |
509 | case 14 : itype = FR30BF_INSN_COPST;goto extract_sfmt_copop; | |
510 | case 15 : itype = FR30BF_INSN_COPSV;goto extract_sfmt_copop; | |
511 | default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty; | |
c906108c | 512 | } |
c906108c | 513 | } |
3e43c635 DB |
514 | case 160 : itype = FR30BF_INSN_ADDNI;goto extract_sfmt_addni; |
515 | case 161 : itype = FR30BF_INSN_ADDN2;goto extract_sfmt_addn2; | |
516 | case 162 : itype = FR30BF_INSN_ADDN;goto extract_sfmt_addn; | |
517 | case 163 : itype = FR30BF_INSN_ADDSP;goto extract_sfmt_addsp; | |
518 | case 164 : itype = FR30BF_INSN_ADDI;goto extract_sfmt_addi; | |
519 | case 165 : itype = FR30BF_INSN_ADD2;goto extract_sfmt_add2; | |
520 | case 166 : itype = FR30BF_INSN_ADD;goto extract_sfmt_add; | |
521 | case 167 : itype = FR30BF_INSN_ADDC;goto extract_sfmt_addc; | |
522 | case 168 : itype = FR30BF_INSN_CMPI;goto extract_sfmt_cmpi; | |
523 | case 169 : itype = FR30BF_INSN_CMP2;goto extract_sfmt_cmp2; | |
524 | case 170 : itype = FR30BF_INSN_CMP;goto extract_sfmt_cmp; | |
525 | case 171 : itype = FR30BF_INSN_MULU;goto extract_sfmt_mulu; | |
526 | case 172 : itype = FR30BF_INSN_SUB;goto extract_sfmt_add; | |
527 | case 173 : itype = FR30BF_INSN_SUBC;goto extract_sfmt_addc; | |
528 | case 174 : itype = FR30BF_INSN_SUBN;goto extract_sfmt_addn; | |
529 | case 175 : itype = FR30BF_INSN_MUL;goto extract_sfmt_mul; | |
530 | case 176 : itype = FR30BF_INSN_LSRI;goto extract_sfmt_lsli; | |
531 | case 177 : itype = FR30BF_INSN_LSR2;goto extract_sfmt_lsli; | |
532 | case 178 : itype = FR30BF_INSN_LSR;goto extract_sfmt_lsl; | |
533 | case 179 : itype = FR30BF_INSN_MOV2DR;goto extract_sfmt_mov2dr; | |
534 | case 180 : itype = FR30BF_INSN_LSLI;goto extract_sfmt_lsli; | |
535 | case 181 : itype = FR30BF_INSN_LSL2;goto extract_sfmt_lsli; | |
536 | case 182 : itype = FR30BF_INSN_LSL;goto extract_sfmt_lsl; | |
537 | case 183 : itype = FR30BF_INSN_MOVDR;goto extract_sfmt_movdr; | |
538 | case 184 : itype = FR30BF_INSN_ASRI;goto extract_sfmt_lsli; | |
539 | case 185 : itype = FR30BF_INSN_ASR2;goto extract_sfmt_lsli; | |
540 | case 186 : itype = FR30BF_INSN_ASR;goto extract_sfmt_lsl; | |
541 | case 187 : itype = FR30BF_INSN_MULUH;goto extract_sfmt_mulh; | |
542 | case 188 : itype = FR30BF_INSN_LDRES;goto extract_sfmt_ldres; | |
543 | case 189 : itype = FR30BF_INSN_STRES;goto extract_sfmt_ldres; | |
544 | case 191 : itype = FR30BF_INSN_MULH;goto extract_sfmt_mulh; | |
545 | case 192 : /* fall through */ | |
7a292a7a SS |
546 | case 193 : /* fall through */ |
547 | case 194 : /* fall through */ | |
548 | case 195 : /* fall through */ | |
549 | case 196 : /* fall through */ | |
550 | case 197 : /* fall through */ | |
551 | case 198 : /* fall through */ | |
552 | case 199 : /* fall through */ | |
553 | case 200 : /* fall through */ | |
554 | case 201 : /* fall through */ | |
555 | case 202 : /* fall through */ | |
556 | case 203 : /* fall through */ | |
557 | case 204 : /* fall through */ | |
558 | case 205 : /* fall through */ | |
559 | case 206 : /* fall through */ | |
3e43c635 DB |
560 | case 207 : itype = FR30BF_INSN_LDI8;goto extract_sfmt_ldi8; |
561 | case 208 : /* fall through */ | |
7a292a7a SS |
562 | case 209 : /* fall through */ |
563 | case 210 : /* fall through */ | |
564 | case 211 : /* fall through */ | |
565 | case 212 : /* fall through */ | |
566 | case 213 : /* fall through */ | |
567 | case 214 : /* fall through */ | |
3e43c635 DB |
568 | case 215 : itype = FR30BF_INSN_CALL;goto extract_sfmt_call; |
569 | case 216 : /* fall through */ | |
7a292a7a SS |
570 | case 217 : /* fall through */ |
571 | case 218 : /* fall through */ | |
572 | case 219 : /* fall through */ | |
573 | case 220 : /* fall through */ | |
574 | case 221 : /* fall through */ | |
575 | case 222 : /* fall through */ | |
3e43c635 DB |
576 | case 223 : itype = FR30BF_INSN_CALLD;goto extract_sfmt_call; |
577 | case 224 : itype = FR30BF_INSN_BRA;goto extract_sfmt_brad; | |
578 | case 225 : itype = FR30BF_INSN_BNO;goto extract_sfmt_bnod; | |
579 | case 226 : itype = FR30BF_INSN_BEQ;goto extract_sfmt_beqd; | |
580 | case 227 : itype = FR30BF_INSN_BNE;goto extract_sfmt_beqd; | |
581 | case 228 : itype = FR30BF_INSN_BC;goto extract_sfmt_bcd; | |
582 | case 229 : itype = FR30BF_INSN_BNC;goto extract_sfmt_bcd; | |
583 | case 230 : itype = FR30BF_INSN_BN;goto extract_sfmt_bnd; | |
584 | case 231 : itype = FR30BF_INSN_BP;goto extract_sfmt_bnd; | |
585 | case 232 : itype = FR30BF_INSN_BV;goto extract_sfmt_bvd; | |
586 | case 233 : itype = FR30BF_INSN_BNV;goto extract_sfmt_bvd; | |
587 | case 234 : itype = FR30BF_INSN_BLT;goto extract_sfmt_bltd; | |
588 | case 235 : itype = FR30BF_INSN_BGE;goto extract_sfmt_bltd; | |
589 | case 236 : itype = FR30BF_INSN_BLE;goto extract_sfmt_bled; | |
590 | case 237 : itype = FR30BF_INSN_BGT;goto extract_sfmt_bled; | |
591 | case 238 : itype = FR30BF_INSN_BLS;goto extract_sfmt_blsd; | |
592 | case 239 : itype = FR30BF_INSN_BHI;goto extract_sfmt_blsd; | |
593 | case 240 : itype = FR30BF_INSN_BRAD;goto extract_sfmt_brad; | |
594 | case 241 : itype = FR30BF_INSN_BNOD;goto extract_sfmt_bnod; | |
595 | case 242 : itype = FR30BF_INSN_BEQD;goto extract_sfmt_beqd; | |
596 | case 243 : itype = FR30BF_INSN_BNED;goto extract_sfmt_beqd; | |
597 | case 244 : itype = FR30BF_INSN_BCD;goto extract_sfmt_bcd; | |
598 | case 245 : itype = FR30BF_INSN_BNCD;goto extract_sfmt_bcd; | |
599 | case 246 : itype = FR30BF_INSN_BND;goto extract_sfmt_bnd; | |
600 | case 247 : itype = FR30BF_INSN_BPD;goto extract_sfmt_bnd; | |
601 | case 248 : itype = FR30BF_INSN_BVD;goto extract_sfmt_bvd; | |
602 | case 249 : itype = FR30BF_INSN_BNVD;goto extract_sfmt_bvd; | |
603 | case 250 : itype = FR30BF_INSN_BLTD;goto extract_sfmt_bltd; | |
604 | case 251 : itype = FR30BF_INSN_BGED;goto extract_sfmt_bltd; | |
605 | case 252 : itype = FR30BF_INSN_BLED;goto extract_sfmt_bled; | |
606 | case 253 : itype = FR30BF_INSN_BGTD;goto extract_sfmt_bled; | |
607 | case 254 : itype = FR30BF_INSN_BLSD;goto extract_sfmt_blsd; | |
608 | case 255 : itype = FR30BF_INSN_BHID;goto extract_sfmt_blsd; | |
609 | default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty; | |
7a292a7a | 610 | } |
c906108c | 611 | } |
c906108c SS |
612 | } |
613 | ||
614 | /* The instruction has been decoded, now extract the fields. */ | |
615 | ||
96baa820 | 616 | extract_sfmt_empty: |
c906108c | 617 | { |
7a292a7a | 618 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
c906108c | 619 | #define FLD(f) abuf->fields.fmt_empty.f |
c906108c | 620 | |
c906108c SS |
621 | |
622 | /* Record the fields for the semantic handler. */ | |
96baa820 | 623 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0)); |
c906108c SS |
624 | |
625 | #undef FLD | |
7a292a7a | 626 | return idesc; |
c906108c SS |
627 | } |
628 | ||
96baa820 | 629 | extract_sfmt_add: |
c906108c | 630 | { |
7a292a7a | 631 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 632 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 633 | #define FLD(f) abuf->fields.sfmt_add.f |
9846de1b JM |
634 | UINT f_Rj; |
635 | UINT f_Ri; | |
c906108c | 636 | |
9846de1b JM |
637 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
638 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
639 | |
640 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
641 | FLD (f_Ri) = f_Ri; |
642 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
643 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
644 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 645 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
646 | |
647 | #if WITH_PROFILE_MODEL_P | |
648 | /* Record the fields for profiling. */ | |
649 | if (PROFILE_MODEL_P (current_cpu)) | |
650 | { | |
651 | FLD (in_Ri) = f_Ri; | |
652 | FLD (in_Rj) = f_Rj; | |
653 | FLD (out_Ri) = f_Ri; | |
654 | } | |
655 | #endif | |
656 | #undef FLD | |
7a292a7a | 657 | return idesc; |
c906108c SS |
658 | } |
659 | ||
96baa820 | 660 | extract_sfmt_addi: |
c906108c | 661 | { |
7a292a7a | 662 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 663 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 664 | #define FLD(f) abuf->fields.sfmt_addi.f |
9846de1b JM |
665 | UINT f_u4; |
666 | UINT f_Ri; | |
c906108c | 667 | |
9846de1b JM |
668 | f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
669 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
670 | |
671 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 672 | FLD (f_Ri) = f_Ri; |
c906108c SS |
673 | FLD (f_u4) = f_u4; |
674 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 675 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
676 | |
677 | #if WITH_PROFILE_MODEL_P | |
678 | /* Record the fields for profiling. */ | |
679 | if (PROFILE_MODEL_P (current_cpu)) | |
680 | { | |
681 | FLD (in_Ri) = f_Ri; | |
682 | FLD (out_Ri) = f_Ri; | |
683 | } | |
684 | #endif | |
685 | #undef FLD | |
7a292a7a | 686 | return idesc; |
c906108c SS |
687 | } |
688 | ||
96baa820 | 689 | extract_sfmt_add2: |
c906108c | 690 | { |
7a292a7a | 691 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 692 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 693 | #define FLD(f) abuf->fields.sfmt_add2.f |
9846de1b JM |
694 | SI f_m4; |
695 | UINT f_Ri; | |
c906108c | 696 | |
9846de1b JM |
697 | f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4)))); |
698 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
699 | |
700 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 701 | FLD (f_Ri) = f_Ri; |
c906108c SS |
702 | FLD (f_m4) = f_m4; |
703 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 704 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
705 | |
706 | #if WITH_PROFILE_MODEL_P | |
707 | /* Record the fields for profiling. */ | |
708 | if (PROFILE_MODEL_P (current_cpu)) | |
709 | { | |
710 | FLD (in_Ri) = f_Ri; | |
711 | FLD (out_Ri) = f_Ri; | |
712 | } | |
713 | #endif | |
714 | #undef FLD | |
7a292a7a | 715 | return idesc; |
c906108c SS |
716 | } |
717 | ||
96baa820 | 718 | extract_sfmt_addc: |
c906108c | 719 | { |
7a292a7a | 720 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 721 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 722 | #define FLD(f) abuf->fields.sfmt_add.f |
9846de1b JM |
723 | UINT f_Rj; |
724 | UINT f_Ri; | |
c906108c | 725 | |
9846de1b JM |
726 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
727 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
728 | |
729 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
730 | FLD (f_Ri) = f_Ri; |
731 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
732 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
733 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 734 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addc", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
735 | |
736 | #if WITH_PROFILE_MODEL_P | |
737 | /* Record the fields for profiling. */ | |
738 | if (PROFILE_MODEL_P (current_cpu)) | |
739 | { | |
740 | FLD (in_Ri) = f_Ri; | |
741 | FLD (in_Rj) = f_Rj; | |
742 | FLD (out_Ri) = f_Ri; | |
743 | } | |
744 | #endif | |
745 | #undef FLD | |
7a292a7a | 746 | return idesc; |
c906108c SS |
747 | } |
748 | ||
96baa820 | 749 | extract_sfmt_addn: |
c906108c | 750 | { |
7a292a7a | 751 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 752 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 753 | #define FLD(f) abuf->fields.sfmt_add.f |
9846de1b JM |
754 | UINT f_Rj; |
755 | UINT f_Ri; | |
c906108c | 756 | |
9846de1b JM |
757 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
758 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
759 | |
760 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
761 | FLD (f_Ri) = f_Ri; |
762 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
763 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
764 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 765 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
766 | |
767 | #if WITH_PROFILE_MODEL_P | |
768 | /* Record the fields for profiling. */ | |
769 | if (PROFILE_MODEL_P (current_cpu)) | |
770 | { | |
771 | FLD (in_Ri) = f_Ri; | |
772 | FLD (in_Rj) = f_Rj; | |
773 | FLD (out_Ri) = f_Ri; | |
774 | } | |
775 | #endif | |
776 | #undef FLD | |
7a292a7a | 777 | return idesc; |
c906108c SS |
778 | } |
779 | ||
96baa820 | 780 | extract_sfmt_addni: |
c906108c | 781 | { |
7a292a7a | 782 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 783 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 784 | #define FLD(f) abuf->fields.sfmt_addi.f |
9846de1b JM |
785 | UINT f_u4; |
786 | UINT f_Ri; | |
c906108c | 787 | |
9846de1b JM |
788 | f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
789 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
790 | |
791 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 792 | FLD (f_Ri) = f_Ri; |
c906108c SS |
793 | FLD (f_u4) = f_u4; |
794 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 795 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addni", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
796 | |
797 | #if WITH_PROFILE_MODEL_P | |
798 | /* Record the fields for profiling. */ | |
799 | if (PROFILE_MODEL_P (current_cpu)) | |
800 | { | |
801 | FLD (in_Ri) = f_Ri; | |
802 | FLD (out_Ri) = f_Ri; | |
803 | } | |
804 | #endif | |
805 | #undef FLD | |
7a292a7a | 806 | return idesc; |
c906108c SS |
807 | } |
808 | ||
96baa820 | 809 | extract_sfmt_addn2: |
c906108c | 810 | { |
7a292a7a | 811 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 812 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 813 | #define FLD(f) abuf->fields.sfmt_add2.f |
9846de1b JM |
814 | SI f_m4; |
815 | UINT f_Ri; | |
c906108c | 816 | |
9846de1b JM |
817 | f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4)))); |
818 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
819 | |
820 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 821 | FLD (f_Ri) = f_Ri; |
c906108c SS |
822 | FLD (f_m4) = f_m4; |
823 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 824 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
825 | |
826 | #if WITH_PROFILE_MODEL_P | |
827 | /* Record the fields for profiling. */ | |
828 | if (PROFILE_MODEL_P (current_cpu)) | |
829 | { | |
830 | FLD (in_Ri) = f_Ri; | |
831 | FLD (out_Ri) = f_Ri; | |
832 | } | |
833 | #endif | |
834 | #undef FLD | |
7a292a7a | 835 | return idesc; |
c906108c SS |
836 | } |
837 | ||
96baa820 | 838 | extract_sfmt_cmp: |
c906108c | 839 | { |
7a292a7a | 840 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 841 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 842 | #define FLD(f) abuf->fields.sfmt_str13.f |
9846de1b JM |
843 | UINT f_Rj; |
844 | UINT f_Ri; | |
c906108c | 845 | |
9846de1b JM |
846 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
847 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
848 | |
849 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
850 | FLD (f_Ri) = f_Ri; |
851 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
852 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
853 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 854 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
855 | |
856 | #if WITH_PROFILE_MODEL_P | |
857 | /* Record the fields for profiling. */ | |
858 | if (PROFILE_MODEL_P (current_cpu)) | |
859 | { | |
860 | FLD (in_Ri) = f_Ri; | |
861 | FLD (in_Rj) = f_Rj; | |
862 | } | |
863 | #endif | |
864 | #undef FLD | |
7a292a7a | 865 | return idesc; |
c906108c SS |
866 | } |
867 | ||
96baa820 | 868 | extract_sfmt_cmpi: |
c906108c | 869 | { |
7a292a7a | 870 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 871 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 872 | #define FLD(f) abuf->fields.sfmt_addi.f |
9846de1b JM |
873 | UINT f_u4; |
874 | UINT f_Ri; | |
c906108c | 875 | |
9846de1b JM |
876 | f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
877 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
878 | |
879 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 880 | FLD (f_Ri) = f_Ri; |
c906108c SS |
881 | FLD (f_u4) = f_u4; |
882 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 883 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpi", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
884 | |
885 | #if WITH_PROFILE_MODEL_P | |
886 | /* Record the fields for profiling. */ | |
887 | if (PROFILE_MODEL_P (current_cpu)) | |
888 | { | |
889 | FLD (in_Ri) = f_Ri; | |
890 | } | |
891 | #endif | |
892 | #undef FLD | |
7a292a7a | 893 | return idesc; |
c906108c SS |
894 | } |
895 | ||
96baa820 | 896 | extract_sfmt_cmp2: |
c906108c | 897 | { |
7a292a7a | 898 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 899 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 900 | #define FLD(f) abuf->fields.sfmt_add2.f |
9846de1b JM |
901 | SI f_m4; |
902 | UINT f_Ri; | |
c906108c | 903 | |
9846de1b JM |
904 | f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4)))); |
905 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
906 | |
907 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 908 | FLD (f_Ri) = f_Ri; |
c906108c SS |
909 | FLD (f_m4) = f_m4; |
910 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 911 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
912 | |
913 | #if WITH_PROFILE_MODEL_P | |
914 | /* Record the fields for profiling. */ | |
915 | if (PROFILE_MODEL_P (current_cpu)) | |
916 | { | |
917 | FLD (in_Ri) = f_Ri; | |
918 | } | |
919 | #endif | |
920 | #undef FLD | |
7a292a7a | 921 | return idesc; |
c906108c SS |
922 | } |
923 | ||
96baa820 | 924 | extract_sfmt_and: |
c906108c | 925 | { |
7a292a7a | 926 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 927 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 928 | #define FLD(f) abuf->fields.sfmt_add.f |
9846de1b JM |
929 | UINT f_Rj; |
930 | UINT f_Ri; | |
c906108c | 931 | |
9846de1b JM |
932 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
933 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
934 | |
935 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
936 | FLD (f_Ri) = f_Ri; |
937 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
938 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
939 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 940 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
941 | |
942 | #if WITH_PROFILE_MODEL_P | |
943 | /* Record the fields for profiling. */ | |
944 | if (PROFILE_MODEL_P (current_cpu)) | |
945 | { | |
946 | FLD (in_Ri) = f_Ri; | |
947 | FLD (in_Rj) = f_Rj; | |
948 | FLD (out_Ri) = f_Ri; | |
949 | } | |
950 | #endif | |
951 | #undef FLD | |
7a292a7a | 952 | return idesc; |
c906108c SS |
953 | } |
954 | ||
96baa820 | 955 | extract_sfmt_andm: |
c906108c | 956 | { |
7a292a7a | 957 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 958 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 959 | #define FLD(f) abuf->fields.sfmt_str13.f |
9846de1b JM |
960 | UINT f_Rj; |
961 | UINT f_Ri; | |
c906108c | 962 | |
9846de1b JM |
963 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
964 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
965 | |
966 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
967 | FLD (f_Ri) = f_Ri; |
968 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
969 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
970 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 971 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andm", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
972 | |
973 | #if WITH_PROFILE_MODEL_P | |
974 | /* Record the fields for profiling. */ | |
975 | if (PROFILE_MODEL_P (current_cpu)) | |
976 | { | |
977 | FLD (in_Ri) = f_Ri; | |
978 | FLD (in_Rj) = f_Rj; | |
979 | } | |
980 | #endif | |
981 | #undef FLD | |
7a292a7a | 982 | return idesc; |
c906108c SS |
983 | } |
984 | ||
96baa820 | 985 | extract_sfmt_andh: |
c906108c | 986 | { |
7a292a7a | 987 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 988 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 989 | #define FLD(f) abuf->fields.sfmt_str13.f |
9846de1b JM |
990 | UINT f_Rj; |
991 | UINT f_Ri; | |
c906108c | 992 | |
9846de1b JM |
993 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
994 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
995 | |
996 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
997 | FLD (f_Ri) = f_Ri; |
998 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
999 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
1000 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 1001 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andh", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
1002 | |
1003 | #if WITH_PROFILE_MODEL_P | |
1004 | /* Record the fields for profiling. */ | |
1005 | if (PROFILE_MODEL_P (current_cpu)) | |
1006 | { | |
1007 | FLD (in_Ri) = f_Ri; | |
1008 | FLD (in_Rj) = f_Rj; | |
1009 | } | |
1010 | #endif | |
1011 | #undef FLD | |
7a292a7a | 1012 | return idesc; |
c906108c SS |
1013 | } |
1014 | ||
96baa820 | 1015 | extract_sfmt_andb: |
c906108c | 1016 | { |
7a292a7a | 1017 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1018 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1019 | #define FLD(f) abuf->fields.sfmt_str13.f |
9846de1b JM |
1020 | UINT f_Rj; |
1021 | UINT f_Ri; | |
c906108c | 1022 | |
9846de1b JM |
1023 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1024 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1025 | |
1026 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
1027 | FLD (f_Ri) = f_Ri; |
1028 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
1029 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
1030 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 1031 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
1032 | |
1033 | #if WITH_PROFILE_MODEL_P | |
1034 | /* Record the fields for profiling. */ | |
1035 | if (PROFILE_MODEL_P (current_cpu)) | |
1036 | { | |
1037 | FLD (in_Ri) = f_Ri; | |
1038 | FLD (in_Rj) = f_Rj; | |
1039 | } | |
1040 | #endif | |
1041 | #undef FLD | |
7a292a7a | 1042 | return idesc; |
c906108c SS |
1043 | } |
1044 | ||
96baa820 | 1045 | extract_sfmt_bandl: |
c906108c | 1046 | { |
7a292a7a | 1047 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1048 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1049 | #define FLD(f) abuf->fields.sfmt_addi.f |
9846de1b JM |
1050 | UINT f_u4; |
1051 | UINT f_Ri; | |
c906108c | 1052 | |
9846de1b JM |
1053 | f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1054 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1055 | |
1056 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 1057 | FLD (f_Ri) = f_Ri; |
c906108c SS |
1058 | FLD (f_u4) = f_u4; |
1059 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 1060 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bandl", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1061 | |
1062 | #if WITH_PROFILE_MODEL_P | |
1063 | /* Record the fields for profiling. */ | |
1064 | if (PROFILE_MODEL_P (current_cpu)) | |
1065 | { | |
1066 | FLD (in_Ri) = f_Ri; | |
1067 | } | |
1068 | #endif | |
1069 | #undef FLD | |
7a292a7a | 1070 | return idesc; |
c906108c SS |
1071 | } |
1072 | ||
96baa820 | 1073 | extract_sfmt_btstl: |
c906108c | 1074 | { |
7a292a7a | 1075 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1076 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1077 | #define FLD(f) abuf->fields.sfmt_addi.f |
9846de1b JM |
1078 | UINT f_u4; |
1079 | UINT f_Ri; | |
c906108c | 1080 | |
9846de1b JM |
1081 | f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1082 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1083 | |
1084 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 1085 | FLD (f_Ri) = f_Ri; |
c906108c SS |
1086 | FLD (f_u4) = f_u4; |
1087 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 1088 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btstl", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1089 | |
1090 | #if WITH_PROFILE_MODEL_P | |
1091 | /* Record the fields for profiling. */ | |
1092 | if (PROFILE_MODEL_P (current_cpu)) | |
1093 | { | |
1094 | FLD (in_Ri) = f_Ri; | |
1095 | } | |
1096 | #endif | |
1097 | #undef FLD | |
7a292a7a | 1098 | return idesc; |
c906108c SS |
1099 | } |
1100 | ||
96baa820 | 1101 | extract_sfmt_mul: |
c906108c | 1102 | { |
7a292a7a | 1103 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1104 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1105 | #define FLD(f) abuf->fields.sfmt_str13.f |
9846de1b JM |
1106 | UINT f_Rj; |
1107 | UINT f_Ri; | |
c906108c | 1108 | |
9846de1b JM |
1109 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1110 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1111 | |
1112 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
1113 | FLD (f_Ri) = f_Ri; |
1114 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
1115 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
1116 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 1117 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mul", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
1118 | |
1119 | #if WITH_PROFILE_MODEL_P | |
1120 | /* Record the fields for profiling. */ | |
1121 | if (PROFILE_MODEL_P (current_cpu)) | |
1122 | { | |
1123 | FLD (in_Ri) = f_Ri; | |
1124 | FLD (in_Rj) = f_Rj; | |
1125 | } | |
1126 | #endif | |
1127 | #undef FLD | |
7a292a7a | 1128 | return idesc; |
c906108c SS |
1129 | } |
1130 | ||
96baa820 | 1131 | extract_sfmt_mulu: |
c906108c | 1132 | { |
7a292a7a | 1133 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1134 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1135 | #define FLD(f) abuf->fields.sfmt_str13.f |
9846de1b JM |
1136 | UINT f_Rj; |
1137 | UINT f_Ri; | |
c906108c | 1138 | |
9846de1b JM |
1139 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1140 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1141 | |
1142 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
1143 | FLD (f_Ri) = f_Ri; |
1144 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
1145 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
1146 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 1147 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulu", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
1148 | |
1149 | #if WITH_PROFILE_MODEL_P | |
1150 | /* Record the fields for profiling. */ | |
1151 | if (PROFILE_MODEL_P (current_cpu)) | |
1152 | { | |
1153 | FLD (in_Ri) = f_Ri; | |
1154 | FLD (in_Rj) = f_Rj; | |
1155 | } | |
1156 | #endif | |
1157 | #undef FLD | |
7a292a7a | 1158 | return idesc; |
c906108c SS |
1159 | } |
1160 | ||
96baa820 | 1161 | extract_sfmt_mulh: |
c906108c | 1162 | { |
7a292a7a | 1163 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1164 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1165 | #define FLD(f) abuf->fields.sfmt_str13.f |
9846de1b JM |
1166 | UINT f_Rj; |
1167 | UINT f_Ri; | |
c906108c | 1168 | |
9846de1b JM |
1169 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1170 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1171 | |
1172 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
1173 | FLD (f_Ri) = f_Ri; |
1174 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
1175 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
1176 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 1177 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulh", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
1178 | |
1179 | #if WITH_PROFILE_MODEL_P | |
1180 | /* Record the fields for profiling. */ | |
1181 | if (PROFILE_MODEL_P (current_cpu)) | |
1182 | { | |
1183 | FLD (in_Ri) = f_Ri; | |
1184 | FLD (in_Rj) = f_Rj; | |
1185 | } | |
1186 | #endif | |
1187 | #undef FLD | |
7a292a7a | 1188 | return idesc; |
c906108c SS |
1189 | } |
1190 | ||
96baa820 | 1191 | extract_sfmt_div0s: |
c906108c | 1192 | { |
7a292a7a | 1193 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1194 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1195 | #define FLD(f) abuf->fields.sfmt_mov2dr.f |
9846de1b | 1196 | UINT f_Ri; |
c906108c | 1197 | |
9846de1b | 1198 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
1199 | |
1200 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 1201 | FLD (f_Ri) = f_Ri; |
c906108c | 1202 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1203 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0s", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1204 | |
1205 | #if WITH_PROFILE_MODEL_P | |
1206 | /* Record the fields for profiling. */ | |
1207 | if (PROFILE_MODEL_P (current_cpu)) | |
1208 | { | |
1209 | FLD (in_Ri) = f_Ri; | |
1210 | } | |
1211 | #endif | |
1212 | #undef FLD | |
7a292a7a | 1213 | return idesc; |
c906108c SS |
1214 | } |
1215 | ||
96baa820 | 1216 | extract_sfmt_div0u: |
c906108c | 1217 | { |
7a292a7a | 1218 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 1219 | #define FLD(f) abuf->fields.fmt_empty.f |
c906108c | 1220 | |
c906108c SS |
1221 | |
1222 | /* Record the fields for the semantic handler. */ | |
96baa820 | 1223 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0u", (char *) 0)); |
c906108c SS |
1224 | |
1225 | #undef FLD | |
7a292a7a | 1226 | return idesc; |
c906108c SS |
1227 | } |
1228 | ||
96baa820 | 1229 | extract_sfmt_div1: |
c906108c | 1230 | { |
7a292a7a | 1231 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1232 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1233 | #define FLD(f) abuf->fields.sfmt_mov2dr.f |
9846de1b | 1234 | UINT f_Ri; |
c906108c | 1235 | |
9846de1b | 1236 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
1237 | |
1238 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 1239 | FLD (f_Ri) = f_Ri; |
c906108c | 1240 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1241 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div1", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1242 | |
1243 | #if WITH_PROFILE_MODEL_P | |
1244 | /* Record the fields for profiling. */ | |
1245 | if (PROFILE_MODEL_P (current_cpu)) | |
1246 | { | |
1247 | FLD (in_Ri) = f_Ri; | |
1248 | } | |
1249 | #endif | |
1250 | #undef FLD | |
7a292a7a | 1251 | return idesc; |
c906108c SS |
1252 | } |
1253 | ||
96baa820 | 1254 | extract_sfmt_div2: |
c906108c | 1255 | { |
7a292a7a | 1256 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1257 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1258 | #define FLD(f) abuf->fields.sfmt_mov2dr.f |
9846de1b | 1259 | UINT f_Ri; |
c906108c | 1260 | |
9846de1b | 1261 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
1262 | |
1263 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 1264 | FLD (f_Ri) = f_Ri; |
c906108c | 1265 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1266 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div2", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1267 | |
1268 | #if WITH_PROFILE_MODEL_P | |
1269 | /* Record the fields for profiling. */ | |
1270 | if (PROFILE_MODEL_P (current_cpu)) | |
1271 | { | |
1272 | FLD (in_Ri) = f_Ri; | |
1273 | } | |
1274 | #endif | |
1275 | #undef FLD | |
7a292a7a | 1276 | return idesc; |
c906108c SS |
1277 | } |
1278 | ||
96baa820 | 1279 | extract_sfmt_div3: |
c906108c | 1280 | { |
7a292a7a | 1281 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 1282 | #define FLD(f) abuf->fields.fmt_empty.f |
c906108c | 1283 | |
c906108c SS |
1284 | |
1285 | /* Record the fields for the semantic handler. */ | |
96baa820 | 1286 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div3", (char *) 0)); |
c906108c SS |
1287 | |
1288 | #undef FLD | |
7a292a7a | 1289 | return idesc; |
c906108c SS |
1290 | } |
1291 | ||
96baa820 | 1292 | extract_sfmt_div4s: |
c906108c | 1293 | { |
7a292a7a | 1294 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 1295 | #define FLD(f) abuf->fields.fmt_empty.f |
c906108c | 1296 | |
c906108c SS |
1297 | |
1298 | /* Record the fields for the semantic handler. */ | |
96baa820 | 1299 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div4s", (char *) 0)); |
c906108c SS |
1300 | |
1301 | #undef FLD | |
7a292a7a | 1302 | return idesc; |
c906108c SS |
1303 | } |
1304 | ||
96baa820 | 1305 | extract_sfmt_lsl: |
c906108c | 1306 | { |
7a292a7a | 1307 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1308 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1309 | #define FLD(f) abuf->fields.sfmt_add.f |
9846de1b JM |
1310 | UINT f_Rj; |
1311 | UINT f_Ri; | |
c906108c | 1312 | |
9846de1b JM |
1313 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1314 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1315 | |
1316 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
1317 | FLD (f_Ri) = f_Ri; |
1318 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
1319 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
1320 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 1321 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsl", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
1322 | |
1323 | #if WITH_PROFILE_MODEL_P | |
1324 | /* Record the fields for profiling. */ | |
1325 | if (PROFILE_MODEL_P (current_cpu)) | |
1326 | { | |
1327 | FLD (in_Ri) = f_Ri; | |
1328 | FLD (in_Rj) = f_Rj; | |
1329 | FLD (out_Ri) = f_Ri; | |
1330 | } | |
1331 | #endif | |
1332 | #undef FLD | |
7a292a7a | 1333 | return idesc; |
c906108c SS |
1334 | } |
1335 | ||
96baa820 | 1336 | extract_sfmt_lsli: |
c906108c | 1337 | { |
7a292a7a | 1338 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1339 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1340 | #define FLD(f) abuf->fields.sfmt_addi.f |
9846de1b JM |
1341 | UINT f_u4; |
1342 | UINT f_Ri; | |
c906108c | 1343 | |
9846de1b JM |
1344 | f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1345 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1346 | |
1347 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 1348 | FLD (f_Ri) = f_Ri; |
c906108c SS |
1349 | FLD (f_u4) = f_u4; |
1350 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 1351 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsli", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1352 | |
1353 | #if WITH_PROFILE_MODEL_P | |
1354 | /* Record the fields for profiling. */ | |
1355 | if (PROFILE_MODEL_P (current_cpu)) | |
1356 | { | |
1357 | FLD (in_Ri) = f_Ri; | |
1358 | FLD (out_Ri) = f_Ri; | |
1359 | } | |
1360 | #endif | |
1361 | #undef FLD | |
7a292a7a | 1362 | return idesc; |
c906108c SS |
1363 | } |
1364 | ||
96baa820 | 1365 | extract_sfmt_ldi8: |
c906108c | 1366 | { |
7a292a7a | 1367 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1368 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1369 | #define FLD(f) abuf->fields.sfmt_ldi8.f |
9846de1b JM |
1370 | UINT f_i8; |
1371 | UINT f_Ri; | |
c906108c | 1372 | |
9846de1b JM |
1373 | f_i8 = EXTRACT_MSB0_UINT (insn, 16, 4, 8); |
1374 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1375 | |
1376 | /* Record the fields for the semantic handler. */ | |
1377 | FLD (f_i8) = f_i8; | |
e5c59029 | 1378 | FLD (f_Ri) = f_Ri; |
c906108c | 1379 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1380 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi8", "f_i8 0x%x", 'x', f_i8, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1381 | |
1382 | #if WITH_PROFILE_MODEL_P | |
1383 | /* Record the fields for profiling. */ | |
1384 | if (PROFILE_MODEL_P (current_cpu)) | |
1385 | { | |
1386 | FLD (out_Ri) = f_Ri; | |
1387 | } | |
1388 | #endif | |
1389 | #undef FLD | |
7a292a7a | 1390 | return idesc; |
c906108c SS |
1391 | } |
1392 | ||
96baa820 | 1393 | extract_sfmt_ldi20: |
c906108c | 1394 | { |
7a292a7a | 1395 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1396 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1397 | #define FLD(f) abuf->fields.sfmt_ldi20.f |
9846de1b JM |
1398 | UINT f_i20_16; |
1399 | UINT f_i20_4; | |
1400 | UINT f_Ri; | |
1401 | UINT f_i20; | |
1402 | /* Contents of trailing part of insn. */ | |
1403 | UINT word_1; | |
1404 | ||
1405 | word_1 = GETIMEMUHI (current_cpu, pc + 2); | |
1406 | f_i20_16 = (0|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 0)); | |
1407 | f_i20_4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); | |
1408 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
1409 | { | |
1410 | f_i20 = ((((f_i20_4) << (16))) | (f_i20_16)); | |
1411 | } | |
c906108c SS |
1412 | |
1413 | /* Record the fields for the semantic handler. */ | |
1414 | FLD (f_i20) = f_i20; | |
e5c59029 | 1415 | FLD (f_Ri) = f_Ri; |
c906108c | 1416 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1417 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi20", "f_i20 0x%x", 'x', f_i20, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1418 | |
1419 | #if WITH_PROFILE_MODEL_P | |
1420 | /* Record the fields for profiling. */ | |
1421 | if (PROFILE_MODEL_P (current_cpu)) | |
1422 | { | |
1423 | FLD (out_Ri) = f_Ri; | |
1424 | } | |
1425 | #endif | |
1426 | #undef FLD | |
7a292a7a | 1427 | return idesc; |
c906108c SS |
1428 | } |
1429 | ||
96baa820 | 1430 | extract_sfmt_ldi32: |
c906108c | 1431 | { |
7a292a7a | 1432 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1433 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1434 | #define FLD(f) abuf->fields.sfmt_ldi32.f |
9846de1b JM |
1435 | UINT f_i32; |
1436 | UINT f_Ri; | |
1437 | /* Contents of trailing part of insn. */ | |
1438 | UINT word_1; | |
1439 | UINT word_2; | |
c906108c | 1440 | |
9846de1b JM |
1441 | word_1 = GETIMEMUHI (current_cpu, pc + 2); |
1442 | word_2 = GETIMEMUHI (current_cpu, pc + 4); | |
1443 | f_i32 = (0|(EXTRACT_MSB0_UINT (word_2, 16, 0, 16) << 0)|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 16)); | |
1444 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1445 | |
1446 | /* Record the fields for the semantic handler. */ | |
1447 | FLD (f_i32) = f_i32; | |
e5c59029 | 1448 | FLD (f_Ri) = f_Ri; |
c906108c | 1449 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1450 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi32", "f_i32 0x%x", 'x', f_i32, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1451 | |
1452 | #if WITH_PROFILE_MODEL_P | |
1453 | /* Record the fields for profiling. */ | |
1454 | if (PROFILE_MODEL_P (current_cpu)) | |
1455 | { | |
1456 | FLD (out_Ri) = f_Ri; | |
1457 | } | |
1458 | #endif | |
1459 | #undef FLD | |
7a292a7a | 1460 | return idesc; |
c906108c SS |
1461 | } |
1462 | ||
96baa820 | 1463 | extract_sfmt_ld: |
c906108c | 1464 | { |
7a292a7a | 1465 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1466 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1467 | #define FLD(f) abuf->fields.sfmt_ldr13.f |
9846de1b JM |
1468 | UINT f_Rj; |
1469 | UINT f_Ri; | |
c906108c | 1470 | |
9846de1b JM |
1471 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1472 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1473 | |
1474 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
1475 | FLD (f_Rj) = f_Rj; |
1476 | FLD (f_Ri) = f_Ri; | |
c906108c SS |
1477 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; |
1478 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 1479 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c | 1480 | |
3e43c635 DB |
1481 | #if WITH_PROFILE_MODEL_P |
1482 | /* Record the fields for profiling. */ | |
1483 | if (PROFILE_MODEL_P (current_cpu)) | |
1484 | { | |
1485 | FLD (in_Rj) = f_Rj; | |
1486 | FLD (out_Ri) = f_Ri; | |
1487 | } | |
1488 | #endif | |
1489 | #undef FLD | |
1490 | return idesc; | |
1491 | } | |
1492 | ||
1493 | extract_sfmt_lduh: | |
1494 | { | |
1495 | const IDESC *idesc = &fr30bf_insn_data[itype]; | |
1496 | CGEN_INSN_INT insn = base_insn; | |
1497 | #define FLD(f) abuf->fields.sfmt_ldr13.f | |
1498 | UINT f_Rj; | |
1499 | UINT f_Ri; | |
1500 | ||
1501 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); | |
1502 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
1503 | ||
1504 | /* Record the fields for the semantic handler. */ | |
1505 | FLD (f_Rj) = f_Rj; | |
1506 | FLD (f_Ri) = f_Ri; | |
1507 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
1508 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
1509 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lduh", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0)); | |
1510 | ||
1511 | #if WITH_PROFILE_MODEL_P | |
1512 | /* Record the fields for profiling. */ | |
1513 | if (PROFILE_MODEL_P (current_cpu)) | |
1514 | { | |
1515 | FLD (in_Rj) = f_Rj; | |
1516 | FLD (out_Ri) = f_Ri; | |
1517 | } | |
1518 | #endif | |
1519 | #undef FLD | |
1520 | return idesc; | |
1521 | } | |
1522 | ||
1523 | extract_sfmt_ldub: | |
1524 | { | |
1525 | const IDESC *idesc = &fr30bf_insn_data[itype]; | |
1526 | CGEN_INSN_INT insn = base_insn; | |
1527 | #define FLD(f) abuf->fields.sfmt_ldr13.f | |
1528 | UINT f_Rj; | |
1529 | UINT f_Ri; | |
1530 | ||
1531 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); | |
1532 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
1533 | ||
1534 | /* Record the fields for the semantic handler. */ | |
1535 | FLD (f_Rj) = f_Rj; | |
1536 | FLD (f_Ri) = f_Ri; | |
1537 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
1538 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
1539 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldub", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0)); | |
1540 | ||
c906108c SS |
1541 | #if WITH_PROFILE_MODEL_P |
1542 | /* Record the fields for profiling. */ | |
1543 | if (PROFILE_MODEL_P (current_cpu)) | |
1544 | { | |
1545 | FLD (in_Rj) = f_Rj; | |
1546 | FLD (out_Ri) = f_Ri; | |
1547 | } | |
1548 | #endif | |
1549 | #undef FLD | |
7a292a7a | 1550 | return idesc; |
c906108c SS |
1551 | } |
1552 | ||
96baa820 | 1553 | extract_sfmt_ldr13: |
c906108c | 1554 | { |
7a292a7a | 1555 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1556 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1557 | #define FLD(f) abuf->fields.sfmt_ldr13.f |
9846de1b JM |
1558 | UINT f_Rj; |
1559 | UINT f_Ri; | |
c906108c | 1560 | |
9846de1b JM |
1561 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1562 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1563 | |
1564 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
1565 | FLD (f_Rj) = f_Rj; |
1566 | FLD (f_Ri) = f_Ri; | |
c906108c SS |
1567 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; |
1568 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 1569 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c | 1570 | |
c906108c SS |
1571 | #if WITH_PROFILE_MODEL_P |
1572 | /* Record the fields for profiling. */ | |
1573 | if (PROFILE_MODEL_P (current_cpu)) | |
1574 | { | |
1575 | FLD (in_Rj) = f_Rj; | |
3e43c635 DB |
1576 | FLD (in_h_gr_SI_13) = 13; |
1577 | FLD (out_Ri) = f_Ri; | |
1578 | } | |
1579 | #endif | |
1580 | #undef FLD | |
1581 | return idesc; | |
1582 | } | |
1583 | ||
1584 | extract_sfmt_ldr13uh: | |
1585 | { | |
1586 | const IDESC *idesc = &fr30bf_insn_data[itype]; | |
1587 | CGEN_INSN_INT insn = base_insn; | |
1588 | #define FLD(f) abuf->fields.sfmt_ldr13.f | |
1589 | UINT f_Rj; | |
1590 | UINT f_Ri; | |
1591 | ||
1592 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); | |
1593 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
1594 | ||
1595 | /* Record the fields for the semantic handler. */ | |
1596 | FLD (f_Rj) = f_Rj; | |
1597 | FLD (f_Ri) = f_Ri; | |
1598 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
1599 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
1600 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13uh", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0)); | |
1601 | ||
1602 | #if WITH_PROFILE_MODEL_P | |
1603 | /* Record the fields for profiling. */ | |
1604 | if (PROFILE_MODEL_P (current_cpu)) | |
1605 | { | |
1606 | FLD (in_Rj) = f_Rj; | |
1607 | FLD (in_h_gr_SI_13) = 13; | |
1608 | FLD (out_Ri) = f_Ri; | |
1609 | } | |
1610 | #endif | |
1611 | #undef FLD | |
1612 | return idesc; | |
1613 | } | |
1614 | ||
1615 | extract_sfmt_ldr13ub: | |
1616 | { | |
1617 | const IDESC *idesc = &fr30bf_insn_data[itype]; | |
1618 | CGEN_INSN_INT insn = base_insn; | |
1619 | #define FLD(f) abuf->fields.sfmt_ldr13.f | |
1620 | UINT f_Rj; | |
1621 | UINT f_Ri; | |
1622 | ||
1623 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); | |
1624 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
1625 | ||
1626 | /* Record the fields for the semantic handler. */ | |
1627 | FLD (f_Rj) = f_Rj; | |
1628 | FLD (f_Ri) = f_Ri; | |
1629 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
1630 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
1631 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13ub", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0)); | |
1632 | ||
1633 | #if WITH_PROFILE_MODEL_P | |
1634 | /* Record the fields for profiling. */ | |
1635 | if (PROFILE_MODEL_P (current_cpu)) | |
1636 | { | |
1637 | FLD (in_Rj) = f_Rj; | |
1638 | FLD (in_h_gr_SI_13) = 13; | |
c906108c SS |
1639 | FLD (out_Ri) = f_Ri; |
1640 | } | |
1641 | #endif | |
1642 | #undef FLD | |
7a292a7a | 1643 | return idesc; |
c906108c SS |
1644 | } |
1645 | ||
96baa820 | 1646 | extract_sfmt_ldr14: |
c906108c | 1647 | { |
7a292a7a | 1648 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1649 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1650 | #define FLD(f) abuf->fields.sfmt_ldr14.f |
9846de1b JM |
1651 | SI f_disp10; |
1652 | UINT f_Ri; | |
c906108c | 1653 | |
9846de1b JM |
1654 | f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2)); |
1655 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1656 | |
1657 | /* Record the fields for the semantic handler. */ | |
1658 | FLD (f_disp10) = f_disp10; | |
e5c59029 | 1659 | FLD (f_Ri) = f_Ri; |
c906108c | 1660 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1661 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14", "f_disp10 0x%x", 'x', f_disp10, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1662 | |
1663 | #if WITH_PROFILE_MODEL_P | |
1664 | /* Record the fields for profiling. */ | |
1665 | if (PROFILE_MODEL_P (current_cpu)) | |
1666 | { | |
3e43c635 | 1667 | FLD (in_h_gr_SI_14) = 14; |
c906108c SS |
1668 | FLD (out_Ri) = f_Ri; |
1669 | } | |
1670 | #endif | |
1671 | #undef FLD | |
7a292a7a | 1672 | return idesc; |
c906108c SS |
1673 | } |
1674 | ||
96baa820 | 1675 | extract_sfmt_ldr14uh: |
c906108c | 1676 | { |
7a292a7a | 1677 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1678 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1679 | #define FLD(f) abuf->fields.sfmt_ldr14uh.f |
9846de1b JM |
1680 | SI f_disp9; |
1681 | UINT f_Ri; | |
c906108c | 1682 | |
9846de1b JM |
1683 | f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1)); |
1684 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1685 | |
1686 | /* Record the fields for the semantic handler. */ | |
1687 | FLD (f_disp9) = f_disp9; | |
e5c59029 | 1688 | FLD (f_Ri) = f_Ri; |
c906108c | 1689 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1690 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14uh", "f_disp9 0x%x", 'x', f_disp9, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1691 | |
1692 | #if WITH_PROFILE_MODEL_P | |
1693 | /* Record the fields for profiling. */ | |
1694 | if (PROFILE_MODEL_P (current_cpu)) | |
1695 | { | |
3e43c635 | 1696 | FLD (in_h_gr_SI_14) = 14; |
c906108c SS |
1697 | FLD (out_Ri) = f_Ri; |
1698 | } | |
1699 | #endif | |
1700 | #undef FLD | |
7a292a7a | 1701 | return idesc; |
c906108c SS |
1702 | } |
1703 | ||
96baa820 | 1704 | extract_sfmt_ldr14ub: |
c906108c | 1705 | { |
7a292a7a | 1706 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1707 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1708 | #define FLD(f) abuf->fields.sfmt_ldr14ub.f |
9846de1b JM |
1709 | INT f_disp8; |
1710 | UINT f_Ri; | |
c906108c | 1711 | |
9846de1b JM |
1712 | f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8); |
1713 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1714 | |
1715 | /* Record the fields for the semantic handler. */ | |
1716 | FLD (f_disp8) = f_disp8; | |
e5c59029 | 1717 | FLD (f_Ri) = f_Ri; |
c906108c | 1718 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1719 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14ub", "f_disp8 0x%x", 'x', f_disp8, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1720 | |
1721 | #if WITH_PROFILE_MODEL_P | |
1722 | /* Record the fields for profiling. */ | |
1723 | if (PROFILE_MODEL_P (current_cpu)) | |
1724 | { | |
3e43c635 | 1725 | FLD (in_h_gr_SI_14) = 14; |
c906108c SS |
1726 | FLD (out_Ri) = f_Ri; |
1727 | } | |
1728 | #endif | |
1729 | #undef FLD | |
7a292a7a | 1730 | return idesc; |
c906108c SS |
1731 | } |
1732 | ||
96baa820 | 1733 | extract_sfmt_ldr15: |
c906108c | 1734 | { |
7a292a7a | 1735 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1736 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1737 | #define FLD(f) abuf->fields.sfmt_ldr15.f |
9846de1b JM |
1738 | USI f_udisp6; |
1739 | UINT f_Ri; | |
c906108c | 1740 | |
9846de1b JM |
1741 | f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2)); |
1742 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1743 | |
1744 | /* Record the fields for the semantic handler. */ | |
1745 | FLD (f_udisp6) = f_udisp6; | |
e5c59029 | 1746 | FLD (f_Ri) = f_Ri; |
c906108c | 1747 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 1748 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15", "f_udisp6 0x%x", 'x', f_udisp6, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1749 | |
1750 | #if WITH_PROFILE_MODEL_P | |
1751 | /* Record the fields for profiling. */ | |
1752 | if (PROFILE_MODEL_P (current_cpu)) | |
1753 | { | |
3e43c635 | 1754 | FLD (in_h_gr_SI_15) = 15; |
c906108c SS |
1755 | FLD (out_Ri) = f_Ri; |
1756 | } | |
1757 | #endif | |
1758 | #undef FLD | |
7a292a7a | 1759 | return idesc; |
c906108c SS |
1760 | } |
1761 | ||
96baa820 | 1762 | extract_sfmt_ldr15gr: |
c906108c | 1763 | { |
7a292a7a | 1764 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1765 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1766 | #define FLD(f) abuf->fields.sfmt_ldr15gr.f |
9846de1b | 1767 | UINT f_Ri; |
c906108c | 1768 | |
9846de1b | 1769 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
1770 | |
1771 | /* Record the fields for the semantic handler. */ | |
1772 | FLD (f_Ri) = f_Ri; | |
1773 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
96baa820 | 1774 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15gr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
1775 | |
1776 | #if WITH_PROFILE_MODEL_P | |
1777 | /* Record the fields for profiling. */ | |
1778 | if (PROFILE_MODEL_P (current_cpu)) | |
1779 | { | |
3e43c635 | 1780 | FLD (in_h_gr_SI_15) = 15; |
c906108c | 1781 | FLD (out_Ri) = f_Ri; |
3e43c635 | 1782 | FLD (out_h_gr_SI_15) = 15; |
c906108c SS |
1783 | } |
1784 | #endif | |
1785 | #undef FLD | |
7a292a7a | 1786 | return idesc; |
c906108c SS |
1787 | } |
1788 | ||
96baa820 | 1789 | extract_sfmt_ldr15dr: |
c906108c | 1790 | { |
7a292a7a | 1791 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1792 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1793 | #define FLD(f) abuf->fields.sfmt_ldr15dr.f |
9846de1b | 1794 | UINT f_Rs2; |
c906108c | 1795 | |
9846de1b | 1796 | f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
1797 | |
1798 | /* Record the fields for the semantic handler. */ | |
1799 | FLD (f_Rs2) = f_Rs2; | |
96baa820 | 1800 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0)); |
c906108c SS |
1801 | |
1802 | #if WITH_PROFILE_MODEL_P | |
1803 | /* Record the fields for profiling. */ | |
1804 | if (PROFILE_MODEL_P (current_cpu)) | |
1805 | { | |
3e43c635 DB |
1806 | FLD (in_h_gr_SI_15) = 15; |
1807 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
1808 | } |
1809 | #endif | |
1810 | #undef FLD | |
7a292a7a | 1811 | return idesc; |
c906108c SS |
1812 | } |
1813 | ||
96baa820 | 1814 | extract_sfmt_ldr15ps: |
c906108c | 1815 | { |
7a292a7a | 1816 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 1817 | #define FLD(f) abuf->fields.sfmt_addsp.f |
c906108c | 1818 | |
c906108c SS |
1819 | |
1820 | /* Record the fields for the semantic handler. */ | |
96baa820 | 1821 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15ps", (char *) 0)); |
c906108c SS |
1822 | |
1823 | #if WITH_PROFILE_MODEL_P | |
1824 | /* Record the fields for profiling. */ | |
1825 | if (PROFILE_MODEL_P (current_cpu)) | |
1826 | { | |
3e43c635 DB |
1827 | FLD (in_h_gr_SI_15) = 15; |
1828 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
1829 | } |
1830 | #endif | |
1831 | #undef FLD | |
7a292a7a | 1832 | return idesc; |
c906108c SS |
1833 | } |
1834 | ||
96baa820 | 1835 | extract_sfmt_st: |
c906108c | 1836 | { |
7a292a7a | 1837 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1838 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1839 | #define FLD(f) abuf->fields.sfmt_str13.f |
9846de1b JM |
1840 | UINT f_Rj; |
1841 | UINT f_Ri; | |
c906108c | 1842 | |
9846de1b JM |
1843 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1844 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1845 | |
1846 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
1847 | FLD (f_Ri) = f_Ri; |
1848 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
1849 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
1850 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 1851 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c | 1852 | |
3e43c635 DB |
1853 | #if WITH_PROFILE_MODEL_P |
1854 | /* Record the fields for profiling. */ | |
1855 | if (PROFILE_MODEL_P (current_cpu)) | |
1856 | { | |
1857 | FLD (in_Ri) = f_Ri; | |
1858 | FLD (in_Rj) = f_Rj; | |
1859 | } | |
1860 | #endif | |
1861 | #undef FLD | |
1862 | return idesc; | |
1863 | } | |
1864 | ||
1865 | extract_sfmt_sth: | |
1866 | { | |
1867 | const IDESC *idesc = &fr30bf_insn_data[itype]; | |
1868 | CGEN_INSN_INT insn = base_insn; | |
1869 | #define FLD(f) abuf->fields.sfmt_str13.f | |
1870 | UINT f_Rj; | |
1871 | UINT f_Ri; | |
1872 | ||
1873 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); | |
1874 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
1875 | ||
1876 | /* Record the fields for the semantic handler. */ | |
1877 | FLD (f_Ri) = f_Ri; | |
1878 | FLD (f_Rj) = f_Rj; | |
1879 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
1880 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
1881 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); | |
1882 | ||
1883 | #if WITH_PROFILE_MODEL_P | |
1884 | /* Record the fields for profiling. */ | |
1885 | if (PROFILE_MODEL_P (current_cpu)) | |
1886 | { | |
1887 | FLD (in_Ri) = f_Ri; | |
1888 | FLD (in_Rj) = f_Rj; | |
1889 | } | |
1890 | #endif | |
1891 | #undef FLD | |
1892 | return idesc; | |
1893 | } | |
1894 | ||
1895 | extract_sfmt_stb: | |
1896 | { | |
1897 | const IDESC *idesc = &fr30bf_insn_data[itype]; | |
1898 | CGEN_INSN_INT insn = base_insn; | |
1899 | #define FLD(f) abuf->fields.sfmt_str13.f | |
1900 | UINT f_Rj; | |
1901 | UINT f_Ri; | |
1902 | ||
1903 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); | |
1904 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
1905 | ||
1906 | /* Record the fields for the semantic handler. */ | |
1907 | FLD (f_Ri) = f_Ri; | |
1908 | FLD (f_Rj) = f_Rj; | |
1909 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
1910 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
1911 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); | |
1912 | ||
c906108c SS |
1913 | #if WITH_PROFILE_MODEL_P |
1914 | /* Record the fields for profiling. */ | |
1915 | if (PROFILE_MODEL_P (current_cpu)) | |
1916 | { | |
1917 | FLD (in_Ri) = f_Ri; | |
1918 | FLD (in_Rj) = f_Rj; | |
1919 | } | |
1920 | #endif | |
1921 | #undef FLD | |
7a292a7a | 1922 | return idesc; |
c906108c SS |
1923 | } |
1924 | ||
96baa820 | 1925 | extract_sfmt_str13: |
c906108c | 1926 | { |
7a292a7a | 1927 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 1928 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 1929 | #define FLD(f) abuf->fields.sfmt_str13.f |
9846de1b JM |
1930 | UINT f_Rj; |
1931 | UINT f_Ri; | |
c906108c | 1932 | |
9846de1b JM |
1933 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
1934 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
1935 | |
1936 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
1937 | FLD (f_Ri) = f_Ri; |
1938 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
1939 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
1940 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 1941 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c | 1942 | |
c906108c SS |
1943 | #if WITH_PROFILE_MODEL_P |
1944 | /* Record the fields for profiling. */ | |
1945 | if (PROFILE_MODEL_P (current_cpu)) | |
1946 | { | |
1947 | FLD (in_Ri) = f_Ri; | |
1948 | FLD (in_Rj) = f_Rj; | |
3e43c635 DB |
1949 | FLD (in_h_gr_SI_13) = 13; |
1950 | } | |
1951 | #endif | |
1952 | #undef FLD | |
1953 | return idesc; | |
1954 | } | |
1955 | ||
1956 | extract_sfmt_str13h: | |
1957 | { | |
1958 | const IDESC *idesc = &fr30bf_insn_data[itype]; | |
1959 | CGEN_INSN_INT insn = base_insn; | |
1960 | #define FLD(f) abuf->fields.sfmt_str13.f | |
1961 | UINT f_Rj; | |
1962 | UINT f_Ri; | |
1963 | ||
1964 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); | |
1965 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
1966 | ||
1967 | /* Record the fields for the semantic handler. */ | |
1968 | FLD (f_Ri) = f_Ri; | |
1969 | FLD (f_Rj) = f_Rj; | |
1970 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
1971 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
1972 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13h", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); | |
1973 | ||
1974 | #if WITH_PROFILE_MODEL_P | |
1975 | /* Record the fields for profiling. */ | |
1976 | if (PROFILE_MODEL_P (current_cpu)) | |
1977 | { | |
1978 | FLD (in_Ri) = f_Ri; | |
1979 | FLD (in_Rj) = f_Rj; | |
1980 | FLD (in_h_gr_SI_13) = 13; | |
1981 | } | |
1982 | #endif | |
1983 | #undef FLD | |
1984 | return idesc; | |
1985 | } | |
1986 | ||
1987 | extract_sfmt_str13b: | |
1988 | { | |
1989 | const IDESC *idesc = &fr30bf_insn_data[itype]; | |
1990 | CGEN_INSN_INT insn = base_insn; | |
1991 | #define FLD(f) abuf->fields.sfmt_str13.f | |
1992 | UINT f_Rj; | |
1993 | UINT f_Ri; | |
1994 | ||
1995 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); | |
1996 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
1997 | ||
1998 | /* Record the fields for the semantic handler. */ | |
1999 | FLD (f_Ri) = f_Ri; | |
2000 | FLD (f_Rj) = f_Rj; | |
2001 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
2002 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
2003 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13b", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); | |
2004 | ||
2005 | #if WITH_PROFILE_MODEL_P | |
2006 | /* Record the fields for profiling. */ | |
2007 | if (PROFILE_MODEL_P (current_cpu)) | |
2008 | { | |
2009 | FLD (in_Ri) = f_Ri; | |
2010 | FLD (in_Rj) = f_Rj; | |
2011 | FLD (in_h_gr_SI_13) = 13; | |
c906108c SS |
2012 | } |
2013 | #endif | |
2014 | #undef FLD | |
7a292a7a | 2015 | return idesc; |
c906108c SS |
2016 | } |
2017 | ||
96baa820 | 2018 | extract_sfmt_str14: |
c906108c | 2019 | { |
7a292a7a | 2020 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2021 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2022 | #define FLD(f) abuf->fields.sfmt_str14.f |
9846de1b JM |
2023 | SI f_disp10; |
2024 | UINT f_Ri; | |
c906108c | 2025 | |
9846de1b JM |
2026 | f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2)); |
2027 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
2028 | |
2029 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2030 | FLD (f_Ri) = f_Ri; |
c906108c SS |
2031 | FLD (f_disp10) = f_disp10; |
2032 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 2033 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14", "f_Ri 0x%x", 'x', f_Ri, "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2034 | |
2035 | #if WITH_PROFILE_MODEL_P | |
2036 | /* Record the fields for profiling. */ | |
2037 | if (PROFILE_MODEL_P (current_cpu)) | |
2038 | { | |
2039 | FLD (in_Ri) = f_Ri; | |
3e43c635 | 2040 | FLD (in_h_gr_SI_14) = 14; |
c906108c SS |
2041 | } |
2042 | #endif | |
2043 | #undef FLD | |
7a292a7a | 2044 | return idesc; |
c906108c SS |
2045 | } |
2046 | ||
96baa820 | 2047 | extract_sfmt_str14h: |
c906108c | 2048 | { |
7a292a7a | 2049 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2050 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2051 | #define FLD(f) abuf->fields.sfmt_str14h.f |
9846de1b JM |
2052 | SI f_disp9; |
2053 | UINT f_Ri; | |
c906108c | 2054 | |
9846de1b JM |
2055 | f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1)); |
2056 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
2057 | |
2058 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2059 | FLD (f_Ri) = f_Ri; |
c906108c SS |
2060 | FLD (f_disp9) = f_disp9; |
2061 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 2062 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14h", "f_Ri 0x%x", 'x', f_Ri, "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2063 | |
2064 | #if WITH_PROFILE_MODEL_P | |
2065 | /* Record the fields for profiling. */ | |
2066 | if (PROFILE_MODEL_P (current_cpu)) | |
2067 | { | |
2068 | FLD (in_Ri) = f_Ri; | |
3e43c635 | 2069 | FLD (in_h_gr_SI_14) = 14; |
c906108c SS |
2070 | } |
2071 | #endif | |
2072 | #undef FLD | |
7a292a7a | 2073 | return idesc; |
c906108c SS |
2074 | } |
2075 | ||
96baa820 | 2076 | extract_sfmt_str14b: |
c906108c | 2077 | { |
7a292a7a | 2078 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2079 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2080 | #define FLD(f) abuf->fields.sfmt_str14b.f |
9846de1b JM |
2081 | INT f_disp8; |
2082 | UINT f_Ri; | |
c906108c | 2083 | |
9846de1b JM |
2084 | f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8); |
2085 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
2086 | |
2087 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2088 | FLD (f_Ri) = f_Ri; |
c906108c SS |
2089 | FLD (f_disp8) = f_disp8; |
2090 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 2091 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14b", "f_Ri 0x%x", 'x', f_Ri, "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2092 | |
2093 | #if WITH_PROFILE_MODEL_P | |
2094 | /* Record the fields for profiling. */ | |
2095 | if (PROFILE_MODEL_P (current_cpu)) | |
2096 | { | |
2097 | FLD (in_Ri) = f_Ri; | |
3e43c635 | 2098 | FLD (in_h_gr_SI_14) = 14; |
c906108c SS |
2099 | } |
2100 | #endif | |
2101 | #undef FLD | |
7a292a7a | 2102 | return idesc; |
c906108c SS |
2103 | } |
2104 | ||
96baa820 | 2105 | extract_sfmt_str15: |
c906108c | 2106 | { |
7a292a7a | 2107 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2108 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2109 | #define FLD(f) abuf->fields.sfmt_str15.f |
9846de1b JM |
2110 | USI f_udisp6; |
2111 | UINT f_Ri; | |
c906108c | 2112 | |
9846de1b JM |
2113 | f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2)); |
2114 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
2115 | |
2116 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2117 | FLD (f_Ri) = f_Ri; |
c906108c SS |
2118 | FLD (f_udisp6) = f_udisp6; |
2119 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 2120 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15", "f_Ri 0x%x", 'x', f_Ri, "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2121 | |
2122 | #if WITH_PROFILE_MODEL_P | |
2123 | /* Record the fields for profiling. */ | |
2124 | if (PROFILE_MODEL_P (current_cpu)) | |
2125 | { | |
2126 | FLD (in_Ri) = f_Ri; | |
3e43c635 | 2127 | FLD (in_h_gr_SI_15) = 15; |
c906108c SS |
2128 | } |
2129 | #endif | |
2130 | #undef FLD | |
7a292a7a | 2131 | return idesc; |
c906108c SS |
2132 | } |
2133 | ||
96baa820 | 2134 | extract_sfmt_str15gr: |
c906108c | 2135 | { |
7a292a7a | 2136 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2137 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2138 | #define FLD(f) abuf->fields.sfmt_str15gr.f |
9846de1b | 2139 | UINT f_Ri; |
c906108c | 2140 | |
9846de1b | 2141 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
2142 | |
2143 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2144 | FLD (f_Ri) = f_Ri; |
c906108c | 2145 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 2146 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15gr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2147 | |
2148 | #if WITH_PROFILE_MODEL_P | |
2149 | /* Record the fields for profiling. */ | |
2150 | if (PROFILE_MODEL_P (current_cpu)) | |
2151 | { | |
2152 | FLD (in_Ri) = f_Ri; | |
3e43c635 DB |
2153 | FLD (in_h_gr_SI_15) = 15; |
2154 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
2155 | } |
2156 | #endif | |
2157 | #undef FLD | |
7a292a7a | 2158 | return idesc; |
c906108c SS |
2159 | } |
2160 | ||
96baa820 | 2161 | extract_sfmt_str15dr: |
c906108c | 2162 | { |
7a292a7a | 2163 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2164 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2165 | #define FLD(f) abuf->fields.sfmt_ldr15dr.f |
9846de1b | 2166 | UINT f_Rs2; |
c906108c | 2167 | |
9846de1b | 2168 | f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
2169 | |
2170 | /* Record the fields for the semantic handler. */ | |
2171 | FLD (f_Rs2) = f_Rs2; | |
96baa820 | 2172 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0)); |
c906108c SS |
2173 | |
2174 | #if WITH_PROFILE_MODEL_P | |
2175 | /* Record the fields for profiling. */ | |
2176 | if (PROFILE_MODEL_P (current_cpu)) | |
2177 | { | |
3e43c635 DB |
2178 | FLD (in_h_gr_SI_15) = 15; |
2179 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
2180 | } |
2181 | #endif | |
2182 | #undef FLD | |
7a292a7a | 2183 | return idesc; |
c906108c SS |
2184 | } |
2185 | ||
96baa820 | 2186 | extract_sfmt_str15ps: |
c906108c | 2187 | { |
7a292a7a | 2188 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 2189 | #define FLD(f) abuf->fields.sfmt_addsp.f |
c906108c | 2190 | |
c906108c SS |
2191 | |
2192 | /* Record the fields for the semantic handler. */ | |
96baa820 | 2193 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15ps", (char *) 0)); |
c906108c SS |
2194 | |
2195 | #if WITH_PROFILE_MODEL_P | |
2196 | /* Record the fields for profiling. */ | |
2197 | if (PROFILE_MODEL_P (current_cpu)) | |
2198 | { | |
3e43c635 DB |
2199 | FLD (in_h_gr_SI_15) = 15; |
2200 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
2201 | } |
2202 | #endif | |
2203 | #undef FLD | |
7a292a7a | 2204 | return idesc; |
c906108c SS |
2205 | } |
2206 | ||
96baa820 | 2207 | extract_sfmt_mov: |
c906108c | 2208 | { |
7a292a7a | 2209 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2210 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2211 | #define FLD(f) abuf->fields.sfmt_ldr13.f |
9846de1b JM |
2212 | UINT f_Rj; |
2213 | UINT f_Ri; | |
c906108c | 2214 | |
9846de1b JM |
2215 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
2216 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
2217 | |
2218 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
2219 | FLD (f_Rj) = f_Rj; |
2220 | FLD (f_Ri) = f_Ri; | |
c906108c SS |
2221 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; |
2222 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 2223 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2224 | |
2225 | #if WITH_PROFILE_MODEL_P | |
2226 | /* Record the fields for profiling. */ | |
2227 | if (PROFILE_MODEL_P (current_cpu)) | |
2228 | { | |
2229 | FLD (in_Rj) = f_Rj; | |
2230 | FLD (out_Ri) = f_Ri; | |
2231 | } | |
2232 | #endif | |
2233 | #undef FLD | |
7a292a7a | 2234 | return idesc; |
c906108c SS |
2235 | } |
2236 | ||
96baa820 | 2237 | extract_sfmt_movdr: |
c906108c | 2238 | { |
7a292a7a | 2239 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2240 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2241 | #define FLD(f) abuf->fields.sfmt_movdr.f |
9846de1b JM |
2242 | UINT f_Rs1; |
2243 | UINT f_Ri; | |
c906108c | 2244 | |
9846de1b JM |
2245 | f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
2246 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
2247 | |
2248 | /* Record the fields for the semantic handler. */ | |
2249 | FLD (f_Rs1) = f_Rs1; | |
e5c59029 | 2250 | FLD (f_Ri) = f_Ri; |
c906108c | 2251 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 2252 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movdr", "f_Rs1 0x%x", 'x', f_Rs1, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2253 | |
2254 | #if WITH_PROFILE_MODEL_P | |
2255 | /* Record the fields for profiling. */ | |
2256 | if (PROFILE_MODEL_P (current_cpu)) | |
2257 | { | |
2258 | FLD (out_Ri) = f_Ri; | |
2259 | } | |
2260 | #endif | |
2261 | #undef FLD | |
7a292a7a | 2262 | return idesc; |
c906108c SS |
2263 | } |
2264 | ||
96baa820 | 2265 | extract_sfmt_movps: |
c906108c | 2266 | { |
7a292a7a | 2267 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2268 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2269 | #define FLD(f) abuf->fields.sfmt_movdr.f |
9846de1b | 2270 | UINT f_Ri; |
c906108c | 2271 | |
9846de1b | 2272 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
2273 | |
2274 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2275 | FLD (f_Ri) = f_Ri; |
c906108c | 2276 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 2277 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movps", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2278 | |
2279 | #if WITH_PROFILE_MODEL_P | |
2280 | /* Record the fields for profiling. */ | |
2281 | if (PROFILE_MODEL_P (current_cpu)) | |
2282 | { | |
2283 | FLD (out_Ri) = f_Ri; | |
2284 | } | |
2285 | #endif | |
2286 | #undef FLD | |
7a292a7a | 2287 | return idesc; |
c906108c SS |
2288 | } |
2289 | ||
96baa820 | 2290 | extract_sfmt_mov2dr: |
c906108c | 2291 | { |
7a292a7a | 2292 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2293 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2294 | #define FLD(f) abuf->fields.sfmt_mov2dr.f |
9846de1b JM |
2295 | UINT f_Rs1; |
2296 | UINT f_Ri; | |
c906108c | 2297 | |
9846de1b JM |
2298 | f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
2299 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
2300 | |
2301 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2302 | FLD (f_Ri) = f_Ri; |
c906108c SS |
2303 | FLD (f_Rs1) = f_Rs1; |
2304 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; | |
e5c59029 | 2305 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2dr", "f_Ri 0x%x", 'x', f_Ri, "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2306 | |
2307 | #if WITH_PROFILE_MODEL_P | |
2308 | /* Record the fields for profiling. */ | |
2309 | if (PROFILE_MODEL_P (current_cpu)) | |
2310 | { | |
2311 | FLD (in_Ri) = f_Ri; | |
2312 | } | |
2313 | #endif | |
2314 | #undef FLD | |
7a292a7a | 2315 | return idesc; |
c906108c SS |
2316 | } |
2317 | ||
96baa820 | 2318 | extract_sfmt_mov2ps: |
c906108c | 2319 | { |
7a292a7a | 2320 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2321 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2322 | #define FLD(f) abuf->fields.sfmt_mov2dr.f |
9846de1b | 2323 | UINT f_Ri; |
c906108c | 2324 | |
9846de1b | 2325 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
2326 | |
2327 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2328 | FLD (f_Ri) = f_Ri; |
c906108c | 2329 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 2330 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2ps", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2331 | |
2332 | #if WITH_PROFILE_MODEL_P | |
2333 | /* Record the fields for profiling. */ | |
2334 | if (PROFILE_MODEL_P (current_cpu)) | |
2335 | { | |
2336 | FLD (in_Ri) = f_Ri; | |
2337 | } | |
2338 | #endif | |
2339 | #undef FLD | |
7a292a7a | 2340 | return idesc; |
c906108c SS |
2341 | } |
2342 | ||
96baa820 | 2343 | extract_sfmt_jmp: |
c906108c | 2344 | { |
7a292a7a | 2345 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2346 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2347 | #define FLD(f) abuf->fields.sfmt_mov2dr.f |
9846de1b | 2348 | UINT f_Ri; |
c906108c | 2349 | |
9846de1b | 2350 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
2351 | |
2352 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2353 | FLD (f_Ri) = f_Ri; |
c906108c | 2354 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 2355 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2356 | |
2357 | #if WITH_PROFILE_MODEL_P | |
2358 | /* Record the fields for profiling. */ | |
2359 | if (PROFILE_MODEL_P (current_cpu)) | |
2360 | { | |
2361 | FLD (in_Ri) = f_Ri; | |
2362 | } | |
2363 | #endif | |
2364 | #undef FLD | |
7a292a7a | 2365 | return idesc; |
c906108c SS |
2366 | } |
2367 | ||
96baa820 | 2368 | extract_sfmt_callr: |
c906108c | 2369 | { |
7a292a7a | 2370 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2371 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2372 | #define FLD(f) abuf->fields.sfmt_mov2dr.f |
9846de1b | 2373 | UINT f_Ri; |
c906108c | 2374 | |
9846de1b | 2375 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
2376 | |
2377 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 2378 | FLD (f_Ri) = f_Ri; |
c906108c | 2379 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 2380 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_callr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
2381 | |
2382 | #if WITH_PROFILE_MODEL_P | |
2383 | /* Record the fields for profiling. */ | |
2384 | if (PROFILE_MODEL_P (current_cpu)) | |
2385 | { | |
2386 | FLD (in_Ri) = f_Ri; | |
2387 | } | |
2388 | #endif | |
2389 | #undef FLD | |
7a292a7a | 2390 | return idesc; |
c906108c SS |
2391 | } |
2392 | ||
96baa820 | 2393 | extract_sfmt_call: |
c906108c | 2394 | { |
7a292a7a | 2395 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2396 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2397 | #define FLD(f) abuf->fields.sfmt_call.f |
9846de1b | 2398 | SI f_rel12; |
c906108c | 2399 | |
9846de1b | 2400 | f_rel12 = ((((EXTRACT_MSB0_INT (insn, 16, 5, 11)) << (1))) + (((pc) + (2)))); |
c906108c SS |
2401 | |
2402 | /* Record the fields for the semantic handler. */ | |
2403 | FLD (i_label12) = f_rel12; | |
96baa820 | 2404 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_call", "label12 0x%x", 'x', f_rel12, (char *) 0)); |
c906108c SS |
2405 | |
2406 | #if WITH_PROFILE_MODEL_P | |
2407 | /* Record the fields for profiling. */ | |
2408 | if (PROFILE_MODEL_P (current_cpu)) | |
2409 | { | |
2410 | } | |
2411 | #endif | |
2412 | #undef FLD | |
7a292a7a | 2413 | return idesc; |
c906108c SS |
2414 | } |
2415 | ||
96baa820 | 2416 | extract_sfmt_ret: |
c906108c | 2417 | { |
7a292a7a | 2418 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 2419 | #define FLD(f) abuf->fields.fmt_empty.f |
c906108c | 2420 | |
c906108c SS |
2421 | |
2422 | /* Record the fields for the semantic handler. */ | |
96baa820 | 2423 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ret", (char *) 0)); |
c906108c SS |
2424 | |
2425 | #if WITH_PROFILE_MODEL_P | |
2426 | /* Record the fields for profiling. */ | |
2427 | if (PROFILE_MODEL_P (current_cpu)) | |
2428 | { | |
2429 | } | |
2430 | #endif | |
2431 | #undef FLD | |
7a292a7a | 2432 | return idesc; |
c906108c SS |
2433 | } |
2434 | ||
96baa820 | 2435 | extract_sfmt_int: |
c906108c | 2436 | { |
7a292a7a | 2437 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2438 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2439 | #define FLD(f) abuf->fields.sfmt_int.f |
9846de1b | 2440 | UINT f_u8; |
c906108c | 2441 | |
9846de1b | 2442 | f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
2443 | |
2444 | /* Record the fields for the semantic handler. */ | |
2445 | FLD (f_u8) = f_u8; | |
96baa820 | 2446 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_int", "f_u8 0x%x", 'x', f_u8, (char *) 0)); |
c906108c SS |
2447 | |
2448 | #if WITH_PROFILE_MODEL_P | |
2449 | /* Record the fields for profiling. */ | |
2450 | if (PROFILE_MODEL_P (current_cpu)) | |
2451 | { | |
2452 | } | |
2453 | #endif | |
2454 | #undef FLD | |
7a292a7a | 2455 | return idesc; |
c906108c SS |
2456 | } |
2457 | ||
96baa820 | 2458 | extract_sfmt_inte: |
c906108c | 2459 | { |
7a292a7a | 2460 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 2461 | #define FLD(f) abuf->fields.fmt_empty.f |
c906108c | 2462 | |
c906108c SS |
2463 | |
2464 | /* Record the fields for the semantic handler. */ | |
96baa820 | 2465 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_inte", (char *) 0)); |
c906108c SS |
2466 | |
2467 | #if WITH_PROFILE_MODEL_P | |
2468 | /* Record the fields for profiling. */ | |
2469 | if (PROFILE_MODEL_P (current_cpu)) | |
2470 | { | |
2471 | } | |
2472 | #endif | |
2473 | #undef FLD | |
7a292a7a | 2474 | return idesc; |
c906108c SS |
2475 | } |
2476 | ||
96baa820 | 2477 | extract_sfmt_reti: |
c906108c | 2478 | { |
7a292a7a | 2479 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 2480 | #define FLD(f) abuf->fields.fmt_empty.f |
c906108c | 2481 | |
c906108c SS |
2482 | |
2483 | /* Record the fields for the semantic handler. */ | |
96baa820 | 2484 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_reti", (char *) 0)); |
c906108c SS |
2485 | |
2486 | #if WITH_PROFILE_MODEL_P | |
2487 | /* Record the fields for profiling. */ | |
2488 | if (PROFILE_MODEL_P (current_cpu)) | |
2489 | { | |
2490 | } | |
2491 | #endif | |
2492 | #undef FLD | |
7a292a7a | 2493 | return idesc; |
c906108c SS |
2494 | } |
2495 | ||
96baa820 | 2496 | extract_sfmt_brad: |
c906108c | 2497 | { |
7a292a7a | 2498 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2499 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2500 | #define FLD(f) abuf->fields.sfmt_brad.f |
9846de1b | 2501 | SI f_rel9; |
c906108c | 2502 | |
9846de1b | 2503 | f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2)))); |
c906108c SS |
2504 | |
2505 | /* Record the fields for the semantic handler. */ | |
2506 | FLD (i_label9) = f_rel9; | |
96baa820 | 2507 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brad", "label9 0x%x", 'x', f_rel9, (char *) 0)); |
c906108c SS |
2508 | |
2509 | #if WITH_PROFILE_MODEL_P | |
2510 | /* Record the fields for profiling. */ | |
2511 | if (PROFILE_MODEL_P (current_cpu)) | |
2512 | { | |
2513 | } | |
2514 | #endif | |
2515 | #undef FLD | |
7a292a7a | 2516 | return idesc; |
c906108c SS |
2517 | } |
2518 | ||
96baa820 | 2519 | extract_sfmt_bnod: |
c906108c | 2520 | { |
7a292a7a | 2521 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 2522 | #define FLD(f) abuf->fields.fmt_empty.f |
c906108c | 2523 | |
c906108c SS |
2524 | |
2525 | /* Record the fields for the semantic handler. */ | |
96baa820 | 2526 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnod", (char *) 0)); |
c906108c SS |
2527 | |
2528 | #undef FLD | |
7a292a7a | 2529 | return idesc; |
c906108c SS |
2530 | } |
2531 | ||
96baa820 | 2532 | extract_sfmt_beqd: |
c906108c | 2533 | { |
7a292a7a | 2534 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2535 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2536 | #define FLD(f) abuf->fields.sfmt_brad.f |
9846de1b | 2537 | SI f_rel9; |
c906108c | 2538 | |
9846de1b | 2539 | f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2)))); |
c906108c SS |
2540 | |
2541 | /* Record the fields for the semantic handler. */ | |
2542 | FLD (i_label9) = f_rel9; | |
96baa820 | 2543 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqd", "label9 0x%x", 'x', f_rel9, (char *) 0)); |
c906108c SS |
2544 | |
2545 | #if WITH_PROFILE_MODEL_P | |
2546 | /* Record the fields for profiling. */ | |
2547 | if (PROFILE_MODEL_P (current_cpu)) | |
2548 | { | |
2549 | } | |
2550 | #endif | |
2551 | #undef FLD | |
7a292a7a | 2552 | return idesc; |
c906108c SS |
2553 | } |
2554 | ||
96baa820 | 2555 | extract_sfmt_bcd: |
c906108c | 2556 | { |
7a292a7a | 2557 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2558 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2559 | #define FLD(f) abuf->fields.sfmt_brad.f |
9846de1b | 2560 | SI f_rel9; |
c906108c | 2561 | |
9846de1b | 2562 | f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2)))); |
c906108c SS |
2563 | |
2564 | /* Record the fields for the semantic handler. */ | |
2565 | FLD (i_label9) = f_rel9; | |
96baa820 | 2566 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcd", "label9 0x%x", 'x', f_rel9, (char *) 0)); |
c906108c SS |
2567 | |
2568 | #if WITH_PROFILE_MODEL_P | |
2569 | /* Record the fields for profiling. */ | |
2570 | if (PROFILE_MODEL_P (current_cpu)) | |
2571 | { | |
2572 | } | |
2573 | #endif | |
2574 | #undef FLD | |
7a292a7a | 2575 | return idesc; |
c906108c SS |
2576 | } |
2577 | ||
96baa820 | 2578 | extract_sfmt_bnd: |
c906108c | 2579 | { |
7a292a7a | 2580 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2581 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2582 | #define FLD(f) abuf->fields.sfmt_brad.f |
9846de1b | 2583 | SI f_rel9; |
c906108c | 2584 | |
9846de1b | 2585 | f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2)))); |
c906108c SS |
2586 | |
2587 | /* Record the fields for the semantic handler. */ | |
2588 | FLD (i_label9) = f_rel9; | |
96baa820 | 2589 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnd", "label9 0x%x", 'x', f_rel9, (char *) 0)); |
c906108c SS |
2590 | |
2591 | #if WITH_PROFILE_MODEL_P | |
2592 | /* Record the fields for profiling. */ | |
2593 | if (PROFILE_MODEL_P (current_cpu)) | |
2594 | { | |
2595 | } | |
2596 | #endif | |
2597 | #undef FLD | |
7a292a7a | 2598 | return idesc; |
c906108c SS |
2599 | } |
2600 | ||
96baa820 | 2601 | extract_sfmt_bvd: |
c906108c | 2602 | { |
7a292a7a | 2603 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2604 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2605 | #define FLD(f) abuf->fields.sfmt_brad.f |
9846de1b | 2606 | SI f_rel9; |
c906108c | 2607 | |
9846de1b | 2608 | f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2)))); |
c906108c SS |
2609 | |
2610 | /* Record the fields for the semantic handler. */ | |
2611 | FLD (i_label9) = f_rel9; | |
96baa820 | 2612 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bvd", "label9 0x%x", 'x', f_rel9, (char *) 0)); |
c906108c SS |
2613 | |
2614 | #if WITH_PROFILE_MODEL_P | |
2615 | /* Record the fields for profiling. */ | |
2616 | if (PROFILE_MODEL_P (current_cpu)) | |
2617 | { | |
2618 | } | |
2619 | #endif | |
2620 | #undef FLD | |
7a292a7a | 2621 | return idesc; |
c906108c SS |
2622 | } |
2623 | ||
96baa820 | 2624 | extract_sfmt_bltd: |
c906108c | 2625 | { |
7a292a7a | 2626 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2627 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2628 | #define FLD(f) abuf->fields.sfmt_brad.f |
9846de1b | 2629 | SI f_rel9; |
c906108c | 2630 | |
9846de1b | 2631 | f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2)))); |
c906108c SS |
2632 | |
2633 | /* Record the fields for the semantic handler. */ | |
2634 | FLD (i_label9) = f_rel9; | |
96baa820 | 2635 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bltd", "label9 0x%x", 'x', f_rel9, (char *) 0)); |
c906108c SS |
2636 | |
2637 | #if WITH_PROFILE_MODEL_P | |
2638 | /* Record the fields for profiling. */ | |
2639 | if (PROFILE_MODEL_P (current_cpu)) | |
2640 | { | |
2641 | } | |
2642 | #endif | |
2643 | #undef FLD | |
7a292a7a | 2644 | return idesc; |
c906108c SS |
2645 | } |
2646 | ||
96baa820 | 2647 | extract_sfmt_bled: |
c906108c | 2648 | { |
7a292a7a | 2649 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2650 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2651 | #define FLD(f) abuf->fields.sfmt_brad.f |
9846de1b | 2652 | SI f_rel9; |
c906108c | 2653 | |
9846de1b | 2654 | f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2)))); |
c906108c SS |
2655 | |
2656 | /* Record the fields for the semantic handler. */ | |
2657 | FLD (i_label9) = f_rel9; | |
96baa820 | 2658 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bled", "label9 0x%x", 'x', f_rel9, (char *) 0)); |
c906108c SS |
2659 | |
2660 | #if WITH_PROFILE_MODEL_P | |
2661 | /* Record the fields for profiling. */ | |
2662 | if (PROFILE_MODEL_P (current_cpu)) | |
2663 | { | |
2664 | } | |
2665 | #endif | |
2666 | #undef FLD | |
7a292a7a | 2667 | return idesc; |
c906108c SS |
2668 | } |
2669 | ||
96baa820 | 2670 | extract_sfmt_blsd: |
c906108c | 2671 | { |
7a292a7a | 2672 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2673 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2674 | #define FLD(f) abuf->fields.sfmt_brad.f |
9846de1b | 2675 | SI f_rel9; |
c906108c | 2676 | |
9846de1b | 2677 | f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2)))); |
c906108c SS |
2678 | |
2679 | /* Record the fields for the semantic handler. */ | |
2680 | FLD (i_label9) = f_rel9; | |
96baa820 | 2681 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_blsd", "label9 0x%x", 'x', f_rel9, (char *) 0)); |
c906108c SS |
2682 | |
2683 | #if WITH_PROFILE_MODEL_P | |
2684 | /* Record the fields for profiling. */ | |
2685 | if (PROFILE_MODEL_P (current_cpu)) | |
2686 | { | |
2687 | } | |
2688 | #endif | |
2689 | #undef FLD | |
7a292a7a | 2690 | return idesc; |
c906108c SS |
2691 | } |
2692 | ||
96baa820 | 2693 | extract_sfmt_dmovr13: |
c906108c | 2694 | { |
7a292a7a | 2695 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2696 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2697 | #define FLD(f) abuf->fields.sfmt_dmovr13pi.f |
9846de1b | 2698 | USI f_dir10; |
c906108c | 2699 | |
9846de1b | 2700 | f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2)); |
c906108c SS |
2701 | |
2702 | /* Record the fields for the semantic handler. */ | |
2703 | FLD (f_dir10) = f_dir10; | |
96baa820 | 2704 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0)); |
c906108c SS |
2705 | |
2706 | #if WITH_PROFILE_MODEL_P | |
2707 | /* Record the fields for profiling. */ | |
2708 | if (PROFILE_MODEL_P (current_cpu)) | |
2709 | { | |
3e43c635 | 2710 | FLD (in_h_gr_SI_13) = 13; |
c906108c SS |
2711 | } |
2712 | #endif | |
2713 | #undef FLD | |
7a292a7a | 2714 | return idesc; |
c906108c SS |
2715 | } |
2716 | ||
96baa820 | 2717 | extract_sfmt_dmovr13h: |
c906108c | 2718 | { |
7a292a7a | 2719 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2720 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2721 | #define FLD(f) abuf->fields.sfmt_dmovr13pih.f |
9846de1b | 2722 | USI f_dir9; |
c906108c | 2723 | |
9846de1b | 2724 | f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1)); |
c906108c SS |
2725 | |
2726 | /* Record the fields for the semantic handler. */ | |
2727 | FLD (f_dir9) = f_dir9; | |
96baa820 | 2728 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0)); |
c906108c SS |
2729 | |
2730 | #if WITH_PROFILE_MODEL_P | |
2731 | /* Record the fields for profiling. */ | |
2732 | if (PROFILE_MODEL_P (current_cpu)) | |
2733 | { | |
3e43c635 | 2734 | FLD (in_h_gr_SI_13) = 13; |
c906108c SS |
2735 | } |
2736 | #endif | |
2737 | #undef FLD | |
7a292a7a | 2738 | return idesc; |
c906108c SS |
2739 | } |
2740 | ||
96baa820 | 2741 | extract_sfmt_dmovr13b: |
c906108c | 2742 | { |
7a292a7a | 2743 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2744 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2745 | #define FLD(f) abuf->fields.sfmt_dmovr13pib.f |
9846de1b | 2746 | UINT f_dir8; |
c906108c | 2747 | |
9846de1b | 2748 | f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
2749 | |
2750 | /* Record the fields for the semantic handler. */ | |
2751 | FLD (f_dir8) = f_dir8; | |
96baa820 | 2752 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0)); |
c906108c SS |
2753 | |
2754 | #if WITH_PROFILE_MODEL_P | |
2755 | /* Record the fields for profiling. */ | |
2756 | if (PROFILE_MODEL_P (current_cpu)) | |
2757 | { | |
3e43c635 | 2758 | FLD (in_h_gr_SI_13) = 13; |
c906108c SS |
2759 | } |
2760 | #endif | |
2761 | #undef FLD | |
7a292a7a | 2762 | return idesc; |
c906108c SS |
2763 | } |
2764 | ||
96baa820 | 2765 | extract_sfmt_dmovr13pi: |
c906108c | 2766 | { |
7a292a7a | 2767 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2768 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2769 | #define FLD(f) abuf->fields.sfmt_dmovr13pi.f |
9846de1b | 2770 | USI f_dir10; |
c906108c | 2771 | |
9846de1b | 2772 | f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2)); |
c906108c SS |
2773 | |
2774 | /* Record the fields for the semantic handler. */ | |
2775 | FLD (f_dir10) = f_dir10; | |
96baa820 | 2776 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0)); |
c906108c SS |
2777 | |
2778 | #if WITH_PROFILE_MODEL_P | |
2779 | /* Record the fields for profiling. */ | |
2780 | if (PROFILE_MODEL_P (current_cpu)) | |
2781 | { | |
3e43c635 DB |
2782 | FLD (in_h_gr_SI_13) = 13; |
2783 | FLD (out_h_gr_SI_13) = 13; | |
c906108c SS |
2784 | } |
2785 | #endif | |
2786 | #undef FLD | |
7a292a7a | 2787 | return idesc; |
c906108c SS |
2788 | } |
2789 | ||
96baa820 | 2790 | extract_sfmt_dmovr13pih: |
c906108c | 2791 | { |
7a292a7a | 2792 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2793 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2794 | #define FLD(f) abuf->fields.sfmt_dmovr13pih.f |
9846de1b | 2795 | USI f_dir9; |
c906108c | 2796 | |
9846de1b | 2797 | f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1)); |
c906108c SS |
2798 | |
2799 | /* Record the fields for the semantic handler. */ | |
2800 | FLD (f_dir9) = f_dir9; | |
96baa820 | 2801 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0)); |
c906108c SS |
2802 | |
2803 | #if WITH_PROFILE_MODEL_P | |
2804 | /* Record the fields for profiling. */ | |
2805 | if (PROFILE_MODEL_P (current_cpu)) | |
2806 | { | |
3e43c635 DB |
2807 | FLD (in_h_gr_SI_13) = 13; |
2808 | FLD (out_h_gr_SI_13) = 13; | |
c906108c SS |
2809 | } |
2810 | #endif | |
2811 | #undef FLD | |
7a292a7a | 2812 | return idesc; |
c906108c SS |
2813 | } |
2814 | ||
96baa820 | 2815 | extract_sfmt_dmovr13pib: |
c906108c | 2816 | { |
7a292a7a | 2817 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2818 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2819 | #define FLD(f) abuf->fields.sfmt_dmovr13pib.f |
9846de1b | 2820 | UINT f_dir8; |
c906108c | 2821 | |
9846de1b | 2822 | f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
2823 | |
2824 | /* Record the fields for the semantic handler. */ | |
2825 | FLD (f_dir8) = f_dir8; | |
96baa820 | 2826 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0)); |
c906108c SS |
2827 | |
2828 | #if WITH_PROFILE_MODEL_P | |
2829 | /* Record the fields for profiling. */ | |
2830 | if (PROFILE_MODEL_P (current_cpu)) | |
2831 | { | |
3e43c635 DB |
2832 | FLD (in_h_gr_SI_13) = 13; |
2833 | FLD (out_h_gr_SI_13) = 13; | |
c906108c SS |
2834 | } |
2835 | #endif | |
2836 | #undef FLD | |
7a292a7a | 2837 | return idesc; |
c906108c SS |
2838 | } |
2839 | ||
96baa820 | 2840 | extract_sfmt_dmovr15pi: |
c906108c | 2841 | { |
7a292a7a | 2842 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2843 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2844 | #define FLD(f) abuf->fields.sfmt_dmovr15pi.f |
9846de1b | 2845 | USI f_dir10; |
c906108c | 2846 | |
9846de1b | 2847 | f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2)); |
c906108c SS |
2848 | |
2849 | /* Record the fields for the semantic handler. */ | |
2850 | FLD (f_dir10) = f_dir10; | |
96baa820 | 2851 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr15pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0)); |
c906108c SS |
2852 | |
2853 | #if WITH_PROFILE_MODEL_P | |
2854 | /* Record the fields for profiling. */ | |
2855 | if (PROFILE_MODEL_P (current_cpu)) | |
2856 | { | |
3e43c635 DB |
2857 | FLD (in_h_gr_SI_15) = 15; |
2858 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
2859 | } |
2860 | #endif | |
2861 | #undef FLD | |
7a292a7a | 2862 | return idesc; |
c906108c SS |
2863 | } |
2864 | ||
96baa820 | 2865 | extract_sfmt_dmov2r13: |
c906108c | 2866 | { |
7a292a7a | 2867 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2868 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2869 | #define FLD(f) abuf->fields.sfmt_dmovr13pi.f |
9846de1b | 2870 | USI f_dir10; |
c906108c | 2871 | |
9846de1b | 2872 | f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2)); |
c906108c SS |
2873 | |
2874 | /* Record the fields for the semantic handler. */ | |
2875 | FLD (f_dir10) = f_dir10; | |
96baa820 | 2876 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0)); |
c906108c SS |
2877 | |
2878 | #if WITH_PROFILE_MODEL_P | |
2879 | /* Record the fields for profiling. */ | |
2880 | if (PROFILE_MODEL_P (current_cpu)) | |
2881 | { | |
3e43c635 | 2882 | FLD (out_h_gr_SI_13) = 13; |
c906108c SS |
2883 | } |
2884 | #endif | |
2885 | #undef FLD | |
7a292a7a | 2886 | return idesc; |
c906108c SS |
2887 | } |
2888 | ||
96baa820 | 2889 | extract_sfmt_dmov2r13h: |
c906108c | 2890 | { |
7a292a7a | 2891 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2892 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2893 | #define FLD(f) abuf->fields.sfmt_dmovr13pih.f |
9846de1b | 2894 | USI f_dir9; |
c906108c | 2895 | |
9846de1b | 2896 | f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1)); |
c906108c SS |
2897 | |
2898 | /* Record the fields for the semantic handler. */ | |
2899 | FLD (f_dir9) = f_dir9; | |
96baa820 | 2900 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0)); |
c906108c SS |
2901 | |
2902 | #if WITH_PROFILE_MODEL_P | |
2903 | /* Record the fields for profiling. */ | |
2904 | if (PROFILE_MODEL_P (current_cpu)) | |
2905 | { | |
3e43c635 | 2906 | FLD (out_h_gr_SI_13) = 13; |
c906108c SS |
2907 | } |
2908 | #endif | |
2909 | #undef FLD | |
7a292a7a | 2910 | return idesc; |
c906108c SS |
2911 | } |
2912 | ||
96baa820 | 2913 | extract_sfmt_dmov2r13b: |
c906108c | 2914 | { |
7a292a7a | 2915 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2916 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2917 | #define FLD(f) abuf->fields.sfmt_dmovr13pib.f |
9846de1b | 2918 | UINT f_dir8; |
c906108c | 2919 | |
9846de1b | 2920 | f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
2921 | |
2922 | /* Record the fields for the semantic handler. */ | |
2923 | FLD (f_dir8) = f_dir8; | |
96baa820 | 2924 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0)); |
c906108c SS |
2925 | |
2926 | #if WITH_PROFILE_MODEL_P | |
2927 | /* Record the fields for profiling. */ | |
2928 | if (PROFILE_MODEL_P (current_cpu)) | |
2929 | { | |
3e43c635 | 2930 | FLD (out_h_gr_SI_13) = 13; |
c906108c SS |
2931 | } |
2932 | #endif | |
2933 | #undef FLD | |
7a292a7a | 2934 | return idesc; |
c906108c SS |
2935 | } |
2936 | ||
96baa820 | 2937 | extract_sfmt_dmov2r13pi: |
c906108c | 2938 | { |
7a292a7a | 2939 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2940 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2941 | #define FLD(f) abuf->fields.sfmt_dmovr13pi.f |
9846de1b | 2942 | USI f_dir10; |
c906108c | 2943 | |
9846de1b | 2944 | f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2)); |
c906108c SS |
2945 | |
2946 | /* Record the fields for the semantic handler. */ | |
2947 | FLD (f_dir10) = f_dir10; | |
96baa820 | 2948 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0)); |
c906108c SS |
2949 | |
2950 | #if WITH_PROFILE_MODEL_P | |
2951 | /* Record the fields for profiling. */ | |
2952 | if (PROFILE_MODEL_P (current_cpu)) | |
2953 | { | |
3e43c635 DB |
2954 | FLD (in_h_gr_SI_13) = 13; |
2955 | FLD (out_h_gr_SI_13) = 13; | |
c906108c SS |
2956 | } |
2957 | #endif | |
2958 | #undef FLD | |
7a292a7a | 2959 | return idesc; |
c906108c SS |
2960 | } |
2961 | ||
96baa820 | 2962 | extract_sfmt_dmov2r13pih: |
c906108c | 2963 | { |
7a292a7a | 2964 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2965 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2966 | #define FLD(f) abuf->fields.sfmt_dmovr13pih.f |
9846de1b | 2967 | USI f_dir9; |
c906108c | 2968 | |
9846de1b | 2969 | f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1)); |
c906108c SS |
2970 | |
2971 | /* Record the fields for the semantic handler. */ | |
2972 | FLD (f_dir9) = f_dir9; | |
96baa820 | 2973 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0)); |
c906108c SS |
2974 | |
2975 | #if WITH_PROFILE_MODEL_P | |
2976 | /* Record the fields for profiling. */ | |
2977 | if (PROFILE_MODEL_P (current_cpu)) | |
2978 | { | |
3e43c635 DB |
2979 | FLD (in_h_gr_SI_13) = 13; |
2980 | FLD (out_h_gr_SI_13) = 13; | |
c906108c SS |
2981 | } |
2982 | #endif | |
2983 | #undef FLD | |
7a292a7a | 2984 | return idesc; |
c906108c SS |
2985 | } |
2986 | ||
96baa820 | 2987 | extract_sfmt_dmov2r13pib: |
c906108c | 2988 | { |
7a292a7a | 2989 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 2990 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 2991 | #define FLD(f) abuf->fields.sfmt_dmovr13pib.f |
9846de1b | 2992 | UINT f_dir8; |
c906108c | 2993 | |
9846de1b | 2994 | f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
2995 | |
2996 | /* Record the fields for the semantic handler. */ | |
2997 | FLD (f_dir8) = f_dir8; | |
96baa820 | 2998 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0)); |
c906108c SS |
2999 | |
3000 | #if WITH_PROFILE_MODEL_P | |
3001 | /* Record the fields for profiling. */ | |
3002 | if (PROFILE_MODEL_P (current_cpu)) | |
3003 | { | |
3e43c635 DB |
3004 | FLD (in_h_gr_SI_13) = 13; |
3005 | FLD (out_h_gr_SI_13) = 13; | |
c906108c SS |
3006 | } |
3007 | #endif | |
3008 | #undef FLD | |
7a292a7a | 3009 | return idesc; |
c906108c SS |
3010 | } |
3011 | ||
96baa820 | 3012 | extract_sfmt_dmov2r15pd: |
c906108c | 3013 | { |
7a292a7a | 3014 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3015 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3016 | #define FLD(f) abuf->fields.sfmt_dmovr15pi.f |
9846de1b | 3017 | USI f_dir10; |
c906108c | 3018 | |
9846de1b | 3019 | f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2)); |
c906108c SS |
3020 | |
3021 | /* Record the fields for the semantic handler. */ | |
3022 | FLD (f_dir10) = f_dir10; | |
96baa820 | 3023 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r15pd", "f_dir10 0x%x", 'x', f_dir10, (char *) 0)); |
c906108c SS |
3024 | |
3025 | #if WITH_PROFILE_MODEL_P | |
3026 | /* Record the fields for profiling. */ | |
3027 | if (PROFILE_MODEL_P (current_cpu)) | |
3028 | { | |
3e43c635 DB |
3029 | FLD (in_h_gr_SI_15) = 15; |
3030 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
3031 | } |
3032 | #endif | |
3033 | #undef FLD | |
7a292a7a | 3034 | return idesc; |
c906108c SS |
3035 | } |
3036 | ||
96baa820 | 3037 | extract_sfmt_ldres: |
c906108c | 3038 | { |
7a292a7a | 3039 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3040 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3041 | #define FLD(f) abuf->fields.sfmt_add2.f |
9846de1b | 3042 | UINT f_Ri; |
c906108c | 3043 | |
9846de1b | 3044 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
3045 | |
3046 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 3047 | FLD (f_Ri) = f_Ri; |
c906108c | 3048 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 3049 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldres", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
3050 | |
3051 | #if WITH_PROFILE_MODEL_P | |
3052 | /* Record the fields for profiling. */ | |
3053 | if (PROFILE_MODEL_P (current_cpu)) | |
3054 | { | |
3055 | FLD (in_Ri) = f_Ri; | |
3056 | FLD (out_Ri) = f_Ri; | |
3057 | } | |
3058 | #endif | |
3059 | #undef FLD | |
7a292a7a | 3060 | return idesc; |
c906108c SS |
3061 | } |
3062 | ||
96baa820 | 3063 | extract_sfmt_copop: |
c906108c | 3064 | { |
7a292a7a | 3065 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 3066 | #define FLD(f) abuf->fields.fmt_empty.f |
9846de1b JM |
3067 | /* Contents of trailing part of insn. */ |
3068 | UINT word_1; | |
c906108c | 3069 | |
9846de1b | 3070 | word_1 = GETIMEMUHI (current_cpu, pc + 2); |
c906108c SS |
3071 | |
3072 | /* Record the fields for the semantic handler. */ | |
96baa820 | 3073 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_copop", (char *) 0)); |
c906108c | 3074 | |
c906108c | 3075 | #undef FLD |
7a292a7a | 3076 | return idesc; |
c906108c SS |
3077 | } |
3078 | ||
96baa820 | 3079 | extract_sfmt_andccr: |
c906108c | 3080 | { |
7a292a7a | 3081 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3082 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3083 | #define FLD(f) abuf->fields.sfmt_int.f |
9846de1b | 3084 | UINT f_u8; |
c906108c | 3085 | |
9846de1b | 3086 | f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
3087 | |
3088 | /* Record the fields for the semantic handler. */ | |
3089 | FLD (f_u8) = f_u8; | |
96baa820 | 3090 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andccr", "f_u8 0x%x", 'x', f_u8, (char *) 0)); |
c906108c SS |
3091 | |
3092 | #undef FLD | |
7a292a7a | 3093 | return idesc; |
c906108c SS |
3094 | } |
3095 | ||
96baa820 | 3096 | extract_sfmt_stilm: |
c906108c | 3097 | { |
7a292a7a | 3098 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3099 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3100 | #define FLD(f) abuf->fields.sfmt_int.f |
9846de1b | 3101 | UINT f_u8; |
c906108c | 3102 | |
9846de1b | 3103 | f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
3104 | |
3105 | /* Record the fields for the semantic handler. */ | |
3106 | FLD (f_u8) = f_u8; | |
96baa820 | 3107 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stilm", "f_u8 0x%x", 'x', f_u8, (char *) 0)); |
c906108c SS |
3108 | |
3109 | #undef FLD | |
7a292a7a | 3110 | return idesc; |
c906108c SS |
3111 | } |
3112 | ||
96baa820 | 3113 | extract_sfmt_addsp: |
c906108c | 3114 | { |
7a292a7a | 3115 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3116 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3117 | #define FLD(f) abuf->fields.sfmt_addsp.f |
9846de1b | 3118 | SI f_s10; |
c906108c | 3119 | |
9846de1b | 3120 | f_s10 = ((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2)); |
c906108c SS |
3121 | |
3122 | /* Record the fields for the semantic handler. */ | |
3123 | FLD (f_s10) = f_s10; | |
96baa820 | 3124 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addsp", "f_s10 0x%x", 'x', f_s10, (char *) 0)); |
c906108c SS |
3125 | |
3126 | #if WITH_PROFILE_MODEL_P | |
3127 | /* Record the fields for profiling. */ | |
3128 | if (PROFILE_MODEL_P (current_cpu)) | |
3129 | { | |
3e43c635 DB |
3130 | FLD (in_h_gr_SI_15) = 15; |
3131 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
3132 | } |
3133 | #endif | |
3134 | #undef FLD | |
7a292a7a | 3135 | return idesc; |
c906108c SS |
3136 | } |
3137 | ||
96baa820 | 3138 | extract_sfmt_extsb: |
c906108c | 3139 | { |
7a292a7a | 3140 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3141 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3142 | #define FLD(f) abuf->fields.sfmt_add2.f |
9846de1b | 3143 | UINT f_Ri; |
c906108c | 3144 | |
9846de1b | 3145 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
3146 | |
3147 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 3148 | FLD (f_Ri) = f_Ri; |
c906108c | 3149 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 3150 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsb", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
3151 | |
3152 | #if WITH_PROFILE_MODEL_P | |
3153 | /* Record the fields for profiling. */ | |
3154 | if (PROFILE_MODEL_P (current_cpu)) | |
3155 | { | |
3156 | FLD (in_Ri) = f_Ri; | |
3157 | FLD (out_Ri) = f_Ri; | |
3158 | } | |
3159 | #endif | |
3160 | #undef FLD | |
7a292a7a | 3161 | return idesc; |
c906108c SS |
3162 | } |
3163 | ||
96baa820 | 3164 | extract_sfmt_extub: |
c906108c | 3165 | { |
7a292a7a | 3166 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3167 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3168 | #define FLD(f) abuf->fields.sfmt_add2.f |
9846de1b | 3169 | UINT f_Ri; |
c906108c | 3170 | |
9846de1b | 3171 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
3172 | |
3173 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 3174 | FLD (f_Ri) = f_Ri; |
c906108c | 3175 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 3176 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extub", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
3177 | |
3178 | #if WITH_PROFILE_MODEL_P | |
3179 | /* Record the fields for profiling. */ | |
3180 | if (PROFILE_MODEL_P (current_cpu)) | |
3181 | { | |
3182 | FLD (in_Ri) = f_Ri; | |
3183 | FLD (out_Ri) = f_Ri; | |
3184 | } | |
3185 | #endif | |
3186 | #undef FLD | |
7a292a7a | 3187 | return idesc; |
c906108c SS |
3188 | } |
3189 | ||
96baa820 | 3190 | extract_sfmt_extsh: |
c906108c | 3191 | { |
7a292a7a | 3192 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3193 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3194 | #define FLD(f) abuf->fields.sfmt_add2.f |
9846de1b | 3195 | UINT f_Ri; |
c906108c | 3196 | |
9846de1b | 3197 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
3198 | |
3199 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 3200 | FLD (f_Ri) = f_Ri; |
c906108c | 3201 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 3202 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsh", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
3203 | |
3204 | #if WITH_PROFILE_MODEL_P | |
3205 | /* Record the fields for profiling. */ | |
3206 | if (PROFILE_MODEL_P (current_cpu)) | |
3207 | { | |
3208 | FLD (in_Ri) = f_Ri; | |
3209 | FLD (out_Ri) = f_Ri; | |
3210 | } | |
3211 | #endif | |
3212 | #undef FLD | |
7a292a7a | 3213 | return idesc; |
c906108c SS |
3214 | } |
3215 | ||
96baa820 | 3216 | extract_sfmt_extuh: |
c906108c | 3217 | { |
7a292a7a | 3218 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3219 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3220 | #define FLD(f) abuf->fields.sfmt_add2.f |
9846de1b | 3221 | UINT f_Ri; |
c906108c | 3222 | |
9846de1b | 3223 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); |
c906108c SS |
3224 | |
3225 | /* Record the fields for the semantic handler. */ | |
e5c59029 | 3226 | FLD (f_Ri) = f_Ri; |
c906108c | 3227 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
e5c59029 | 3228 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extuh", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0)); |
c906108c SS |
3229 | |
3230 | #if WITH_PROFILE_MODEL_P | |
3231 | /* Record the fields for profiling. */ | |
3232 | if (PROFILE_MODEL_P (current_cpu)) | |
3233 | { | |
3234 | FLD (in_Ri) = f_Ri; | |
3235 | FLD (out_Ri) = f_Ri; | |
3236 | } | |
3237 | #endif | |
3238 | #undef FLD | |
7a292a7a | 3239 | return idesc; |
c906108c SS |
3240 | } |
3241 | ||
96baa820 | 3242 | extract_sfmt_ldm0: |
c906108c | 3243 | { |
7a292a7a | 3244 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3245 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3246 | #define FLD(f) abuf->fields.sfmt_ldm0.f |
9846de1b | 3247 | UINT f_reglist_low_ld; |
c906108c | 3248 | |
9846de1b | 3249 | f_reglist_low_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
3250 | |
3251 | /* Record the fields for the semantic handler. */ | |
3252 | FLD (f_reglist_low_ld) = f_reglist_low_ld; | |
96baa820 | 3253 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm0", "f_reglist_low_ld 0x%x", 'x', f_reglist_low_ld, (char *) 0)); |
c906108c SS |
3254 | |
3255 | #if WITH_PROFILE_MODEL_P | |
3256 | /* Record the fields for profiling. */ | |
3257 | if (PROFILE_MODEL_P (current_cpu)) | |
3258 | { | |
3e43c635 DB |
3259 | FLD (in_h_gr_SI_15) = 15; |
3260 | FLD (out_h_gr_SI_0) = 0; | |
3261 | FLD (out_h_gr_SI_1) = 1; | |
3262 | FLD (out_h_gr_SI_15) = 15; | |
3263 | FLD (out_h_gr_SI_2) = 2; | |
3264 | FLD (out_h_gr_SI_3) = 3; | |
3265 | FLD (out_h_gr_SI_4) = 4; | |
3266 | FLD (out_h_gr_SI_5) = 5; | |
3267 | FLD (out_h_gr_SI_6) = 6; | |
3268 | FLD (out_h_gr_SI_7) = 7; | |
c906108c SS |
3269 | } |
3270 | #endif | |
3271 | #undef FLD | |
7a292a7a | 3272 | return idesc; |
c906108c SS |
3273 | } |
3274 | ||
96baa820 | 3275 | extract_sfmt_ldm1: |
c906108c | 3276 | { |
7a292a7a | 3277 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3278 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3279 | #define FLD(f) abuf->fields.sfmt_ldm1.f |
9846de1b | 3280 | UINT f_reglist_hi_ld; |
c906108c | 3281 | |
9846de1b | 3282 | f_reglist_hi_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
3283 | |
3284 | /* Record the fields for the semantic handler. */ | |
3285 | FLD (f_reglist_hi_ld) = f_reglist_hi_ld; | |
96baa820 | 3286 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm1", "f_reglist_hi_ld 0x%x", 'x', f_reglist_hi_ld, (char *) 0)); |
c906108c SS |
3287 | |
3288 | #if WITH_PROFILE_MODEL_P | |
3289 | /* Record the fields for profiling. */ | |
3290 | if (PROFILE_MODEL_P (current_cpu)) | |
3291 | { | |
3e43c635 DB |
3292 | FLD (in_h_gr_SI_15) = 15; |
3293 | FLD (out_h_gr_SI_10) = 10; | |
3294 | FLD (out_h_gr_SI_11) = 11; | |
3295 | FLD (out_h_gr_SI_12) = 12; | |
3296 | FLD (out_h_gr_SI_13) = 13; | |
3297 | FLD (out_h_gr_SI_14) = 14; | |
3298 | FLD (out_h_gr_SI_15) = 15; | |
3299 | FLD (out_h_gr_SI_8) = 8; | |
3300 | FLD (out_h_gr_SI_9) = 9; | |
c906108c SS |
3301 | } |
3302 | #endif | |
3303 | #undef FLD | |
7a292a7a | 3304 | return idesc; |
c906108c SS |
3305 | } |
3306 | ||
96baa820 | 3307 | extract_sfmt_stm0: |
c906108c | 3308 | { |
7a292a7a | 3309 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3310 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3311 | #define FLD(f) abuf->fields.sfmt_stm0.f |
9846de1b | 3312 | UINT f_reglist_low_st; |
c906108c | 3313 | |
9846de1b | 3314 | f_reglist_low_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
3315 | |
3316 | /* Record the fields for the semantic handler. */ | |
3317 | FLD (f_reglist_low_st) = f_reglist_low_st; | |
96baa820 | 3318 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm0", "f_reglist_low_st 0x%x", 'x', f_reglist_low_st, (char *) 0)); |
c906108c SS |
3319 | |
3320 | #if WITH_PROFILE_MODEL_P | |
3321 | /* Record the fields for profiling. */ | |
3322 | if (PROFILE_MODEL_P (current_cpu)) | |
3323 | { | |
3e43c635 DB |
3324 | FLD (in_h_gr_SI_0) = 0; |
3325 | FLD (in_h_gr_SI_1) = 1; | |
3326 | FLD (in_h_gr_SI_15) = 15; | |
3327 | FLD (in_h_gr_SI_2) = 2; | |
3328 | FLD (in_h_gr_SI_3) = 3; | |
3329 | FLD (in_h_gr_SI_4) = 4; | |
3330 | FLD (in_h_gr_SI_5) = 5; | |
3331 | FLD (in_h_gr_SI_6) = 6; | |
3332 | FLD (in_h_gr_SI_7) = 7; | |
3333 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
3334 | } |
3335 | #endif | |
3336 | #undef FLD | |
7a292a7a | 3337 | return idesc; |
c906108c SS |
3338 | } |
3339 | ||
96baa820 | 3340 | extract_sfmt_stm1: |
c906108c | 3341 | { |
7a292a7a | 3342 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3343 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3344 | #define FLD(f) abuf->fields.sfmt_stm1.f |
9846de1b | 3345 | UINT f_reglist_hi_st; |
c906108c | 3346 | |
9846de1b | 3347 | f_reglist_hi_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8); |
c906108c SS |
3348 | |
3349 | /* Record the fields for the semantic handler. */ | |
3350 | FLD (f_reglist_hi_st) = f_reglist_hi_st; | |
96baa820 | 3351 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm1", "f_reglist_hi_st 0x%x", 'x', f_reglist_hi_st, (char *) 0)); |
c906108c SS |
3352 | |
3353 | #if WITH_PROFILE_MODEL_P | |
3354 | /* Record the fields for profiling. */ | |
3355 | if (PROFILE_MODEL_P (current_cpu)) | |
3356 | { | |
3e43c635 DB |
3357 | FLD (in_h_gr_SI_10) = 10; |
3358 | FLD (in_h_gr_SI_11) = 11; | |
3359 | FLD (in_h_gr_SI_12) = 12; | |
3360 | FLD (in_h_gr_SI_13) = 13; | |
3361 | FLD (in_h_gr_SI_14) = 14; | |
3362 | FLD (in_h_gr_SI_15) = 15; | |
3363 | FLD (in_h_gr_SI_8) = 8; | |
3364 | FLD (in_h_gr_SI_9) = 9; | |
3365 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
3366 | } |
3367 | #endif | |
3368 | #undef FLD | |
7a292a7a | 3369 | return idesc; |
c906108c SS |
3370 | } |
3371 | ||
96baa820 | 3372 | extract_sfmt_enter: |
c906108c | 3373 | { |
7a292a7a | 3374 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3375 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3376 | #define FLD(f) abuf->fields.sfmt_enter.f |
9846de1b | 3377 | USI f_u10; |
c906108c | 3378 | |
9846de1b | 3379 | f_u10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2)); |
c906108c SS |
3380 | |
3381 | /* Record the fields for the semantic handler. */ | |
3382 | FLD (f_u10) = f_u10; | |
96baa820 | 3383 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_enter", "f_u10 0x%x", 'x', f_u10, (char *) 0)); |
c906108c SS |
3384 | |
3385 | #if WITH_PROFILE_MODEL_P | |
3386 | /* Record the fields for profiling. */ | |
3387 | if (PROFILE_MODEL_P (current_cpu)) | |
3388 | { | |
3e43c635 DB |
3389 | FLD (in_h_gr_SI_14) = 14; |
3390 | FLD (in_h_gr_SI_15) = 15; | |
3391 | FLD (out_h_gr_SI_14) = 14; | |
3392 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
3393 | } |
3394 | #endif | |
3395 | #undef FLD | |
7a292a7a | 3396 | return idesc; |
c906108c SS |
3397 | } |
3398 | ||
96baa820 | 3399 | extract_sfmt_leave: |
c906108c | 3400 | { |
7a292a7a | 3401 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
96baa820 | 3402 | #define FLD(f) abuf->fields.sfmt_enter.f |
c906108c | 3403 | |
c906108c SS |
3404 | |
3405 | /* Record the fields for the semantic handler. */ | |
96baa820 | 3406 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_leave", (char *) 0)); |
c906108c SS |
3407 | |
3408 | #if WITH_PROFILE_MODEL_P | |
3409 | /* Record the fields for profiling. */ | |
3410 | if (PROFILE_MODEL_P (current_cpu)) | |
3411 | { | |
3e43c635 DB |
3412 | FLD (in_h_gr_SI_14) = 14; |
3413 | FLD (in_h_gr_SI_15) = 15; | |
3414 | FLD (out_h_gr_SI_14) = 14; | |
3415 | FLD (out_h_gr_SI_15) = 15; | |
c906108c SS |
3416 | } |
3417 | #endif | |
3418 | #undef FLD | |
7a292a7a | 3419 | return idesc; |
c906108c SS |
3420 | } |
3421 | ||
96baa820 | 3422 | extract_sfmt_xchb: |
c906108c | 3423 | { |
7a292a7a | 3424 | const IDESC *idesc = &fr30bf_insn_data[itype]; |
3e43c635 | 3425 | CGEN_INSN_INT insn = base_insn; |
96baa820 | 3426 | #define FLD(f) abuf->fields.sfmt_add.f |
9846de1b JM |
3427 | UINT f_Rj; |
3428 | UINT f_Ri; | |
c906108c | 3429 | |
9846de1b JM |
3430 | f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4); |
3431 | f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4); | |
c906108c SS |
3432 | |
3433 | /* Record the fields for the semantic handler. */ | |
e5c59029 DB |
3434 | FLD (f_Ri) = f_Ri; |
3435 | FLD (f_Rj) = f_Rj; | |
c906108c SS |
3436 | FLD (i_Ri) = & CPU (h_gr)[f_Ri]; |
3437 | FLD (i_Rj) = & CPU (h_gr)[f_Rj]; | |
e5c59029 | 3438 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xchb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0)); |
c906108c SS |
3439 | |
3440 | #if WITH_PROFILE_MODEL_P | |
3441 | /* Record the fields for profiling. */ | |
3442 | if (PROFILE_MODEL_P (current_cpu)) | |
3443 | { | |
3444 | FLD (in_Ri) = f_Ri; | |
3445 | FLD (in_Rj) = f_Rj; | |
3446 | FLD (out_Ri) = f_Ri; | |
3447 | } | |
3448 | #endif | |
3449 | #undef FLD | |
7a292a7a | 3450 | return idesc; |
c906108c SS |
3451 | } |
3452 | ||
c906108c | 3453 | } |