include/
[external/binutils.git] / sim / cris / decodev32.c
1 /* Simulator instruction decoder for crisv32f.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996-2009 Free Software Foundation, Inc.
6
7 This file is part of the GNU simulators.
8
9    This file is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3, or (at your option)
12    any later version.
13
14    It is distributed in the hope that it will be useful, but WITHOUT
15    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17    License for more details.
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    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
22
23 */
24
25 #define WANT_CPU crisv32f
26 #define WANT_CPU_CRISV32F
27
28 #include "sim-main.h"
29 #include "sim-assert.h"
30 #include "cgen-ops.h"
31
32 /* The instruction descriptor array.
33    This is computed at runtime.  Space for it is not malloc'd to save a
34    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
35    but won't be done until necessary (we don't currently support the runtime
36    addition of instructions nor an SMP machine with different cpus).  */
37 static IDESC crisv32f_insn_data[CRISV32F_INSN__MAX];
38
39 /* Commas between elements are contained in the macros.
40    Some of these are conditionally compiled out.  */
41
42 static const struct insn_sem crisv32f_insn_sem[] =
43 {
44   { VIRTUAL_INSN_X_INVALID, CRISV32F_INSN_X_INVALID, CRISV32F_SFMT_EMPTY },
45   { VIRTUAL_INSN_X_AFTER, CRISV32F_INSN_X_AFTER, CRISV32F_SFMT_EMPTY },
46   { VIRTUAL_INSN_X_BEFORE, CRISV32F_INSN_X_BEFORE, CRISV32F_SFMT_EMPTY },
47   { VIRTUAL_INSN_X_CTI_CHAIN, CRISV32F_INSN_X_CTI_CHAIN, CRISV32F_SFMT_EMPTY },
48   { VIRTUAL_INSN_X_CHAIN, CRISV32F_INSN_X_CHAIN, CRISV32F_SFMT_EMPTY },
49   { VIRTUAL_INSN_X_BEGIN, CRISV32F_INSN_X_BEGIN, CRISV32F_SFMT_EMPTY },
50   { CRIS_INSN_MOVE_B_R, CRISV32F_INSN_MOVE_B_R, CRISV32F_SFMT_MOVE_B_R },
51   { CRIS_INSN_MOVE_W_R, CRISV32F_INSN_MOVE_W_R, CRISV32F_SFMT_MOVE_B_R },
52   { CRIS_INSN_MOVE_D_R, CRISV32F_INSN_MOVE_D_R, CRISV32F_SFMT_MOVE_D_R },
53   { CRIS_INSN_MOVEQ, CRISV32F_INSN_MOVEQ, CRISV32F_SFMT_MOVEQ },
54   { CRIS_INSN_MOVS_B_R, CRISV32F_INSN_MOVS_B_R, CRISV32F_SFMT_MOVS_B_R },
55   { CRIS_INSN_MOVS_W_R, CRISV32F_INSN_MOVS_W_R, CRISV32F_SFMT_MOVS_B_R },
56   { CRIS_INSN_MOVU_B_R, CRISV32F_INSN_MOVU_B_R, CRISV32F_SFMT_MOVS_B_R },
57   { CRIS_INSN_MOVU_W_R, CRISV32F_INSN_MOVU_W_R, CRISV32F_SFMT_MOVS_B_R },
58   { CRIS_INSN_MOVECBR, CRISV32F_INSN_MOVECBR, CRISV32F_SFMT_MOVECBR },
59   { CRIS_INSN_MOVECWR, CRISV32F_INSN_MOVECWR, CRISV32F_SFMT_MOVECWR },
60   { CRIS_INSN_MOVECDR, CRISV32F_INSN_MOVECDR, CRISV32F_SFMT_MOVECDR },
61   { CRIS_INSN_MOVSCBR, CRISV32F_INSN_MOVSCBR, CRISV32F_SFMT_MOVSCBR },
62   { CRIS_INSN_MOVSCWR, CRISV32F_INSN_MOVSCWR, CRISV32F_SFMT_MOVSCWR },
63   { CRIS_INSN_MOVUCBR, CRISV32F_INSN_MOVUCBR, CRISV32F_SFMT_MOVUCBR },
64   { CRIS_INSN_MOVUCWR, CRISV32F_INSN_MOVUCWR, CRISV32F_SFMT_MOVUCWR },
65   { CRIS_INSN_ADDQ, CRISV32F_INSN_ADDQ, CRISV32F_SFMT_ADDQ },
66   { CRIS_INSN_SUBQ, CRISV32F_INSN_SUBQ, CRISV32F_SFMT_ADDQ },
67   { CRIS_INSN_CMP_R_B_R, CRISV32F_INSN_CMP_R_B_R, CRISV32F_SFMT_CMP_R_B_R },
68   { CRIS_INSN_CMP_R_W_R, CRISV32F_INSN_CMP_R_W_R, CRISV32F_SFMT_CMP_R_B_R },
69   { CRIS_INSN_CMP_R_D_R, CRISV32F_INSN_CMP_R_D_R, CRISV32F_SFMT_CMP_R_B_R },
70   { CRIS_INSN_CMP_M_B_M, CRISV32F_INSN_CMP_M_B_M, CRISV32F_SFMT_CMP_M_B_M },
71   { CRIS_INSN_CMP_M_W_M, CRISV32F_INSN_CMP_M_W_M, CRISV32F_SFMT_CMP_M_W_M },
72   { CRIS_INSN_CMP_M_D_M, CRISV32F_INSN_CMP_M_D_M, CRISV32F_SFMT_CMP_M_D_M },
73   { CRIS_INSN_CMPCBR, CRISV32F_INSN_CMPCBR, CRISV32F_SFMT_CMPCBR },
74   { CRIS_INSN_CMPCWR, CRISV32F_INSN_CMPCWR, CRISV32F_SFMT_CMPCWR },
75   { CRIS_INSN_CMPCDR, CRISV32F_INSN_CMPCDR, CRISV32F_SFMT_CMPCDR },
76   { CRIS_INSN_CMPQ, CRISV32F_INSN_CMPQ, CRISV32F_SFMT_CMPQ },
77   { CRIS_INSN_CMPS_M_B_M, CRISV32F_INSN_CMPS_M_B_M, CRISV32F_SFMT_CMP_M_B_M },
78   { CRIS_INSN_CMPS_M_W_M, CRISV32F_INSN_CMPS_M_W_M, CRISV32F_SFMT_CMP_M_W_M },
79   { CRIS_INSN_CMPSCBR, CRISV32F_INSN_CMPSCBR, CRISV32F_SFMT_CMPCBR },
80   { CRIS_INSN_CMPSCWR, CRISV32F_INSN_CMPSCWR, CRISV32F_SFMT_CMPCWR },
81   { CRIS_INSN_CMPU_M_B_M, CRISV32F_INSN_CMPU_M_B_M, CRISV32F_SFMT_CMP_M_B_M },
82   { CRIS_INSN_CMPU_M_W_M, CRISV32F_INSN_CMPU_M_W_M, CRISV32F_SFMT_CMP_M_W_M },
83   { CRIS_INSN_CMPUCBR, CRISV32F_INSN_CMPUCBR, CRISV32F_SFMT_CMPUCBR },
84   { CRIS_INSN_CMPUCWR, CRISV32F_INSN_CMPUCWR, CRISV32F_SFMT_CMPUCWR },
85   { CRIS_INSN_MOVE_M_B_M, CRISV32F_INSN_MOVE_M_B_M, CRISV32F_SFMT_MOVE_M_B_M },
86   { CRIS_INSN_MOVE_M_W_M, CRISV32F_INSN_MOVE_M_W_M, CRISV32F_SFMT_MOVE_M_W_M },
87   { CRIS_INSN_MOVE_M_D_M, CRISV32F_INSN_MOVE_M_D_M, CRISV32F_SFMT_MOVE_M_D_M },
88   { CRIS_INSN_MOVS_M_B_M, CRISV32F_INSN_MOVS_M_B_M, CRISV32F_SFMT_MOVS_M_B_M },
89   { CRIS_INSN_MOVS_M_W_M, CRISV32F_INSN_MOVS_M_W_M, CRISV32F_SFMT_MOVS_M_W_M },
90   { CRIS_INSN_MOVU_M_B_M, CRISV32F_INSN_MOVU_M_B_M, CRISV32F_SFMT_MOVS_M_B_M },
91   { CRIS_INSN_MOVU_M_W_M, CRISV32F_INSN_MOVU_M_W_M, CRISV32F_SFMT_MOVS_M_W_M },
92   { CRIS_INSN_MOVE_R_SPRV32, CRISV32F_INSN_MOVE_R_SPRV32, CRISV32F_SFMT_MOVE_R_SPRV32 },
93   { CRIS_INSN_MOVE_SPR_RV32, CRISV32F_INSN_MOVE_SPR_RV32, CRISV32F_SFMT_MOVE_SPR_RV32 },
94   { CRIS_INSN_MOVE_M_SPRV32, CRISV32F_INSN_MOVE_M_SPRV32, CRISV32F_SFMT_MOVE_M_SPRV32 },
95   { CRIS_INSN_MOVE_C_SPRV32_P2, CRISV32F_INSN_MOVE_C_SPRV32_P2, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
96   { CRIS_INSN_MOVE_C_SPRV32_P3, CRISV32F_INSN_MOVE_C_SPRV32_P3, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
97   { CRIS_INSN_MOVE_C_SPRV32_P5, CRISV32F_INSN_MOVE_C_SPRV32_P5, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
98   { CRIS_INSN_MOVE_C_SPRV32_P6, CRISV32F_INSN_MOVE_C_SPRV32_P6, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
99   { CRIS_INSN_MOVE_C_SPRV32_P7, CRISV32F_INSN_MOVE_C_SPRV32_P7, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
100   { CRIS_INSN_MOVE_C_SPRV32_P9, CRISV32F_INSN_MOVE_C_SPRV32_P9, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
101   { CRIS_INSN_MOVE_C_SPRV32_P10, CRISV32F_INSN_MOVE_C_SPRV32_P10, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
102   { CRIS_INSN_MOVE_C_SPRV32_P11, CRISV32F_INSN_MOVE_C_SPRV32_P11, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
103   { CRIS_INSN_MOVE_C_SPRV32_P12, CRISV32F_INSN_MOVE_C_SPRV32_P12, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
104   { CRIS_INSN_MOVE_C_SPRV32_P13, CRISV32F_INSN_MOVE_C_SPRV32_P13, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
105   { CRIS_INSN_MOVE_C_SPRV32_P14, CRISV32F_INSN_MOVE_C_SPRV32_P14, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
106   { CRIS_INSN_MOVE_C_SPRV32_P15, CRISV32F_INSN_MOVE_C_SPRV32_P15, CRISV32F_SFMT_MOVE_C_SPRV32_P2 },
107   { CRIS_INSN_MOVE_SPR_MV32, CRISV32F_INSN_MOVE_SPR_MV32, CRISV32F_SFMT_MOVE_SPR_MV32 },
108   { CRIS_INSN_MOVE_SS_R, CRISV32F_INSN_MOVE_SS_R, CRISV32F_SFMT_MOVE_SS_R },
109   { CRIS_INSN_MOVE_R_SS, CRISV32F_INSN_MOVE_R_SS, CRISV32F_SFMT_MOVE_R_SS },
110   { CRIS_INSN_MOVEM_R_M_V32, CRISV32F_INSN_MOVEM_R_M_V32, CRISV32F_SFMT_MOVEM_R_M_V32 },
111   { CRIS_INSN_MOVEM_M_R_V32, CRISV32F_INSN_MOVEM_M_R_V32, CRISV32F_SFMT_MOVEM_M_R_V32 },
112   { CRIS_INSN_ADD_B_R, CRISV32F_INSN_ADD_B_R, CRISV32F_SFMT_ADD_B_R },
113   { CRIS_INSN_ADD_W_R, CRISV32F_INSN_ADD_W_R, CRISV32F_SFMT_ADD_B_R },
114   { CRIS_INSN_ADD_D_R, CRISV32F_INSN_ADD_D_R, CRISV32F_SFMT_ADD_D_R },
115   { CRIS_INSN_ADD_M_B_M, CRISV32F_INSN_ADD_M_B_M, CRISV32F_SFMT_ADD_M_B_M },
116   { CRIS_INSN_ADD_M_W_M, CRISV32F_INSN_ADD_M_W_M, CRISV32F_SFMT_ADD_M_W_M },
117   { CRIS_INSN_ADD_M_D_M, CRISV32F_INSN_ADD_M_D_M, CRISV32F_SFMT_ADD_M_D_M },
118   { CRIS_INSN_ADDCBR, CRISV32F_INSN_ADDCBR, CRISV32F_SFMT_ADDCBR },
119   { CRIS_INSN_ADDCWR, CRISV32F_INSN_ADDCWR, CRISV32F_SFMT_ADDCWR },
120   { CRIS_INSN_ADDCDR, CRISV32F_INSN_ADDCDR, CRISV32F_SFMT_ADDCDR },
121   { CRIS_INSN_ADDS_B_R, CRISV32F_INSN_ADDS_B_R, CRISV32F_SFMT_ADD_D_R },
122   { CRIS_INSN_ADDS_W_R, CRISV32F_INSN_ADDS_W_R, CRISV32F_SFMT_ADD_D_R },
123   { CRIS_INSN_ADDS_M_B_M, CRISV32F_INSN_ADDS_M_B_M, CRISV32F_SFMT_ADDS_M_B_M },
124   { CRIS_INSN_ADDS_M_W_M, CRISV32F_INSN_ADDS_M_W_M, CRISV32F_SFMT_ADDS_M_W_M },
125   { CRIS_INSN_ADDSCBR, CRISV32F_INSN_ADDSCBR, CRISV32F_SFMT_ADDSCBR },
126   { CRIS_INSN_ADDSCWR, CRISV32F_INSN_ADDSCWR, CRISV32F_SFMT_ADDSCWR },
127   { CRIS_INSN_ADDU_B_R, CRISV32F_INSN_ADDU_B_R, CRISV32F_SFMT_ADD_D_R },
128   { CRIS_INSN_ADDU_W_R, CRISV32F_INSN_ADDU_W_R, CRISV32F_SFMT_ADD_D_R },
129   { CRIS_INSN_ADDU_M_B_M, CRISV32F_INSN_ADDU_M_B_M, CRISV32F_SFMT_ADDS_M_B_M },
130   { CRIS_INSN_ADDU_M_W_M, CRISV32F_INSN_ADDU_M_W_M, CRISV32F_SFMT_ADDS_M_W_M },
131   { CRIS_INSN_ADDUCBR, CRISV32F_INSN_ADDUCBR, CRISV32F_SFMT_ADDSCBR },
132   { CRIS_INSN_ADDUCWR, CRISV32F_INSN_ADDUCWR, CRISV32F_SFMT_ADDSCWR },
133   { CRIS_INSN_SUB_B_R, CRISV32F_INSN_SUB_B_R, CRISV32F_SFMT_ADD_B_R },
134   { CRIS_INSN_SUB_W_R, CRISV32F_INSN_SUB_W_R, CRISV32F_SFMT_ADD_B_R },
135   { CRIS_INSN_SUB_D_R, CRISV32F_INSN_SUB_D_R, CRISV32F_SFMT_ADD_D_R },
136   { CRIS_INSN_SUB_M_B_M, CRISV32F_INSN_SUB_M_B_M, CRISV32F_SFMT_ADD_M_B_M },
137   { CRIS_INSN_SUB_M_W_M, CRISV32F_INSN_SUB_M_W_M, CRISV32F_SFMT_ADD_M_W_M },
138   { CRIS_INSN_SUB_M_D_M, CRISV32F_INSN_SUB_M_D_M, CRISV32F_SFMT_ADD_M_D_M },
139   { CRIS_INSN_SUBCBR, CRISV32F_INSN_SUBCBR, CRISV32F_SFMT_ADDCBR },
140   { CRIS_INSN_SUBCWR, CRISV32F_INSN_SUBCWR, CRISV32F_SFMT_ADDCWR },
141   { CRIS_INSN_SUBCDR, CRISV32F_INSN_SUBCDR, CRISV32F_SFMT_ADDCDR },
142   { CRIS_INSN_SUBS_B_R, CRISV32F_INSN_SUBS_B_R, CRISV32F_SFMT_ADD_D_R },
143   { CRIS_INSN_SUBS_W_R, CRISV32F_INSN_SUBS_W_R, CRISV32F_SFMT_ADD_D_R },
144   { CRIS_INSN_SUBS_M_B_M, CRISV32F_INSN_SUBS_M_B_M, CRISV32F_SFMT_ADDS_M_B_M },
145   { CRIS_INSN_SUBS_M_W_M, CRISV32F_INSN_SUBS_M_W_M, CRISV32F_SFMT_ADDS_M_W_M },
146   { CRIS_INSN_SUBSCBR, CRISV32F_INSN_SUBSCBR, CRISV32F_SFMT_ADDSCBR },
147   { CRIS_INSN_SUBSCWR, CRISV32F_INSN_SUBSCWR, CRISV32F_SFMT_ADDSCWR },
148   { CRIS_INSN_SUBU_B_R, CRISV32F_INSN_SUBU_B_R, CRISV32F_SFMT_ADD_D_R },
149   { CRIS_INSN_SUBU_W_R, CRISV32F_INSN_SUBU_W_R, CRISV32F_SFMT_ADD_D_R },
150   { CRIS_INSN_SUBU_M_B_M, CRISV32F_INSN_SUBU_M_B_M, CRISV32F_SFMT_ADDS_M_B_M },
151   { CRIS_INSN_SUBU_M_W_M, CRISV32F_INSN_SUBU_M_W_M, CRISV32F_SFMT_ADDS_M_W_M },
152   { CRIS_INSN_SUBUCBR, CRISV32F_INSN_SUBUCBR, CRISV32F_SFMT_ADDSCBR },
153   { CRIS_INSN_SUBUCWR, CRISV32F_INSN_SUBUCWR, CRISV32F_SFMT_ADDSCWR },
154   { CRIS_INSN_ADDC_R, CRISV32F_INSN_ADDC_R, CRISV32F_SFMT_ADD_D_R },
155   { CRIS_INSN_ADDC_M, CRISV32F_INSN_ADDC_M, CRISV32F_SFMT_ADDC_M },
156   { CRIS_INSN_ADDC_C, CRISV32F_INSN_ADDC_C, CRISV32F_SFMT_ADDCDR },
157   { CRIS_INSN_LAPC_D, CRISV32F_INSN_LAPC_D, CRISV32F_SFMT_LAPC_D },
158   { CRIS_INSN_LAPCQ, CRISV32F_INSN_LAPCQ, CRISV32F_SFMT_LAPCQ },
159   { CRIS_INSN_ADDI_B_R, CRISV32F_INSN_ADDI_B_R, CRISV32F_SFMT_ADDI_B_R },
160   { CRIS_INSN_ADDI_W_R, CRISV32F_INSN_ADDI_W_R, CRISV32F_SFMT_ADDI_B_R },
161   { CRIS_INSN_ADDI_D_R, CRISV32F_INSN_ADDI_D_R, CRISV32F_SFMT_ADDI_B_R },
162   { CRIS_INSN_NEG_B_R, CRISV32F_INSN_NEG_B_R, CRISV32F_SFMT_NEG_B_R },
163   { CRIS_INSN_NEG_W_R, CRISV32F_INSN_NEG_W_R, CRISV32F_SFMT_NEG_B_R },
164   { CRIS_INSN_NEG_D_R, CRISV32F_INSN_NEG_D_R, CRISV32F_SFMT_NEG_D_R },
165   { CRIS_INSN_TEST_M_B_M, CRISV32F_INSN_TEST_M_B_M, CRISV32F_SFMT_TEST_M_B_M },
166   { CRIS_INSN_TEST_M_W_M, CRISV32F_INSN_TEST_M_W_M, CRISV32F_SFMT_TEST_M_W_M },
167   { CRIS_INSN_TEST_M_D_M, CRISV32F_INSN_TEST_M_D_M, CRISV32F_SFMT_TEST_M_D_M },
168   { CRIS_INSN_MOVE_R_M_B_M, CRISV32F_INSN_MOVE_R_M_B_M, CRISV32F_SFMT_MOVE_R_M_B_M },
169   { CRIS_INSN_MOVE_R_M_W_M, CRISV32F_INSN_MOVE_R_M_W_M, CRISV32F_SFMT_MOVE_R_M_W_M },
170   { CRIS_INSN_MOVE_R_M_D_M, CRISV32F_INSN_MOVE_R_M_D_M, CRISV32F_SFMT_MOVE_R_M_D_M },
171   { CRIS_INSN_MULS_B, CRISV32F_INSN_MULS_B, CRISV32F_SFMT_MULS_B },
172   { CRIS_INSN_MULS_W, CRISV32F_INSN_MULS_W, CRISV32F_SFMT_MULS_B },
173   { CRIS_INSN_MULS_D, CRISV32F_INSN_MULS_D, CRISV32F_SFMT_MULS_B },
174   { CRIS_INSN_MULU_B, CRISV32F_INSN_MULU_B, CRISV32F_SFMT_MULS_B },
175   { CRIS_INSN_MULU_W, CRISV32F_INSN_MULU_W, CRISV32F_SFMT_MULS_B },
176   { CRIS_INSN_MULU_D, CRISV32F_INSN_MULU_D, CRISV32F_SFMT_MULS_B },
177   { CRIS_INSN_MCP, CRISV32F_INSN_MCP, CRISV32F_SFMT_MCP },
178   { CRIS_INSN_DSTEP, CRISV32F_INSN_DSTEP, CRISV32F_SFMT_DSTEP },
179   { CRIS_INSN_ABS, CRISV32F_INSN_ABS, CRISV32F_SFMT_MOVS_B_R },
180   { CRIS_INSN_AND_B_R, CRISV32F_INSN_AND_B_R, CRISV32F_SFMT_AND_B_R },
181   { CRIS_INSN_AND_W_R, CRISV32F_INSN_AND_W_R, CRISV32F_SFMT_AND_B_R },
182   { CRIS_INSN_AND_D_R, CRISV32F_INSN_AND_D_R, CRISV32F_SFMT_AND_D_R },
183   { CRIS_INSN_AND_M_B_M, CRISV32F_INSN_AND_M_B_M, CRISV32F_SFMT_AND_M_B_M },
184   { CRIS_INSN_AND_M_W_M, CRISV32F_INSN_AND_M_W_M, CRISV32F_SFMT_AND_M_W_M },
185   { CRIS_INSN_AND_M_D_M, CRISV32F_INSN_AND_M_D_M, CRISV32F_SFMT_AND_M_D_M },
186   { CRIS_INSN_ANDCBR, CRISV32F_INSN_ANDCBR, CRISV32F_SFMT_ANDCBR },
187   { CRIS_INSN_ANDCWR, CRISV32F_INSN_ANDCWR, CRISV32F_SFMT_ANDCWR },
188   { CRIS_INSN_ANDCDR, CRISV32F_INSN_ANDCDR, CRISV32F_SFMT_ANDCDR },
189   { CRIS_INSN_ANDQ, CRISV32F_INSN_ANDQ, CRISV32F_SFMT_ANDQ },
190   { CRIS_INSN_ORR_B_R, CRISV32F_INSN_ORR_B_R, CRISV32F_SFMT_AND_B_R },
191   { CRIS_INSN_ORR_W_R, CRISV32F_INSN_ORR_W_R, CRISV32F_SFMT_AND_B_R },
192   { CRIS_INSN_ORR_D_R, CRISV32F_INSN_ORR_D_R, CRISV32F_SFMT_AND_D_R },
193   { CRIS_INSN_OR_M_B_M, CRISV32F_INSN_OR_M_B_M, CRISV32F_SFMT_AND_M_B_M },
194   { CRIS_INSN_OR_M_W_M, CRISV32F_INSN_OR_M_W_M, CRISV32F_SFMT_AND_M_W_M },
195   { CRIS_INSN_OR_M_D_M, CRISV32F_INSN_OR_M_D_M, CRISV32F_SFMT_AND_M_D_M },
196   { CRIS_INSN_ORCBR, CRISV32F_INSN_ORCBR, CRISV32F_SFMT_ANDCBR },
197   { CRIS_INSN_ORCWR, CRISV32F_INSN_ORCWR, CRISV32F_SFMT_ANDCWR },
198   { CRIS_INSN_ORCDR, CRISV32F_INSN_ORCDR, CRISV32F_SFMT_ANDCDR },
199   { CRIS_INSN_ORQ, CRISV32F_INSN_ORQ, CRISV32F_SFMT_ANDQ },
200   { CRIS_INSN_XOR, CRISV32F_INSN_XOR, CRISV32F_SFMT_DSTEP },
201   { CRIS_INSN_SWAP, CRISV32F_INSN_SWAP, CRISV32F_SFMT_SWAP },
202   { CRIS_INSN_ASRR_B_R, CRISV32F_INSN_ASRR_B_R, CRISV32F_SFMT_AND_B_R },
203   { CRIS_INSN_ASRR_W_R, CRISV32F_INSN_ASRR_W_R, CRISV32F_SFMT_AND_B_R },
204   { CRIS_INSN_ASRR_D_R, CRISV32F_INSN_ASRR_D_R, CRISV32F_SFMT_AND_D_R },
205   { CRIS_INSN_ASRQ, CRISV32F_INSN_ASRQ, CRISV32F_SFMT_ASRQ },
206   { CRIS_INSN_LSRR_B_R, CRISV32F_INSN_LSRR_B_R, CRISV32F_SFMT_LSRR_B_R },
207   { CRIS_INSN_LSRR_W_R, CRISV32F_INSN_LSRR_W_R, CRISV32F_SFMT_LSRR_B_R },
208   { CRIS_INSN_LSRR_D_R, CRISV32F_INSN_LSRR_D_R, CRISV32F_SFMT_LSRR_D_R },
209   { CRIS_INSN_LSRQ, CRISV32F_INSN_LSRQ, CRISV32F_SFMT_ASRQ },
210   { CRIS_INSN_LSLR_B_R, CRISV32F_INSN_LSLR_B_R, CRISV32F_SFMT_LSRR_B_R },
211   { CRIS_INSN_LSLR_W_R, CRISV32F_INSN_LSLR_W_R, CRISV32F_SFMT_LSRR_B_R },
212   { CRIS_INSN_LSLR_D_R, CRISV32F_INSN_LSLR_D_R, CRISV32F_SFMT_LSRR_D_R },
213   { CRIS_INSN_LSLQ, CRISV32F_INSN_LSLQ, CRISV32F_SFMT_ASRQ },
214   { CRIS_INSN_BTST, CRISV32F_INSN_BTST, CRISV32F_SFMT_BTST },
215   { CRIS_INSN_BTSTQ, CRISV32F_INSN_BTSTQ, CRISV32F_SFMT_BTSTQ },
216   { CRIS_INSN_SETF, CRISV32F_INSN_SETF, CRISV32F_SFMT_SETF },
217   { CRIS_INSN_CLEARF, CRISV32F_INSN_CLEARF, CRISV32F_SFMT_SETF },
218   { CRIS_INSN_RFE, CRISV32F_INSN_RFE, CRISV32F_SFMT_RFE },
219   { CRIS_INSN_SFE, CRISV32F_INSN_SFE, CRISV32F_SFMT_SFE },
220   { CRIS_INSN_RFG, CRISV32F_INSN_RFG, CRISV32F_SFMT_RFG },
221   { CRIS_INSN_RFN, CRISV32F_INSN_RFN, CRISV32F_SFMT_RFN },
222   { CRIS_INSN_HALT, CRISV32F_INSN_HALT, CRISV32F_SFMT_HALT },
223   { CRIS_INSN_BCC_B, CRISV32F_INSN_BCC_B, CRISV32F_SFMT_BCC_B },
224   { CRIS_INSN_BA_B, CRISV32F_INSN_BA_B, CRISV32F_SFMT_BA_B },
225   { CRIS_INSN_BCC_W, CRISV32F_INSN_BCC_W, CRISV32F_SFMT_BCC_W },
226   { CRIS_INSN_BA_W, CRISV32F_INSN_BA_W, CRISV32F_SFMT_BA_W },
227   { CRIS_INSN_JAS_R, CRISV32F_INSN_JAS_R, CRISV32F_SFMT_JAS_R },
228   { CRIS_INSN_JAS_C, CRISV32F_INSN_JAS_C, CRISV32F_SFMT_JAS_C },
229   { CRIS_INSN_JUMP_P, CRISV32F_INSN_JUMP_P, CRISV32F_SFMT_JUMP_P },
230   { CRIS_INSN_BAS_C, CRISV32F_INSN_BAS_C, CRISV32F_SFMT_BAS_C },
231   { CRIS_INSN_JASC_R, CRISV32F_INSN_JASC_R, CRISV32F_SFMT_JASC_R },
232   { CRIS_INSN_JASC_C, CRISV32F_INSN_JASC_C, CRISV32F_SFMT_JAS_C },
233   { CRIS_INSN_BASC_C, CRISV32F_INSN_BASC_C, CRISV32F_SFMT_BAS_C },
234   { CRIS_INSN_BREAK, CRISV32F_INSN_BREAK, CRISV32F_SFMT_BREAK },
235   { CRIS_INSN_BOUND_R_B_R, CRISV32F_INSN_BOUND_R_B_R, CRISV32F_SFMT_DSTEP },
236   { CRIS_INSN_BOUND_R_W_R, CRISV32F_INSN_BOUND_R_W_R, CRISV32F_SFMT_DSTEP },
237   { CRIS_INSN_BOUND_R_D_R, CRISV32F_INSN_BOUND_R_D_R, CRISV32F_SFMT_DSTEP },
238   { CRIS_INSN_BOUND_CB, CRISV32F_INSN_BOUND_CB, CRISV32F_SFMT_BOUND_CB },
239   { CRIS_INSN_BOUND_CW, CRISV32F_INSN_BOUND_CW, CRISV32F_SFMT_BOUND_CW },
240   { CRIS_INSN_BOUND_CD, CRISV32F_INSN_BOUND_CD, CRISV32F_SFMT_BOUND_CD },
241   { CRIS_INSN_SCC, CRISV32F_INSN_SCC, CRISV32F_SFMT_SCC },
242   { CRIS_INSN_LZ, CRISV32F_INSN_LZ, CRISV32F_SFMT_MOVS_B_R },
243   { CRIS_INSN_ADDOQ, CRISV32F_INSN_ADDOQ, CRISV32F_SFMT_ADDOQ },
244   { CRIS_INSN_ADDO_M_B_M, CRISV32F_INSN_ADDO_M_B_M, CRISV32F_SFMT_ADDO_M_B_M },
245   { CRIS_INSN_ADDO_M_W_M, CRISV32F_INSN_ADDO_M_W_M, CRISV32F_SFMT_ADDO_M_W_M },
246   { CRIS_INSN_ADDO_M_D_M, CRISV32F_INSN_ADDO_M_D_M, CRISV32F_SFMT_ADDO_M_D_M },
247   { CRIS_INSN_ADDO_CB, CRISV32F_INSN_ADDO_CB, CRISV32F_SFMT_ADDO_CB },
248   { CRIS_INSN_ADDO_CW, CRISV32F_INSN_ADDO_CW, CRISV32F_SFMT_ADDO_CW },
249   { CRIS_INSN_ADDO_CD, CRISV32F_INSN_ADDO_CD, CRISV32F_SFMT_ADDO_CD },
250   { CRIS_INSN_ADDI_ACR_B_R, CRISV32F_INSN_ADDI_ACR_B_R, CRISV32F_SFMT_ADDI_ACR_B_R },
251   { CRIS_INSN_ADDI_ACR_W_R, CRISV32F_INSN_ADDI_ACR_W_R, CRISV32F_SFMT_ADDI_ACR_B_R },
252   { CRIS_INSN_ADDI_ACR_D_R, CRISV32F_INSN_ADDI_ACR_D_R, CRISV32F_SFMT_ADDI_ACR_B_R },
253   { CRIS_INSN_FIDXI, CRISV32F_INSN_FIDXI, CRISV32F_SFMT_FIDXI },
254   { CRIS_INSN_FTAGI, CRISV32F_INSN_FTAGI, CRISV32F_SFMT_FIDXI },
255   { CRIS_INSN_FIDXD, CRISV32F_INSN_FIDXD, CRISV32F_SFMT_FIDXI },
256   { CRIS_INSN_FTAGD, CRISV32F_INSN_FTAGD, CRISV32F_SFMT_FIDXI },
257 };
258
259 static const struct insn_sem crisv32f_insn_sem_invalid = {
260   VIRTUAL_INSN_X_INVALID, CRISV32F_INSN_X_INVALID, CRISV32F_SFMT_EMPTY
261 };
262
263 /* Initialize an IDESC from the compile-time computable parts.  */
264
265 static INLINE void
266 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
267 {
268   const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
269
270   id->num = t->index;
271   id->sfmt = t->sfmt;
272   if ((int) t->type <= 0)
273     id->idata = & cgen_virtual_insn_table[- (int) t->type];
274   else
275     id->idata = & insn_table[t->type];
276   id->attrs = CGEN_INSN_ATTRS (id->idata);
277   /* Oh my god, a magic number.  */
278   id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
279
280 #if WITH_PROFILE_MODEL_P
281   id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
282   {
283     SIM_DESC sd = CPU_STATE (cpu);
284     SIM_ASSERT (t->index == id->timing->num);
285   }
286 #endif
287
288   /* Semantic pointers are initialized elsewhere.  */
289 }
290
291 /* Initialize the instruction descriptor table.  */
292
293 void
294 crisv32f_init_idesc_table (SIM_CPU *cpu)
295 {
296   IDESC *id,*tabend;
297   const struct insn_sem *t,*tend;
298   int tabsize = CRISV32F_INSN__MAX;
299   IDESC *table = crisv32f_insn_data;
300
301   memset (table, 0, tabsize * sizeof (IDESC));
302
303   /* First set all entries to the `invalid insn'.  */
304   t = & crisv32f_insn_sem_invalid;
305   for (id = table, tabend = table + tabsize; id < tabend; ++id)
306     init_idesc (cpu, id, t);
307
308   /* Now fill in the values for the chosen cpu.  */
309   for (t = crisv32f_insn_sem, tend = t + sizeof (crisv32f_insn_sem) / sizeof (*t);
310        t != tend; ++t)
311     {
312       init_idesc (cpu, & table[t->index], t);
313     }
314
315   /* Link the IDESC table into the cpu.  */
316   CPU_IDESC (cpu) = table;
317 }
318
319 /* Given an instruction, return a pointer to its IDESC entry.  */
320
321 const IDESC *
322 crisv32f_decode (SIM_CPU *current_cpu, IADDR pc,
323               CGEN_INSN_WORD base_insn,
324               ARGBUF *abuf)
325 {
326   /* Result of decoder.  */
327   CRISV32F_INSN_TYPE itype;
328
329   {
330     CGEN_INSN_WORD insn = base_insn;
331
332     {
333       unsigned int val = (((insn >> 4) & (255 << 0)));
334       switch (val)
335       {
336       case 0 : /* fall through */
337       case 1 : /* fall through */
338       case 2 : /* fall through */
339       case 3 : /* fall through */
340       case 4 : /* fall through */
341       case 5 : /* fall through */
342       case 6 : /* fall through */
343       case 7 : /* fall through */
344       case 8 : /* fall through */
345       case 9 : /* fall through */
346       case 10 : /* fall through */
347       case 11 : /* fall through */
348       case 12 : /* fall through */
349       case 13 : /* fall through */
350       case 14 : /* fall through */
351       case 15 :
352         {
353           unsigned int val = (((insn >> 12) & (15 << 0)));
354           switch (val)
355           {
356           case 0 : /* fall through */
357           case 1 : /* fall through */
358           case 2 : /* fall through */
359           case 3 : /* fall through */
360           case 4 : /* fall through */
361           case 5 : /* fall through */
362           case 6 : /* fall through */
363           case 7 : /* fall through */
364           case 8 : /* fall through */
365           case 9 : /* fall through */
366           case 10 : /* fall through */
367           case 11 : /* fall through */
368           case 12 : /* fall through */
369           case 13 : /* fall through */
370           case 15 : itype = CRISV32F_INSN_BCC_B; goto extract_sfmt_bcc_b;
371           case 14 : itype = CRISV32F_INSN_BA_B; goto extract_sfmt_ba_b;
372           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
373           }
374         }
375       case 16 : /* fall through */
376       case 17 : /* fall through */
377       case 18 : /* fall through */
378       case 19 : /* fall through */
379       case 20 : /* fall through */
380       case 21 : /* fall through */
381       case 22 : /* fall through */
382       case 23 : /* fall through */
383       case 24 : /* fall through */
384       case 25 : /* fall through */
385       case 26 : /* fall through */
386       case 27 : /* fall through */
387       case 28 : /* fall through */
388       case 29 : /* fall through */
389       case 30 : /* fall through */
390       case 31 : itype = CRISV32F_INSN_ADDOQ; goto extract_sfmt_addoq;
391       case 32 : /* fall through */
392       case 33 : /* fall through */
393       case 34 : /* fall through */
394       case 35 : itype = CRISV32F_INSN_ADDQ; goto extract_sfmt_addq;
395       case 36 : /* fall through */
396       case 37 : /* fall through */
397       case 38 : /* fall through */
398       case 39 : itype = CRISV32F_INSN_MOVEQ; goto extract_sfmt_moveq;
399       case 40 : /* fall through */
400       case 41 : /* fall through */
401       case 42 : /* fall through */
402       case 43 : itype = CRISV32F_INSN_SUBQ; goto extract_sfmt_addq;
403       case 44 : /* fall through */
404       case 45 : /* fall through */
405       case 46 : /* fall through */
406       case 47 : itype = CRISV32F_INSN_CMPQ; goto extract_sfmt_cmpq;
407       case 48 : /* fall through */
408       case 49 : /* fall through */
409       case 50 : /* fall through */
410       case 51 : itype = CRISV32F_INSN_ANDQ; goto extract_sfmt_andq;
411       case 52 : /* fall through */
412       case 53 : /* fall through */
413       case 54 : /* fall through */
414       case 55 : itype = CRISV32F_INSN_ORQ; goto extract_sfmt_andq;
415       case 56 : /* fall through */
416       case 57 : itype = CRISV32F_INSN_BTSTQ; goto extract_sfmt_btstq;
417       case 58 : /* fall through */
418       case 59 : itype = CRISV32F_INSN_ASRQ; goto extract_sfmt_asrq;
419       case 60 : /* fall through */
420       case 61 : itype = CRISV32F_INSN_LSLQ; goto extract_sfmt_asrq;
421       case 62 : /* fall through */
422       case 63 : itype = CRISV32F_INSN_LSRQ; goto extract_sfmt_asrq;
423       case 64 : itype = CRISV32F_INSN_ADDU_B_R; goto extract_sfmt_add_d_r;
424       case 65 : itype = CRISV32F_INSN_ADDU_W_R; goto extract_sfmt_add_d_r;
425       case 66 : itype = CRISV32F_INSN_ADDS_B_R; goto extract_sfmt_add_d_r;
426       case 67 : itype = CRISV32F_INSN_ADDS_W_R; goto extract_sfmt_add_d_r;
427       case 68 : itype = CRISV32F_INSN_MOVU_B_R; goto extract_sfmt_movs_b_r;
428       case 69 : itype = CRISV32F_INSN_MOVU_W_R; goto extract_sfmt_movs_b_r;
429       case 70 : itype = CRISV32F_INSN_MOVS_B_R; goto extract_sfmt_movs_b_r;
430       case 71 : itype = CRISV32F_INSN_MOVS_W_R; goto extract_sfmt_movs_b_r;
431       case 72 : itype = CRISV32F_INSN_SUBU_B_R; goto extract_sfmt_add_d_r;
432       case 73 : itype = CRISV32F_INSN_SUBU_W_R; goto extract_sfmt_add_d_r;
433       case 74 : itype = CRISV32F_INSN_SUBS_B_R; goto extract_sfmt_add_d_r;
434       case 75 : itype = CRISV32F_INSN_SUBS_W_R; goto extract_sfmt_add_d_r;
435       case 76 : itype = CRISV32F_INSN_LSLR_B_R; goto extract_sfmt_lsrr_b_r;
436       case 77 : itype = CRISV32F_INSN_LSLR_W_R; goto extract_sfmt_lsrr_b_r;
437       case 78 : itype = CRISV32F_INSN_LSLR_D_R; goto extract_sfmt_lsrr_d_r;
438       case 79 : itype = CRISV32F_INSN_BTST; goto extract_sfmt_btst;
439       case 80 : itype = CRISV32F_INSN_ADDI_B_R; goto extract_sfmt_addi_b_r;
440       case 81 : itype = CRISV32F_INSN_ADDI_W_R; goto extract_sfmt_addi_b_r;
441       case 82 : itype = CRISV32F_INSN_ADDI_D_R; goto extract_sfmt_addi_b_r;
442       case 83 : itype = CRISV32F_INSN_SCC; goto extract_sfmt_scc;
443       case 84 : itype = CRISV32F_INSN_ADDI_ACR_B_R; goto extract_sfmt_addi_acr_b_r;
444       case 85 : itype = CRISV32F_INSN_ADDI_ACR_W_R; goto extract_sfmt_addi_acr_b_r;
445       case 86 : itype = CRISV32F_INSN_ADDI_ACR_D_R; goto extract_sfmt_addi_acr_b_r;
446       case 87 : itype = CRISV32F_INSN_ADDC_R; goto extract_sfmt_add_d_r;
447       case 88 : itype = CRISV32F_INSN_NEG_B_R; goto extract_sfmt_neg_b_r;
448       case 89 : itype = CRISV32F_INSN_NEG_W_R; goto extract_sfmt_neg_b_r;
449       case 90 : itype = CRISV32F_INSN_NEG_D_R; goto extract_sfmt_neg_d_r;
450       case 91 : itype = CRISV32F_INSN_SETF; goto extract_sfmt_setf;
451       case 92 : itype = CRISV32F_INSN_BOUND_R_B_R; goto extract_sfmt_dstep;
452       case 93 : itype = CRISV32F_INSN_BOUND_R_W_R; goto extract_sfmt_dstep;
453       case 94 : itype = CRISV32F_INSN_BOUND_R_D_R; goto extract_sfmt_dstep;
454       case 95 : itype = CRISV32F_INSN_CLEARF; goto extract_sfmt_setf;
455       case 96 : itype = CRISV32F_INSN_ADD_B_R; goto extract_sfmt_add_b_r;
456       case 97 : itype = CRISV32F_INSN_ADD_W_R; goto extract_sfmt_add_b_r;
457       case 98 : itype = CRISV32F_INSN_ADD_D_R; goto extract_sfmt_add_d_r;
458       case 99 : itype = CRISV32F_INSN_MOVE_R_SPRV32; goto extract_sfmt_move_r_sprv32;
459       case 100 : itype = CRISV32F_INSN_MOVE_B_R; goto extract_sfmt_move_b_r;
460       case 101 : itype = CRISV32F_INSN_MOVE_W_R; goto extract_sfmt_move_b_r;
461       case 102 : itype = CRISV32F_INSN_MOVE_D_R; goto extract_sfmt_move_d_r;
462       case 103 : itype = CRISV32F_INSN_MOVE_SPR_RV32; goto extract_sfmt_move_spr_rv32;
463       case 104 : itype = CRISV32F_INSN_SUB_B_R; goto extract_sfmt_add_b_r;
464       case 105 : itype = CRISV32F_INSN_SUB_W_R; goto extract_sfmt_add_b_r;
465       case 106 : itype = CRISV32F_INSN_SUB_D_R; goto extract_sfmt_add_d_r;
466       case 107 : itype = CRISV32F_INSN_ABS; goto extract_sfmt_movs_b_r;
467       case 108 : itype = CRISV32F_INSN_CMP_R_B_R; goto extract_sfmt_cmp_r_b_r;
468       case 109 : itype = CRISV32F_INSN_CMP_R_W_R; goto extract_sfmt_cmp_r_b_r;
469       case 110 : itype = CRISV32F_INSN_CMP_R_D_R; goto extract_sfmt_cmp_r_b_r;
470       case 111 : itype = CRISV32F_INSN_DSTEP; goto extract_sfmt_dstep;
471       case 112 : itype = CRISV32F_INSN_AND_B_R; goto extract_sfmt_and_b_r;
472       case 113 : itype = CRISV32F_INSN_AND_W_R; goto extract_sfmt_and_b_r;
473       case 114 : itype = CRISV32F_INSN_AND_D_R; goto extract_sfmt_and_d_r;
474       case 115 : itype = CRISV32F_INSN_LZ; goto extract_sfmt_movs_b_r;
475       case 116 : itype = CRISV32F_INSN_ORR_B_R; goto extract_sfmt_and_b_r;
476       case 117 : itype = CRISV32F_INSN_ORR_W_R; goto extract_sfmt_and_b_r;
477       case 118 : itype = CRISV32F_INSN_ORR_D_R; goto extract_sfmt_and_d_r;
478       case 119 : itype = CRISV32F_INSN_SWAP; goto extract_sfmt_swap;
479       case 120 : itype = CRISV32F_INSN_ASRR_B_R; goto extract_sfmt_and_b_r;
480       case 121 : itype = CRISV32F_INSN_ASRR_W_R; goto extract_sfmt_and_b_r;
481       case 122 : itype = CRISV32F_INSN_ASRR_D_R; goto extract_sfmt_and_d_r;
482       case 123 : itype = CRISV32F_INSN_XOR; goto extract_sfmt_dstep;
483       case 124 : itype = CRISV32F_INSN_LSRR_B_R; goto extract_sfmt_lsrr_b_r;
484       case 125 : itype = CRISV32F_INSN_LSRR_W_R; goto extract_sfmt_lsrr_b_r;
485       case 126 : itype = CRISV32F_INSN_LSRR_D_R; goto extract_sfmt_lsrr_d_r;
486       case 127 : itype = CRISV32F_INSN_MCP; goto extract_sfmt_mcp;
487       case 128 : itype = CRISV32F_INSN_ADDU_M_B_M; goto extract_sfmt_adds_m_b_m;
488       case 129 : itype = CRISV32F_INSN_ADDU_M_W_M; goto extract_sfmt_adds_m_w_m;
489       case 130 : itype = CRISV32F_INSN_ADDS_M_B_M; goto extract_sfmt_adds_m_b_m;
490       case 131 : itype = CRISV32F_INSN_ADDS_M_W_M; goto extract_sfmt_adds_m_w_m;
491       case 132 : itype = CRISV32F_INSN_MOVU_M_B_M; goto extract_sfmt_movs_m_b_m;
492       case 133 : itype = CRISV32F_INSN_MOVU_M_W_M; goto extract_sfmt_movs_m_w_m;
493       case 134 : itype = CRISV32F_INSN_MOVS_M_B_M; goto extract_sfmt_movs_m_b_m;
494       case 135 : itype = CRISV32F_INSN_MOVS_M_W_M; goto extract_sfmt_movs_m_w_m;
495       case 136 : itype = CRISV32F_INSN_SUBU_M_B_M; goto extract_sfmt_adds_m_b_m;
496       case 137 : itype = CRISV32F_INSN_SUBU_M_W_M; goto extract_sfmt_adds_m_w_m;
497       case 138 : itype = CRISV32F_INSN_SUBS_M_B_M; goto extract_sfmt_adds_m_b_m;
498       case 139 : itype = CRISV32F_INSN_SUBS_M_W_M; goto extract_sfmt_adds_m_w_m;
499       case 140 : itype = CRISV32F_INSN_CMPU_M_B_M; goto extract_sfmt_cmp_m_b_m;
500       case 141 : itype = CRISV32F_INSN_CMPU_M_W_M; goto extract_sfmt_cmp_m_w_m;
501       case 142 : itype = CRISV32F_INSN_CMPS_M_B_M; goto extract_sfmt_cmp_m_b_m;
502       case 143 : itype = CRISV32F_INSN_CMPS_M_W_M; goto extract_sfmt_cmp_m_w_m;
503       case 144 : itype = CRISV32F_INSN_MULU_B; goto extract_sfmt_muls_b;
504       case 145 : itype = CRISV32F_INSN_MULU_W; goto extract_sfmt_muls_b;
505       case 146 : itype = CRISV32F_INSN_MULU_D; goto extract_sfmt_muls_b;
506       case 147 :
507         {
508           unsigned int val = (((insn >> 12) & (15 << 0)));
509           switch (val)
510           {
511           case 2 :
512             if ((base_insn & 0xffff) == 0x2930)
513               { itype = CRISV32F_INSN_RFE; goto extract_sfmt_rfe; }
514             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
515           case 3 :
516             if ((base_insn & 0xffff) == 0x3930)
517               { itype = CRISV32F_INSN_SFE; goto extract_sfmt_sfe; }
518             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
519           case 4 :
520             if ((base_insn & 0xffff) == 0x4930)
521               { itype = CRISV32F_INSN_RFG; goto extract_sfmt_rfg; }
522             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
523           case 5 :
524             if ((base_insn & 0xffff) == 0x5930)
525               { itype = CRISV32F_INSN_RFN; goto extract_sfmt_rfn; }
526             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
527           case 14 : itype = CRISV32F_INSN_BREAK; goto extract_sfmt_break;
528           case 15 :
529             if ((base_insn & 0xffff) == 0xf930)
530               { itype = CRISV32F_INSN_HALT; goto extract_sfmt_halt; }
531             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
532           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
533           }
534         }
535       case 148 : itype = CRISV32F_INSN_ADDO_M_B_M; goto extract_sfmt_addo_m_b_m;
536       case 149 : itype = CRISV32F_INSN_ADDO_M_W_M; goto extract_sfmt_addo_m_w_m;
537       case 150 : itype = CRISV32F_INSN_ADDO_M_D_M; goto extract_sfmt_addo_m_d_m;
538       case 151 : itype = CRISV32F_INSN_LAPCQ; goto extract_sfmt_lapcq;
539       case 154 : itype = CRISV32F_INSN_ADDC_M; goto extract_sfmt_addc_m;
540       case 155 : itype = CRISV32F_INSN_JAS_R; goto extract_sfmt_jas_r;
541       case 159 :
542         if ((base_insn & 0xfff) == 0x9f0)
543           { itype = CRISV32F_INSN_JUMP_P; goto extract_sfmt_jump_p; }
544         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
545       case 160 : itype = CRISV32F_INSN_ADD_M_B_M; goto extract_sfmt_add_m_b_m;
546       case 161 : itype = CRISV32F_INSN_ADD_M_W_M; goto extract_sfmt_add_m_w_m;
547       case 162 : itype = CRISV32F_INSN_ADD_M_D_M; goto extract_sfmt_add_m_d_m;
548       case 163 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
549       case 164 : itype = CRISV32F_INSN_MOVE_M_B_M; goto extract_sfmt_move_m_b_m;
550       case 165 : itype = CRISV32F_INSN_MOVE_M_W_M; goto extract_sfmt_move_m_w_m;
551       case 166 : itype = CRISV32F_INSN_MOVE_M_D_M; goto extract_sfmt_move_m_d_m;
552       case 167 : /* fall through */
553       case 231 : itype = CRISV32F_INSN_MOVE_SPR_MV32; goto extract_sfmt_move_spr_mv32;
554       case 168 : itype = CRISV32F_INSN_SUB_M_B_M; goto extract_sfmt_add_m_b_m;
555       case 169 : itype = CRISV32F_INSN_SUB_M_W_M; goto extract_sfmt_add_m_w_m;
556       case 170 : itype = CRISV32F_INSN_SUB_M_D_M; goto extract_sfmt_add_m_d_m;
557       case 171 :
558         {
559           unsigned int val = (((insn >> 12) & (1 << 0)));
560           switch (val)
561           {
562           case 0 :
563             if ((base_insn & 0xfff0) == 0xab0)
564               { itype = CRISV32F_INSN_FIDXD; goto extract_sfmt_fidxi; }
565             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
566           case 1 :
567             if ((base_insn & 0xfff0) == 0x1ab0)
568               { itype = CRISV32F_INSN_FTAGD; goto extract_sfmt_fidxi; }
569             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
570           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
571           }
572         }
573       case 172 : itype = CRISV32F_INSN_CMP_M_B_M; goto extract_sfmt_cmp_m_b_m;
574       case 173 : itype = CRISV32F_INSN_CMP_M_W_M; goto extract_sfmt_cmp_m_w_m;
575       case 174 : itype = CRISV32F_INSN_CMP_M_D_M; goto extract_sfmt_cmp_m_d_m;
576       case 176 : itype = CRISV32F_INSN_AND_M_B_M; goto extract_sfmt_and_m_b_m;
577       case 177 : itype = CRISV32F_INSN_AND_M_W_M; goto extract_sfmt_and_m_w_m;
578       case 178 : itype = CRISV32F_INSN_AND_M_D_M; goto extract_sfmt_and_m_d_m;
579       case 179 : itype = CRISV32F_INSN_JASC_R; goto extract_sfmt_jasc_r;
580       case 180 : itype = CRISV32F_INSN_OR_M_B_M; goto extract_sfmt_and_m_b_m;
581       case 181 : itype = CRISV32F_INSN_OR_M_W_M; goto extract_sfmt_and_m_w_m;
582       case 182 : itype = CRISV32F_INSN_OR_M_D_M; goto extract_sfmt_and_m_d_m;
583       case 183 : itype = CRISV32F_INSN_MOVE_R_SS; goto extract_sfmt_move_r_ss;
584       case 184 : /* fall through */
585       case 248 :
586         if ((base_insn & 0xfbf0) == 0xb80)
587           { itype = CRISV32F_INSN_TEST_M_B_M; goto extract_sfmt_test_m_b_m; }
588         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
589       case 185 : /* fall through */
590       case 249 :
591         if ((base_insn & 0xfbf0) == 0xb90)
592           { itype = CRISV32F_INSN_TEST_M_W_M; goto extract_sfmt_test_m_w_m; }
593         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
594       case 186 : /* fall through */
595       case 250 :
596         if ((base_insn & 0xfbf0) == 0xba0)
597           { itype = CRISV32F_INSN_TEST_M_D_M; goto extract_sfmt_test_m_d_m; }
598         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
599       case 187 : /* fall through */
600       case 251 : itype = CRISV32F_INSN_MOVEM_M_R_V32; goto extract_sfmt_movem_m_r_v32;
601       case 188 : /* fall through */
602       case 252 : itype = CRISV32F_INSN_MOVE_R_M_B_M; goto extract_sfmt_move_r_m_b_m;
603       case 189 : /* fall through */
604       case 253 : itype = CRISV32F_INSN_MOVE_R_M_W_M; goto extract_sfmt_move_r_m_w_m;
605       case 190 : /* fall through */
606       case 254 : itype = CRISV32F_INSN_MOVE_R_M_D_M; goto extract_sfmt_move_r_m_d_m;
607       case 191 : /* fall through */
608       case 255 : itype = CRISV32F_INSN_MOVEM_R_M_V32; goto extract_sfmt_movem_r_m_v32;
609       case 192 :
610         {
611           unsigned int val = (((insn >> 0) & (15 << 0)));
612           switch (val)
613           {
614           case 0 : /* fall through */
615           case 1 : /* fall through */
616           case 2 : /* fall through */
617           case 3 : /* fall through */
618           case 4 : /* fall through */
619           case 5 : /* fall through */
620           case 6 : /* fall through */
621           case 7 : /* fall through */
622           case 8 : /* fall through */
623           case 9 : /* fall through */
624           case 10 : /* fall through */
625           case 11 : /* fall through */
626           case 12 : /* fall through */
627           case 13 : /* fall through */
628           case 14 : itype = CRISV32F_INSN_ADDU_M_B_M; goto extract_sfmt_adds_m_b_m;
629           case 15 : itype = CRISV32F_INSN_ADDUCBR; goto extract_sfmt_addscbr;
630           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
631           }
632         }
633       case 193 :
634         {
635           unsigned int val = (((insn >> 0) & (15 << 0)));
636           switch (val)
637           {
638           case 0 : /* fall through */
639           case 1 : /* fall through */
640           case 2 : /* fall through */
641           case 3 : /* fall through */
642           case 4 : /* fall through */
643           case 5 : /* fall through */
644           case 6 : /* fall through */
645           case 7 : /* fall through */
646           case 8 : /* fall through */
647           case 9 : /* fall through */
648           case 10 : /* fall through */
649           case 11 : /* fall through */
650           case 12 : /* fall through */
651           case 13 : /* fall through */
652           case 14 : itype = CRISV32F_INSN_ADDU_M_W_M; goto extract_sfmt_adds_m_w_m;
653           case 15 : itype = CRISV32F_INSN_ADDUCWR; goto extract_sfmt_addscwr;
654           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
655           }
656         }
657       case 194 :
658         {
659           unsigned int val = (((insn >> 0) & (15 << 0)));
660           switch (val)
661           {
662           case 0 : /* fall through */
663           case 1 : /* fall through */
664           case 2 : /* fall through */
665           case 3 : /* fall through */
666           case 4 : /* fall through */
667           case 5 : /* fall through */
668           case 6 : /* fall through */
669           case 7 : /* fall through */
670           case 8 : /* fall through */
671           case 9 : /* fall through */
672           case 10 : /* fall through */
673           case 11 : /* fall through */
674           case 12 : /* fall through */
675           case 13 : /* fall through */
676           case 14 : itype = CRISV32F_INSN_ADDS_M_B_M; goto extract_sfmt_adds_m_b_m;
677           case 15 : itype = CRISV32F_INSN_ADDSCBR; goto extract_sfmt_addscbr;
678           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
679           }
680         }
681       case 195 :
682         {
683           unsigned int val = (((insn >> 0) & (15 << 0)));
684           switch (val)
685           {
686           case 0 : /* fall through */
687           case 1 : /* fall through */
688           case 2 : /* fall through */
689           case 3 : /* fall through */
690           case 4 : /* fall through */
691           case 5 : /* fall through */
692           case 6 : /* fall through */
693           case 7 : /* fall through */
694           case 8 : /* fall through */
695           case 9 : /* fall through */
696           case 10 : /* fall through */
697           case 11 : /* fall through */
698           case 12 : /* fall through */
699           case 13 : /* fall through */
700           case 14 : itype = CRISV32F_INSN_ADDS_M_W_M; goto extract_sfmt_adds_m_w_m;
701           case 15 : itype = CRISV32F_INSN_ADDSCWR; goto extract_sfmt_addscwr;
702           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
703           }
704         }
705       case 196 :
706         {
707           unsigned int val = (((insn >> 0) & (15 << 0)));
708           switch (val)
709           {
710           case 0 : /* fall through */
711           case 1 : /* fall through */
712           case 2 : /* fall through */
713           case 3 : /* fall through */
714           case 4 : /* fall through */
715           case 5 : /* fall through */
716           case 6 : /* fall through */
717           case 7 : /* fall through */
718           case 8 : /* fall through */
719           case 9 : /* fall through */
720           case 10 : /* fall through */
721           case 11 : /* fall through */
722           case 12 : /* fall through */
723           case 13 : /* fall through */
724           case 14 : itype = CRISV32F_INSN_MOVU_M_B_M; goto extract_sfmt_movs_m_b_m;
725           case 15 : itype = CRISV32F_INSN_MOVUCBR; goto extract_sfmt_movucbr;
726           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
727           }
728         }
729       case 197 :
730         {
731           unsigned int val = (((insn >> 0) & (15 << 0)));
732           switch (val)
733           {
734           case 0 : /* fall through */
735           case 1 : /* fall through */
736           case 2 : /* fall through */
737           case 3 : /* fall through */
738           case 4 : /* fall through */
739           case 5 : /* fall through */
740           case 6 : /* fall through */
741           case 7 : /* fall through */
742           case 8 : /* fall through */
743           case 9 : /* fall through */
744           case 10 : /* fall through */
745           case 11 : /* fall through */
746           case 12 : /* fall through */
747           case 13 : /* fall through */
748           case 14 : itype = CRISV32F_INSN_MOVU_M_W_M; goto extract_sfmt_movs_m_w_m;
749           case 15 : itype = CRISV32F_INSN_MOVUCWR; goto extract_sfmt_movucwr;
750           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
751           }
752         }
753       case 198 :
754         {
755           unsigned int val = (((insn >> 0) & (15 << 0)));
756           switch (val)
757           {
758           case 0 : /* fall through */
759           case 1 : /* fall through */
760           case 2 : /* fall through */
761           case 3 : /* fall through */
762           case 4 : /* fall through */
763           case 5 : /* fall through */
764           case 6 : /* fall through */
765           case 7 : /* fall through */
766           case 8 : /* fall through */
767           case 9 : /* fall through */
768           case 10 : /* fall through */
769           case 11 : /* fall through */
770           case 12 : /* fall through */
771           case 13 : /* fall through */
772           case 14 : itype = CRISV32F_INSN_MOVS_M_B_M; goto extract_sfmt_movs_m_b_m;
773           case 15 : itype = CRISV32F_INSN_MOVSCBR; goto extract_sfmt_movscbr;
774           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
775           }
776         }
777       case 199 :
778         {
779           unsigned int val = (((insn >> 0) & (15 << 0)));
780           switch (val)
781           {
782           case 0 : /* fall through */
783           case 1 : /* fall through */
784           case 2 : /* fall through */
785           case 3 : /* fall through */
786           case 4 : /* fall through */
787           case 5 : /* fall through */
788           case 6 : /* fall through */
789           case 7 : /* fall through */
790           case 8 : /* fall through */
791           case 9 : /* fall through */
792           case 10 : /* fall through */
793           case 11 : /* fall through */
794           case 12 : /* fall through */
795           case 13 : /* fall through */
796           case 14 : itype = CRISV32F_INSN_MOVS_M_W_M; goto extract_sfmt_movs_m_w_m;
797           case 15 : itype = CRISV32F_INSN_MOVSCWR; goto extract_sfmt_movscwr;
798           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
799           }
800         }
801       case 200 :
802         {
803           unsigned int val = (((insn >> 0) & (15 << 0)));
804           switch (val)
805           {
806           case 0 : /* fall through */
807           case 1 : /* fall through */
808           case 2 : /* fall through */
809           case 3 : /* fall through */
810           case 4 : /* fall through */
811           case 5 : /* fall through */
812           case 6 : /* fall through */
813           case 7 : /* fall through */
814           case 8 : /* fall through */
815           case 9 : /* fall through */
816           case 10 : /* fall through */
817           case 11 : /* fall through */
818           case 12 : /* fall through */
819           case 13 : /* fall through */
820           case 14 : itype = CRISV32F_INSN_SUBU_M_B_M; goto extract_sfmt_adds_m_b_m;
821           case 15 : itype = CRISV32F_INSN_SUBUCBR; goto extract_sfmt_addscbr;
822           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
823           }
824         }
825       case 201 :
826         {
827           unsigned int val = (((insn >> 0) & (15 << 0)));
828           switch (val)
829           {
830           case 0 : /* fall through */
831           case 1 : /* fall through */
832           case 2 : /* fall through */
833           case 3 : /* fall through */
834           case 4 : /* fall through */
835           case 5 : /* fall through */
836           case 6 : /* fall through */
837           case 7 : /* fall through */
838           case 8 : /* fall through */
839           case 9 : /* fall through */
840           case 10 : /* fall through */
841           case 11 : /* fall through */
842           case 12 : /* fall through */
843           case 13 : /* fall through */
844           case 14 : itype = CRISV32F_INSN_SUBU_M_W_M; goto extract_sfmt_adds_m_w_m;
845           case 15 : itype = CRISV32F_INSN_SUBUCWR; goto extract_sfmt_addscwr;
846           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
847           }
848         }
849       case 202 :
850         {
851           unsigned int val = (((insn >> 0) & (15 << 0)));
852           switch (val)
853           {
854           case 0 : /* fall through */
855           case 1 : /* fall through */
856           case 2 : /* fall through */
857           case 3 : /* fall through */
858           case 4 : /* fall through */
859           case 5 : /* fall through */
860           case 6 : /* fall through */
861           case 7 : /* fall through */
862           case 8 : /* fall through */
863           case 9 : /* fall through */
864           case 10 : /* fall through */
865           case 11 : /* fall through */
866           case 12 : /* fall through */
867           case 13 : /* fall through */
868           case 14 : itype = CRISV32F_INSN_SUBS_M_B_M; goto extract_sfmt_adds_m_b_m;
869           case 15 : itype = CRISV32F_INSN_SUBSCBR; goto extract_sfmt_addscbr;
870           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
871           }
872         }
873       case 203 :
874         {
875           unsigned int val = (((insn >> 0) & (15 << 0)));
876           switch (val)
877           {
878           case 0 : /* fall through */
879           case 1 : /* fall through */
880           case 2 : /* fall through */
881           case 3 : /* fall through */
882           case 4 : /* fall through */
883           case 5 : /* fall through */
884           case 6 : /* fall through */
885           case 7 : /* fall through */
886           case 8 : /* fall through */
887           case 9 : /* fall through */
888           case 10 : /* fall through */
889           case 11 : /* fall through */
890           case 12 : /* fall through */
891           case 13 : /* fall through */
892           case 14 : itype = CRISV32F_INSN_SUBS_M_W_M; goto extract_sfmt_adds_m_w_m;
893           case 15 : itype = CRISV32F_INSN_SUBSCWR; goto extract_sfmt_addscwr;
894           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
895           }
896         }
897       case 204 :
898         {
899           unsigned int val = (((insn >> 0) & (15 << 0)));
900           switch (val)
901           {
902           case 0 : /* fall through */
903           case 1 : /* fall through */
904           case 2 : /* fall through */
905           case 3 : /* fall through */
906           case 4 : /* fall through */
907           case 5 : /* fall through */
908           case 6 : /* fall through */
909           case 7 : /* fall through */
910           case 8 : /* fall through */
911           case 9 : /* fall through */
912           case 10 : /* fall through */
913           case 11 : /* fall through */
914           case 12 : /* fall through */
915           case 13 : /* fall through */
916           case 14 : itype = CRISV32F_INSN_CMPU_M_B_M; goto extract_sfmt_cmp_m_b_m;
917           case 15 : itype = CRISV32F_INSN_CMPUCBR; goto extract_sfmt_cmpucbr;
918           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
919           }
920         }
921       case 205 :
922         {
923           unsigned int val = (((insn >> 0) & (15 << 0)));
924           switch (val)
925           {
926           case 0 : /* fall through */
927           case 1 : /* fall through */
928           case 2 : /* fall through */
929           case 3 : /* fall through */
930           case 4 : /* fall through */
931           case 5 : /* fall through */
932           case 6 : /* fall through */
933           case 7 : /* fall through */
934           case 8 : /* fall through */
935           case 9 : /* fall through */
936           case 10 : /* fall through */
937           case 11 : /* fall through */
938           case 12 : /* fall through */
939           case 13 : /* fall through */
940           case 14 : itype = CRISV32F_INSN_CMPU_M_W_M; goto extract_sfmt_cmp_m_w_m;
941           case 15 : itype = CRISV32F_INSN_CMPUCWR; goto extract_sfmt_cmpucwr;
942           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
943           }
944         }
945       case 206 :
946         {
947           unsigned int val = (((insn >> 0) & (15 << 0)));
948           switch (val)
949           {
950           case 0 : /* fall through */
951           case 1 : /* fall through */
952           case 2 : /* fall through */
953           case 3 : /* fall through */
954           case 4 : /* fall through */
955           case 5 : /* fall through */
956           case 6 : /* fall through */
957           case 7 : /* fall through */
958           case 8 : /* fall through */
959           case 9 : /* fall through */
960           case 10 : /* fall through */
961           case 11 : /* fall through */
962           case 12 : /* fall through */
963           case 13 : /* fall through */
964           case 14 : itype = CRISV32F_INSN_CMPS_M_B_M; goto extract_sfmt_cmp_m_b_m;
965           case 15 : itype = CRISV32F_INSN_CMPSCBR; goto extract_sfmt_cmpcbr;
966           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
967           }
968         }
969       case 207 :
970         {
971           unsigned int val = (((insn >> 0) & (15 << 0)));
972           switch (val)
973           {
974           case 0 : /* fall through */
975           case 1 : /* fall through */
976           case 2 : /* fall through */
977           case 3 : /* fall through */
978           case 4 : /* fall through */
979           case 5 : /* fall through */
980           case 6 : /* fall through */
981           case 7 : /* fall through */
982           case 8 : /* fall through */
983           case 9 : /* fall through */
984           case 10 : /* fall through */
985           case 11 : /* fall through */
986           case 12 : /* fall through */
987           case 13 : /* fall through */
988           case 14 : itype = CRISV32F_INSN_CMPS_M_W_M; goto extract_sfmt_cmp_m_w_m;
989           case 15 : itype = CRISV32F_INSN_CMPSCWR; goto extract_sfmt_cmpcwr;
990           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
991           }
992         }
993       case 208 : itype = CRISV32F_INSN_MULS_B; goto extract_sfmt_muls_b;
994       case 209 : itype = CRISV32F_INSN_MULS_W; goto extract_sfmt_muls_b;
995       case 210 : itype = CRISV32F_INSN_MULS_D; goto extract_sfmt_muls_b;
996       case 211 :
997         {
998           unsigned int val = (((insn >> 12) & (1 << 0)));
999           switch (val)
1000           {
1001           case 0 :
1002             if ((base_insn & 0xfff0) == 0xd30)
1003               { itype = CRISV32F_INSN_FIDXI; goto extract_sfmt_fidxi; }
1004             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1005           case 1 :
1006             if ((base_insn & 0xfff0) == 0x1d30)
1007               { itype = CRISV32F_INSN_FTAGI; goto extract_sfmt_fidxi; }
1008             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1009           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1010           }
1011         }
1012       case 212 :
1013         {
1014           unsigned int val = (((insn >> 0) & (15 << 0)));
1015           switch (val)
1016           {
1017           case 0 : /* fall through */
1018           case 1 : /* fall through */
1019           case 2 : /* fall through */
1020           case 3 : /* fall through */
1021           case 4 : /* fall through */
1022           case 5 : /* fall through */
1023           case 6 : /* fall through */
1024           case 7 : /* fall through */
1025           case 8 : /* fall through */
1026           case 9 : /* fall through */
1027           case 10 : /* fall through */
1028           case 11 : /* fall through */
1029           case 12 : /* fall through */
1030           case 13 : /* fall through */
1031           case 14 : itype = CRISV32F_INSN_ADDO_M_B_M; goto extract_sfmt_addo_m_b_m;
1032           case 15 : itype = CRISV32F_INSN_ADDO_CB; goto extract_sfmt_addo_cb;
1033           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1034           }
1035         }
1036       case 213 :
1037         {
1038           unsigned int val = (((insn >> 0) & (15 << 0)));
1039           switch (val)
1040           {
1041           case 0 : /* fall through */
1042           case 1 : /* fall through */
1043           case 2 : /* fall through */
1044           case 3 : /* fall through */
1045           case 4 : /* fall through */
1046           case 5 : /* fall through */
1047           case 6 : /* fall through */
1048           case 7 : /* fall through */
1049           case 8 : /* fall through */
1050           case 9 : /* fall through */
1051           case 10 : /* fall through */
1052           case 11 : /* fall through */
1053           case 12 : /* fall through */
1054           case 13 : /* fall through */
1055           case 14 : itype = CRISV32F_INSN_ADDO_M_W_M; goto extract_sfmt_addo_m_w_m;
1056           case 15 : itype = CRISV32F_INSN_ADDO_CW; goto extract_sfmt_addo_cw;
1057           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1058           }
1059         }
1060       case 214 :
1061         {
1062           unsigned int val = (((insn >> 0) & (15 << 0)));
1063           switch (val)
1064           {
1065           case 0 : /* fall through */
1066           case 1 : /* fall through */
1067           case 2 : /* fall through */
1068           case 3 : /* fall through */
1069           case 4 : /* fall through */
1070           case 5 : /* fall through */
1071           case 6 : /* fall through */
1072           case 7 : /* fall through */
1073           case 8 : /* fall through */
1074           case 9 : /* fall through */
1075           case 10 : /* fall through */
1076           case 11 : /* fall through */
1077           case 12 : /* fall through */
1078           case 13 : /* fall through */
1079           case 14 : itype = CRISV32F_INSN_ADDO_M_D_M; goto extract_sfmt_addo_m_d_m;
1080           case 15 : itype = CRISV32F_INSN_ADDO_CD; goto extract_sfmt_addo_cd;
1081           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1082           }
1083         }
1084       case 215 :
1085         if ((base_insn & 0xfff) == 0xd7f)
1086           { itype = CRISV32F_INSN_LAPC_D; goto extract_sfmt_lapc_d; }
1087         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1088       case 218 :
1089         {
1090           unsigned int val = (((insn >> 0) & (15 << 0)));
1091           switch (val)
1092           {
1093           case 0 : /* fall through */
1094           case 1 : /* fall through */
1095           case 2 : /* fall through */
1096           case 3 : /* fall through */
1097           case 4 : /* fall through */
1098           case 5 : /* fall through */
1099           case 6 : /* fall through */
1100           case 7 : /* fall through */
1101           case 8 : /* fall through */
1102           case 9 : /* fall through */
1103           case 10 : /* fall through */
1104           case 11 : /* fall through */
1105           case 12 : /* fall through */
1106           case 13 : /* fall through */
1107           case 14 : itype = CRISV32F_INSN_ADDC_M; goto extract_sfmt_addc_m;
1108           case 15 : itype = CRISV32F_INSN_ADDC_C; goto extract_sfmt_addcdr;
1109           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1110           }
1111         }
1112       case 219 :
1113         if ((base_insn & 0xfff) == 0xdbf)
1114           { itype = CRISV32F_INSN_JAS_C; goto extract_sfmt_jas_c; }
1115         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1116       case 220 :
1117         if ((base_insn & 0xfff) == 0xdcf)
1118           { itype = CRISV32F_INSN_BOUND_CB; goto extract_sfmt_bound_cb; }
1119         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1120       case 221 :
1121         if ((base_insn & 0xfff) == 0xddf)
1122           { itype = CRISV32F_INSN_BOUND_CW; goto extract_sfmt_bound_cw; }
1123         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1124       case 222 :
1125         if ((base_insn & 0xfff) == 0xdef)
1126           { itype = CRISV32F_INSN_BOUND_CD; goto extract_sfmt_bound_cd; }
1127         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1128       case 223 :
1129         {
1130           unsigned int val = (((insn >> 12) & (15 << 0)));
1131           switch (val)
1132           {
1133           case 0 : /* fall through */
1134           case 1 : /* fall through */
1135           case 2 : /* fall through */
1136           case 3 : /* fall through */
1137           case 4 : /* fall through */
1138           case 5 : /* fall through */
1139           case 6 : /* fall through */
1140           case 7 : /* fall through */
1141           case 8 : /* fall through */
1142           case 9 : /* fall through */
1143           case 10 : /* fall through */
1144           case 11 : /* fall through */
1145           case 12 : /* fall through */
1146           case 13 : /* fall through */
1147           case 15 :
1148             if ((base_insn & 0xfff) == 0xdff)
1149               { itype = CRISV32F_INSN_BCC_W; goto extract_sfmt_bcc_w; }
1150             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1151           case 14 :
1152             if ((base_insn & 0xffff) == 0xedff)
1153               { itype = CRISV32F_INSN_BA_W; goto extract_sfmt_ba_w; }
1154             itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1155           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1156           }
1157         }
1158       case 224 :
1159         {
1160           unsigned int val = (((insn >> 0) & (15 << 0)));
1161           switch (val)
1162           {
1163           case 0 : /* fall through */
1164           case 1 : /* fall through */
1165           case 2 : /* fall through */
1166           case 3 : /* fall through */
1167           case 4 : /* fall through */
1168           case 5 : /* fall through */
1169           case 6 : /* fall through */
1170           case 7 : /* fall through */
1171           case 8 : /* fall through */
1172           case 9 : /* fall through */
1173           case 10 : /* fall through */
1174           case 11 : /* fall through */
1175           case 12 : /* fall through */
1176           case 13 : /* fall through */
1177           case 14 : itype = CRISV32F_INSN_ADD_M_B_M; goto extract_sfmt_add_m_b_m;
1178           case 15 : itype = CRISV32F_INSN_ADDCBR; goto extract_sfmt_addcbr;
1179           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1180           }
1181         }
1182       case 225 :
1183         {
1184           unsigned int val = (((insn >> 0) & (15 << 0)));
1185           switch (val)
1186           {
1187           case 0 : /* fall through */
1188           case 1 : /* fall through */
1189           case 2 : /* fall through */
1190           case 3 : /* fall through */
1191           case 4 : /* fall through */
1192           case 5 : /* fall through */
1193           case 6 : /* fall through */
1194           case 7 : /* fall through */
1195           case 8 : /* fall through */
1196           case 9 : /* fall through */
1197           case 10 : /* fall through */
1198           case 11 : /* fall through */
1199           case 12 : /* fall through */
1200           case 13 : /* fall through */
1201           case 14 : itype = CRISV32F_INSN_ADD_M_W_M; goto extract_sfmt_add_m_w_m;
1202           case 15 : itype = CRISV32F_INSN_ADDCWR; goto extract_sfmt_addcwr;
1203           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1204           }
1205         }
1206       case 226 :
1207         {
1208           unsigned int val = (((insn >> 0) & (15 << 0)));
1209           switch (val)
1210           {
1211           case 0 : /* fall through */
1212           case 1 : /* fall through */
1213           case 2 : /* fall through */
1214           case 3 : /* fall through */
1215           case 4 : /* fall through */
1216           case 5 : /* fall through */
1217           case 6 : /* fall through */
1218           case 7 : /* fall through */
1219           case 8 : /* fall through */
1220           case 9 : /* fall through */
1221           case 10 : /* fall through */
1222           case 11 : /* fall through */
1223           case 12 : /* fall through */
1224           case 13 : /* fall through */
1225           case 14 : itype = CRISV32F_INSN_ADD_M_D_M; goto extract_sfmt_add_m_d_m;
1226           case 15 : itype = CRISV32F_INSN_ADDCDR; goto extract_sfmt_addcdr;
1227           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1228           }
1229         }
1230       case 227 :
1231         {
1232           unsigned int val = (((insn >> 12) & (15 << 0)));
1233           switch (val)
1234           {
1235           case 0 : /* fall through */
1236           case 1 : /* fall through */
1237           case 4 : /* fall through */
1238           case 8 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1239           case 2 :
1240             {
1241               unsigned int val = (((insn >> 0) & (15 << 0)));
1242               switch (val)
1243               {
1244               case 0 : /* fall through */
1245               case 1 : /* fall through */
1246               case 2 : /* fall through */
1247               case 3 : /* fall through */
1248               case 4 : /* fall through */
1249               case 5 : /* fall through */
1250               case 6 : /* fall through */
1251               case 7 : /* fall through */
1252               case 8 : /* fall through */
1253               case 9 : /* fall through */
1254               case 10 : /* fall through */
1255               case 11 : /* fall through */
1256               case 12 : /* fall through */
1257               case 13 : /* fall through */
1258               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1259               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P2; goto extract_sfmt_move_c_sprv32_p2;
1260               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1261               }
1262             }
1263           case 3 :
1264             {
1265               unsigned int val = (((insn >> 0) & (15 << 0)));
1266               switch (val)
1267               {
1268               case 0 : /* fall through */
1269               case 1 : /* fall through */
1270               case 2 : /* fall through */
1271               case 3 : /* fall through */
1272               case 4 : /* fall through */
1273               case 5 : /* fall through */
1274               case 6 : /* fall through */
1275               case 7 : /* fall through */
1276               case 8 : /* fall through */
1277               case 9 : /* fall through */
1278               case 10 : /* fall through */
1279               case 11 : /* fall through */
1280               case 12 : /* fall through */
1281               case 13 : /* fall through */
1282               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1283               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P3; goto extract_sfmt_move_c_sprv32_p2;
1284               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1285               }
1286             }
1287           case 5 :
1288             {
1289               unsigned int val = (((insn >> 0) & (15 << 0)));
1290               switch (val)
1291               {
1292               case 0 : /* fall through */
1293               case 1 : /* fall through */
1294               case 2 : /* fall through */
1295               case 3 : /* fall through */
1296               case 4 : /* fall through */
1297               case 5 : /* fall through */
1298               case 6 : /* fall through */
1299               case 7 : /* fall through */
1300               case 8 : /* fall through */
1301               case 9 : /* fall through */
1302               case 10 : /* fall through */
1303               case 11 : /* fall through */
1304               case 12 : /* fall through */
1305               case 13 : /* fall through */
1306               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1307               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P5; goto extract_sfmt_move_c_sprv32_p2;
1308               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1309               }
1310             }
1311           case 6 :
1312             {
1313               unsigned int val = (((insn >> 0) & (15 << 0)));
1314               switch (val)
1315               {
1316               case 0 : /* fall through */
1317               case 1 : /* fall through */
1318               case 2 : /* fall through */
1319               case 3 : /* fall through */
1320               case 4 : /* fall through */
1321               case 5 : /* fall through */
1322               case 6 : /* fall through */
1323               case 7 : /* fall through */
1324               case 8 : /* fall through */
1325               case 9 : /* fall through */
1326               case 10 : /* fall through */
1327               case 11 : /* fall through */
1328               case 12 : /* fall through */
1329               case 13 : /* fall through */
1330               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1331               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P6; goto extract_sfmt_move_c_sprv32_p2;
1332               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1333               }
1334             }
1335           case 7 :
1336             {
1337               unsigned int val = (((insn >> 0) & (15 << 0)));
1338               switch (val)
1339               {
1340               case 0 : /* fall through */
1341               case 1 : /* fall through */
1342               case 2 : /* fall through */
1343               case 3 : /* fall through */
1344               case 4 : /* fall through */
1345               case 5 : /* fall through */
1346               case 6 : /* fall through */
1347               case 7 : /* fall through */
1348               case 8 : /* fall through */
1349               case 9 : /* fall through */
1350               case 10 : /* fall through */
1351               case 11 : /* fall through */
1352               case 12 : /* fall through */
1353               case 13 : /* fall through */
1354               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1355               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P7; goto extract_sfmt_move_c_sprv32_p2;
1356               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1357               }
1358             }
1359           case 9 :
1360             {
1361               unsigned int val = (((insn >> 0) & (15 << 0)));
1362               switch (val)
1363               {
1364               case 0 : /* fall through */
1365               case 1 : /* fall through */
1366               case 2 : /* fall through */
1367               case 3 : /* fall through */
1368               case 4 : /* fall through */
1369               case 5 : /* fall through */
1370               case 6 : /* fall through */
1371               case 7 : /* fall through */
1372               case 8 : /* fall through */
1373               case 9 : /* fall through */
1374               case 10 : /* fall through */
1375               case 11 : /* fall through */
1376               case 12 : /* fall through */
1377               case 13 : /* fall through */
1378               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1379               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P9; goto extract_sfmt_move_c_sprv32_p2;
1380               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1381               }
1382             }
1383           case 10 :
1384             {
1385               unsigned int val = (((insn >> 0) & (15 << 0)));
1386               switch (val)
1387               {
1388               case 0 : /* fall through */
1389               case 1 : /* fall through */
1390               case 2 : /* fall through */
1391               case 3 : /* fall through */
1392               case 4 : /* fall through */
1393               case 5 : /* fall through */
1394               case 6 : /* fall through */
1395               case 7 : /* fall through */
1396               case 8 : /* fall through */
1397               case 9 : /* fall through */
1398               case 10 : /* fall through */
1399               case 11 : /* fall through */
1400               case 12 : /* fall through */
1401               case 13 : /* fall through */
1402               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1403               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P10; goto extract_sfmt_move_c_sprv32_p2;
1404               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1405               }
1406             }
1407           case 11 :
1408             {
1409               unsigned int val = (((insn >> 0) & (15 << 0)));
1410               switch (val)
1411               {
1412               case 0 : /* fall through */
1413               case 1 : /* fall through */
1414               case 2 : /* fall through */
1415               case 3 : /* fall through */
1416               case 4 : /* fall through */
1417               case 5 : /* fall through */
1418               case 6 : /* fall through */
1419               case 7 : /* fall through */
1420               case 8 : /* fall through */
1421               case 9 : /* fall through */
1422               case 10 : /* fall through */
1423               case 11 : /* fall through */
1424               case 12 : /* fall through */
1425               case 13 : /* fall through */
1426               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1427               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P11; goto extract_sfmt_move_c_sprv32_p2;
1428               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1429               }
1430             }
1431           case 12 :
1432             {
1433               unsigned int val = (((insn >> 0) & (15 << 0)));
1434               switch (val)
1435               {
1436               case 0 : /* fall through */
1437               case 1 : /* fall through */
1438               case 2 : /* fall through */
1439               case 3 : /* fall through */
1440               case 4 : /* fall through */
1441               case 5 : /* fall through */
1442               case 6 : /* fall through */
1443               case 7 : /* fall through */
1444               case 8 : /* fall through */
1445               case 9 : /* fall through */
1446               case 10 : /* fall through */
1447               case 11 : /* fall through */
1448               case 12 : /* fall through */
1449               case 13 : /* fall through */
1450               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1451               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P12; goto extract_sfmt_move_c_sprv32_p2;
1452               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1453               }
1454             }
1455           case 13 :
1456             {
1457               unsigned int val = (((insn >> 0) & (15 << 0)));
1458               switch (val)
1459               {
1460               case 0 : /* fall through */
1461               case 1 : /* fall through */
1462               case 2 : /* fall through */
1463               case 3 : /* fall through */
1464               case 4 : /* fall through */
1465               case 5 : /* fall through */
1466               case 6 : /* fall through */
1467               case 7 : /* fall through */
1468               case 8 : /* fall through */
1469               case 9 : /* fall through */
1470               case 10 : /* fall through */
1471               case 11 : /* fall through */
1472               case 12 : /* fall through */
1473               case 13 : /* fall through */
1474               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1475               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P13; goto extract_sfmt_move_c_sprv32_p2;
1476               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1477               }
1478             }
1479           case 14 :
1480             {
1481               unsigned int val = (((insn >> 0) & (15 << 0)));
1482               switch (val)
1483               {
1484               case 0 : /* fall through */
1485               case 1 : /* fall through */
1486               case 2 : /* fall through */
1487               case 3 : /* fall through */
1488               case 4 : /* fall through */
1489               case 5 : /* fall through */
1490               case 6 : /* fall through */
1491               case 7 : /* fall through */
1492               case 8 : /* fall through */
1493               case 9 : /* fall through */
1494               case 10 : /* fall through */
1495               case 11 : /* fall through */
1496               case 12 : /* fall through */
1497               case 13 : /* fall through */
1498               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1499               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P14; goto extract_sfmt_move_c_sprv32_p2;
1500               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1501               }
1502             }
1503           case 15 :
1504             {
1505               unsigned int val = (((insn >> 0) & (15 << 0)));
1506               switch (val)
1507               {
1508               case 0 : /* fall through */
1509               case 1 : /* fall through */
1510               case 2 : /* fall through */
1511               case 3 : /* fall through */
1512               case 4 : /* fall through */
1513               case 5 : /* fall through */
1514               case 6 : /* fall through */
1515               case 7 : /* fall through */
1516               case 8 : /* fall through */
1517               case 9 : /* fall through */
1518               case 10 : /* fall through */
1519               case 11 : /* fall through */
1520               case 12 : /* fall through */
1521               case 13 : /* fall through */
1522               case 14 : itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32;
1523               case 15 : itype = CRISV32F_INSN_MOVE_C_SPRV32_P15; goto extract_sfmt_move_c_sprv32_p2;
1524               default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1525               }
1526             }
1527           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1528           }
1529         }
1530       case 228 :
1531         {
1532           unsigned int val = (((insn >> 0) & (15 << 0)));
1533           switch (val)
1534           {
1535           case 0 : /* fall through */
1536           case 1 : /* fall through */
1537           case 2 : /* fall through */
1538           case 3 : /* fall through */
1539           case 4 : /* fall through */
1540           case 5 : /* fall through */
1541           case 6 : /* fall through */
1542           case 7 : /* fall through */
1543           case 8 : /* fall through */
1544           case 9 : /* fall through */
1545           case 10 : /* fall through */
1546           case 11 : /* fall through */
1547           case 12 : /* fall through */
1548           case 13 : /* fall through */
1549           case 14 : itype = CRISV32F_INSN_MOVE_M_B_M; goto extract_sfmt_move_m_b_m;
1550           case 15 : itype = CRISV32F_INSN_MOVECBR; goto extract_sfmt_movecbr;
1551           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1552           }
1553         }
1554       case 229 :
1555         {
1556           unsigned int val = (((insn >> 0) & (15 << 0)));
1557           switch (val)
1558           {
1559           case 0 : /* fall through */
1560           case 1 : /* fall through */
1561           case 2 : /* fall through */
1562           case 3 : /* fall through */
1563           case 4 : /* fall through */
1564           case 5 : /* fall through */
1565           case 6 : /* fall through */
1566           case 7 : /* fall through */
1567           case 8 : /* fall through */
1568           case 9 : /* fall through */
1569           case 10 : /* fall through */
1570           case 11 : /* fall through */
1571           case 12 : /* fall through */
1572           case 13 : /* fall through */
1573           case 14 : itype = CRISV32F_INSN_MOVE_M_W_M; goto extract_sfmt_move_m_w_m;
1574           case 15 : itype = CRISV32F_INSN_MOVECWR; goto extract_sfmt_movecwr;
1575           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1576           }
1577         }
1578       case 230 :
1579         {
1580           unsigned int val = (((insn >> 0) & (15 << 0)));
1581           switch (val)
1582           {
1583           case 0 : /* fall through */
1584           case 1 : /* fall through */
1585           case 2 : /* fall through */
1586           case 3 : /* fall through */
1587           case 4 : /* fall through */
1588           case 5 : /* fall through */
1589           case 6 : /* fall through */
1590           case 7 : /* fall through */
1591           case 8 : /* fall through */
1592           case 9 : /* fall through */
1593           case 10 : /* fall through */
1594           case 11 : /* fall through */
1595           case 12 : /* fall through */
1596           case 13 : /* fall through */
1597           case 14 : itype = CRISV32F_INSN_MOVE_M_D_M; goto extract_sfmt_move_m_d_m;
1598           case 15 : itype = CRISV32F_INSN_MOVECDR; goto extract_sfmt_movecdr;
1599           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1600           }
1601         }
1602       case 232 :
1603         {
1604           unsigned int val = (((insn >> 0) & (15 << 0)));
1605           switch (val)
1606           {
1607           case 0 : /* fall through */
1608           case 1 : /* fall through */
1609           case 2 : /* fall through */
1610           case 3 : /* fall through */
1611           case 4 : /* fall through */
1612           case 5 : /* fall through */
1613           case 6 : /* fall through */
1614           case 7 : /* fall through */
1615           case 8 : /* fall through */
1616           case 9 : /* fall through */
1617           case 10 : /* fall through */
1618           case 11 : /* fall through */
1619           case 12 : /* fall through */
1620           case 13 : /* fall through */
1621           case 14 : itype = CRISV32F_INSN_SUB_M_B_M; goto extract_sfmt_add_m_b_m;
1622           case 15 : itype = CRISV32F_INSN_SUBCBR; goto extract_sfmt_addcbr;
1623           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1624           }
1625         }
1626       case 233 :
1627         {
1628           unsigned int val = (((insn >> 0) & (15 << 0)));
1629           switch (val)
1630           {
1631           case 0 : /* fall through */
1632           case 1 : /* fall through */
1633           case 2 : /* fall through */
1634           case 3 : /* fall through */
1635           case 4 : /* fall through */
1636           case 5 : /* fall through */
1637           case 6 : /* fall through */
1638           case 7 : /* fall through */
1639           case 8 : /* fall through */
1640           case 9 : /* fall through */
1641           case 10 : /* fall through */
1642           case 11 : /* fall through */
1643           case 12 : /* fall through */
1644           case 13 : /* fall through */
1645           case 14 : itype = CRISV32F_INSN_SUB_M_W_M; goto extract_sfmt_add_m_w_m;
1646           case 15 : itype = CRISV32F_INSN_SUBCWR; goto extract_sfmt_addcwr;
1647           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1648           }
1649         }
1650       case 234 :
1651         {
1652           unsigned int val = (((insn >> 0) & (15 << 0)));
1653           switch (val)
1654           {
1655           case 0 : /* fall through */
1656           case 1 : /* fall through */
1657           case 2 : /* fall through */
1658           case 3 : /* fall through */
1659           case 4 : /* fall through */
1660           case 5 : /* fall through */
1661           case 6 : /* fall through */
1662           case 7 : /* fall through */
1663           case 8 : /* fall through */
1664           case 9 : /* fall through */
1665           case 10 : /* fall through */
1666           case 11 : /* fall through */
1667           case 12 : /* fall through */
1668           case 13 : /* fall through */
1669           case 14 : itype = CRISV32F_INSN_SUB_M_D_M; goto extract_sfmt_add_m_d_m;
1670           case 15 : itype = CRISV32F_INSN_SUBCDR; goto extract_sfmt_addcdr;
1671           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1672           }
1673         }
1674       case 235 :
1675         if ((base_insn & 0xfff) == 0xebf)
1676           { itype = CRISV32F_INSN_BAS_C; goto extract_sfmt_bas_c; }
1677         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1678       case 236 :
1679         {
1680           unsigned int val = (((insn >> 0) & (15 << 0)));
1681           switch (val)
1682           {
1683           case 0 : /* fall through */
1684           case 1 : /* fall through */
1685           case 2 : /* fall through */
1686           case 3 : /* fall through */
1687           case 4 : /* fall through */
1688           case 5 : /* fall through */
1689           case 6 : /* fall through */
1690           case 7 : /* fall through */
1691           case 8 : /* fall through */
1692           case 9 : /* fall through */
1693           case 10 : /* fall through */
1694           case 11 : /* fall through */
1695           case 12 : /* fall through */
1696           case 13 : /* fall through */
1697           case 14 : itype = CRISV32F_INSN_CMP_M_B_M; goto extract_sfmt_cmp_m_b_m;
1698           case 15 : itype = CRISV32F_INSN_CMPCBR; goto extract_sfmt_cmpcbr;
1699           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1700           }
1701         }
1702       case 237 :
1703         {
1704           unsigned int val = (((insn >> 0) & (15 << 0)));
1705           switch (val)
1706           {
1707           case 0 : /* fall through */
1708           case 1 : /* fall through */
1709           case 2 : /* fall through */
1710           case 3 : /* fall through */
1711           case 4 : /* fall through */
1712           case 5 : /* fall through */
1713           case 6 : /* fall through */
1714           case 7 : /* fall through */
1715           case 8 : /* fall through */
1716           case 9 : /* fall through */
1717           case 10 : /* fall through */
1718           case 11 : /* fall through */
1719           case 12 : /* fall through */
1720           case 13 : /* fall through */
1721           case 14 : itype = CRISV32F_INSN_CMP_M_W_M; goto extract_sfmt_cmp_m_w_m;
1722           case 15 : itype = CRISV32F_INSN_CMPCWR; goto extract_sfmt_cmpcwr;
1723           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1724           }
1725         }
1726       case 238 :
1727         {
1728           unsigned int val = (((insn >> 0) & (15 << 0)));
1729           switch (val)
1730           {
1731           case 0 : /* fall through */
1732           case 1 : /* fall through */
1733           case 2 : /* fall through */
1734           case 3 : /* fall through */
1735           case 4 : /* fall through */
1736           case 5 : /* fall through */
1737           case 6 : /* fall through */
1738           case 7 : /* fall through */
1739           case 8 : /* fall through */
1740           case 9 : /* fall through */
1741           case 10 : /* fall through */
1742           case 11 : /* fall through */
1743           case 12 : /* fall through */
1744           case 13 : /* fall through */
1745           case 14 : itype = CRISV32F_INSN_CMP_M_D_M; goto extract_sfmt_cmp_m_d_m;
1746           case 15 : itype = CRISV32F_INSN_CMPCDR; goto extract_sfmt_cmpcdr;
1747           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1748           }
1749         }
1750       case 239 :
1751         if ((base_insn & 0xfff) == 0xeff)
1752           { itype = CRISV32F_INSN_BASC_C; goto extract_sfmt_bas_c; }
1753         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1754       case 240 :
1755         {
1756           unsigned int val = (((insn >> 0) & (15 << 0)));
1757           switch (val)
1758           {
1759           case 0 : /* fall through */
1760           case 1 : /* fall through */
1761           case 2 : /* fall through */
1762           case 3 : /* fall through */
1763           case 4 : /* fall through */
1764           case 5 : /* fall through */
1765           case 6 : /* fall through */
1766           case 7 : /* fall through */
1767           case 8 : /* fall through */
1768           case 9 : /* fall through */
1769           case 10 : /* fall through */
1770           case 11 : /* fall through */
1771           case 12 : /* fall through */
1772           case 13 : /* fall through */
1773           case 14 : itype = CRISV32F_INSN_AND_M_B_M; goto extract_sfmt_and_m_b_m;
1774           case 15 : itype = CRISV32F_INSN_ANDCBR; goto extract_sfmt_andcbr;
1775           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1776           }
1777         }
1778       case 241 :
1779         {
1780           unsigned int val = (((insn >> 0) & (15 << 0)));
1781           switch (val)
1782           {
1783           case 0 : /* fall through */
1784           case 1 : /* fall through */
1785           case 2 : /* fall through */
1786           case 3 : /* fall through */
1787           case 4 : /* fall through */
1788           case 5 : /* fall through */
1789           case 6 : /* fall through */
1790           case 7 : /* fall through */
1791           case 8 : /* fall through */
1792           case 9 : /* fall through */
1793           case 10 : /* fall through */
1794           case 11 : /* fall through */
1795           case 12 : /* fall through */
1796           case 13 : /* fall through */
1797           case 14 : itype = CRISV32F_INSN_AND_M_W_M; goto extract_sfmt_and_m_w_m;
1798           case 15 : itype = CRISV32F_INSN_ANDCWR; goto extract_sfmt_andcwr;
1799           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1800           }
1801         }
1802       case 242 :
1803         {
1804           unsigned int val = (((insn >> 0) & (15 << 0)));
1805           switch (val)
1806           {
1807           case 0 : /* fall through */
1808           case 1 : /* fall through */
1809           case 2 : /* fall through */
1810           case 3 : /* fall through */
1811           case 4 : /* fall through */
1812           case 5 : /* fall through */
1813           case 6 : /* fall through */
1814           case 7 : /* fall through */
1815           case 8 : /* fall through */
1816           case 9 : /* fall through */
1817           case 10 : /* fall through */
1818           case 11 : /* fall through */
1819           case 12 : /* fall through */
1820           case 13 : /* fall through */
1821           case 14 : itype = CRISV32F_INSN_AND_M_D_M; goto extract_sfmt_and_m_d_m;
1822           case 15 : itype = CRISV32F_INSN_ANDCDR; goto extract_sfmt_andcdr;
1823           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1824           }
1825         }
1826       case 243 :
1827         if ((base_insn & 0xfff) == 0xf3f)
1828           { itype = CRISV32F_INSN_JASC_C; goto extract_sfmt_jas_c; }
1829         itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1830       case 244 :
1831         {
1832           unsigned int val = (((insn >> 0) & (15 << 0)));
1833           switch (val)
1834           {
1835           case 0 : /* fall through */
1836           case 1 : /* fall through */
1837           case 2 : /* fall through */
1838           case 3 : /* fall through */
1839           case 4 : /* fall through */
1840           case 5 : /* fall through */
1841           case 6 : /* fall through */
1842           case 7 : /* fall through */
1843           case 8 : /* fall through */
1844           case 9 : /* fall through */
1845           case 10 : /* fall through */
1846           case 11 : /* fall through */
1847           case 12 : /* fall through */
1848           case 13 : /* fall through */
1849           case 14 : itype = CRISV32F_INSN_OR_M_B_M; goto extract_sfmt_and_m_b_m;
1850           case 15 : itype = CRISV32F_INSN_ORCBR; goto extract_sfmt_andcbr;
1851           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1852           }
1853         }
1854       case 245 :
1855         {
1856           unsigned int val = (((insn >> 0) & (15 << 0)));
1857           switch (val)
1858           {
1859           case 0 : /* fall through */
1860           case 1 : /* fall through */
1861           case 2 : /* fall through */
1862           case 3 : /* fall through */
1863           case 4 : /* fall through */
1864           case 5 : /* fall through */
1865           case 6 : /* fall through */
1866           case 7 : /* fall through */
1867           case 8 : /* fall through */
1868           case 9 : /* fall through */
1869           case 10 : /* fall through */
1870           case 11 : /* fall through */
1871           case 12 : /* fall through */
1872           case 13 : /* fall through */
1873           case 14 : itype = CRISV32F_INSN_OR_M_W_M; goto extract_sfmt_and_m_w_m;
1874           case 15 : itype = CRISV32F_INSN_ORCWR; goto extract_sfmt_andcwr;
1875           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1876           }
1877         }
1878       case 246 :
1879         {
1880           unsigned int val = (((insn >> 0) & (15 << 0)));
1881           switch (val)
1882           {
1883           case 0 : /* fall through */
1884           case 1 : /* fall through */
1885           case 2 : /* fall through */
1886           case 3 : /* fall through */
1887           case 4 : /* fall through */
1888           case 5 : /* fall through */
1889           case 6 : /* fall through */
1890           case 7 : /* fall through */
1891           case 8 : /* fall through */
1892           case 9 : /* fall through */
1893           case 10 : /* fall through */
1894           case 11 : /* fall through */
1895           case 12 : /* fall through */
1896           case 13 : /* fall through */
1897           case 14 : itype = CRISV32F_INSN_OR_M_D_M; goto extract_sfmt_and_m_d_m;
1898           case 15 : itype = CRISV32F_INSN_ORCDR; goto extract_sfmt_andcdr;
1899           default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1900           }
1901         }
1902       case 247 : itype = CRISV32F_INSN_MOVE_SS_R; goto extract_sfmt_move_ss_r;
1903       default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1904       }
1905     }
1906   }
1907
1908   /* The instruction has been decoded, now extract the fields.  */
1909
1910  extract_sfmt_empty:
1911   {
1912     const IDESC *idesc = &crisv32f_insn_data[itype];
1913 #define FLD(f) abuf->fields.fmt_empty.f
1914
1915
1916   /* Record the fields for the semantic handler.  */
1917   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
1918
1919 #undef FLD
1920     return idesc;
1921   }
1922
1923  extract_sfmt_move_b_r:
1924   {
1925     const IDESC *idesc = &crisv32f_insn_data[itype];
1926     CGEN_INSN_WORD insn = base_insn;
1927 #define FLD(f) abuf->fields.sfmt_addc_m.f
1928     UINT f_operand2;
1929     UINT f_operand1;
1930
1931     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
1932     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
1933
1934   /* Record the fields for the semantic handler.  */
1935   FLD (f_operand1) = f_operand1;
1936   FLD (f_operand2) = f_operand2;
1937   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_b_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
1938
1939 #if WITH_PROFILE_MODEL_P
1940   /* Record the fields for profiling.  */
1941   if (PROFILE_MODEL_P (current_cpu))
1942     {
1943       FLD (in_Rs) = f_operand1;
1944       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
1945     }
1946 #endif
1947 #undef FLD
1948     return idesc;
1949   }
1950
1951  extract_sfmt_move_d_r:
1952   {
1953     const IDESC *idesc = &crisv32f_insn_data[itype];
1954     CGEN_INSN_WORD insn = base_insn;
1955 #define FLD(f) abuf->fields.sfmt_addc_m.f
1956     UINT f_operand2;
1957     UINT f_operand1;
1958
1959     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
1960     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
1961
1962   /* Record the fields for the semantic handler.  */
1963   FLD (f_operand1) = f_operand1;
1964   FLD (f_operand2) = f_operand2;
1965   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_d_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
1966
1967 #if WITH_PROFILE_MODEL_P
1968   /* Record the fields for profiling.  */
1969   if (PROFILE_MODEL_P (current_cpu))
1970     {
1971       FLD (in_Rs) = f_operand1;
1972       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
1973     }
1974 #endif
1975 #undef FLD
1976     return idesc;
1977   }
1978
1979  extract_sfmt_moveq:
1980   {
1981     const IDESC *idesc = &crisv32f_insn_data[itype];
1982     CGEN_INSN_WORD insn = base_insn;
1983 #define FLD(f) abuf->fields.sfmt_moveq.f
1984     UINT f_operand2;
1985     INT f_s6;
1986
1987     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
1988     f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6);
1989
1990   /* Record the fields for the semantic handler.  */
1991   FLD (f_s6) = f_s6;
1992   FLD (f_operand2) = f_operand2;
1993   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_moveq", "f_s6 0x%x", 'x', f_s6, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
1994
1995 #if WITH_PROFILE_MODEL_P
1996   /* Record the fields for profiling.  */
1997   if (PROFILE_MODEL_P (current_cpu))
1998     {
1999       FLD (out_Rd) = f_operand2;
2000     }
2001 #endif
2002 #undef FLD
2003     return idesc;
2004   }
2005
2006  extract_sfmt_movs_b_r:
2007   {
2008     const IDESC *idesc = &crisv32f_insn_data[itype];
2009     CGEN_INSN_WORD insn = base_insn;
2010 #define FLD(f) abuf->fields.sfmt_muls_b.f
2011     UINT f_operand2;
2012     UINT f_operand1;
2013
2014     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2015     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2016
2017   /* Record the fields for the semantic handler.  */
2018   FLD (f_operand1) = f_operand1;
2019   FLD (f_operand2) = f_operand2;
2020   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movs_b_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2021
2022 #if WITH_PROFILE_MODEL_P
2023   /* Record the fields for profiling.  */
2024   if (PROFILE_MODEL_P (current_cpu))
2025     {
2026       FLD (in_Rs) = f_operand1;
2027       FLD (out_Rd) = f_operand2;
2028     }
2029 #endif
2030 #undef FLD
2031     return idesc;
2032   }
2033
2034  extract_sfmt_movecbr:
2035   {
2036     const IDESC *idesc = &crisv32f_insn_data[itype];
2037     CGEN_INSN_WORD insn = base_insn;
2038 #define FLD(f) abuf->fields.sfmt_addcbr.f
2039     INT f_indir_pc__byte;
2040     UINT f_operand2;
2041     /* Contents of trailing part of insn.  */
2042     UINT word_1;
2043
2044   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2045     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2046     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2047
2048   /* Record the fields for the semantic handler.  */
2049   FLD (f_operand2) = f_operand2;
2050   FLD (f_indir_pc__byte) = f_indir_pc__byte;
2051   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movecbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
2052
2053 #if WITH_PROFILE_MODEL_P
2054   /* Record the fields for profiling.  */
2055   if (PROFILE_MODEL_P (current_cpu))
2056     {
2057       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
2058     }
2059 #endif
2060 #undef FLD
2061     return idesc;
2062   }
2063
2064  extract_sfmt_movecwr:
2065   {
2066     const IDESC *idesc = &crisv32f_insn_data[itype];
2067     CGEN_INSN_WORD insn = base_insn;
2068 #define FLD(f) abuf->fields.sfmt_addcwr.f
2069     INT f_indir_pc__word;
2070     UINT f_operand2;
2071     /* Contents of trailing part of insn.  */
2072     UINT word_1;
2073
2074   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2075     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2076     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2077
2078   /* Record the fields for the semantic handler.  */
2079   FLD (f_operand2) = f_operand2;
2080   FLD (f_indir_pc__word) = f_indir_pc__word;
2081   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movecwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
2082
2083 #if WITH_PROFILE_MODEL_P
2084   /* Record the fields for profiling.  */
2085   if (PROFILE_MODEL_P (current_cpu))
2086     {
2087       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
2088     }
2089 #endif
2090 #undef FLD
2091     return idesc;
2092   }
2093
2094  extract_sfmt_movecdr:
2095   {
2096     const IDESC *idesc = &crisv32f_insn_data[itype];
2097     CGEN_INSN_WORD insn = base_insn;
2098 #define FLD(f) abuf->fields.sfmt_bound_cd.f
2099     INT f_indir_pc__dword;
2100     UINT f_operand2;
2101     /* Contents of trailing part of insn.  */
2102     UINT word_1;
2103
2104   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2105     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
2106     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2107
2108   /* Record the fields for the semantic handler.  */
2109   FLD (f_indir_pc__dword) = f_indir_pc__dword;
2110   FLD (f_operand2) = f_operand2;
2111   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movecdr", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2112
2113 #if WITH_PROFILE_MODEL_P
2114   /* Record the fields for profiling.  */
2115   if (PROFILE_MODEL_P (current_cpu))
2116     {
2117       FLD (out_Rd) = f_operand2;
2118     }
2119 #endif
2120 #undef FLD
2121     return idesc;
2122   }
2123
2124  extract_sfmt_movscbr:
2125   {
2126     const IDESC *idesc = &crisv32f_insn_data[itype];
2127     CGEN_INSN_WORD insn = base_insn;
2128 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2129     UINT f_operand2;
2130     INT f_indir_pc__byte;
2131     /* Contents of trailing part of insn.  */
2132     UINT word_1;
2133
2134   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2135     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2136     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2137
2138   /* Record the fields for the semantic handler.  */
2139   FLD (f_indir_pc__byte) = f_indir_pc__byte;
2140   FLD (f_operand2) = f_operand2;
2141   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movscbr", "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2142
2143 #if WITH_PROFILE_MODEL_P
2144   /* Record the fields for profiling.  */
2145   if (PROFILE_MODEL_P (current_cpu))
2146     {
2147       FLD (out_Rd) = f_operand2;
2148     }
2149 #endif
2150 #undef FLD
2151     return idesc;
2152   }
2153
2154  extract_sfmt_movscwr:
2155   {
2156     const IDESC *idesc = &crisv32f_insn_data[itype];
2157     CGEN_INSN_WORD insn = base_insn;
2158 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2159     UINT f_operand2;
2160     INT f_indir_pc__word;
2161     /* Contents of trailing part of insn.  */
2162     UINT word_1;
2163
2164   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2165     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2166     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2167
2168   /* Record the fields for the semantic handler.  */
2169   FLD (f_indir_pc__word) = f_indir_pc__word;
2170   FLD (f_operand2) = f_operand2;
2171   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movscwr", "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2172
2173 #if WITH_PROFILE_MODEL_P
2174   /* Record the fields for profiling.  */
2175   if (PROFILE_MODEL_P (current_cpu))
2176     {
2177       FLD (out_Rd) = f_operand2;
2178     }
2179 #endif
2180 #undef FLD
2181     return idesc;
2182   }
2183
2184  extract_sfmt_movucbr:
2185   {
2186     const IDESC *idesc = &crisv32f_insn_data[itype];
2187     CGEN_INSN_WORD insn = base_insn;
2188 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2189     UINT f_operand2;
2190     INT f_indir_pc__byte;
2191     /* Contents of trailing part of insn.  */
2192     UINT word_1;
2193
2194   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2195     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2196     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2197
2198   /* Record the fields for the semantic handler.  */
2199   FLD (f_indir_pc__byte) = f_indir_pc__byte;
2200   FLD (f_operand2) = f_operand2;
2201   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movucbr", "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2202
2203 #if WITH_PROFILE_MODEL_P
2204   /* Record the fields for profiling.  */
2205   if (PROFILE_MODEL_P (current_cpu))
2206     {
2207       FLD (out_Rd) = f_operand2;
2208     }
2209 #endif
2210 #undef FLD
2211     return idesc;
2212   }
2213
2214  extract_sfmt_movucwr:
2215   {
2216     const IDESC *idesc = &crisv32f_insn_data[itype];
2217     CGEN_INSN_WORD insn = base_insn;
2218 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2219     UINT f_operand2;
2220     INT f_indir_pc__word;
2221     /* Contents of trailing part of insn.  */
2222     UINT word_1;
2223
2224   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2225     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2226     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2227
2228   /* Record the fields for the semantic handler.  */
2229   FLD (f_indir_pc__word) = f_indir_pc__word;
2230   FLD (f_operand2) = f_operand2;
2231   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movucwr", "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2232
2233 #if WITH_PROFILE_MODEL_P
2234   /* Record the fields for profiling.  */
2235   if (PROFILE_MODEL_P (current_cpu))
2236     {
2237       FLD (out_Rd) = f_operand2;
2238     }
2239 #endif
2240 #undef FLD
2241     return idesc;
2242   }
2243
2244  extract_sfmt_addq:
2245   {
2246     const IDESC *idesc = &crisv32f_insn_data[itype];
2247     CGEN_INSN_WORD insn = base_insn;
2248 #define FLD(f) abuf->fields.sfmt_addq.f
2249     UINT f_operand2;
2250     UINT f_u6;
2251
2252     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2253     f_u6 = EXTRACT_LSB0_UINT (insn, 16, 5, 6);
2254
2255   /* Record the fields for the semantic handler.  */
2256   FLD (f_operand2) = f_operand2;
2257   FLD (f_u6) = f_u6;
2258   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addq", "f_operand2 0x%x", 'x', f_operand2, "f_u6 0x%x", 'x', f_u6, (char *) 0));
2259
2260 #if WITH_PROFILE_MODEL_P
2261   /* Record the fields for profiling.  */
2262   if (PROFILE_MODEL_P (current_cpu))
2263     {
2264       FLD (in_Rd) = f_operand2;
2265       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
2266     }
2267 #endif
2268 #undef FLD
2269     return idesc;
2270   }
2271
2272  extract_sfmt_cmp_r_b_r:
2273   {
2274     const IDESC *idesc = &crisv32f_insn_data[itype];
2275     CGEN_INSN_WORD insn = base_insn;
2276 #define FLD(f) abuf->fields.sfmt_muls_b.f
2277     UINT f_operand2;
2278     UINT f_operand1;
2279
2280     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2281     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2282
2283   /* Record the fields for the semantic handler.  */
2284   FLD (f_operand2) = f_operand2;
2285   FLD (f_operand1) = f_operand1;
2286   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp_r_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
2287
2288 #if WITH_PROFILE_MODEL_P
2289   /* Record the fields for profiling.  */
2290   if (PROFILE_MODEL_P (current_cpu))
2291     {
2292       FLD (in_Rd) = f_operand2;
2293       FLD (in_Rs) = f_operand1;
2294     }
2295 #endif
2296 #undef FLD
2297     return idesc;
2298   }
2299
2300  extract_sfmt_cmp_m_b_m:
2301   {
2302     const IDESC *idesc = &crisv32f_insn_data[itype];
2303     CGEN_INSN_WORD insn = base_insn;
2304 #define FLD(f) abuf->fields.sfmt_addc_m.f
2305     UINT f_operand2;
2306     UINT f_memmode;
2307     UINT f_operand1;
2308
2309     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2310     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2311     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2312
2313   /* Record the fields for the semantic handler.  */
2314   FLD (f_operand2) = f_operand2;
2315   FLD (f_operand1) = f_operand1;
2316   FLD (f_memmode) = f_memmode;
2317   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
2318
2319 #if WITH_PROFILE_MODEL_P
2320   /* Record the fields for profiling.  */
2321   if (PROFILE_MODEL_P (current_cpu))
2322     {
2323       FLD (in_Rd) = f_operand2;
2324       FLD (in_Rs) = f_operand1;
2325       FLD (out_Rs) = f_operand1;
2326     }
2327 #endif
2328 #undef FLD
2329     return idesc;
2330   }
2331
2332  extract_sfmt_cmp_m_w_m:
2333   {
2334     const IDESC *idesc = &crisv32f_insn_data[itype];
2335     CGEN_INSN_WORD insn = base_insn;
2336 #define FLD(f) abuf->fields.sfmt_addc_m.f
2337     UINT f_operand2;
2338     UINT f_memmode;
2339     UINT f_operand1;
2340
2341     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2342     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2343     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2344
2345   /* Record the fields for the semantic handler.  */
2346   FLD (f_operand2) = f_operand2;
2347   FLD (f_operand1) = f_operand1;
2348   FLD (f_memmode) = f_memmode;
2349   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
2350
2351 #if WITH_PROFILE_MODEL_P
2352   /* Record the fields for profiling.  */
2353   if (PROFILE_MODEL_P (current_cpu))
2354     {
2355       FLD (in_Rd) = f_operand2;
2356       FLD (in_Rs) = f_operand1;
2357       FLD (out_Rs) = f_operand1;
2358     }
2359 #endif
2360 #undef FLD
2361     return idesc;
2362   }
2363
2364  extract_sfmt_cmp_m_d_m:
2365   {
2366     const IDESC *idesc = &crisv32f_insn_data[itype];
2367     CGEN_INSN_WORD insn = base_insn;
2368 #define FLD(f) abuf->fields.sfmt_addc_m.f
2369     UINT f_operand2;
2370     UINT f_memmode;
2371     UINT f_operand1;
2372
2373     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2374     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2375     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2376
2377   /* Record the fields for the semantic handler.  */
2378   FLD (f_operand2) = f_operand2;
2379   FLD (f_operand1) = f_operand1;
2380   FLD (f_memmode) = f_memmode;
2381   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
2382
2383 #if WITH_PROFILE_MODEL_P
2384   /* Record the fields for profiling.  */
2385   if (PROFILE_MODEL_P (current_cpu))
2386     {
2387       FLD (in_Rd) = f_operand2;
2388       FLD (in_Rs) = f_operand1;
2389       FLD (out_Rs) = f_operand1;
2390     }
2391 #endif
2392 #undef FLD
2393     return idesc;
2394   }
2395
2396  extract_sfmt_cmpcbr:
2397   {
2398     const IDESC *idesc = &crisv32f_insn_data[itype];
2399     CGEN_INSN_WORD insn = base_insn;
2400 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2401     INT f_indir_pc__byte;
2402     UINT f_operand2;
2403     /* Contents of trailing part of insn.  */
2404     UINT word_1;
2405
2406   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2407     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2408     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2409
2410   /* Record the fields for the semantic handler.  */
2411   FLD (f_operand2) = f_operand2;
2412   FLD (f_indir_pc__byte) = f_indir_pc__byte;
2413   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpcbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
2414
2415 #if WITH_PROFILE_MODEL_P
2416   /* Record the fields for profiling.  */
2417   if (PROFILE_MODEL_P (current_cpu))
2418     {
2419       FLD (in_Rd) = f_operand2;
2420     }
2421 #endif
2422 #undef FLD
2423     return idesc;
2424   }
2425
2426  extract_sfmt_cmpcwr:
2427   {
2428     const IDESC *idesc = &crisv32f_insn_data[itype];
2429     CGEN_INSN_WORD insn = base_insn;
2430 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2431     INT f_indir_pc__word;
2432     UINT f_operand2;
2433     /* Contents of trailing part of insn.  */
2434     UINT word_1;
2435
2436   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2437     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2438     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2439
2440   /* Record the fields for the semantic handler.  */
2441   FLD (f_operand2) = f_operand2;
2442   FLD (f_indir_pc__word) = f_indir_pc__word;
2443   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpcwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
2444
2445 #if WITH_PROFILE_MODEL_P
2446   /* Record the fields for profiling.  */
2447   if (PROFILE_MODEL_P (current_cpu))
2448     {
2449       FLD (in_Rd) = f_operand2;
2450     }
2451 #endif
2452 #undef FLD
2453     return idesc;
2454   }
2455
2456  extract_sfmt_cmpcdr:
2457   {
2458     const IDESC *idesc = &crisv32f_insn_data[itype];
2459     CGEN_INSN_WORD insn = base_insn;
2460 #define FLD(f) abuf->fields.sfmt_bound_cd.f
2461     INT f_indir_pc__dword;
2462     UINT f_operand2;
2463     /* Contents of trailing part of insn.  */
2464     UINT word_1;
2465
2466   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2467     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
2468     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2469
2470   /* Record the fields for the semantic handler.  */
2471   FLD (f_operand2) = f_operand2;
2472   FLD (f_indir_pc__dword) = f_indir_pc__dword;
2473   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpcdr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
2474
2475 #if WITH_PROFILE_MODEL_P
2476   /* Record the fields for profiling.  */
2477   if (PROFILE_MODEL_P (current_cpu))
2478     {
2479       FLD (in_Rd) = f_operand2;
2480     }
2481 #endif
2482 #undef FLD
2483     return idesc;
2484   }
2485
2486  extract_sfmt_cmpq:
2487   {
2488     const IDESC *idesc = &crisv32f_insn_data[itype];
2489     CGEN_INSN_WORD insn = base_insn;
2490 #define FLD(f) abuf->fields.sfmt_andq.f
2491     UINT f_operand2;
2492     INT f_s6;
2493
2494     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2495     f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6);
2496
2497   /* Record the fields for the semantic handler.  */
2498   FLD (f_operand2) = f_operand2;
2499   FLD (f_s6) = f_s6;
2500   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpq", "f_operand2 0x%x", 'x', f_operand2, "f_s6 0x%x", 'x', f_s6, (char *) 0));
2501
2502 #if WITH_PROFILE_MODEL_P
2503   /* Record the fields for profiling.  */
2504   if (PROFILE_MODEL_P (current_cpu))
2505     {
2506       FLD (in_Rd) = f_operand2;
2507     }
2508 #endif
2509 #undef FLD
2510     return idesc;
2511   }
2512
2513  extract_sfmt_cmpucbr:
2514   {
2515     const IDESC *idesc = &crisv32f_insn_data[itype];
2516     CGEN_INSN_WORD insn = base_insn;
2517 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2518     INT f_indir_pc__byte;
2519     UINT f_operand2;
2520     /* Contents of trailing part of insn.  */
2521     UINT word_1;
2522
2523   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2524     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2525     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2526
2527   /* Record the fields for the semantic handler.  */
2528   FLD (f_operand2) = f_operand2;
2529   FLD (f_indir_pc__byte) = f_indir_pc__byte;
2530   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpucbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
2531
2532 #if WITH_PROFILE_MODEL_P
2533   /* Record the fields for profiling.  */
2534   if (PROFILE_MODEL_P (current_cpu))
2535     {
2536       FLD (in_Rd) = f_operand2;
2537     }
2538 #endif
2539 #undef FLD
2540     return idesc;
2541   }
2542
2543  extract_sfmt_cmpucwr:
2544   {
2545     const IDESC *idesc = &crisv32f_insn_data[itype];
2546     CGEN_INSN_WORD insn = base_insn;
2547 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2548     INT f_indir_pc__word;
2549     UINT f_operand2;
2550     /* Contents of trailing part of insn.  */
2551     UINT word_1;
2552
2553   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2554     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2555     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2556
2557   /* Record the fields for the semantic handler.  */
2558   FLD (f_operand2) = f_operand2;
2559   FLD (f_indir_pc__word) = f_indir_pc__word;
2560   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpucwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
2561
2562 #if WITH_PROFILE_MODEL_P
2563   /* Record the fields for profiling.  */
2564   if (PROFILE_MODEL_P (current_cpu))
2565     {
2566       FLD (in_Rd) = f_operand2;
2567     }
2568 #endif
2569 #undef FLD
2570     return idesc;
2571   }
2572
2573  extract_sfmt_move_m_b_m:
2574   {
2575     const IDESC *idesc = &crisv32f_insn_data[itype];
2576     CGEN_INSN_WORD insn = base_insn;
2577 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2578     UINT f_operand2;
2579     UINT f_memmode;
2580     UINT f_operand1;
2581
2582     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2583     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2584     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2585
2586   /* Record the fields for the semantic handler.  */
2587   FLD (f_operand1) = f_operand1;
2588   FLD (f_operand2) = f_operand2;
2589   FLD (f_memmode) = f_memmode;
2590   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_b_m", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
2591
2592 #if WITH_PROFILE_MODEL_P
2593   /* Record the fields for profiling.  */
2594   if (PROFILE_MODEL_P (current_cpu))
2595     {
2596       FLD (in_Rs) = f_operand1;
2597       FLD (out_Rs) = f_operand1;
2598       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
2599     }
2600 #endif
2601 #undef FLD
2602     return idesc;
2603   }
2604
2605  extract_sfmt_move_m_w_m:
2606   {
2607     const IDESC *idesc = &crisv32f_insn_data[itype];
2608     CGEN_INSN_WORD insn = base_insn;
2609 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2610     UINT f_operand2;
2611     UINT f_memmode;
2612     UINT f_operand1;
2613
2614     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2615     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2616     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2617
2618   /* Record the fields for the semantic handler.  */
2619   FLD (f_operand1) = f_operand1;
2620   FLD (f_operand2) = f_operand2;
2621   FLD (f_memmode) = f_memmode;
2622   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_w_m", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
2623
2624 #if WITH_PROFILE_MODEL_P
2625   /* Record the fields for profiling.  */
2626   if (PROFILE_MODEL_P (current_cpu))
2627     {
2628       FLD (in_Rs) = f_operand1;
2629       FLD (out_Rs) = f_operand1;
2630       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
2631     }
2632 #endif
2633 #undef FLD
2634     return idesc;
2635   }
2636
2637  extract_sfmt_move_m_d_m:
2638   {
2639     const IDESC *idesc = &crisv32f_insn_data[itype];
2640     CGEN_INSN_WORD insn = base_insn;
2641 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2642     UINT f_operand2;
2643     UINT f_memmode;
2644     UINT f_operand1;
2645
2646     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2647     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2648     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2649
2650   /* Record the fields for the semantic handler.  */
2651   FLD (f_operand1) = f_operand1;
2652   FLD (f_operand2) = f_operand2;
2653   FLD (f_memmode) = f_memmode;
2654   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_d_m", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
2655
2656 #if WITH_PROFILE_MODEL_P
2657   /* Record the fields for profiling.  */
2658   if (PROFILE_MODEL_P (current_cpu))
2659     {
2660       FLD (in_Rs) = f_operand1;
2661       FLD (out_Rs) = f_operand1;
2662       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
2663     }
2664 #endif
2665 #undef FLD
2666     return idesc;
2667   }
2668
2669  extract_sfmt_movs_m_b_m:
2670   {
2671     const IDESC *idesc = &crisv32f_insn_data[itype];
2672     CGEN_INSN_WORD insn = base_insn;
2673 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
2674     UINT f_operand2;
2675     UINT f_memmode;
2676     UINT f_operand1;
2677
2678     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2679     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2680     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2681
2682   /* Record the fields for the semantic handler.  */
2683   FLD (f_operand1) = f_operand1;
2684   FLD (f_memmode) = f_memmode;
2685   FLD (f_operand2) = f_operand2;
2686   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movs_m_b_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2687
2688 #if WITH_PROFILE_MODEL_P
2689   /* Record the fields for profiling.  */
2690   if (PROFILE_MODEL_P (current_cpu))
2691     {
2692       FLD (in_Rs) = f_operand1;
2693       FLD (out_Rd) = f_operand2;
2694       FLD (out_Rs) = f_operand1;
2695     }
2696 #endif
2697 #undef FLD
2698     return idesc;
2699   }
2700
2701  extract_sfmt_movs_m_w_m:
2702   {
2703     const IDESC *idesc = &crisv32f_insn_data[itype];
2704     CGEN_INSN_WORD insn = base_insn;
2705 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
2706     UINT f_operand2;
2707     UINT f_memmode;
2708     UINT f_operand1;
2709
2710     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2711     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2712     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2713
2714   /* Record the fields for the semantic handler.  */
2715   FLD (f_operand1) = f_operand1;
2716   FLD (f_memmode) = f_memmode;
2717   FLD (f_operand2) = f_operand2;
2718   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movs_m_w_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2719
2720 #if WITH_PROFILE_MODEL_P
2721   /* Record the fields for profiling.  */
2722   if (PROFILE_MODEL_P (current_cpu))
2723     {
2724       FLD (in_Rs) = f_operand1;
2725       FLD (out_Rd) = f_operand2;
2726       FLD (out_Rs) = f_operand1;
2727     }
2728 #endif
2729 #undef FLD
2730     return idesc;
2731   }
2732
2733  extract_sfmt_move_r_sprv32:
2734   {
2735     const IDESC *idesc = &crisv32f_insn_data[itype];
2736     CGEN_INSN_WORD insn = base_insn;
2737 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
2738     UINT f_operand2;
2739     UINT f_operand1;
2740
2741     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2742     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2743
2744   /* Record the fields for the semantic handler.  */
2745   FLD (f_operand1) = f_operand1;
2746   FLD (f_operand2) = f_operand2;
2747   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_sprv32", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2748
2749 #if WITH_PROFILE_MODEL_P
2750   /* Record the fields for profiling.  */
2751   if (PROFILE_MODEL_P (current_cpu))
2752     {
2753       FLD (in_Rs) = f_operand1;
2754       FLD (out_Pd) = f_operand2;
2755     }
2756 #endif
2757 #undef FLD
2758     return idesc;
2759   }
2760
2761  extract_sfmt_move_spr_rv32:
2762   {
2763     const IDESC *idesc = &crisv32f_insn_data[itype];
2764     CGEN_INSN_WORD insn = base_insn;
2765 #define FLD(f) abuf->fields.sfmt_mcp.f
2766     UINT f_operand2;
2767     UINT f_operand1;
2768
2769     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2770     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2771
2772   /* Record the fields for the semantic handler.  */
2773   FLD (f_operand2) = f_operand2;
2774   FLD (f_operand1) = f_operand1;
2775   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_spr_rv32", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
2776
2777 #if WITH_PROFILE_MODEL_P
2778   /* Record the fields for profiling.  */
2779   if (PROFILE_MODEL_P (current_cpu))
2780     {
2781       FLD (in_Ps) = f_operand2;
2782       FLD (out_h_gr_SI_index_of__INT_Rs) = FLD (f_operand1);
2783     }
2784 #endif
2785 #undef FLD
2786     return idesc;
2787   }
2788
2789  extract_sfmt_move_m_sprv32:
2790   {
2791     const IDESC *idesc = &crisv32f_insn_data[itype];
2792     CGEN_INSN_WORD insn = base_insn;
2793 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
2794     UINT f_operand2;
2795     UINT f_memmode;
2796     UINT f_operand1;
2797
2798     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2799     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2800     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2801
2802   /* Record the fields for the semantic handler.  */
2803   FLD (f_operand1) = f_operand1;
2804   FLD (f_operand2) = f_operand2;
2805   FLD (f_memmode) = f_memmode;
2806   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_sprv32", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
2807
2808 #if WITH_PROFILE_MODEL_P
2809   /* Record the fields for profiling.  */
2810   if (PROFILE_MODEL_P (current_cpu))
2811     {
2812       FLD (in_Rs) = f_operand1;
2813       FLD (out_Pd) = f_operand2;
2814       FLD (out_Rs) = f_operand1;
2815     }
2816 #endif
2817 #undef FLD
2818     return idesc;
2819   }
2820
2821  extract_sfmt_move_c_sprv32_p2:
2822   {
2823     const IDESC *idesc = &crisv32f_insn_data[itype];
2824     CGEN_INSN_WORD insn = base_insn;
2825 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
2826     INT f_indir_pc__dword;
2827     UINT f_operand2;
2828     /* Contents of trailing part of insn.  */
2829     UINT word_1;
2830
2831   word_1 = GETIMEMUSI (current_cpu, pc + 2);
2832     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
2833     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2834
2835   /* Record the fields for the semantic handler.  */
2836   FLD (f_indir_pc__dword) = f_indir_pc__dword;
2837   FLD (f_operand2) = f_operand2;
2838   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_c_sprv32_p2", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2839
2840 #if WITH_PROFILE_MODEL_P
2841   /* Record the fields for profiling.  */
2842   if (PROFILE_MODEL_P (current_cpu))
2843     {
2844       FLD (out_Pd) = f_operand2;
2845     }
2846 #endif
2847 #undef FLD
2848     return idesc;
2849   }
2850
2851  extract_sfmt_move_spr_mv32:
2852   {
2853     const IDESC *idesc = &crisv32f_insn_data[itype];
2854     CGEN_INSN_WORD insn = base_insn;
2855 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
2856     UINT f_operand2;
2857     UINT f_memmode;
2858     UINT f_operand1;
2859
2860     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2861     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2862     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2863
2864   /* Record the fields for the semantic handler.  */
2865   FLD (f_operand2) = f_operand2;
2866   FLD (f_operand1) = f_operand1;
2867   FLD (f_memmode) = f_memmode;
2868   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_spr_mv32", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
2869
2870 #if WITH_PROFILE_MODEL_P
2871   /* Record the fields for profiling.  */
2872   if (PROFILE_MODEL_P (current_cpu))
2873     {
2874       FLD (in_Ps) = f_operand2;
2875       FLD (in_Rs) = f_operand1;
2876       FLD (out_Rs) = f_operand1;
2877     }
2878 #endif
2879 #undef FLD
2880     return idesc;
2881   }
2882
2883  extract_sfmt_move_ss_r:
2884   {
2885     const IDESC *idesc = &crisv32f_insn_data[itype];
2886     CGEN_INSN_WORD insn = base_insn;
2887 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
2888     UINT f_operand2;
2889     UINT f_operand1;
2890
2891     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2892     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2893
2894   /* Record the fields for the semantic handler.  */
2895   FLD (f_operand2) = f_operand2;
2896   FLD (f_operand1) = f_operand1;
2897   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_ss_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
2898
2899 #if WITH_PROFILE_MODEL_P
2900   /* Record the fields for profiling.  */
2901   if (PROFILE_MODEL_P (current_cpu))
2902     {
2903       FLD (out_Rs) = f_operand1;
2904     }
2905 #endif
2906 #undef FLD
2907     return idesc;
2908   }
2909
2910  extract_sfmt_move_r_ss:
2911   {
2912     const IDESC *idesc = &crisv32f_insn_data[itype];
2913     CGEN_INSN_WORD insn = base_insn;
2914 #define FLD(f) abuf->fields.sfmt_mcp.f
2915     UINT f_operand2;
2916     UINT f_operand1;
2917
2918     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2919     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2920
2921   /* Record the fields for the semantic handler.  */
2922   FLD (f_operand1) = f_operand1;
2923   FLD (f_operand2) = f_operand2;
2924   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_ss", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2925
2926 #if WITH_PROFILE_MODEL_P
2927   /* Record the fields for profiling.  */
2928   if (PROFILE_MODEL_P (current_cpu))
2929     {
2930       FLD (in_Rs) = f_operand1;
2931     }
2932 #endif
2933 #undef FLD
2934     return idesc;
2935   }
2936
2937  extract_sfmt_movem_r_m_v32:
2938   {
2939     const IDESC *idesc = &crisv32f_insn_data[itype];
2940     CGEN_INSN_WORD insn = base_insn;
2941 #define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f
2942     UINT f_operand2;
2943     UINT f_memmode;
2944     UINT f_operand1;
2945
2946     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2947     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2948     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2949
2950   /* Record the fields for the semantic handler.  */
2951   FLD (f_operand2) = f_operand2;
2952   FLD (f_operand1) = f_operand1;
2953   FLD (f_memmode) = f_memmode;
2954   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movem_r_m_v32", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
2955
2956 #if WITH_PROFILE_MODEL_P
2957   /* Record the fields for profiling.  */
2958   if (PROFILE_MODEL_P (current_cpu))
2959     {
2960       FLD (in_Rd) = f_operand2;
2961       FLD (in_Rs) = f_operand1;
2962       FLD (in_h_gr_SI_0) = 0;
2963       FLD (in_h_gr_SI_1) = 1;
2964       FLD (in_h_gr_SI_10) = 10;
2965       FLD (in_h_gr_SI_11) = 11;
2966       FLD (in_h_gr_SI_12) = 12;
2967       FLD (in_h_gr_SI_13) = 13;
2968       FLD (in_h_gr_SI_14) = 14;
2969       FLD (in_h_gr_SI_15) = 15;
2970       FLD (in_h_gr_SI_2) = 2;
2971       FLD (in_h_gr_SI_3) = 3;
2972       FLD (in_h_gr_SI_4) = 4;
2973       FLD (in_h_gr_SI_5) = 5;
2974       FLD (in_h_gr_SI_6) = 6;
2975       FLD (in_h_gr_SI_7) = 7;
2976       FLD (in_h_gr_SI_8) = 8;
2977       FLD (in_h_gr_SI_9) = 9;
2978       FLD (out_Rs) = f_operand1;
2979     }
2980 #endif
2981 #undef FLD
2982     return idesc;
2983   }
2984
2985  extract_sfmt_movem_m_r_v32:
2986   {
2987     const IDESC *idesc = &crisv32f_insn_data[itype];
2988     CGEN_INSN_WORD insn = base_insn;
2989 #define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f
2990     UINT f_operand2;
2991     UINT f_memmode;
2992     UINT f_operand1;
2993
2994     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2995     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2996     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2997
2998   /* Record the fields for the semantic handler.  */
2999   FLD (f_operand2) = f_operand2;
3000   FLD (f_operand1) = f_operand1;
3001   FLD (f_memmode) = f_memmode;
3002   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movem_m_r_v32", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3003
3004 #if WITH_PROFILE_MODEL_P
3005   /* Record the fields for profiling.  */
3006   if (PROFILE_MODEL_P (current_cpu))
3007     {
3008       FLD (in_Rd) = f_operand2;
3009       FLD (in_Rs) = f_operand1;
3010       FLD (out_Rs) = f_operand1;
3011       FLD (out_h_gr_SI_0) = 0;
3012       FLD (out_h_gr_SI_1) = 1;
3013       FLD (out_h_gr_SI_10) = 10;
3014       FLD (out_h_gr_SI_11) = 11;
3015       FLD (out_h_gr_SI_12) = 12;
3016       FLD (out_h_gr_SI_13) = 13;
3017       FLD (out_h_gr_SI_14) = 14;
3018       FLD (out_h_gr_SI_15) = 15;
3019       FLD (out_h_gr_SI_2) = 2;
3020       FLD (out_h_gr_SI_3) = 3;
3021       FLD (out_h_gr_SI_4) = 4;
3022       FLD (out_h_gr_SI_5) = 5;
3023       FLD (out_h_gr_SI_6) = 6;
3024       FLD (out_h_gr_SI_7) = 7;
3025       FLD (out_h_gr_SI_8) = 8;
3026       FLD (out_h_gr_SI_9) = 9;
3027     }
3028 #endif
3029 #undef FLD
3030     return idesc;
3031   }
3032
3033  extract_sfmt_add_b_r:
3034   {
3035     const IDESC *idesc = &crisv32f_insn_data[itype];
3036     CGEN_INSN_WORD insn = base_insn;
3037 #define FLD(f) abuf->fields.sfmt_addc_m.f
3038     UINT f_operand2;
3039     UINT f_operand1;
3040
3041     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3042     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3043
3044   /* Record the fields for the semantic handler.  */
3045   FLD (f_operand2) = f_operand2;
3046   FLD (f_operand1) = f_operand1;
3047   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
3048
3049 #if WITH_PROFILE_MODEL_P
3050   /* Record the fields for profiling.  */
3051   if (PROFILE_MODEL_P (current_cpu))
3052     {
3053       FLD (in_Rd) = f_operand2;
3054       FLD (in_Rs) = f_operand1;
3055       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3056     }
3057 #endif
3058 #undef FLD
3059     return idesc;
3060   }
3061
3062  extract_sfmt_add_d_r:
3063   {
3064     const IDESC *idesc = &crisv32f_insn_data[itype];
3065     CGEN_INSN_WORD insn = base_insn;
3066 #define FLD(f) abuf->fields.sfmt_addc_m.f
3067     UINT f_operand2;
3068     UINT f_operand1;
3069
3070     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3071     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3072
3073   /* Record the fields for the semantic handler.  */
3074   FLD (f_operand2) = f_operand2;
3075   FLD (f_operand1) = f_operand1;
3076   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_d_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
3077
3078 #if WITH_PROFILE_MODEL_P
3079   /* Record the fields for profiling.  */
3080   if (PROFILE_MODEL_P (current_cpu))
3081     {
3082       FLD (in_Rd) = f_operand2;
3083       FLD (in_Rs) = f_operand1;
3084       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3085     }
3086 #endif
3087 #undef FLD
3088     return idesc;
3089   }
3090
3091  extract_sfmt_add_m_b_m:
3092   {
3093     const IDESC *idesc = &crisv32f_insn_data[itype];
3094     CGEN_INSN_WORD insn = base_insn;
3095 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3096     UINT f_operand2;
3097     UINT f_memmode;
3098     UINT f_operand1;
3099
3100     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3101     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3102     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3103
3104   /* Record the fields for the semantic handler.  */
3105   FLD (f_operand2) = f_operand2;
3106   FLD (f_operand1) = f_operand1;
3107   FLD (f_memmode) = f_memmode;
3108   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3109
3110 #if WITH_PROFILE_MODEL_P
3111   /* Record the fields for profiling.  */
3112   if (PROFILE_MODEL_P (current_cpu))
3113     {
3114       FLD (in_Rd) = f_operand2;
3115       FLD (in_Rs) = f_operand1;
3116       FLD (out_Rs) = f_operand1;
3117       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3118     }
3119 #endif
3120 #undef FLD
3121     return idesc;
3122   }
3123
3124  extract_sfmt_add_m_w_m:
3125   {
3126     const IDESC *idesc = &crisv32f_insn_data[itype];
3127     CGEN_INSN_WORD insn = base_insn;
3128 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3129     UINT f_operand2;
3130     UINT f_memmode;
3131     UINT f_operand1;
3132
3133     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3134     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3135     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3136
3137   /* Record the fields for the semantic handler.  */
3138   FLD (f_operand2) = f_operand2;
3139   FLD (f_operand1) = f_operand1;
3140   FLD (f_memmode) = f_memmode;
3141   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3142
3143 #if WITH_PROFILE_MODEL_P
3144   /* Record the fields for profiling.  */
3145   if (PROFILE_MODEL_P (current_cpu))
3146     {
3147       FLD (in_Rd) = f_operand2;
3148       FLD (in_Rs) = f_operand1;
3149       FLD (out_Rs) = f_operand1;
3150       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3151     }
3152 #endif
3153 #undef FLD
3154     return idesc;
3155   }
3156
3157  extract_sfmt_add_m_d_m:
3158   {
3159     const IDESC *idesc = &crisv32f_insn_data[itype];
3160     CGEN_INSN_WORD insn = base_insn;
3161 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3162     UINT f_operand2;
3163     UINT f_memmode;
3164     UINT f_operand1;
3165
3166     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3167     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3168     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3169
3170   /* Record the fields for the semantic handler.  */
3171   FLD (f_operand2) = f_operand2;
3172   FLD (f_operand1) = f_operand1;
3173   FLD (f_memmode) = f_memmode;
3174   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3175
3176 #if WITH_PROFILE_MODEL_P
3177   /* Record the fields for profiling.  */
3178   if (PROFILE_MODEL_P (current_cpu))
3179     {
3180       FLD (in_Rd) = f_operand2;
3181       FLD (in_Rs) = f_operand1;
3182       FLD (out_Rs) = f_operand1;
3183       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3184     }
3185 #endif
3186 #undef FLD
3187     return idesc;
3188   }
3189
3190  extract_sfmt_addcbr:
3191   {
3192     const IDESC *idesc = &crisv32f_insn_data[itype];
3193     CGEN_INSN_WORD insn = base_insn;
3194 #define FLD(f) abuf->fields.sfmt_addcbr.f
3195     INT f_indir_pc__byte;
3196     UINT f_operand2;
3197     /* Contents of trailing part of insn.  */
3198     UINT word_1;
3199
3200   word_1 = GETIMEMUSI (current_cpu, pc + 2);
3201     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3202     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3203
3204   /* Record the fields for the semantic handler.  */
3205   FLD (f_operand2) = f_operand2;
3206   FLD (f_indir_pc__byte) = f_indir_pc__byte;
3207   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addcbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
3208
3209 #if WITH_PROFILE_MODEL_P
3210   /* Record the fields for profiling.  */
3211   if (PROFILE_MODEL_P (current_cpu))
3212     {
3213       FLD (in_Rd) = f_operand2;
3214       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3215     }
3216 #endif
3217 #undef FLD
3218     return idesc;
3219   }
3220
3221  extract_sfmt_addcwr:
3222   {
3223     const IDESC *idesc = &crisv32f_insn_data[itype];
3224     CGEN_INSN_WORD insn = base_insn;
3225 #define FLD(f) abuf->fields.sfmt_addcwr.f
3226     INT f_indir_pc__word;
3227     UINT f_operand2;
3228     /* Contents of trailing part of insn.  */
3229     UINT word_1;
3230
3231   word_1 = GETIMEMUSI (current_cpu, pc + 2);
3232     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3233     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3234
3235   /* Record the fields for the semantic handler.  */
3236   FLD (f_operand2) = f_operand2;
3237   FLD (f_indir_pc__word) = f_indir_pc__word;
3238   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addcwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
3239
3240 #if WITH_PROFILE_MODEL_P
3241   /* Record the fields for profiling.  */
3242   if (PROFILE_MODEL_P (current_cpu))
3243     {
3244       FLD (in_Rd) = f_operand2;
3245       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3246     }
3247 #endif
3248 #undef FLD
3249     return idesc;
3250   }
3251
3252  extract_sfmt_addcdr:
3253   {
3254     const IDESC *idesc = &crisv32f_insn_data[itype];
3255     CGEN_INSN_WORD insn = base_insn;
3256 #define FLD(f) abuf->fields.sfmt_addcdr.f
3257     INT f_indir_pc__dword;
3258     UINT f_operand2;
3259     /* Contents of trailing part of insn.  */
3260     UINT word_1;
3261
3262   word_1 = GETIMEMUSI (current_cpu, pc + 2);
3263     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
3264     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3265
3266   /* Record the fields for the semantic handler.  */
3267   FLD (f_operand2) = f_operand2;
3268   FLD (f_indir_pc__dword) = f_indir_pc__dword;
3269   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addcdr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
3270
3271 #if WITH_PROFILE_MODEL_P
3272   /* Record the fields for profiling.  */
3273   if (PROFILE_MODEL_P (current_cpu))
3274     {
3275       FLD (in_Rd) = f_operand2;
3276       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3277     }
3278 #endif
3279 #undef FLD
3280     return idesc;
3281   }
3282
3283  extract_sfmt_adds_m_b_m:
3284   {
3285     const IDESC *idesc = &crisv32f_insn_data[itype];
3286     CGEN_INSN_WORD insn = base_insn;
3287 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3288     UINT f_operand2;
3289     UINT f_memmode;
3290     UINT f_operand1;
3291
3292     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3293     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3294     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3295
3296   /* Record the fields for the semantic handler.  */
3297   FLD (f_operand2) = f_operand2;
3298   FLD (f_operand1) = f_operand1;
3299   FLD (f_memmode) = f_memmode;
3300   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_adds_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3301
3302 #if WITH_PROFILE_MODEL_P
3303   /* Record the fields for profiling.  */
3304   if (PROFILE_MODEL_P (current_cpu))
3305     {
3306       FLD (in_Rd) = f_operand2;
3307       FLD (in_Rs) = f_operand1;
3308       FLD (out_Rs) = f_operand1;
3309       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3310     }
3311 #endif
3312 #undef FLD
3313     return idesc;
3314   }
3315
3316  extract_sfmt_adds_m_w_m:
3317   {
3318     const IDESC *idesc = &crisv32f_insn_data[itype];
3319     CGEN_INSN_WORD insn = base_insn;
3320 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3321     UINT f_operand2;
3322     UINT f_memmode;
3323     UINT f_operand1;
3324
3325     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3326     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3327     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3328
3329   /* Record the fields for the semantic handler.  */
3330   FLD (f_operand2) = f_operand2;
3331   FLD (f_operand1) = f_operand1;
3332   FLD (f_memmode) = f_memmode;
3333   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_adds_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3334
3335 #if WITH_PROFILE_MODEL_P
3336   /* Record the fields for profiling.  */
3337   if (PROFILE_MODEL_P (current_cpu))
3338     {
3339       FLD (in_Rd) = f_operand2;
3340       FLD (in_Rs) = f_operand1;
3341       FLD (out_Rs) = f_operand1;
3342       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3343     }
3344 #endif
3345 #undef FLD
3346     return idesc;
3347   }
3348
3349  extract_sfmt_addscbr:
3350   {
3351     const IDESC *idesc = &crisv32f_insn_data[itype];
3352     CGEN_INSN_WORD insn = base_insn;
3353 #define FLD(f) abuf->fields.sfmt_addcbr.f
3354     INT f_indir_pc__byte;
3355     UINT f_operand2;
3356     /* Contents of trailing part of insn.  */
3357     UINT word_1;
3358
3359   word_1 = GETIMEMUSI (current_cpu, pc + 2);
3360     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3361     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3362
3363   /* Record the fields for the semantic handler.  */
3364   FLD (f_operand2) = f_operand2;
3365   FLD (f_indir_pc__byte) = f_indir_pc__byte;
3366   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addscbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
3367
3368 #if WITH_PROFILE_MODEL_P
3369   /* Record the fields for profiling.  */
3370   if (PROFILE_MODEL_P (current_cpu))
3371     {
3372       FLD (in_Rd) = f_operand2;
3373       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3374     }
3375 #endif
3376 #undef FLD
3377     return idesc;
3378   }
3379
3380  extract_sfmt_addscwr:
3381   {
3382     const IDESC *idesc = &crisv32f_insn_data[itype];
3383     CGEN_INSN_WORD insn = base_insn;
3384 #define FLD(f) abuf->fields.sfmt_addcwr.f
3385     INT f_indir_pc__word;
3386     UINT f_operand2;
3387     /* Contents of trailing part of insn.  */
3388     UINT word_1;
3389
3390   word_1 = GETIMEMUSI (current_cpu, pc + 2);
3391     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3392     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3393
3394   /* Record the fields for the semantic handler.  */
3395   FLD (f_operand2) = f_operand2;
3396   FLD (f_indir_pc__word) = f_indir_pc__word;
3397   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addscwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
3398
3399 #if WITH_PROFILE_MODEL_P
3400   /* Record the fields for profiling.  */
3401   if (PROFILE_MODEL_P (current_cpu))
3402     {
3403       FLD (in_Rd) = f_operand2;
3404       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3405     }
3406 #endif
3407 #undef FLD
3408     return idesc;
3409   }
3410
3411  extract_sfmt_addc_m:
3412   {
3413     const IDESC *idesc = &crisv32f_insn_data[itype];
3414     CGEN_INSN_WORD insn = base_insn;
3415 #define FLD(f) abuf->fields.sfmt_addc_m.f
3416     UINT f_operand2;
3417     UINT f_memmode;
3418     UINT f_operand1;
3419
3420     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3421     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3422     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3423
3424   /* Record the fields for the semantic handler.  */
3425   FLD (f_operand2) = f_operand2;
3426   FLD (f_operand1) = f_operand1;
3427   FLD (f_memmode) = f_memmode;
3428   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addc_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3429
3430 #if WITH_PROFILE_MODEL_P
3431   /* Record the fields for profiling.  */
3432   if (PROFILE_MODEL_P (current_cpu))
3433     {
3434       FLD (in_Rd) = f_operand2;
3435       FLD (in_Rs) = f_operand1;
3436       FLD (out_Rs) = f_operand1;
3437       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3438     }
3439 #endif
3440 #undef FLD
3441     return idesc;
3442   }
3443
3444  extract_sfmt_lapc_d:
3445   {
3446     const IDESC *idesc = &crisv32f_insn_data[itype];
3447     CGEN_INSN_WORD insn = base_insn;
3448 #define FLD(f) abuf->fields.sfmt_lapc_d.f
3449     SI f_indir_pc__dword_pcrel;
3450     UINT f_operand2;
3451     /* Contents of trailing part of insn.  */
3452     UINT word_1;
3453
3454   word_1 = GETIMEMUSI (current_cpu, pc + 2);
3455     f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0))));
3456     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3457
3458   /* Record the fields for the semantic handler.  */
3459   FLD (f_operand2) = f_operand2;
3460   FLD (i_const32_pcrel) = f_indir_pc__dword_pcrel;
3461   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lapc_d", "f_operand2 0x%x", 'x', f_operand2, "const32_pcrel 0x%x", 'x', f_indir_pc__dword_pcrel, (char *) 0));
3462
3463 #if WITH_PROFILE_MODEL_P
3464   /* Record the fields for profiling.  */
3465   if (PROFILE_MODEL_P (current_cpu))
3466     {
3467       FLD (out_Rd) = f_operand2;
3468     }
3469 #endif
3470 #undef FLD
3471     return idesc;
3472   }
3473
3474  extract_sfmt_lapcq:
3475   {
3476     const IDESC *idesc = &crisv32f_insn_data[itype];
3477     CGEN_INSN_WORD insn = base_insn;
3478 #define FLD(f) abuf->fields.sfmt_lapcq.f
3479     UINT f_operand2;
3480     SI f_qo;
3481
3482     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3483     f_qo = ((pc) + (((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (1))));
3484
3485   /* Record the fields for the semantic handler.  */
3486   FLD (f_operand2) = f_operand2;
3487   FLD (i_qo) = f_qo;
3488   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lapcq", "f_operand2 0x%x", 'x', f_operand2, "qo 0x%x", 'x', f_qo, (char *) 0));
3489
3490 #if WITH_PROFILE_MODEL_P
3491   /* Record the fields for profiling.  */
3492   if (PROFILE_MODEL_P (current_cpu))
3493     {
3494       FLD (out_Rd) = f_operand2;
3495     }
3496 #endif
3497 #undef FLD
3498     return idesc;
3499   }
3500
3501  extract_sfmt_addi_b_r:
3502   {
3503     const IDESC *idesc = &crisv32f_insn_data[itype];
3504     CGEN_INSN_WORD insn = base_insn;
3505 #define FLD(f) abuf->fields.sfmt_addc_m.f
3506     UINT f_operand2;
3507     UINT f_operand1;
3508
3509     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3510     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3511
3512   /* Record the fields for the semantic handler.  */
3513   FLD (f_operand2) = f_operand2;
3514   FLD (f_operand1) = f_operand1;
3515   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
3516
3517 #if WITH_PROFILE_MODEL_P
3518   /* Record the fields for profiling.  */
3519   if (PROFILE_MODEL_P (current_cpu))
3520     {
3521       FLD (in_Rd) = f_operand2;
3522       FLD (in_Rs) = f_operand1;
3523       FLD (out_Rs) = f_operand1;
3524     }
3525 #endif
3526 #undef FLD
3527     return idesc;
3528   }
3529
3530  extract_sfmt_neg_b_r:
3531   {
3532     const IDESC *idesc = &crisv32f_insn_data[itype];
3533     CGEN_INSN_WORD insn = base_insn;
3534 #define FLD(f) abuf->fields.sfmt_addc_m.f
3535     UINT f_operand2;
3536     UINT f_operand1;
3537
3538     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3539     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3540
3541   /* Record the fields for the semantic handler.  */
3542   FLD (f_operand1) = f_operand1;
3543   FLD (f_operand2) = f_operand2;
3544   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_neg_b_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
3545
3546 #if WITH_PROFILE_MODEL_P
3547   /* Record the fields for profiling.  */
3548   if (PROFILE_MODEL_P (current_cpu))
3549     {
3550       FLD (in_Rs) = f_operand1;
3551       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3552     }
3553 #endif
3554 #undef FLD
3555     return idesc;
3556   }
3557
3558  extract_sfmt_neg_d_r:
3559   {
3560     const IDESC *idesc = &crisv32f_insn_data[itype];
3561     CGEN_INSN_WORD insn = base_insn;
3562 #define FLD(f) abuf->fields.sfmt_addc_m.f
3563     UINT f_operand2;
3564     UINT f_operand1;
3565
3566     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3567     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3568
3569   /* Record the fields for the semantic handler.  */
3570   FLD (f_operand1) = f_operand1;
3571   FLD (f_operand2) = f_operand2;
3572   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_neg_d_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
3573
3574 #if WITH_PROFILE_MODEL_P
3575   /* Record the fields for profiling.  */
3576   if (PROFILE_MODEL_P (current_cpu))
3577     {
3578       FLD (in_Rs) = f_operand1;
3579       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3580     }
3581 #endif
3582 #undef FLD
3583     return idesc;
3584   }
3585
3586  extract_sfmt_test_m_b_m:
3587   {
3588     const IDESC *idesc = &crisv32f_insn_data[itype];
3589     CGEN_INSN_WORD insn = base_insn;
3590 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3591     UINT f_memmode;
3592     UINT f_operand1;
3593
3594     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3595     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3596
3597   /* Record the fields for the semantic handler.  */
3598   FLD (f_operand1) = f_operand1;
3599   FLD (f_memmode) = f_memmode;
3600   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_test_m_b_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3601
3602 #if WITH_PROFILE_MODEL_P
3603   /* Record the fields for profiling.  */
3604   if (PROFILE_MODEL_P (current_cpu))
3605     {
3606       FLD (in_Rs) = f_operand1;
3607       FLD (out_Rs) = f_operand1;
3608     }
3609 #endif
3610 #undef FLD
3611     return idesc;
3612   }
3613
3614  extract_sfmt_test_m_w_m:
3615   {
3616     const IDESC *idesc = &crisv32f_insn_data[itype];
3617     CGEN_INSN_WORD insn = base_insn;
3618 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3619     UINT f_memmode;
3620     UINT f_operand1;
3621
3622     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3623     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3624
3625   /* Record the fields for the semantic handler.  */
3626   FLD (f_operand1) = f_operand1;
3627   FLD (f_memmode) = f_memmode;
3628   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_test_m_w_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3629
3630 #if WITH_PROFILE_MODEL_P
3631   /* Record the fields for profiling.  */
3632   if (PROFILE_MODEL_P (current_cpu))
3633     {
3634       FLD (in_Rs) = f_operand1;
3635       FLD (out_Rs) = f_operand1;
3636     }
3637 #endif
3638 #undef FLD
3639     return idesc;
3640   }
3641
3642  extract_sfmt_test_m_d_m:
3643   {
3644     const IDESC *idesc = &crisv32f_insn_data[itype];
3645     CGEN_INSN_WORD insn = base_insn;
3646 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3647     UINT f_memmode;
3648     UINT f_operand1;
3649
3650     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3651     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3652
3653   /* Record the fields for the semantic handler.  */
3654   FLD (f_operand1) = f_operand1;
3655   FLD (f_memmode) = f_memmode;
3656   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_test_m_d_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3657
3658 #if WITH_PROFILE_MODEL_P
3659   /* Record the fields for profiling.  */
3660   if (PROFILE_MODEL_P (current_cpu))
3661     {
3662       FLD (in_Rs) = f_operand1;
3663       FLD (out_Rs) = f_operand1;
3664     }
3665 #endif
3666 #undef FLD
3667     return idesc;
3668   }
3669
3670  extract_sfmt_move_r_m_b_m:
3671   {
3672     const IDESC *idesc = &crisv32f_insn_data[itype];
3673     CGEN_INSN_WORD insn = base_insn;
3674 #define FLD(f) abuf->fields.sfmt_addc_m.f
3675     UINT f_operand2;
3676     UINT f_memmode;
3677     UINT f_operand1;
3678
3679     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3680     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3681     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3682
3683   /* Record the fields for the semantic handler.  */
3684   FLD (f_operand2) = f_operand2;
3685   FLD (f_operand1) = f_operand1;
3686   FLD (f_memmode) = f_memmode;
3687   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3688
3689 #if WITH_PROFILE_MODEL_P
3690   /* Record the fields for profiling.  */
3691   if (PROFILE_MODEL_P (current_cpu))
3692     {
3693       FLD (in_Rd) = f_operand2;
3694       FLD (in_Rs) = f_operand1;
3695       FLD (out_Rs) = f_operand1;
3696     }
3697 #endif
3698 #undef FLD
3699     return idesc;
3700   }
3701
3702  extract_sfmt_move_r_m_w_m:
3703   {
3704     const IDESC *idesc = &crisv32f_insn_data[itype];
3705     CGEN_INSN_WORD insn = base_insn;
3706 #define FLD(f) abuf->fields.sfmt_addc_m.f
3707     UINT f_operand2;
3708     UINT f_memmode;
3709     UINT f_operand1;
3710
3711     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3712     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3713     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3714
3715   /* Record the fields for the semantic handler.  */
3716   FLD (f_operand2) = f_operand2;
3717   FLD (f_operand1) = f_operand1;
3718   FLD (f_memmode) = f_memmode;
3719   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3720
3721 #if WITH_PROFILE_MODEL_P
3722   /* Record the fields for profiling.  */
3723   if (PROFILE_MODEL_P (current_cpu))
3724     {
3725       FLD (in_Rd) = f_operand2;
3726       FLD (in_Rs) = f_operand1;
3727       FLD (out_Rs) = f_operand1;
3728     }
3729 #endif
3730 #undef FLD
3731     return idesc;
3732   }
3733
3734  extract_sfmt_move_r_m_d_m:
3735   {
3736     const IDESC *idesc = &crisv32f_insn_data[itype];
3737     CGEN_INSN_WORD insn = base_insn;
3738 #define FLD(f) abuf->fields.sfmt_addc_m.f
3739     UINT f_operand2;
3740     UINT f_memmode;
3741     UINT f_operand1;
3742
3743     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3744     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3745     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3746
3747   /* Record the fields for the semantic handler.  */
3748   FLD (f_operand2) = f_operand2;
3749   FLD (f_operand1) = f_operand1;
3750   FLD (f_memmode) = f_memmode;
3751   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3752
3753 #if WITH_PROFILE_MODEL_P
3754   /* Record the fields for profiling.  */
3755   if (PROFILE_MODEL_P (current_cpu))
3756     {
3757       FLD (in_Rd) = f_operand2;
3758       FLD (in_Rs) = f_operand1;
3759       FLD (out_Rs) = f_operand1;
3760     }
3761 #endif
3762 #undef FLD
3763     return idesc;
3764   }
3765
3766  extract_sfmt_muls_b:
3767   {
3768     const IDESC *idesc = &crisv32f_insn_data[itype];
3769     CGEN_INSN_WORD insn = base_insn;
3770 #define FLD(f) abuf->fields.sfmt_muls_b.f
3771     UINT f_operand2;
3772     UINT f_operand1;
3773
3774     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3775     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3776
3777   /* Record the fields for the semantic handler.  */
3778   FLD (f_operand2) = f_operand2;
3779   FLD (f_operand1) = f_operand1;
3780   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_muls_b", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
3781
3782 #if WITH_PROFILE_MODEL_P
3783   /* Record the fields for profiling.  */
3784   if (PROFILE_MODEL_P (current_cpu))
3785     {
3786       FLD (in_Rd) = f_operand2;
3787       FLD (in_Rs) = f_operand1;
3788       FLD (out_Rd) = f_operand2;
3789       FLD (out_h_sr_SI_7) = 7;
3790     }
3791 #endif
3792 #undef FLD
3793     return idesc;
3794   }
3795
3796  extract_sfmt_mcp:
3797   {
3798     const IDESC *idesc = &crisv32f_insn_data[itype];
3799     CGEN_INSN_WORD insn = base_insn;
3800 #define FLD(f) abuf->fields.sfmt_mcp.f
3801     UINT f_operand2;
3802     UINT f_operand1;
3803
3804     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3805     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3806
3807   /* Record the fields for the semantic handler.  */
3808   FLD (f_operand2) = f_operand2;
3809   FLD (f_operand1) = f_operand1;
3810   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mcp", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
3811
3812 #if WITH_PROFILE_MODEL_P
3813   /* Record the fields for profiling.  */
3814   if (PROFILE_MODEL_P (current_cpu))
3815     {
3816       FLD (in_Ps) = f_operand2;
3817       FLD (in_Rs) = f_operand1;
3818       FLD (out_h_gr_SI_index_of__INT_Rs) = FLD (f_operand1);
3819     }
3820 #endif
3821 #undef FLD
3822     return idesc;
3823   }
3824
3825  extract_sfmt_dstep:
3826   {
3827     const IDESC *idesc = &crisv32f_insn_data[itype];
3828     CGEN_INSN_WORD insn = base_insn;
3829 #define FLD(f) abuf->fields.sfmt_muls_b.f
3830     UINT f_operand2;
3831     UINT f_operand1;
3832
3833     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3834     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3835
3836   /* Record the fields for the semantic handler.  */
3837   FLD (f_operand2) = f_operand2;
3838   FLD (f_operand1) = f_operand1;
3839   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dstep", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
3840
3841 #if WITH_PROFILE_MODEL_P
3842   /* Record the fields for profiling.  */
3843   if (PROFILE_MODEL_P (current_cpu))
3844     {
3845       FLD (in_Rd) = f_operand2;
3846       FLD (in_Rs) = f_operand1;
3847       FLD (out_Rd) = f_operand2;
3848     }
3849 #endif
3850 #undef FLD
3851     return idesc;
3852   }
3853
3854  extract_sfmt_and_b_r:
3855   {
3856     const IDESC *idesc = &crisv32f_insn_data[itype];
3857     CGEN_INSN_WORD insn = base_insn;
3858 #define FLD(f) abuf->fields.sfmt_addc_m.f
3859     UINT f_operand2;
3860     UINT f_operand1;
3861
3862     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3863     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3864
3865   /* Record the fields for the semantic handler.  */
3866   FLD (f_operand2) = f_operand2;
3867   FLD (f_operand1) = f_operand1;
3868   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
3869
3870 #if WITH_PROFILE_MODEL_P
3871   /* Record the fields for profiling.  */
3872   if (PROFILE_MODEL_P (current_cpu))
3873     {
3874       FLD (in_Rd) = f_operand2;
3875       FLD (in_Rs) = f_operand1;
3876       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3877     }
3878 #endif
3879 #undef FLD
3880     return idesc;
3881   }
3882
3883  extract_sfmt_and_d_r:
3884   {
3885     const IDESC *idesc = &crisv32f_insn_data[itype];
3886     CGEN_INSN_WORD insn = base_insn;
3887 #define FLD(f) abuf->fields.sfmt_addc_m.f
3888     UINT f_operand2;
3889     UINT f_operand1;
3890
3891     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3892     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3893
3894   /* Record the fields for the semantic handler.  */
3895   FLD (f_operand2) = f_operand2;
3896   FLD (f_operand1) = f_operand1;
3897   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_d_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
3898
3899 #if WITH_PROFILE_MODEL_P
3900   /* Record the fields for profiling.  */
3901   if (PROFILE_MODEL_P (current_cpu))
3902     {
3903       FLD (in_Rd) = f_operand2;
3904       FLD (in_Rs) = f_operand1;
3905       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3906     }
3907 #endif
3908 #undef FLD
3909     return idesc;
3910   }
3911
3912  extract_sfmt_and_m_b_m:
3913   {
3914     const IDESC *idesc = &crisv32f_insn_data[itype];
3915     CGEN_INSN_WORD insn = base_insn;
3916 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3917     UINT f_operand2;
3918     UINT f_memmode;
3919     UINT f_operand1;
3920
3921     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3922     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3923     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3924
3925   /* Record the fields for the semantic handler.  */
3926   FLD (f_operand2) = f_operand2;
3927   FLD (f_operand1) = f_operand1;
3928   FLD (f_memmode) = f_memmode;
3929   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3930
3931 #if WITH_PROFILE_MODEL_P
3932   /* Record the fields for profiling.  */
3933   if (PROFILE_MODEL_P (current_cpu))
3934     {
3935       FLD (in_Rd) = f_operand2;
3936       FLD (in_Rs) = f_operand1;
3937       FLD (out_Rs) = f_operand1;
3938       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3939     }
3940 #endif
3941 #undef FLD
3942     return idesc;
3943   }
3944
3945  extract_sfmt_and_m_w_m:
3946   {
3947     const IDESC *idesc = &crisv32f_insn_data[itype];
3948     CGEN_INSN_WORD insn = base_insn;
3949 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3950     UINT f_operand2;
3951     UINT f_memmode;
3952     UINT f_operand1;
3953
3954     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3955     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3956     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3957
3958   /* Record the fields for the semantic handler.  */
3959   FLD (f_operand2) = f_operand2;
3960   FLD (f_operand1) = f_operand1;
3961   FLD (f_memmode) = f_memmode;
3962   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3963
3964 #if WITH_PROFILE_MODEL_P
3965   /* Record the fields for profiling.  */
3966   if (PROFILE_MODEL_P (current_cpu))
3967     {
3968       FLD (in_Rd) = f_operand2;
3969       FLD (in_Rs) = f_operand1;
3970       FLD (out_Rs) = f_operand1;
3971       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3972     }
3973 #endif
3974 #undef FLD
3975     return idesc;
3976   }
3977
3978  extract_sfmt_and_m_d_m:
3979   {
3980     const IDESC *idesc = &crisv32f_insn_data[itype];
3981     CGEN_INSN_WORD insn = base_insn;
3982 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3983     UINT f_operand2;
3984     UINT f_memmode;
3985     UINT f_operand1;
3986
3987     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3988     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3989     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3990
3991   /* Record the fields for the semantic handler.  */
3992   FLD (f_operand2) = f_operand2;
3993   FLD (f_operand1) = f_operand1;
3994   FLD (f_memmode) = f_memmode;
3995   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3996
3997 #if WITH_PROFILE_MODEL_P
3998   /* Record the fields for profiling.  */
3999   if (PROFILE_MODEL_P (current_cpu))
4000     {
4001       FLD (in_Rd) = f_operand2;
4002       FLD (in_Rs) = f_operand1;
4003       FLD (out_Rs) = f_operand1;
4004       FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
4005     }
4006 #endif
4007 #undef FLD
4008     return idesc;
4009   }
4010
4011  extract_sfmt_andcbr:
4012   {
4013     const IDESC *idesc = &crisv32f_insn_data[itype];
4014     CGEN_INSN_WORD insn = base_insn;
4015 #define FLD(f) abuf->fields.sfmt_addcbr.f
4016     INT f_indir_pc__byte;
4017     UINT f_operand2;
4018     /* Contents of trailing part of insn.  */
4019     UINT word_1;
4020
4021   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4022     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4023     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4024
4025   /* Record the fields for the semantic handler.  */
4026   FLD (f_operand2) = f_operand2;
4027   FLD (f_indir_pc__byte) = f_indir_pc__byte;
4028   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andcbr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
4029
4030 #if WITH_PROFILE_MODEL_P
4031   /* Record the fields for profiling.  */
4032   if (PROFILE_MODEL_P (current_cpu))
4033     {
4034       FLD (in_Rd) = f_operand2;
4035       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4036     }
4037 #endif
4038 #undef FLD
4039     return idesc;
4040   }
4041
4042  extract_sfmt_andcwr:
4043   {
4044     const IDESC *idesc = &crisv32f_insn_data[itype];
4045     CGEN_INSN_WORD insn = base_insn;
4046 #define FLD(f) abuf->fields.sfmt_addcwr.f
4047     INT f_indir_pc__word;
4048     UINT f_operand2;
4049     /* Contents of trailing part of insn.  */
4050     UINT word_1;
4051
4052   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4053     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4054     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4055
4056   /* Record the fields for the semantic handler.  */
4057   FLD (f_operand2) = f_operand2;
4058   FLD (f_indir_pc__word) = f_indir_pc__word;
4059   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andcwr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
4060
4061 #if WITH_PROFILE_MODEL_P
4062   /* Record the fields for profiling.  */
4063   if (PROFILE_MODEL_P (current_cpu))
4064     {
4065       FLD (in_Rd) = f_operand2;
4066       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4067     }
4068 #endif
4069 #undef FLD
4070     return idesc;
4071   }
4072
4073  extract_sfmt_andcdr:
4074   {
4075     const IDESC *idesc = &crisv32f_insn_data[itype];
4076     CGEN_INSN_WORD insn = base_insn;
4077 #define FLD(f) abuf->fields.sfmt_addcdr.f
4078     INT f_indir_pc__dword;
4079     UINT f_operand2;
4080     /* Contents of trailing part of insn.  */
4081     UINT word_1;
4082
4083   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4084     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
4085     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4086
4087   /* Record the fields for the semantic handler.  */
4088   FLD (f_operand2) = f_operand2;
4089   FLD (f_indir_pc__dword) = f_indir_pc__dword;
4090   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andcdr", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
4091
4092 #if WITH_PROFILE_MODEL_P
4093   /* Record the fields for profiling.  */
4094   if (PROFILE_MODEL_P (current_cpu))
4095     {
4096       FLD (in_Rd) = f_operand2;
4097       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4098     }
4099 #endif
4100 #undef FLD
4101     return idesc;
4102   }
4103
4104  extract_sfmt_andq:
4105   {
4106     const IDESC *idesc = &crisv32f_insn_data[itype];
4107     CGEN_INSN_WORD insn = base_insn;
4108 #define FLD(f) abuf->fields.sfmt_andq.f
4109     UINT f_operand2;
4110     INT f_s6;
4111
4112     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4113     f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6);
4114
4115   /* Record the fields for the semantic handler.  */
4116   FLD (f_operand2) = f_operand2;
4117   FLD (f_s6) = f_s6;
4118   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andq", "f_operand2 0x%x", 'x', f_operand2, "f_s6 0x%x", 'x', f_s6, (char *) 0));
4119
4120 #if WITH_PROFILE_MODEL_P
4121   /* Record the fields for profiling.  */
4122   if (PROFILE_MODEL_P (current_cpu))
4123     {
4124       FLD (in_Rd) = f_operand2;
4125       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4126     }
4127 #endif
4128 #undef FLD
4129     return idesc;
4130   }
4131
4132  extract_sfmt_swap:
4133   {
4134     const IDESC *idesc = &crisv32f_insn_data[itype];
4135     CGEN_INSN_WORD insn = base_insn;
4136 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
4137     UINT f_operand2;
4138     UINT f_operand1;
4139
4140     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4141     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4142
4143   /* Record the fields for the semantic handler.  */
4144   FLD (f_operand1) = f_operand1;
4145   FLD (f_operand2) = f_operand2;
4146   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_swap", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
4147
4148 #if WITH_PROFILE_MODEL_P
4149   /* Record the fields for profiling.  */
4150   if (PROFILE_MODEL_P (current_cpu))
4151     {
4152       FLD (in_Rs) = f_operand1;
4153       FLD (out_Rs) = f_operand1;
4154     }
4155 #endif
4156 #undef FLD
4157     return idesc;
4158   }
4159
4160  extract_sfmt_asrq:
4161   {
4162     const IDESC *idesc = &crisv32f_insn_data[itype];
4163     CGEN_INSN_WORD insn = base_insn;
4164 #define FLD(f) abuf->fields.sfmt_asrq.f
4165     UINT f_operand2;
4166     UINT f_u5;
4167
4168     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4169     f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5);
4170
4171   /* Record the fields for the semantic handler.  */
4172   FLD (f_operand2) = f_operand2;
4173   FLD (f_u5) = f_u5;
4174   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_asrq", "f_operand2 0x%x", 'x', f_operand2, "f_u5 0x%x", 'x', f_u5, (char *) 0));
4175
4176 #if WITH_PROFILE_MODEL_P
4177   /* Record the fields for profiling.  */
4178   if (PROFILE_MODEL_P (current_cpu))
4179     {
4180       FLD (in_Rd) = f_operand2;
4181       FLD (out_Rd) = f_operand2;
4182     }
4183 #endif
4184 #undef FLD
4185     return idesc;
4186   }
4187
4188  extract_sfmt_lsrr_b_r:
4189   {
4190     const IDESC *idesc = &crisv32f_insn_data[itype];
4191     CGEN_INSN_WORD insn = base_insn;
4192 #define FLD(f) abuf->fields.sfmt_addc_m.f
4193     UINT f_operand2;
4194     UINT f_operand1;
4195
4196     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4197     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4198
4199   /* Record the fields for the semantic handler.  */
4200   FLD (f_operand2) = f_operand2;
4201   FLD (f_operand1) = f_operand1;
4202   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsrr_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
4203
4204 #if WITH_PROFILE_MODEL_P
4205   /* Record the fields for profiling.  */
4206   if (PROFILE_MODEL_P (current_cpu))
4207     {
4208       FLD (in_Rd) = f_operand2;
4209       FLD (in_Rs) = f_operand1;
4210       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4211     }
4212 #endif
4213 #undef FLD
4214     return idesc;
4215   }
4216
4217  extract_sfmt_lsrr_d_r:
4218   {
4219     const IDESC *idesc = &crisv32f_insn_data[itype];
4220     CGEN_INSN_WORD insn = base_insn;
4221 #define FLD(f) abuf->fields.sfmt_addc_m.f
4222     UINT f_operand2;
4223     UINT f_operand1;
4224
4225     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4226     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4227
4228   /* Record the fields for the semantic handler.  */
4229   FLD (f_operand2) = f_operand2;
4230   FLD (f_operand1) = f_operand1;
4231   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsrr_d_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
4232
4233 #if WITH_PROFILE_MODEL_P
4234   /* Record the fields for profiling.  */
4235   if (PROFILE_MODEL_P (current_cpu))
4236     {
4237       FLD (in_Rd) = f_operand2;
4238       FLD (in_Rs) = f_operand1;
4239       FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4240     }
4241 #endif
4242 #undef FLD
4243     return idesc;
4244   }
4245
4246  extract_sfmt_btst:
4247   {
4248     const IDESC *idesc = &crisv32f_insn_data[itype];
4249     CGEN_INSN_WORD insn = base_insn;
4250 #define FLD(f) abuf->fields.sfmt_muls_b.f
4251     UINT f_operand2;
4252     UINT f_operand1;
4253
4254     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4255     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4256
4257   /* Record the fields for the semantic handler.  */
4258   FLD (f_operand2) = f_operand2;
4259   FLD (f_operand1) = f_operand1;
4260   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btst", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
4261
4262 #if WITH_PROFILE_MODEL_P
4263   /* Record the fields for profiling.  */
4264   if (PROFILE_MODEL_P (current_cpu))
4265     {
4266       FLD (in_Rd) = f_operand2;
4267       FLD (in_Rs) = f_operand1;
4268     }
4269 #endif
4270 #undef FLD
4271     return idesc;
4272   }
4273
4274  extract_sfmt_btstq:
4275   {
4276     const IDESC *idesc = &crisv32f_insn_data[itype];
4277     CGEN_INSN_WORD insn = base_insn;
4278 #define FLD(f) abuf->fields.sfmt_asrq.f
4279     UINT f_operand2;
4280     UINT f_u5;
4281
4282     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4283     f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5);
4284
4285   /* Record the fields for the semantic handler.  */
4286   FLD (f_operand2) = f_operand2;
4287   FLD (f_u5) = f_u5;
4288   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btstq", "f_operand2 0x%x", 'x', f_operand2, "f_u5 0x%x", 'x', f_u5, (char *) 0));
4289
4290 #if WITH_PROFILE_MODEL_P
4291   /* Record the fields for profiling.  */
4292   if (PROFILE_MODEL_P (current_cpu))
4293     {
4294       FLD (in_Rd) = f_operand2;
4295     }
4296 #endif
4297 #undef FLD
4298     return idesc;
4299   }
4300
4301  extract_sfmt_setf:
4302   {
4303     const IDESC *idesc = &crisv32f_insn_data[itype];
4304     CGEN_INSN_WORD insn = base_insn;
4305 #define FLD(f) abuf->fields.sfmt_setf.f
4306     UINT f_operand2;
4307     UINT f_operand1;
4308     UINT f_dstsrc;
4309
4310     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4311     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4312   f_dstsrc = ((((f_operand1) | (((f_operand2) << (4))))) & (255));
4313
4314   /* Record the fields for the semantic handler.  */
4315   FLD (f_dstsrc) = f_dstsrc;
4316   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_setf", "f_dstsrc 0x%x", 'x', f_dstsrc, (char *) 0));
4317
4318 #undef FLD
4319     return idesc;
4320   }
4321
4322  extract_sfmt_rfe:
4323   {
4324     const IDESC *idesc = &crisv32f_insn_data[itype];
4325 #define FLD(f) abuf->fields.sfmt_rfe.f
4326
4327
4328   /* Record the fields for the semantic handler.  */
4329   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rfe", (char *) 0));
4330
4331 #if WITH_PROFILE_MODEL_P
4332   /* Record the fields for profiling.  */
4333   if (PROFILE_MODEL_P (current_cpu))
4334     {
4335       FLD (in_h_sr_SI_13) = 13;
4336       FLD (out_h_sr_SI_13) = 13;
4337     }
4338 #endif
4339 #undef FLD
4340     return idesc;
4341   }
4342
4343  extract_sfmt_sfe:
4344   {
4345     const IDESC *idesc = &crisv32f_insn_data[itype];
4346 #define FLD(f) abuf->fields.sfmt_rfe.f
4347
4348
4349   /* Record the fields for the semantic handler.  */
4350   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sfe", (char *) 0));
4351
4352 #if WITH_PROFILE_MODEL_P
4353   /* Record the fields for profiling.  */
4354   if (PROFILE_MODEL_P (current_cpu))
4355     {
4356       FLD (in_h_sr_SI_13) = 13;
4357       FLD (out_h_sr_SI_13) = 13;
4358     }
4359 #endif
4360 #undef FLD
4361     return idesc;
4362   }
4363
4364  extract_sfmt_rfg:
4365   {
4366     const IDESC *idesc = &crisv32f_insn_data[itype];
4367 #define FLD(f) abuf->fields.fmt_empty.f
4368
4369
4370   /* Record the fields for the semantic handler.  */
4371   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rfg", (char *) 0));
4372
4373 #if WITH_PROFILE_MODEL_P
4374   /* Record the fields for profiling.  */
4375   if (PROFILE_MODEL_P (current_cpu))
4376     {
4377     }
4378 #endif
4379 #undef FLD
4380     return idesc;
4381   }
4382
4383  extract_sfmt_rfn:
4384   {
4385     const IDESC *idesc = &crisv32f_insn_data[itype];
4386 #define FLD(f) abuf->fields.sfmt_rfe.f
4387
4388
4389   /* Record the fields for the semantic handler.  */
4390   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rfn", (char *) 0));
4391
4392 #if WITH_PROFILE_MODEL_P
4393   /* Record the fields for profiling.  */
4394   if (PROFILE_MODEL_P (current_cpu))
4395     {
4396       FLD (in_h_sr_SI_13) = 13;
4397       FLD (out_h_sr_SI_13) = 13;
4398     }
4399 #endif
4400 #undef FLD
4401     return idesc;
4402   }
4403
4404  extract_sfmt_halt:
4405   {
4406     const IDESC *idesc = &crisv32f_insn_data[itype];
4407 #define FLD(f) abuf->fields.fmt_empty.f
4408
4409
4410   /* Record the fields for the semantic handler.  */
4411   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_halt", (char *) 0));
4412
4413 #if WITH_PROFILE_MODEL_P
4414   /* Record the fields for profiling.  */
4415   if (PROFILE_MODEL_P (current_cpu))
4416     {
4417     }
4418 #endif
4419 #undef FLD
4420     return idesc;
4421   }
4422
4423  extract_sfmt_bcc_b:
4424   {
4425     const IDESC *idesc = &crisv32f_insn_data[itype];
4426     CGEN_INSN_WORD insn = base_insn;
4427 #define FLD(f) abuf->fields.sfmt_bcc_b.f
4428     UINT f_operand2;
4429     UINT f_disp9_lo;
4430     INT f_disp9_hi;
4431     INT f_disp9;
4432
4433     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4434     f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7);
4435     f_disp9_hi = EXTRACT_LSB0_SINT (insn, 16, 0, 1);
4436 {
4437   SI tmp_abslo;
4438   SI tmp_absval;
4439   tmp_abslo = ((f_disp9_lo) << (1));
4440   tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));
4441   f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));
4442 }
4443
4444   /* Record the fields for the semantic handler.  */
4445   FLD (f_operand2) = f_operand2;
4446   FLD (i_o_pcrel) = f_disp9;
4447   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcc_b", "f_operand2 0x%x", 'x', f_operand2, "o_pcrel 0x%x", 'x', f_disp9, (char *) 0));
4448
4449 #if WITH_PROFILE_MODEL_P
4450   /* Record the fields for profiling.  */
4451   if (PROFILE_MODEL_P (current_cpu))
4452     {
4453     }
4454 #endif
4455 #undef FLD
4456     return idesc;
4457   }
4458
4459  extract_sfmt_ba_b:
4460   {
4461     const IDESC *idesc = &crisv32f_insn_data[itype];
4462     CGEN_INSN_WORD insn = base_insn;
4463 #define FLD(f) abuf->fields.sfmt_bcc_b.f
4464     UINT f_disp9_lo;
4465     INT f_disp9_hi;
4466     INT f_disp9;
4467
4468     f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7);
4469     f_disp9_hi = EXTRACT_LSB0_SINT (insn, 16, 0, 1);
4470 {
4471   SI tmp_abslo;
4472   SI tmp_absval;
4473   tmp_abslo = ((f_disp9_lo) << (1));
4474   tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));
4475   f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));
4476 }
4477
4478   /* Record the fields for the semantic handler.  */
4479   FLD (i_o_pcrel) = f_disp9;
4480   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ba_b", "o_pcrel 0x%x", 'x', f_disp9, (char *) 0));
4481
4482 #if WITH_PROFILE_MODEL_P
4483   /* Record the fields for profiling.  */
4484   if (PROFILE_MODEL_P (current_cpu))
4485     {
4486     }
4487 #endif
4488 #undef FLD
4489     return idesc;
4490   }
4491
4492  extract_sfmt_bcc_w:
4493   {
4494     const IDESC *idesc = &crisv32f_insn_data[itype];
4495     CGEN_INSN_WORD insn = base_insn;
4496 #define FLD(f) abuf->fields.sfmt_bcc_w.f
4497     SI f_indir_pc__word_pcrel;
4498     UINT f_operand2;
4499     /* Contents of trailing part of insn.  */
4500     UINT word_1;
4501
4502   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4503     f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_V32 ()) ? (0) : (4))))));
4504     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4505
4506   /* Record the fields for the semantic handler.  */
4507   FLD (f_operand2) = f_operand2;
4508   FLD (i_o_word_pcrel) = f_indir_pc__word_pcrel;
4509   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcc_w", "f_operand2 0x%x", 'x', f_operand2, "o_word_pcrel 0x%x", 'x', f_indir_pc__word_pcrel, (char *) 0));
4510
4511 #if WITH_PROFILE_MODEL_P
4512   /* Record the fields for profiling.  */
4513   if (PROFILE_MODEL_P (current_cpu))
4514     {
4515     }
4516 #endif
4517 #undef FLD
4518     return idesc;
4519   }
4520
4521  extract_sfmt_ba_w:
4522   {
4523     const IDESC *idesc = &crisv32f_insn_data[itype];
4524     CGEN_INSN_WORD insn = base_insn;
4525 #define FLD(f) abuf->fields.sfmt_bcc_w.f
4526     SI f_indir_pc__word_pcrel;
4527     /* Contents of trailing part of insn.  */
4528     UINT word_1;
4529
4530   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4531     f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_V32 ()) ? (0) : (4))))));
4532
4533   /* Record the fields for the semantic handler.  */
4534   FLD (i_o_word_pcrel) = f_indir_pc__word_pcrel;
4535   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ba_w", "o_word_pcrel 0x%x", 'x', f_indir_pc__word_pcrel, (char *) 0));
4536
4537 #if WITH_PROFILE_MODEL_P
4538   /* Record the fields for profiling.  */
4539   if (PROFILE_MODEL_P (current_cpu))
4540     {
4541     }
4542 #endif
4543 #undef FLD
4544     return idesc;
4545   }
4546
4547  extract_sfmt_jas_r:
4548   {
4549     const IDESC *idesc = &crisv32f_insn_data[itype];
4550     CGEN_INSN_WORD insn = base_insn;
4551 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
4552     UINT f_operand2;
4553     UINT f_operand1;
4554
4555     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4556     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4557
4558   /* Record the fields for the semantic handler.  */
4559   FLD (f_operand1) = f_operand1;
4560   FLD (f_operand2) = f_operand2;
4561   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jas_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
4562
4563 #if WITH_PROFILE_MODEL_P
4564   /* Record the fields for profiling.  */
4565   if (PROFILE_MODEL_P (current_cpu))
4566     {
4567       FLD (in_Rs) = f_operand1;
4568       FLD (out_Pd) = f_operand2;
4569     }
4570 #endif
4571 #undef FLD
4572     return idesc;
4573   }
4574
4575  extract_sfmt_jas_c:
4576   {
4577     const IDESC *idesc = &crisv32f_insn_data[itype];
4578     CGEN_INSN_WORD insn = base_insn;
4579 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
4580     INT f_indir_pc__dword;
4581     UINT f_operand2;
4582     /* Contents of trailing part of insn.  */
4583     UINT word_1;
4584
4585   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4586     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
4587     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4588
4589   /* Record the fields for the semantic handler.  */
4590   FLD (f_indir_pc__dword) = f_indir_pc__dword;
4591   FLD (f_operand2) = f_operand2;
4592   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jas_c", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
4593
4594 #if WITH_PROFILE_MODEL_P
4595   /* Record the fields for profiling.  */
4596   if (PROFILE_MODEL_P (current_cpu))
4597     {
4598       FLD (out_Pd) = f_operand2;
4599     }
4600 #endif
4601 #undef FLD
4602     return idesc;
4603   }
4604
4605  extract_sfmt_jump_p:
4606   {
4607     const IDESC *idesc = &crisv32f_insn_data[itype];
4608     CGEN_INSN_WORD insn = base_insn;
4609 #define FLD(f) abuf->fields.sfmt_mcp.f
4610     UINT f_operand2;
4611
4612     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4613
4614   /* Record the fields for the semantic handler.  */
4615   FLD (f_operand2) = f_operand2;
4616   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jump_p", "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
4617
4618 #if WITH_PROFILE_MODEL_P
4619   /* Record the fields for profiling.  */
4620   if (PROFILE_MODEL_P (current_cpu))
4621     {
4622       FLD (in_Ps) = f_operand2;
4623     }
4624 #endif
4625 #undef FLD
4626     return idesc;
4627   }
4628
4629  extract_sfmt_bas_c:
4630   {
4631     const IDESC *idesc = &crisv32f_insn_data[itype];
4632     CGEN_INSN_WORD insn = base_insn;
4633 #define FLD(f) abuf->fields.sfmt_bas_c.f
4634     SI f_indir_pc__dword_pcrel;
4635     UINT f_operand2;
4636     /* Contents of trailing part of insn.  */
4637     UINT word_1;
4638
4639   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4640     f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0))));
4641     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4642
4643   /* Record the fields for the semantic handler.  */
4644   FLD (f_operand2) = f_operand2;
4645   FLD (i_const32_pcrel) = f_indir_pc__dword_pcrel;
4646   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bas_c", "f_operand2 0x%x", 'x', f_operand2, "const32_pcrel 0x%x", 'x', f_indir_pc__dword_pcrel, (char *) 0));
4647
4648 #if WITH_PROFILE_MODEL_P
4649   /* Record the fields for profiling.  */
4650   if (PROFILE_MODEL_P (current_cpu))
4651     {
4652       FLD (out_Pd) = f_operand2;
4653     }
4654 #endif
4655 #undef FLD
4656     return idesc;
4657   }
4658
4659  extract_sfmt_jasc_r:
4660   {
4661     const IDESC *idesc = &crisv32f_insn_data[itype];
4662     CGEN_INSN_WORD insn = base_insn;
4663 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
4664     UINT f_operand2;
4665     UINT f_operand1;
4666
4667     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4668     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4669
4670   /* Record the fields for the semantic handler.  */
4671   FLD (f_operand1) = f_operand1;
4672   FLD (f_operand2) = f_operand2;
4673   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jasc_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
4674
4675 #if WITH_PROFILE_MODEL_P
4676   /* Record the fields for profiling.  */
4677   if (PROFILE_MODEL_P (current_cpu))
4678     {
4679       FLD (in_Rs) = f_operand1;
4680       FLD (out_Pd) = f_operand2;
4681     }
4682 #endif
4683 #undef FLD
4684     return idesc;
4685   }
4686
4687  extract_sfmt_break:
4688   {
4689     const IDESC *idesc = &crisv32f_insn_data[itype];
4690     CGEN_INSN_WORD insn = base_insn;
4691 #define FLD(f) abuf->fields.sfmt_break.f
4692     UINT f_u4;
4693
4694     f_u4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4695
4696   /* Record the fields for the semantic handler.  */
4697   FLD (f_u4) = f_u4;
4698   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_break", "f_u4 0x%x", 'x', f_u4, (char *) 0));
4699
4700 #if WITH_PROFILE_MODEL_P
4701   /* Record the fields for profiling.  */
4702   if (PROFILE_MODEL_P (current_cpu))
4703     {
4704     }
4705 #endif
4706 #undef FLD
4707     return idesc;
4708   }
4709
4710  extract_sfmt_bound_cb:
4711   {
4712     const IDESC *idesc = &crisv32f_insn_data[itype];
4713     CGEN_INSN_WORD insn = base_insn;
4714 #define FLD(f) abuf->fields.sfmt_bound_cb.f
4715     INT f_indir_pc__byte;
4716     UINT f_operand2;
4717     /* Contents of trailing part of insn.  */
4718     UINT word_1;
4719
4720   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4721     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4722     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4723
4724   /* Record the fields for the semantic handler.  */
4725   FLD (f_operand2) = f_operand2;
4726   FLD (f_indir_pc__byte) = f_indir_pc__byte;
4727   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bound_cb", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
4728
4729 #if WITH_PROFILE_MODEL_P
4730   /* Record the fields for profiling.  */
4731   if (PROFILE_MODEL_P (current_cpu))
4732     {
4733       FLD (in_Rd) = f_operand2;
4734       FLD (out_Rd) = f_operand2;
4735     }
4736 #endif
4737 #undef FLD
4738     return idesc;
4739   }
4740
4741  extract_sfmt_bound_cw:
4742   {
4743     const IDESC *idesc = &crisv32f_insn_data[itype];
4744     CGEN_INSN_WORD insn = base_insn;
4745 #define FLD(f) abuf->fields.sfmt_bound_cw.f
4746     INT f_indir_pc__word;
4747     UINT f_operand2;
4748     /* Contents of trailing part of insn.  */
4749     UINT word_1;
4750
4751   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4752     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4753     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4754
4755   /* Record the fields for the semantic handler.  */
4756   FLD (f_operand2) = f_operand2;
4757   FLD (f_indir_pc__word) = f_indir_pc__word;
4758   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bound_cw", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
4759
4760 #if WITH_PROFILE_MODEL_P
4761   /* Record the fields for profiling.  */
4762   if (PROFILE_MODEL_P (current_cpu))
4763     {
4764       FLD (in_Rd) = f_operand2;
4765       FLD (out_Rd) = f_operand2;
4766     }
4767 #endif
4768 #undef FLD
4769     return idesc;
4770   }
4771
4772  extract_sfmt_bound_cd:
4773   {
4774     const IDESC *idesc = &crisv32f_insn_data[itype];
4775     CGEN_INSN_WORD insn = base_insn;
4776 #define FLD(f) abuf->fields.sfmt_bound_cd.f
4777     INT f_indir_pc__dword;
4778     UINT f_operand2;
4779     /* Contents of trailing part of insn.  */
4780     UINT word_1;
4781
4782   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4783     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
4784     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4785
4786   /* Record the fields for the semantic handler.  */
4787   FLD (f_operand2) = f_operand2;
4788   FLD (f_indir_pc__dword) = f_indir_pc__dword;
4789   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bound_cd", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
4790
4791 #if WITH_PROFILE_MODEL_P
4792   /* Record the fields for profiling.  */
4793   if (PROFILE_MODEL_P (current_cpu))
4794     {
4795       FLD (in_Rd) = f_operand2;
4796       FLD (out_Rd) = f_operand2;
4797     }
4798 #endif
4799 #undef FLD
4800     return idesc;
4801   }
4802
4803  extract_sfmt_scc:
4804   {
4805     const IDESC *idesc = &crisv32f_insn_data[itype];
4806     CGEN_INSN_WORD insn = base_insn;
4807 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
4808     UINT f_operand2;
4809     UINT f_operand1;
4810
4811     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4812     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4813
4814   /* Record the fields for the semantic handler.  */
4815   FLD (f_operand2) = f_operand2;
4816   FLD (f_operand1) = f_operand1;
4817   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_scc", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
4818
4819 #if WITH_PROFILE_MODEL_P
4820   /* Record the fields for profiling.  */
4821   if (PROFILE_MODEL_P (current_cpu))
4822     {
4823       FLD (out_Rs) = f_operand1;
4824     }
4825 #endif
4826 #undef FLD
4827     return idesc;
4828   }
4829
4830  extract_sfmt_addoq:
4831   {
4832     const IDESC *idesc = &crisv32f_insn_data[itype];
4833     CGEN_INSN_WORD insn = base_insn;
4834 #define FLD(f) abuf->fields.sfmt_addoq.f
4835     UINT f_operand2;
4836     INT f_s8;
4837
4838     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4839     f_s8 = EXTRACT_LSB0_SINT (insn, 16, 7, 8);
4840
4841   /* Record the fields for the semantic handler.  */
4842   FLD (f_operand2) = f_operand2;
4843   FLD (f_s8) = f_s8;
4844   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addoq", "f_operand2 0x%x", 'x', f_operand2, "f_s8 0x%x", 'x', f_s8, (char *) 0));
4845
4846 #if WITH_PROFILE_MODEL_P
4847   /* Record the fields for profiling.  */
4848   if (PROFILE_MODEL_P (current_cpu))
4849     {
4850       FLD (in_Rd) = f_operand2;
4851     }
4852 #endif
4853 #undef FLD
4854     return idesc;
4855   }
4856
4857  extract_sfmt_addo_m_b_m:
4858   {
4859     const IDESC *idesc = &crisv32f_insn_data[itype];
4860     CGEN_INSN_WORD insn = base_insn;
4861 #define FLD(f) abuf->fields.sfmt_addc_m.f
4862     UINT f_operand2;
4863     UINT f_memmode;
4864     UINT f_operand1;
4865
4866     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4867     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4868     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4869
4870   /* Record the fields for the semantic handler.  */
4871   FLD (f_operand2) = f_operand2;
4872   FLD (f_operand1) = f_operand1;
4873   FLD (f_memmode) = f_memmode;
4874   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_m_b_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
4875
4876 #if WITH_PROFILE_MODEL_P
4877   /* Record the fields for profiling.  */
4878   if (PROFILE_MODEL_P (current_cpu))
4879     {
4880       FLD (in_Rd) = f_operand2;
4881       FLD (in_Rs) = f_operand1;
4882       FLD (out_Rs) = f_operand1;
4883     }
4884 #endif
4885 #undef FLD
4886     return idesc;
4887   }
4888
4889  extract_sfmt_addo_m_w_m:
4890   {
4891     const IDESC *idesc = &crisv32f_insn_data[itype];
4892     CGEN_INSN_WORD insn = base_insn;
4893 #define FLD(f) abuf->fields.sfmt_addc_m.f
4894     UINT f_operand2;
4895     UINT f_memmode;
4896     UINT f_operand1;
4897
4898     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4899     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4900     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4901
4902   /* Record the fields for the semantic handler.  */
4903   FLD (f_operand2) = f_operand2;
4904   FLD (f_operand1) = f_operand1;
4905   FLD (f_memmode) = f_memmode;
4906   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_m_w_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
4907
4908 #if WITH_PROFILE_MODEL_P
4909   /* Record the fields for profiling.  */
4910   if (PROFILE_MODEL_P (current_cpu))
4911     {
4912       FLD (in_Rd) = f_operand2;
4913       FLD (in_Rs) = f_operand1;
4914       FLD (out_Rs) = f_operand1;
4915     }
4916 #endif
4917 #undef FLD
4918     return idesc;
4919   }
4920
4921  extract_sfmt_addo_m_d_m:
4922   {
4923     const IDESC *idesc = &crisv32f_insn_data[itype];
4924     CGEN_INSN_WORD insn = base_insn;
4925 #define FLD(f) abuf->fields.sfmt_addc_m.f
4926     UINT f_operand2;
4927     UINT f_memmode;
4928     UINT f_operand1;
4929
4930     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4931     f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4932     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4933
4934   /* Record the fields for the semantic handler.  */
4935   FLD (f_operand2) = f_operand2;
4936   FLD (f_operand1) = f_operand1;
4937   FLD (f_memmode) = f_memmode;
4938   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_m_d_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
4939
4940 #if WITH_PROFILE_MODEL_P
4941   /* Record the fields for profiling.  */
4942   if (PROFILE_MODEL_P (current_cpu))
4943     {
4944       FLD (in_Rd) = f_operand2;
4945       FLD (in_Rs) = f_operand1;
4946       FLD (out_Rs) = f_operand1;
4947     }
4948 #endif
4949 #undef FLD
4950     return idesc;
4951   }
4952
4953  extract_sfmt_addo_cb:
4954   {
4955     const IDESC *idesc = &crisv32f_insn_data[itype];
4956     CGEN_INSN_WORD insn = base_insn;
4957 #define FLD(f) abuf->fields.sfmt_bound_cb.f
4958     INT f_indir_pc__byte;
4959     UINT f_operand2;
4960     /* Contents of trailing part of insn.  */
4961     UINT word_1;
4962
4963   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4964     f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4965     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4966
4967   /* Record the fields for the semantic handler.  */
4968   FLD (f_operand2) = f_operand2;
4969   FLD (f_indir_pc__byte) = f_indir_pc__byte;
4970   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_cb", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__byte 0x%x", 'x', f_indir_pc__byte, (char *) 0));
4971
4972 #if WITH_PROFILE_MODEL_P
4973   /* Record the fields for profiling.  */
4974   if (PROFILE_MODEL_P (current_cpu))
4975     {
4976       FLD (in_Rd) = f_operand2;
4977     }
4978 #endif
4979 #undef FLD
4980     return idesc;
4981   }
4982
4983  extract_sfmt_addo_cw:
4984   {
4985     const IDESC *idesc = &crisv32f_insn_data[itype];
4986     CGEN_INSN_WORD insn = base_insn;
4987 #define FLD(f) abuf->fields.sfmt_bound_cw.f
4988     INT f_indir_pc__word;
4989     UINT f_operand2;
4990     /* Contents of trailing part of insn.  */
4991     UINT word_1;
4992
4993   word_1 = GETIMEMUSI (current_cpu, pc + 2);
4994     f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4995     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4996
4997   /* Record the fields for the semantic handler.  */
4998   FLD (f_operand2) = f_operand2;
4999   FLD (f_indir_pc__word) = f_indir_pc__word;
5000   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_cw", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, (char *) 0));
5001
5002 #if WITH_PROFILE_MODEL_P
5003   /* Record the fields for profiling.  */
5004   if (PROFILE_MODEL_P (current_cpu))
5005     {
5006       FLD (in_Rd) = f_operand2;
5007     }
5008 #endif
5009 #undef FLD
5010     return idesc;
5011   }
5012
5013  extract_sfmt_addo_cd:
5014   {
5015     const IDESC *idesc = &crisv32f_insn_data[itype];
5016     CGEN_INSN_WORD insn = base_insn;
5017 #define FLD(f) abuf->fields.sfmt_bound_cd.f
5018     INT f_indir_pc__dword;
5019     UINT f_operand2;
5020     /* Contents of trailing part of insn.  */
5021     UINT word_1;
5022
5023   word_1 = GETIMEMUSI (current_cpu, pc + 2);
5024     f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
5025     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5026
5027   /* Record the fields for the semantic handler.  */
5028   FLD (f_operand2) = f_operand2;
5029   FLD (f_indir_pc__dword) = f_indir_pc__dword;
5030   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addo_cd", "f_operand2 0x%x", 'x', f_operand2, "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
5031
5032 #if WITH_PROFILE_MODEL_P
5033   /* Record the fields for profiling.  */
5034   if (PROFILE_MODEL_P (current_cpu))
5035     {
5036       FLD (in_Rd) = f_operand2;
5037     }
5038 #endif
5039 #undef FLD
5040     return idesc;
5041   }
5042
5043  extract_sfmt_addi_acr_b_r:
5044   {
5045     const IDESC *idesc = &crisv32f_insn_data[itype];
5046     CGEN_INSN_WORD insn = base_insn;
5047 #define FLD(f) abuf->fields.sfmt_muls_b.f
5048     UINT f_operand2;
5049     UINT f_operand1;
5050
5051     f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5052     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5053
5054   /* Record the fields for the semantic handler.  */
5055   FLD (f_operand2) = f_operand2;
5056   FLD (f_operand1) = f_operand1;
5057   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi_acr_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
5058
5059 #if WITH_PROFILE_MODEL_P
5060   /* Record the fields for profiling.  */
5061   if (PROFILE_MODEL_P (current_cpu))
5062     {
5063       FLD (in_Rd) = f_operand2;
5064       FLD (in_Rs) = f_operand1;
5065     }
5066 #endif
5067 #undef FLD
5068     return idesc;
5069   }
5070
5071  extract_sfmt_fidxi:
5072   {
5073     const IDESC *idesc = &crisv32f_insn_data[itype];
5074     CGEN_INSN_WORD insn = base_insn;
5075 #define FLD(f) abuf->fields.sfmt_mcp.f
5076     UINT f_operand1;
5077
5078     f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5079
5080   /* Record the fields for the semantic handler.  */
5081   FLD (f_operand1) = f_operand1;
5082   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fidxi", "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
5083
5084 #if WITH_PROFILE_MODEL_P
5085   /* Record the fields for profiling.  */
5086   if (PROFILE_MODEL_P (current_cpu))
5087     {
5088       FLD (in_Rs) = f_operand1;
5089     }
5090 #endif
5091 #undef FLD
5092     return idesc;
5093   }
5094
5095 }