* cris/arch.c, cris/arch.h, cris/cpuall.h, cris/cpuv10.c,
[deliverable/binutils-gdb.git] / sim / cris / decodev32.c
1 /* Simulator instruction decoder for crisv32f.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996-2007 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_W_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_W_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_ASRR_B_R },
203 { CRIS_INSN_ASRR_W_R, CRISV32F_INSN_ASRR_W_R, CRISV32F_SFMT_ASRR_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_INT base_insn,
324 ARGBUF *abuf)
325 {
326 /* Result of decoder. */
327 CRISV32F_INSN_TYPE itype;
328
329 {
330 CGEN_INSN_INT 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 :
371 if ((base_insn & 0xf00) == 0x0)
372 { itype = CRISV32F_INSN_BCC_B; goto extract_sfmt_bcc_b; }
373 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
374 case 14 :
375 if ((base_insn & 0xff00) == 0xe000)
376 { itype = CRISV32F_INSN_BA_B; goto extract_sfmt_ba_b; }
377 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
378 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
379 }
380 }
381 case 16 : /* fall through */
382 case 17 : /* fall through */
383 case 18 : /* fall through */
384 case 19 : /* fall through */
385 case 20 : /* fall through */
386 case 21 : /* fall through */
387 case 22 : /* fall through */
388 case 23 : /* fall through */
389 case 24 : /* fall through */
390 case 25 : /* fall through */
391 case 26 : /* fall through */
392 case 27 : /* fall through */
393 case 28 : /* fall through */
394 case 29 : /* fall through */
395 case 30 : /* fall through */
396 case 31 :
397 if ((base_insn & 0xf00) == 0x100)
398 { itype = CRISV32F_INSN_ADDOQ; goto extract_sfmt_addoq; }
399 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
400 case 32 : /* fall through */
401 case 33 : /* fall through */
402 case 34 : /* fall through */
403 case 35 :
404 if ((base_insn & 0xfc0) == 0x200)
405 { itype = CRISV32F_INSN_ADDQ; goto extract_sfmt_addq; }
406 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
407 case 36 : /* fall through */
408 case 37 : /* fall through */
409 case 38 : /* fall through */
410 case 39 :
411 if ((base_insn & 0xfc0) == 0x240)
412 { itype = CRISV32F_INSN_MOVEQ; goto extract_sfmt_moveq; }
413 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
414 case 40 : /* fall through */
415 case 41 : /* fall through */
416 case 42 : /* fall through */
417 case 43 :
418 if ((base_insn & 0xfc0) == 0x280)
419 { itype = CRISV32F_INSN_SUBQ; goto extract_sfmt_addq; }
420 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
421 case 44 : /* fall through */
422 case 45 : /* fall through */
423 case 46 : /* fall through */
424 case 47 :
425 if ((base_insn & 0xfc0) == 0x2c0)
426 { itype = CRISV32F_INSN_CMPQ; goto extract_sfmt_cmpq; }
427 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
428 case 48 : /* fall through */
429 case 49 : /* fall through */
430 case 50 : /* fall through */
431 case 51 :
432 if ((base_insn & 0xfc0) == 0x300)
433 { itype = CRISV32F_INSN_ANDQ; goto extract_sfmt_andq; }
434 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
435 case 52 : /* fall through */
436 case 53 : /* fall through */
437 case 54 : /* fall through */
438 case 55 :
439 if ((base_insn & 0xfc0) == 0x340)
440 { itype = CRISV32F_INSN_ORQ; goto extract_sfmt_andq; }
441 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
442 case 56 : /* fall through */
443 case 57 :
444 if ((base_insn & 0xfe0) == 0x380)
445 { itype = CRISV32F_INSN_BTSTQ; goto extract_sfmt_btstq; }
446 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
447 case 58 : /* fall through */
448 case 59 :
449 if ((base_insn & 0xfe0) == 0x3a0)
450 { itype = CRISV32F_INSN_ASRQ; goto extract_sfmt_asrq; }
451 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
452 case 60 : /* fall through */
453 case 61 :
454 if ((base_insn & 0xfe0) == 0x3c0)
455 { itype = CRISV32F_INSN_LSLQ; goto extract_sfmt_asrq; }
456 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
457 case 62 : /* fall through */
458 case 63 :
459 if ((base_insn & 0xfe0) == 0x3e0)
460 { itype = CRISV32F_INSN_LSRQ; goto extract_sfmt_asrq; }
461 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
462 case 64 :
463 if ((base_insn & 0xff0) == 0x400)
464 { itype = CRISV32F_INSN_ADDU_B_R; goto extract_sfmt_add_d_r; }
465 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
466 case 65 :
467 if ((base_insn & 0xff0) == 0x410)
468 { itype = CRISV32F_INSN_ADDU_W_R; goto extract_sfmt_add_d_r; }
469 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
470 case 66 :
471 if ((base_insn & 0xff0) == 0x420)
472 { itype = CRISV32F_INSN_ADDS_B_R; goto extract_sfmt_add_d_r; }
473 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
474 case 67 :
475 if ((base_insn & 0xff0) == 0x430)
476 { itype = CRISV32F_INSN_ADDS_W_R; goto extract_sfmt_add_d_r; }
477 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
478 case 68 :
479 if ((base_insn & 0xff0) == 0x440)
480 { itype = CRISV32F_INSN_MOVU_B_R; goto extract_sfmt_movs_b_r; }
481 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
482 case 69 :
483 if ((base_insn & 0xff0) == 0x450)
484 { itype = CRISV32F_INSN_MOVU_W_R; goto extract_sfmt_movs_b_r; }
485 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
486 case 70 :
487 if ((base_insn & 0xff0) == 0x460)
488 { itype = CRISV32F_INSN_MOVS_B_R; goto extract_sfmt_movs_b_r; }
489 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
490 case 71 :
491 if ((base_insn & 0xff0) == 0x470)
492 { itype = CRISV32F_INSN_MOVS_W_R; goto extract_sfmt_movs_b_r; }
493 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
494 case 72 :
495 if ((base_insn & 0xff0) == 0x480)
496 { itype = CRISV32F_INSN_SUBU_B_R; goto extract_sfmt_add_d_r; }
497 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
498 case 73 :
499 if ((base_insn & 0xff0) == 0x490)
500 { itype = CRISV32F_INSN_SUBU_W_R; goto extract_sfmt_add_d_r; }
501 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
502 case 74 :
503 if ((base_insn & 0xff0) == 0x4a0)
504 { itype = CRISV32F_INSN_SUBS_B_R; goto extract_sfmt_add_d_r; }
505 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
506 case 75 :
507 if ((base_insn & 0xff0) == 0x4b0)
508 { itype = CRISV32F_INSN_SUBS_W_R; goto extract_sfmt_add_d_r; }
509 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
510 case 76 :
511 if ((base_insn & 0xff0) == 0x4c0)
512 { itype = CRISV32F_INSN_LSLR_B_R; goto extract_sfmt_lsrr_b_r; }
513 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
514 case 77 :
515 if ((base_insn & 0xff0) == 0x4d0)
516 { itype = CRISV32F_INSN_LSLR_W_R; goto extract_sfmt_lsrr_b_r; }
517 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
518 case 78 :
519 if ((base_insn & 0xff0) == 0x4e0)
520 { itype = CRISV32F_INSN_LSLR_D_R; goto extract_sfmt_lsrr_d_r; }
521 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
522 case 79 :
523 if ((base_insn & 0xff0) == 0x4f0)
524 { itype = CRISV32F_INSN_BTST; goto extract_sfmt_btst; }
525 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
526 case 80 :
527 if ((base_insn & 0xff0) == 0x500)
528 { itype = CRISV32F_INSN_ADDI_B_R; goto extract_sfmt_addi_b_r; }
529 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
530 case 81 :
531 if ((base_insn & 0xff0) == 0x510)
532 { itype = CRISV32F_INSN_ADDI_W_R; goto extract_sfmt_addi_b_r; }
533 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
534 case 82 :
535 if ((base_insn & 0xff0) == 0x520)
536 { itype = CRISV32F_INSN_ADDI_D_R; goto extract_sfmt_addi_b_r; }
537 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
538 case 83 :
539 if ((base_insn & 0xff0) == 0x530)
540 { itype = CRISV32F_INSN_SCC; goto extract_sfmt_scc; }
541 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
542 case 84 :
543 if ((base_insn & 0xff0) == 0x540)
544 { itype = CRISV32F_INSN_ADDI_ACR_B_R; goto extract_sfmt_addi_acr_b_r; }
545 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
546 case 85 :
547 if ((base_insn & 0xff0) == 0x550)
548 { itype = CRISV32F_INSN_ADDI_ACR_W_R; goto extract_sfmt_addi_acr_b_r; }
549 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
550 case 86 :
551 if ((base_insn & 0xff0) == 0x560)
552 { itype = CRISV32F_INSN_ADDI_ACR_D_R; goto extract_sfmt_addi_acr_b_r; }
553 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
554 case 87 :
555 if ((base_insn & 0xff0) == 0x570)
556 { itype = CRISV32F_INSN_ADDC_R; goto extract_sfmt_add_d_r; }
557 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
558 case 88 :
559 if ((base_insn & 0xff0) == 0x580)
560 { itype = CRISV32F_INSN_NEG_B_R; goto extract_sfmt_neg_b_r; }
561 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
562 case 89 :
563 if ((base_insn & 0xff0) == 0x590)
564 { itype = CRISV32F_INSN_NEG_W_R; goto extract_sfmt_neg_b_r; }
565 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
566 case 90 :
567 if ((base_insn & 0xff0) == 0x5a0)
568 { itype = CRISV32F_INSN_NEG_D_R; goto extract_sfmt_neg_d_r; }
569 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
570 case 91 :
571 if ((base_insn & 0xff0) == 0x5b0)
572 { itype = CRISV32F_INSN_SETF; goto extract_sfmt_setf; }
573 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
574 case 92 :
575 if ((base_insn & 0xff0) == 0x5c0)
576 { itype = CRISV32F_INSN_BOUND_R_B_R; goto extract_sfmt_dstep; }
577 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
578 case 93 :
579 if ((base_insn & 0xff0) == 0x5d0)
580 { itype = CRISV32F_INSN_BOUND_R_W_R; goto extract_sfmt_dstep; }
581 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
582 case 94 :
583 if ((base_insn & 0xff0) == 0x5e0)
584 { itype = CRISV32F_INSN_BOUND_R_D_R; goto extract_sfmt_dstep; }
585 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
586 case 95 :
587 if ((base_insn & 0xff0) == 0x5f0)
588 { itype = CRISV32F_INSN_CLEARF; goto extract_sfmt_setf; }
589 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
590 case 96 :
591 if ((base_insn & 0xff0) == 0x600)
592 { itype = CRISV32F_INSN_ADD_B_R; goto extract_sfmt_add_b_r; }
593 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
594 case 97 :
595 if ((base_insn & 0xff0) == 0x610)
596 { itype = CRISV32F_INSN_ADD_W_R; goto extract_sfmt_add_b_r; }
597 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
598 case 98 :
599 if ((base_insn & 0xff0) == 0x620)
600 { itype = CRISV32F_INSN_ADD_D_R; goto extract_sfmt_add_d_r; }
601 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
602 case 99 :
603 if ((base_insn & 0xff0) == 0x630)
604 { itype = CRISV32F_INSN_MOVE_R_SPRV32; goto extract_sfmt_move_r_sprv32; }
605 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
606 case 100 :
607 if ((base_insn & 0xff0) == 0x640)
608 { itype = CRISV32F_INSN_MOVE_B_R; goto extract_sfmt_move_b_r; }
609 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
610 case 101 :
611 if ((base_insn & 0xff0) == 0x650)
612 { itype = CRISV32F_INSN_MOVE_W_R; goto extract_sfmt_move_b_r; }
613 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
614 case 102 :
615 if ((base_insn & 0xff0) == 0x660)
616 { itype = CRISV32F_INSN_MOVE_D_R; goto extract_sfmt_move_d_r; }
617 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
618 case 103 :
619 if ((base_insn & 0xff0) == 0x670)
620 { itype = CRISV32F_INSN_MOVE_SPR_RV32; goto extract_sfmt_move_spr_rv32; }
621 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
622 case 104 :
623 if ((base_insn & 0xff0) == 0x680)
624 { itype = CRISV32F_INSN_SUB_B_R; goto extract_sfmt_add_b_r; }
625 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
626 case 105 :
627 if ((base_insn & 0xff0) == 0x690)
628 { itype = CRISV32F_INSN_SUB_W_R; goto extract_sfmt_add_b_r; }
629 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
630 case 106 :
631 if ((base_insn & 0xff0) == 0x6a0)
632 { itype = CRISV32F_INSN_SUB_D_R; goto extract_sfmt_add_d_r; }
633 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
634 case 107 :
635 if ((base_insn & 0xff0) == 0x6b0)
636 { itype = CRISV32F_INSN_ABS; goto extract_sfmt_movs_b_r; }
637 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
638 case 108 :
639 if ((base_insn & 0xff0) == 0x6c0)
640 { itype = CRISV32F_INSN_CMP_R_B_R; goto extract_sfmt_cmp_r_b_r; }
641 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
642 case 109 :
643 if ((base_insn & 0xff0) == 0x6d0)
644 { itype = CRISV32F_INSN_CMP_R_W_R; goto extract_sfmt_cmp_r_b_r; }
645 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
646 case 110 :
647 if ((base_insn & 0xff0) == 0x6e0)
648 { itype = CRISV32F_INSN_CMP_R_D_R; goto extract_sfmt_cmp_r_b_r; }
649 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
650 case 111 :
651 if ((base_insn & 0xff0) == 0x6f0)
652 { itype = CRISV32F_INSN_DSTEP; goto extract_sfmt_dstep; }
653 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
654 case 112 :
655 if ((base_insn & 0xff0) == 0x700)
656 { itype = CRISV32F_INSN_AND_B_R; goto extract_sfmt_and_b_r; }
657 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
658 case 113 :
659 if ((base_insn & 0xff0) == 0x710)
660 { itype = CRISV32F_INSN_AND_W_R; goto extract_sfmt_and_w_r; }
661 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
662 case 114 :
663 if ((base_insn & 0xff0) == 0x720)
664 { itype = CRISV32F_INSN_AND_D_R; goto extract_sfmt_and_d_r; }
665 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
666 case 115 :
667 if ((base_insn & 0xff0) == 0x730)
668 { itype = CRISV32F_INSN_LZ; goto extract_sfmt_movs_b_r; }
669 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
670 case 116 :
671 if ((base_insn & 0xff0) == 0x740)
672 { itype = CRISV32F_INSN_ORR_B_R; goto extract_sfmt_and_b_r; }
673 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
674 case 117 :
675 if ((base_insn & 0xff0) == 0x750)
676 { itype = CRISV32F_INSN_ORR_W_R; goto extract_sfmt_and_w_r; }
677 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
678 case 118 :
679 if ((base_insn & 0xff0) == 0x760)
680 { itype = CRISV32F_INSN_ORR_D_R; goto extract_sfmt_and_d_r; }
681 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
682 case 119 :
683 if ((base_insn & 0xff0) == 0x770)
684 { itype = CRISV32F_INSN_SWAP; goto extract_sfmt_swap; }
685 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
686 case 120 :
687 if ((base_insn & 0xff0) == 0x780)
688 { itype = CRISV32F_INSN_ASRR_B_R; goto extract_sfmt_asrr_b_r; }
689 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
690 case 121 :
691 if ((base_insn & 0xff0) == 0x790)
692 { itype = CRISV32F_INSN_ASRR_W_R; goto extract_sfmt_asrr_b_r; }
693 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
694 case 122 :
695 if ((base_insn & 0xff0) == 0x7a0)
696 { itype = CRISV32F_INSN_ASRR_D_R; goto extract_sfmt_and_d_r; }
697 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
698 case 123 :
699 if ((base_insn & 0xff0) == 0x7b0)
700 { itype = CRISV32F_INSN_XOR; goto extract_sfmt_dstep; }
701 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
702 case 124 :
703 if ((base_insn & 0xff0) == 0x7c0)
704 { itype = CRISV32F_INSN_LSRR_B_R; goto extract_sfmt_lsrr_b_r; }
705 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
706 case 125 :
707 if ((base_insn & 0xff0) == 0x7d0)
708 { itype = CRISV32F_INSN_LSRR_W_R; goto extract_sfmt_lsrr_b_r; }
709 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
710 case 126 :
711 if ((base_insn & 0xff0) == 0x7e0)
712 { itype = CRISV32F_INSN_LSRR_D_R; goto extract_sfmt_lsrr_d_r; }
713 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
714 case 127 :
715 if ((base_insn & 0xff0) == 0x7f0)
716 { itype = CRISV32F_INSN_MCP; goto extract_sfmt_mcp; }
717 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
718 case 128 :
719 if ((base_insn & 0xbf0) == 0x800)
720 { itype = CRISV32F_INSN_ADDU_M_B_M; goto extract_sfmt_adds_m_b_m; }
721 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
722 case 129 :
723 if ((base_insn & 0xbf0) == 0x810)
724 { itype = CRISV32F_INSN_ADDU_M_W_M; goto extract_sfmt_adds_m_w_m; }
725 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
726 case 130 :
727 if ((base_insn & 0xbf0) == 0x820)
728 { itype = CRISV32F_INSN_ADDS_M_B_M; goto extract_sfmt_adds_m_b_m; }
729 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
730 case 131 :
731 if ((base_insn & 0xbf0) == 0x830)
732 { itype = CRISV32F_INSN_ADDS_M_W_M; goto extract_sfmt_adds_m_w_m; }
733 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
734 case 132 :
735 if ((base_insn & 0xbf0) == 0x840)
736 { itype = CRISV32F_INSN_MOVU_M_B_M; goto extract_sfmt_movs_m_b_m; }
737 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
738 case 133 :
739 if ((base_insn & 0xbf0) == 0x850)
740 { itype = CRISV32F_INSN_MOVU_M_W_M; goto extract_sfmt_movs_m_w_m; }
741 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
742 case 134 :
743 if ((base_insn & 0xbf0) == 0x860)
744 { itype = CRISV32F_INSN_MOVS_M_B_M; goto extract_sfmt_movs_m_b_m; }
745 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
746 case 135 :
747 if ((base_insn & 0xbf0) == 0x870)
748 { itype = CRISV32F_INSN_MOVS_M_W_M; goto extract_sfmt_movs_m_w_m; }
749 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
750 case 136 :
751 if ((base_insn & 0xbf0) == 0x880)
752 { itype = CRISV32F_INSN_SUBU_M_B_M; goto extract_sfmt_adds_m_b_m; }
753 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
754 case 137 :
755 if ((base_insn & 0xbf0) == 0x890)
756 { itype = CRISV32F_INSN_SUBU_M_W_M; goto extract_sfmt_adds_m_w_m; }
757 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
758 case 138 :
759 if ((base_insn & 0xbf0) == 0x8a0)
760 { itype = CRISV32F_INSN_SUBS_M_B_M; goto extract_sfmt_adds_m_b_m; }
761 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
762 case 139 :
763 if ((base_insn & 0xbf0) == 0x8b0)
764 { itype = CRISV32F_INSN_SUBS_M_W_M; goto extract_sfmt_adds_m_w_m; }
765 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
766 case 140 :
767 if ((base_insn & 0xbf0) == 0x8c0)
768 { itype = CRISV32F_INSN_CMPU_M_B_M; goto extract_sfmt_cmp_m_b_m; }
769 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
770 case 141 :
771 if ((base_insn & 0xbf0) == 0x8d0)
772 { itype = CRISV32F_INSN_CMPU_M_W_M; goto extract_sfmt_cmp_m_w_m; }
773 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
774 case 142 :
775 if ((base_insn & 0xbf0) == 0x8e0)
776 { itype = CRISV32F_INSN_CMPS_M_B_M; goto extract_sfmt_cmp_m_b_m; }
777 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
778 case 143 :
779 if ((base_insn & 0xbf0) == 0x8f0)
780 { itype = CRISV32F_INSN_CMPS_M_W_M; goto extract_sfmt_cmp_m_w_m; }
781 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
782 case 144 :
783 if ((base_insn & 0xff0) == 0x900)
784 { itype = CRISV32F_INSN_MULU_B; goto extract_sfmt_muls_b; }
785 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
786 case 145 :
787 if ((base_insn & 0xff0) == 0x910)
788 { itype = CRISV32F_INSN_MULU_W; goto extract_sfmt_muls_b; }
789 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
790 case 146 :
791 if ((base_insn & 0xff0) == 0x920)
792 { itype = CRISV32F_INSN_MULU_D; goto extract_sfmt_muls_b; }
793 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
794 case 147 :
795 {
796 unsigned int val = (((insn >> 12) & (15 << 0)));
797 switch (val)
798 {
799 case 2 :
800 if ((base_insn & 0xffff) == 0x2930)
801 { itype = CRISV32F_INSN_RFE; goto extract_sfmt_rfe; }
802 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
803 case 3 :
804 if ((base_insn & 0xffff) == 0x3930)
805 { itype = CRISV32F_INSN_SFE; goto extract_sfmt_sfe; }
806 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
807 case 4 :
808 if ((base_insn & 0xffff) == 0x4930)
809 { itype = CRISV32F_INSN_RFG; goto extract_sfmt_rfg; }
810 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
811 case 5 :
812 if ((base_insn & 0xffff) == 0x5930)
813 { itype = CRISV32F_INSN_RFN; goto extract_sfmt_rfn; }
814 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
815 case 14 :
816 if ((base_insn & 0xfff0) == 0xe930)
817 { itype = CRISV32F_INSN_BREAK; goto extract_sfmt_break; }
818 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
819 case 15 :
820 if ((base_insn & 0xffff) == 0xf930)
821 { itype = CRISV32F_INSN_HALT; goto extract_sfmt_halt; }
822 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
823 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
824 }
825 }
826 case 148 :
827 if ((base_insn & 0xbf0) == 0x940)
828 { itype = CRISV32F_INSN_ADDO_M_B_M; goto extract_sfmt_addo_m_b_m; }
829 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
830 case 149 :
831 if ((base_insn & 0xbf0) == 0x950)
832 { itype = CRISV32F_INSN_ADDO_M_W_M; goto extract_sfmt_addo_m_w_m; }
833 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
834 case 150 :
835 if ((base_insn & 0xbf0) == 0x960)
836 { itype = CRISV32F_INSN_ADDO_M_D_M; goto extract_sfmt_addo_m_d_m; }
837 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
838 case 151 :
839 if ((base_insn & 0xff0) == 0x970)
840 { itype = CRISV32F_INSN_LAPCQ; goto extract_sfmt_lapcq; }
841 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
842 case 154 :
843 if ((base_insn & 0xbf0) == 0x9a0)
844 { itype = CRISV32F_INSN_ADDC_M; goto extract_sfmt_addc_m; }
845 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
846 case 155 :
847 if ((base_insn & 0xff0) == 0x9b0)
848 { itype = CRISV32F_INSN_JAS_R; goto extract_sfmt_jas_r; }
849 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
850 case 159 :
851 if ((base_insn & 0xfff) == 0x9f0)
852 { itype = CRISV32F_INSN_JUMP_P; goto extract_sfmt_jump_p; }
853 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
854 case 160 :
855 if ((base_insn & 0xbf0) == 0xa00)
856 { itype = CRISV32F_INSN_ADD_M_B_M; goto extract_sfmt_add_m_b_m; }
857 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
858 case 161 :
859 if ((base_insn & 0xbf0) == 0xa10)
860 { itype = CRISV32F_INSN_ADD_M_W_M; goto extract_sfmt_add_m_w_m; }
861 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
862 case 162 :
863 if ((base_insn & 0xbf0) == 0xa20)
864 { itype = CRISV32F_INSN_ADD_M_D_M; goto extract_sfmt_add_m_d_m; }
865 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
866 case 163 :
867 if ((base_insn & 0xbf0) == 0xa30)
868 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
869 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
870 case 164 :
871 if ((base_insn & 0xbf0) == 0xa40)
872 { itype = CRISV32F_INSN_MOVE_M_B_M; goto extract_sfmt_move_m_b_m; }
873 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
874 case 165 :
875 if ((base_insn & 0xbf0) == 0xa50)
876 { itype = CRISV32F_INSN_MOVE_M_W_M; goto extract_sfmt_move_m_w_m; }
877 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
878 case 166 :
879 if ((base_insn & 0xbf0) == 0xa60)
880 { itype = CRISV32F_INSN_MOVE_M_D_M; goto extract_sfmt_move_m_d_m; }
881 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
882 case 167 : /* fall through */
883 case 231 :
884 if ((base_insn & 0xbf0) == 0xa70)
885 { itype = CRISV32F_INSN_MOVE_SPR_MV32; goto extract_sfmt_move_spr_mv32; }
886 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
887 case 168 :
888 if ((base_insn & 0xbf0) == 0xa80)
889 { itype = CRISV32F_INSN_SUB_M_B_M; goto extract_sfmt_add_m_b_m; }
890 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
891 case 169 :
892 if ((base_insn & 0xbf0) == 0xa90)
893 { itype = CRISV32F_INSN_SUB_M_W_M; goto extract_sfmt_add_m_w_m; }
894 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
895 case 170 :
896 if ((base_insn & 0xbf0) == 0xaa0)
897 { itype = CRISV32F_INSN_SUB_M_D_M; goto extract_sfmt_add_m_d_m; }
898 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
899 case 171 :
900 {
901 unsigned int val = (((insn >> 12) & (1 << 0)));
902 switch (val)
903 {
904 case 0 :
905 if ((base_insn & 0xfff0) == 0xab0)
906 { itype = CRISV32F_INSN_FIDXD; goto extract_sfmt_fidxi; }
907 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
908 case 1 :
909 if ((base_insn & 0xfff0) == 0x1ab0)
910 { itype = CRISV32F_INSN_FTAGD; goto extract_sfmt_fidxi; }
911 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
912 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
913 }
914 }
915 case 172 :
916 if ((base_insn & 0xbf0) == 0xac0)
917 { itype = CRISV32F_INSN_CMP_M_B_M; goto extract_sfmt_cmp_m_b_m; }
918 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
919 case 173 :
920 if ((base_insn & 0xbf0) == 0xad0)
921 { itype = CRISV32F_INSN_CMP_M_W_M; goto extract_sfmt_cmp_m_w_m; }
922 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
923 case 174 :
924 if ((base_insn & 0xbf0) == 0xae0)
925 { itype = CRISV32F_INSN_CMP_M_D_M; goto extract_sfmt_cmp_m_d_m; }
926 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
927 case 176 :
928 if ((base_insn & 0xbf0) == 0xb00)
929 { itype = CRISV32F_INSN_AND_M_B_M; goto extract_sfmt_and_m_b_m; }
930 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
931 case 177 :
932 if ((base_insn & 0xbf0) == 0xb10)
933 { itype = CRISV32F_INSN_AND_M_W_M; goto extract_sfmt_and_m_w_m; }
934 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
935 case 178 :
936 if ((base_insn & 0xbf0) == 0xb20)
937 { itype = CRISV32F_INSN_AND_M_D_M; goto extract_sfmt_and_m_d_m; }
938 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
939 case 179 :
940 if ((base_insn & 0xff0) == 0xb30)
941 { itype = CRISV32F_INSN_JASC_R; goto extract_sfmt_jasc_r; }
942 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
943 case 180 :
944 if ((base_insn & 0xbf0) == 0xb40)
945 { itype = CRISV32F_INSN_OR_M_B_M; goto extract_sfmt_and_m_b_m; }
946 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
947 case 181 :
948 if ((base_insn & 0xbf0) == 0xb50)
949 { itype = CRISV32F_INSN_OR_M_W_M; goto extract_sfmt_and_m_w_m; }
950 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
951 case 182 :
952 if ((base_insn & 0xbf0) == 0xb60)
953 { itype = CRISV32F_INSN_OR_M_D_M; goto extract_sfmt_and_m_d_m; }
954 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
955 case 183 :
956 if ((base_insn & 0xff0) == 0xb70)
957 { itype = CRISV32F_INSN_MOVE_R_SS; goto extract_sfmt_move_r_ss; }
958 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
959 case 184 : /* fall through */
960 case 248 :
961 if ((base_insn & 0xfbf0) == 0xb80)
962 { itype = CRISV32F_INSN_TEST_M_B_M; goto extract_sfmt_test_m_b_m; }
963 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
964 case 185 : /* fall through */
965 case 249 :
966 if ((base_insn & 0xfbf0) == 0xb90)
967 { itype = CRISV32F_INSN_TEST_M_W_M; goto extract_sfmt_test_m_w_m; }
968 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
969 case 186 : /* fall through */
970 case 250 :
971 if ((base_insn & 0xfbf0) == 0xba0)
972 { itype = CRISV32F_INSN_TEST_M_D_M; goto extract_sfmt_test_m_d_m; }
973 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
974 case 187 : /* fall through */
975 case 251 :
976 if ((base_insn & 0xbf0) == 0xbb0)
977 { itype = CRISV32F_INSN_MOVEM_M_R_V32; goto extract_sfmt_movem_m_r_v32; }
978 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
979 case 188 : /* fall through */
980 case 252 :
981 if ((base_insn & 0xbf0) == 0xbc0)
982 { itype = CRISV32F_INSN_MOVE_R_M_B_M; goto extract_sfmt_move_r_m_b_m; }
983 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
984 case 189 : /* fall through */
985 case 253 :
986 if ((base_insn & 0xbf0) == 0xbd0)
987 { itype = CRISV32F_INSN_MOVE_R_M_W_M; goto extract_sfmt_move_r_m_w_m; }
988 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
989 case 190 : /* fall through */
990 case 254 :
991 if ((base_insn & 0xbf0) == 0xbe0)
992 { itype = CRISV32F_INSN_MOVE_R_M_D_M; goto extract_sfmt_move_r_m_d_m; }
993 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
994 case 191 : /* fall through */
995 case 255 :
996 if ((base_insn & 0xbf0) == 0xbf0)
997 { itype = CRISV32F_INSN_MOVEM_R_M_V32; goto extract_sfmt_movem_r_m_v32; }
998 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
999 case 192 :
1000 {
1001 unsigned int val = (((insn >> 0) & (15 << 0)));
1002 switch (val)
1003 {
1004 case 0 : /* fall through */
1005 case 1 : /* fall through */
1006 case 2 : /* fall through */
1007 case 3 : /* fall through */
1008 case 4 : /* fall through */
1009 case 5 : /* fall through */
1010 case 6 : /* fall through */
1011 case 7 : /* fall through */
1012 case 8 : /* fall through */
1013 case 9 : /* fall through */
1014 case 10 : /* fall through */
1015 case 11 : /* fall through */
1016 case 12 : /* fall through */
1017 case 13 : /* fall through */
1018 case 14 :
1019 if ((base_insn & 0xbf0) == 0x800)
1020 { itype = CRISV32F_INSN_ADDU_M_B_M; goto extract_sfmt_adds_m_b_m; }
1021 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1022 case 15 :
1023 if ((base_insn & 0xfff) == 0xc0f)
1024 { itype = CRISV32F_INSN_ADDUCBR; goto extract_sfmt_addscbr; }
1025 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1026 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1027 }
1028 }
1029 case 193 :
1030 {
1031 unsigned int val = (((insn >> 0) & (15 << 0)));
1032 switch (val)
1033 {
1034 case 0 : /* fall through */
1035 case 1 : /* fall through */
1036 case 2 : /* fall through */
1037 case 3 : /* fall through */
1038 case 4 : /* fall through */
1039 case 5 : /* fall through */
1040 case 6 : /* fall through */
1041 case 7 : /* fall through */
1042 case 8 : /* fall through */
1043 case 9 : /* fall through */
1044 case 10 : /* fall through */
1045 case 11 : /* fall through */
1046 case 12 : /* fall through */
1047 case 13 : /* fall through */
1048 case 14 :
1049 if ((base_insn & 0xbf0) == 0x810)
1050 { itype = CRISV32F_INSN_ADDU_M_W_M; goto extract_sfmt_adds_m_w_m; }
1051 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1052 case 15 :
1053 if ((base_insn & 0xfff) == 0xc1f)
1054 { itype = CRISV32F_INSN_ADDUCWR; goto extract_sfmt_addscwr; }
1055 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1056 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1057 }
1058 }
1059 case 194 :
1060 {
1061 unsigned int val = (((insn >> 0) & (15 << 0)));
1062 switch (val)
1063 {
1064 case 0 : /* fall through */
1065 case 1 : /* fall through */
1066 case 2 : /* fall through */
1067 case 3 : /* fall through */
1068 case 4 : /* fall through */
1069 case 5 : /* fall through */
1070 case 6 : /* fall through */
1071 case 7 : /* fall through */
1072 case 8 : /* fall through */
1073 case 9 : /* fall through */
1074 case 10 : /* fall through */
1075 case 11 : /* fall through */
1076 case 12 : /* fall through */
1077 case 13 : /* fall through */
1078 case 14 :
1079 if ((base_insn & 0xbf0) == 0x820)
1080 { itype = CRISV32F_INSN_ADDS_M_B_M; goto extract_sfmt_adds_m_b_m; }
1081 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1082 case 15 :
1083 if ((base_insn & 0xfff) == 0xc2f)
1084 { itype = CRISV32F_INSN_ADDSCBR; goto extract_sfmt_addscbr; }
1085 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1086 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1087 }
1088 }
1089 case 195 :
1090 {
1091 unsigned int val = (((insn >> 0) & (15 << 0)));
1092 switch (val)
1093 {
1094 case 0 : /* fall through */
1095 case 1 : /* fall through */
1096 case 2 : /* fall through */
1097 case 3 : /* fall through */
1098 case 4 : /* fall through */
1099 case 5 : /* fall through */
1100 case 6 : /* fall through */
1101 case 7 : /* fall through */
1102 case 8 : /* fall through */
1103 case 9 : /* fall through */
1104 case 10 : /* fall through */
1105 case 11 : /* fall through */
1106 case 12 : /* fall through */
1107 case 13 : /* fall through */
1108 case 14 :
1109 if ((base_insn & 0xbf0) == 0x830)
1110 { itype = CRISV32F_INSN_ADDS_M_W_M; goto extract_sfmt_adds_m_w_m; }
1111 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1112 case 15 :
1113 if ((base_insn & 0xfff) == 0xc3f)
1114 { itype = CRISV32F_INSN_ADDSCWR; goto extract_sfmt_addscwr; }
1115 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1116 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1117 }
1118 }
1119 case 196 :
1120 {
1121 unsigned int val = (((insn >> 0) & (15 << 0)));
1122 switch (val)
1123 {
1124 case 0 : /* fall through */
1125 case 1 : /* fall through */
1126 case 2 : /* fall through */
1127 case 3 : /* fall through */
1128 case 4 : /* fall through */
1129 case 5 : /* fall through */
1130 case 6 : /* fall through */
1131 case 7 : /* fall through */
1132 case 8 : /* fall through */
1133 case 9 : /* fall through */
1134 case 10 : /* fall through */
1135 case 11 : /* fall through */
1136 case 12 : /* fall through */
1137 case 13 : /* fall through */
1138 case 14 :
1139 if ((base_insn & 0xbf0) == 0x840)
1140 { itype = CRISV32F_INSN_MOVU_M_B_M; goto extract_sfmt_movs_m_b_m; }
1141 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1142 case 15 :
1143 if ((base_insn & 0xfff) == 0xc4f)
1144 { itype = CRISV32F_INSN_MOVUCBR; goto extract_sfmt_movucbr; }
1145 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1146 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1147 }
1148 }
1149 case 197 :
1150 {
1151 unsigned int val = (((insn >> 0) & (15 << 0)));
1152 switch (val)
1153 {
1154 case 0 : /* fall through */
1155 case 1 : /* fall through */
1156 case 2 : /* fall through */
1157 case 3 : /* fall through */
1158 case 4 : /* fall through */
1159 case 5 : /* fall through */
1160 case 6 : /* fall through */
1161 case 7 : /* fall through */
1162 case 8 : /* fall through */
1163 case 9 : /* fall through */
1164 case 10 : /* fall through */
1165 case 11 : /* fall through */
1166 case 12 : /* fall through */
1167 case 13 : /* fall through */
1168 case 14 :
1169 if ((base_insn & 0xbf0) == 0x850)
1170 { itype = CRISV32F_INSN_MOVU_M_W_M; goto extract_sfmt_movs_m_w_m; }
1171 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1172 case 15 :
1173 if ((base_insn & 0xfff) == 0xc5f)
1174 { itype = CRISV32F_INSN_MOVUCWR; goto extract_sfmt_movucwr; }
1175 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1176 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1177 }
1178 }
1179 case 198 :
1180 {
1181 unsigned int val = (((insn >> 0) & (15 << 0)));
1182 switch (val)
1183 {
1184 case 0 : /* fall through */
1185 case 1 : /* fall through */
1186 case 2 : /* fall through */
1187 case 3 : /* fall through */
1188 case 4 : /* fall through */
1189 case 5 : /* fall through */
1190 case 6 : /* fall through */
1191 case 7 : /* fall through */
1192 case 8 : /* fall through */
1193 case 9 : /* fall through */
1194 case 10 : /* fall through */
1195 case 11 : /* fall through */
1196 case 12 : /* fall through */
1197 case 13 : /* fall through */
1198 case 14 :
1199 if ((base_insn & 0xbf0) == 0x860)
1200 { itype = CRISV32F_INSN_MOVS_M_B_M; goto extract_sfmt_movs_m_b_m; }
1201 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1202 case 15 :
1203 if ((base_insn & 0xfff) == 0xc6f)
1204 { itype = CRISV32F_INSN_MOVSCBR; goto extract_sfmt_movscbr; }
1205 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1206 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1207 }
1208 }
1209 case 199 :
1210 {
1211 unsigned int val = (((insn >> 0) & (15 << 0)));
1212 switch (val)
1213 {
1214 case 0 : /* fall through */
1215 case 1 : /* fall through */
1216 case 2 : /* fall through */
1217 case 3 : /* fall through */
1218 case 4 : /* fall through */
1219 case 5 : /* fall through */
1220 case 6 : /* fall through */
1221 case 7 : /* fall through */
1222 case 8 : /* fall through */
1223 case 9 : /* fall through */
1224 case 10 : /* fall through */
1225 case 11 : /* fall through */
1226 case 12 : /* fall through */
1227 case 13 : /* fall through */
1228 case 14 :
1229 if ((base_insn & 0xbf0) == 0x870)
1230 { itype = CRISV32F_INSN_MOVS_M_W_M; goto extract_sfmt_movs_m_w_m; }
1231 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1232 case 15 :
1233 if ((base_insn & 0xfff) == 0xc7f)
1234 { itype = CRISV32F_INSN_MOVSCWR; goto extract_sfmt_movscwr; }
1235 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1236 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1237 }
1238 }
1239 case 200 :
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 :
1259 if ((base_insn & 0xbf0) == 0x880)
1260 { itype = CRISV32F_INSN_SUBU_M_B_M; goto extract_sfmt_adds_m_b_m; }
1261 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1262 case 15 :
1263 if ((base_insn & 0xfff) == 0xc8f)
1264 { itype = CRISV32F_INSN_SUBUCBR; goto extract_sfmt_addscbr; }
1265 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1266 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1267 }
1268 }
1269 case 201 :
1270 {
1271 unsigned int val = (((insn >> 0) & (15 << 0)));
1272 switch (val)
1273 {
1274 case 0 : /* fall through */
1275 case 1 : /* fall through */
1276 case 2 : /* fall through */
1277 case 3 : /* fall through */
1278 case 4 : /* fall through */
1279 case 5 : /* fall through */
1280 case 6 : /* fall through */
1281 case 7 : /* fall through */
1282 case 8 : /* fall through */
1283 case 9 : /* fall through */
1284 case 10 : /* fall through */
1285 case 11 : /* fall through */
1286 case 12 : /* fall through */
1287 case 13 : /* fall through */
1288 case 14 :
1289 if ((base_insn & 0xbf0) == 0x890)
1290 { itype = CRISV32F_INSN_SUBU_M_W_M; goto extract_sfmt_adds_m_w_m; }
1291 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1292 case 15 :
1293 if ((base_insn & 0xfff) == 0xc9f)
1294 { itype = CRISV32F_INSN_SUBUCWR; goto extract_sfmt_addscwr; }
1295 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1296 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1297 }
1298 }
1299 case 202 :
1300 {
1301 unsigned int val = (((insn >> 0) & (15 << 0)));
1302 switch (val)
1303 {
1304 case 0 : /* fall through */
1305 case 1 : /* fall through */
1306 case 2 : /* fall through */
1307 case 3 : /* fall through */
1308 case 4 : /* fall through */
1309 case 5 : /* fall through */
1310 case 6 : /* fall through */
1311 case 7 : /* fall through */
1312 case 8 : /* fall through */
1313 case 9 : /* fall through */
1314 case 10 : /* fall through */
1315 case 11 : /* fall through */
1316 case 12 : /* fall through */
1317 case 13 : /* fall through */
1318 case 14 :
1319 if ((base_insn & 0xbf0) == 0x8a0)
1320 { itype = CRISV32F_INSN_SUBS_M_B_M; goto extract_sfmt_adds_m_b_m; }
1321 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1322 case 15 :
1323 if ((base_insn & 0xfff) == 0xcaf)
1324 { itype = CRISV32F_INSN_SUBSCBR; goto extract_sfmt_addscbr; }
1325 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1326 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1327 }
1328 }
1329 case 203 :
1330 {
1331 unsigned int val = (((insn >> 0) & (15 << 0)));
1332 switch (val)
1333 {
1334 case 0 : /* fall through */
1335 case 1 : /* fall through */
1336 case 2 : /* fall through */
1337 case 3 : /* fall through */
1338 case 4 : /* fall through */
1339 case 5 : /* fall through */
1340 case 6 : /* fall through */
1341 case 7 : /* fall through */
1342 case 8 : /* fall through */
1343 case 9 : /* fall through */
1344 case 10 : /* fall through */
1345 case 11 : /* fall through */
1346 case 12 : /* fall through */
1347 case 13 : /* fall through */
1348 case 14 :
1349 if ((base_insn & 0xbf0) == 0x8b0)
1350 { itype = CRISV32F_INSN_SUBS_M_W_M; goto extract_sfmt_adds_m_w_m; }
1351 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1352 case 15 :
1353 if ((base_insn & 0xfff) == 0xcbf)
1354 { itype = CRISV32F_INSN_SUBSCWR; goto extract_sfmt_addscwr; }
1355 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1356 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1357 }
1358 }
1359 case 204 :
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 :
1379 if ((base_insn & 0xbf0) == 0x8c0)
1380 { itype = CRISV32F_INSN_CMPU_M_B_M; goto extract_sfmt_cmp_m_b_m; }
1381 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1382 case 15 :
1383 if ((base_insn & 0xfff) == 0xccf)
1384 { itype = CRISV32F_INSN_CMPUCBR; goto extract_sfmt_cmpucbr; }
1385 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1386 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1387 }
1388 }
1389 case 205 :
1390 {
1391 unsigned int val = (((insn >> 0) & (15 << 0)));
1392 switch (val)
1393 {
1394 case 0 : /* fall through */
1395 case 1 : /* fall through */
1396 case 2 : /* fall through */
1397 case 3 : /* fall through */
1398 case 4 : /* fall through */
1399 case 5 : /* fall through */
1400 case 6 : /* fall through */
1401 case 7 : /* fall through */
1402 case 8 : /* fall through */
1403 case 9 : /* fall through */
1404 case 10 : /* fall through */
1405 case 11 : /* fall through */
1406 case 12 : /* fall through */
1407 case 13 : /* fall through */
1408 case 14 :
1409 if ((base_insn & 0xbf0) == 0x8d0)
1410 { itype = CRISV32F_INSN_CMPU_M_W_M; goto extract_sfmt_cmp_m_w_m; }
1411 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1412 case 15 :
1413 if ((base_insn & 0xfff) == 0xcdf)
1414 { itype = CRISV32F_INSN_CMPUCWR; goto extract_sfmt_cmpucwr; }
1415 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1416 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1417 }
1418 }
1419 case 206 :
1420 {
1421 unsigned int val = (((insn >> 0) & (15 << 0)));
1422 switch (val)
1423 {
1424 case 0 : /* fall through */
1425 case 1 : /* fall through */
1426 case 2 : /* fall through */
1427 case 3 : /* fall through */
1428 case 4 : /* fall through */
1429 case 5 : /* fall through */
1430 case 6 : /* fall through */
1431 case 7 : /* fall through */
1432 case 8 : /* fall through */
1433 case 9 : /* fall through */
1434 case 10 : /* fall through */
1435 case 11 : /* fall through */
1436 case 12 : /* fall through */
1437 case 13 : /* fall through */
1438 case 14 :
1439 if ((base_insn & 0xbf0) == 0x8e0)
1440 { itype = CRISV32F_INSN_CMPS_M_B_M; goto extract_sfmt_cmp_m_b_m; }
1441 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1442 case 15 :
1443 if ((base_insn & 0xfff) == 0xcef)
1444 { itype = CRISV32F_INSN_CMPSCBR; goto extract_sfmt_cmpcbr; }
1445 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1446 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1447 }
1448 }
1449 case 207 :
1450 {
1451 unsigned int val = (((insn >> 0) & (15 << 0)));
1452 switch (val)
1453 {
1454 case 0 : /* fall through */
1455 case 1 : /* fall through */
1456 case 2 : /* fall through */
1457 case 3 : /* fall through */
1458 case 4 : /* fall through */
1459 case 5 : /* fall through */
1460 case 6 : /* fall through */
1461 case 7 : /* fall through */
1462 case 8 : /* fall through */
1463 case 9 : /* fall through */
1464 case 10 : /* fall through */
1465 case 11 : /* fall through */
1466 case 12 : /* fall through */
1467 case 13 : /* fall through */
1468 case 14 :
1469 if ((base_insn & 0xbf0) == 0x8f0)
1470 { itype = CRISV32F_INSN_CMPS_M_W_M; goto extract_sfmt_cmp_m_w_m; }
1471 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1472 case 15 :
1473 if ((base_insn & 0xfff) == 0xcff)
1474 { itype = CRISV32F_INSN_CMPSCWR; goto extract_sfmt_cmpcwr; }
1475 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1476 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1477 }
1478 }
1479 case 208 :
1480 if ((base_insn & 0xff0) == 0xd00)
1481 { itype = CRISV32F_INSN_MULS_B; goto extract_sfmt_muls_b; }
1482 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1483 case 209 :
1484 if ((base_insn & 0xff0) == 0xd10)
1485 { itype = CRISV32F_INSN_MULS_W; goto extract_sfmt_muls_b; }
1486 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1487 case 210 :
1488 if ((base_insn & 0xff0) == 0xd20)
1489 { itype = CRISV32F_INSN_MULS_D; goto extract_sfmt_muls_b; }
1490 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1491 case 211 :
1492 {
1493 unsigned int val = (((insn >> 12) & (1 << 0)));
1494 switch (val)
1495 {
1496 case 0 :
1497 if ((base_insn & 0xfff0) == 0xd30)
1498 { itype = CRISV32F_INSN_FIDXI; goto extract_sfmt_fidxi; }
1499 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1500 case 1 :
1501 if ((base_insn & 0xfff0) == 0x1d30)
1502 { itype = CRISV32F_INSN_FTAGI; goto extract_sfmt_fidxi; }
1503 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1504 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1505 }
1506 }
1507 case 212 :
1508 {
1509 unsigned int val = (((insn >> 0) & (15 << 0)));
1510 switch (val)
1511 {
1512 case 0 : /* fall through */
1513 case 1 : /* fall through */
1514 case 2 : /* fall through */
1515 case 3 : /* fall through */
1516 case 4 : /* fall through */
1517 case 5 : /* fall through */
1518 case 6 : /* fall through */
1519 case 7 : /* fall through */
1520 case 8 : /* fall through */
1521 case 9 : /* fall through */
1522 case 10 : /* fall through */
1523 case 11 : /* fall through */
1524 case 12 : /* fall through */
1525 case 13 : /* fall through */
1526 case 14 :
1527 if ((base_insn & 0xbf0) == 0x940)
1528 { itype = CRISV32F_INSN_ADDO_M_B_M; goto extract_sfmt_addo_m_b_m; }
1529 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1530 case 15 :
1531 if ((base_insn & 0xfff) == 0xd4f)
1532 { itype = CRISV32F_INSN_ADDO_CB; goto extract_sfmt_addo_cb; }
1533 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1534 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1535 }
1536 }
1537 case 213 :
1538 {
1539 unsigned int val = (((insn >> 0) & (15 << 0)));
1540 switch (val)
1541 {
1542 case 0 : /* fall through */
1543 case 1 : /* fall through */
1544 case 2 : /* fall through */
1545 case 3 : /* fall through */
1546 case 4 : /* fall through */
1547 case 5 : /* fall through */
1548 case 6 : /* fall through */
1549 case 7 : /* fall through */
1550 case 8 : /* fall through */
1551 case 9 : /* fall through */
1552 case 10 : /* fall through */
1553 case 11 : /* fall through */
1554 case 12 : /* fall through */
1555 case 13 : /* fall through */
1556 case 14 :
1557 if ((base_insn & 0xbf0) == 0x950)
1558 { itype = CRISV32F_INSN_ADDO_M_W_M; goto extract_sfmt_addo_m_w_m; }
1559 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1560 case 15 :
1561 if ((base_insn & 0xfff) == 0xd5f)
1562 { itype = CRISV32F_INSN_ADDO_CW; goto extract_sfmt_addo_cw; }
1563 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1564 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1565 }
1566 }
1567 case 214 :
1568 {
1569 unsigned int val = (((insn >> 0) & (15 << 0)));
1570 switch (val)
1571 {
1572 case 0 : /* fall through */
1573 case 1 : /* fall through */
1574 case 2 : /* fall through */
1575 case 3 : /* fall through */
1576 case 4 : /* fall through */
1577 case 5 : /* fall through */
1578 case 6 : /* fall through */
1579 case 7 : /* fall through */
1580 case 8 : /* fall through */
1581 case 9 : /* fall through */
1582 case 10 : /* fall through */
1583 case 11 : /* fall through */
1584 case 12 : /* fall through */
1585 case 13 : /* fall through */
1586 case 14 :
1587 if ((base_insn & 0xbf0) == 0x960)
1588 { itype = CRISV32F_INSN_ADDO_M_D_M; goto extract_sfmt_addo_m_d_m; }
1589 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1590 case 15 :
1591 if ((base_insn & 0xfff) == 0xd6f)
1592 { itype = CRISV32F_INSN_ADDO_CD; goto extract_sfmt_addo_cd; }
1593 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1594 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1595 }
1596 }
1597 case 215 :
1598 if ((base_insn & 0xfff) == 0xd7f)
1599 { itype = CRISV32F_INSN_LAPC_D; goto extract_sfmt_lapc_d; }
1600 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1601 case 218 :
1602 {
1603 unsigned int val = (((insn >> 0) & (15 << 0)));
1604 switch (val)
1605 {
1606 case 0 : /* fall through */
1607 case 1 : /* fall through */
1608 case 2 : /* fall through */
1609 case 3 : /* fall through */
1610 case 4 : /* fall through */
1611 case 5 : /* fall through */
1612 case 6 : /* fall through */
1613 case 7 : /* fall through */
1614 case 8 : /* fall through */
1615 case 9 : /* fall through */
1616 case 10 : /* fall through */
1617 case 11 : /* fall through */
1618 case 12 : /* fall through */
1619 case 13 : /* fall through */
1620 case 14 :
1621 if ((base_insn & 0xbf0) == 0x9a0)
1622 { itype = CRISV32F_INSN_ADDC_M; goto extract_sfmt_addc_m; }
1623 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1624 case 15 :
1625 if ((base_insn & 0xfff) == 0xdaf)
1626 { itype = CRISV32F_INSN_ADDC_C; goto extract_sfmt_addcdr; }
1627 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1628 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1629 }
1630 }
1631 case 219 :
1632 if ((base_insn & 0xfff) == 0xdbf)
1633 { itype = CRISV32F_INSN_JAS_C; goto extract_sfmt_jas_c; }
1634 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1635 case 220 :
1636 if ((base_insn & 0xfff) == 0xdcf)
1637 { itype = CRISV32F_INSN_BOUND_CB; goto extract_sfmt_bound_cb; }
1638 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1639 case 221 :
1640 if ((base_insn & 0xfff) == 0xddf)
1641 { itype = CRISV32F_INSN_BOUND_CW; goto extract_sfmt_bound_cw; }
1642 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1643 case 222 :
1644 if ((base_insn & 0xfff) == 0xdef)
1645 { itype = CRISV32F_INSN_BOUND_CD; goto extract_sfmt_bound_cd; }
1646 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1647 case 223 :
1648 {
1649 unsigned int val = (((insn >> 12) & (15 << 0)));
1650 switch (val)
1651 {
1652 case 0 : /* fall through */
1653 case 1 : /* fall through */
1654 case 2 : /* fall through */
1655 case 3 : /* fall through */
1656 case 4 : /* fall through */
1657 case 5 : /* fall through */
1658 case 6 : /* fall through */
1659 case 7 : /* fall through */
1660 case 8 : /* fall through */
1661 case 9 : /* fall through */
1662 case 10 : /* fall through */
1663 case 11 : /* fall through */
1664 case 12 : /* fall through */
1665 case 13 : /* fall through */
1666 case 15 :
1667 if ((base_insn & 0xfff) == 0xdff)
1668 { itype = CRISV32F_INSN_BCC_W; goto extract_sfmt_bcc_w; }
1669 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1670 case 14 :
1671 if ((base_insn & 0xffff) == 0xedff)
1672 { itype = CRISV32F_INSN_BA_W; goto extract_sfmt_ba_w; }
1673 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1674 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1675 }
1676 }
1677 case 224 :
1678 {
1679 unsigned int val = (((insn >> 0) & (15 << 0)));
1680 switch (val)
1681 {
1682 case 0 : /* fall through */
1683 case 1 : /* fall through */
1684 case 2 : /* fall through */
1685 case 3 : /* fall through */
1686 case 4 : /* fall through */
1687 case 5 : /* fall through */
1688 case 6 : /* fall through */
1689 case 7 : /* fall through */
1690 case 8 : /* fall through */
1691 case 9 : /* fall through */
1692 case 10 : /* fall through */
1693 case 11 : /* fall through */
1694 case 12 : /* fall through */
1695 case 13 : /* fall through */
1696 case 14 :
1697 if ((base_insn & 0xbf0) == 0xa00)
1698 { itype = CRISV32F_INSN_ADD_M_B_M; goto extract_sfmt_add_m_b_m; }
1699 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1700 case 15 :
1701 if ((base_insn & 0xfff) == 0xe0f)
1702 { itype = CRISV32F_INSN_ADDCBR; goto extract_sfmt_addcbr; }
1703 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1704 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1705 }
1706 }
1707 case 225 :
1708 {
1709 unsigned int val = (((insn >> 0) & (15 << 0)));
1710 switch (val)
1711 {
1712 case 0 : /* fall through */
1713 case 1 : /* fall through */
1714 case 2 : /* fall through */
1715 case 3 : /* fall through */
1716 case 4 : /* fall through */
1717 case 5 : /* fall through */
1718 case 6 : /* fall through */
1719 case 7 : /* fall through */
1720 case 8 : /* fall through */
1721 case 9 : /* fall through */
1722 case 10 : /* fall through */
1723 case 11 : /* fall through */
1724 case 12 : /* fall through */
1725 case 13 : /* fall through */
1726 case 14 :
1727 if ((base_insn & 0xbf0) == 0xa10)
1728 { itype = CRISV32F_INSN_ADD_M_W_M; goto extract_sfmt_add_m_w_m; }
1729 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1730 case 15 :
1731 if ((base_insn & 0xfff) == 0xe1f)
1732 { itype = CRISV32F_INSN_ADDCWR; goto extract_sfmt_addcwr; }
1733 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1734 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1735 }
1736 }
1737 case 226 :
1738 {
1739 unsigned int val = (((insn >> 0) & (15 << 0)));
1740 switch (val)
1741 {
1742 case 0 : /* fall through */
1743 case 1 : /* fall through */
1744 case 2 : /* fall through */
1745 case 3 : /* fall through */
1746 case 4 : /* fall through */
1747 case 5 : /* fall through */
1748 case 6 : /* fall through */
1749 case 7 : /* fall through */
1750 case 8 : /* fall through */
1751 case 9 : /* fall through */
1752 case 10 : /* fall through */
1753 case 11 : /* fall through */
1754 case 12 : /* fall through */
1755 case 13 : /* fall through */
1756 case 14 :
1757 if ((base_insn & 0xbf0) == 0xa20)
1758 { itype = CRISV32F_INSN_ADD_M_D_M; goto extract_sfmt_add_m_d_m; }
1759 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1760 case 15 :
1761 if ((base_insn & 0xfff) == 0xe2f)
1762 { itype = CRISV32F_INSN_ADDCDR; goto extract_sfmt_addcdr; }
1763 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1764 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1765 }
1766 }
1767 case 227 :
1768 {
1769 unsigned int val = (((insn >> 12) & (15 << 0)));
1770 switch (val)
1771 {
1772 case 0 : /* fall through */
1773 case 1 : /* fall through */
1774 case 4 : /* fall through */
1775 case 8 :
1776 if ((base_insn & 0xbf0) == 0xa30)
1777 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
1778 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1779 case 2 :
1780 {
1781 unsigned int val = (((insn >> 0) & (15 << 0)));
1782 switch (val)
1783 {
1784 case 0 : /* fall through */
1785 case 1 : /* fall through */
1786 case 2 : /* fall through */
1787 case 3 : /* fall through */
1788 case 4 : /* fall through */
1789 case 5 : /* fall through */
1790 case 6 : /* fall through */
1791 case 7 : /* fall through */
1792 case 8 : /* fall through */
1793 case 9 : /* fall through */
1794 case 10 : /* fall through */
1795 case 11 : /* fall through */
1796 case 12 : /* fall through */
1797 case 13 : /* fall through */
1798 case 14 :
1799 if ((base_insn & 0xbf0) == 0xa30)
1800 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
1801 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1802 case 15 :
1803 if ((base_insn & 0xffff) == 0x2e3f)
1804 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P2; goto extract_sfmt_move_c_sprv32_p2; }
1805 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1806 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1807 }
1808 }
1809 case 3 :
1810 {
1811 unsigned int val = (((insn >> 0) & (15 << 0)));
1812 switch (val)
1813 {
1814 case 0 : /* fall through */
1815 case 1 : /* fall through */
1816 case 2 : /* fall through */
1817 case 3 : /* fall through */
1818 case 4 : /* fall through */
1819 case 5 : /* fall through */
1820 case 6 : /* fall through */
1821 case 7 : /* fall through */
1822 case 8 : /* fall through */
1823 case 9 : /* fall through */
1824 case 10 : /* fall through */
1825 case 11 : /* fall through */
1826 case 12 : /* fall through */
1827 case 13 : /* fall through */
1828 case 14 :
1829 if ((base_insn & 0xbf0) == 0xa30)
1830 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
1831 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1832 case 15 :
1833 if ((base_insn & 0xffff) == 0x3e3f)
1834 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P3; goto extract_sfmt_move_c_sprv32_p2; }
1835 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1836 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1837 }
1838 }
1839 case 5 :
1840 {
1841 unsigned int val = (((insn >> 0) & (15 << 0)));
1842 switch (val)
1843 {
1844 case 0 : /* fall through */
1845 case 1 : /* fall through */
1846 case 2 : /* fall through */
1847 case 3 : /* fall through */
1848 case 4 : /* fall through */
1849 case 5 : /* fall through */
1850 case 6 : /* fall through */
1851 case 7 : /* fall through */
1852 case 8 : /* fall through */
1853 case 9 : /* fall through */
1854 case 10 : /* fall through */
1855 case 11 : /* fall through */
1856 case 12 : /* fall through */
1857 case 13 : /* fall through */
1858 case 14 :
1859 if ((base_insn & 0xbf0) == 0xa30)
1860 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
1861 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1862 case 15 :
1863 if ((base_insn & 0xffff) == 0x5e3f)
1864 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P5; goto extract_sfmt_move_c_sprv32_p2; }
1865 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1866 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1867 }
1868 }
1869 case 6 :
1870 {
1871 unsigned int val = (((insn >> 0) & (15 << 0)));
1872 switch (val)
1873 {
1874 case 0 : /* fall through */
1875 case 1 : /* fall through */
1876 case 2 : /* fall through */
1877 case 3 : /* fall through */
1878 case 4 : /* fall through */
1879 case 5 : /* fall through */
1880 case 6 : /* fall through */
1881 case 7 : /* fall through */
1882 case 8 : /* fall through */
1883 case 9 : /* fall through */
1884 case 10 : /* fall through */
1885 case 11 : /* fall through */
1886 case 12 : /* fall through */
1887 case 13 : /* fall through */
1888 case 14 :
1889 if ((base_insn & 0xbf0) == 0xa30)
1890 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
1891 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1892 case 15 :
1893 if ((base_insn & 0xffff) == 0x6e3f)
1894 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P6; goto extract_sfmt_move_c_sprv32_p2; }
1895 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1896 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1897 }
1898 }
1899 case 7 :
1900 {
1901 unsigned int val = (((insn >> 0) & (15 << 0)));
1902 switch (val)
1903 {
1904 case 0 : /* fall through */
1905 case 1 : /* fall through */
1906 case 2 : /* fall through */
1907 case 3 : /* fall through */
1908 case 4 : /* fall through */
1909 case 5 : /* fall through */
1910 case 6 : /* fall through */
1911 case 7 : /* fall through */
1912 case 8 : /* fall through */
1913 case 9 : /* fall through */
1914 case 10 : /* fall through */
1915 case 11 : /* fall through */
1916 case 12 : /* fall through */
1917 case 13 : /* fall through */
1918 case 14 :
1919 if ((base_insn & 0xbf0) == 0xa30)
1920 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
1921 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1922 case 15 :
1923 if ((base_insn & 0xffff) == 0x7e3f)
1924 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P7; goto extract_sfmt_move_c_sprv32_p2; }
1925 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1926 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1927 }
1928 }
1929 case 9 :
1930 {
1931 unsigned int val = (((insn >> 0) & (15 << 0)));
1932 switch (val)
1933 {
1934 case 0 : /* fall through */
1935 case 1 : /* fall through */
1936 case 2 : /* fall through */
1937 case 3 : /* fall through */
1938 case 4 : /* fall through */
1939 case 5 : /* fall through */
1940 case 6 : /* fall through */
1941 case 7 : /* fall through */
1942 case 8 : /* fall through */
1943 case 9 : /* fall through */
1944 case 10 : /* fall through */
1945 case 11 : /* fall through */
1946 case 12 : /* fall through */
1947 case 13 : /* fall through */
1948 case 14 :
1949 if ((base_insn & 0xbf0) == 0xa30)
1950 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
1951 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1952 case 15 :
1953 if ((base_insn & 0xffff) == 0x9e3f)
1954 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P9; goto extract_sfmt_move_c_sprv32_p2; }
1955 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1956 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1957 }
1958 }
1959 case 10 :
1960 {
1961 unsigned int val = (((insn >> 0) & (15 << 0)));
1962 switch (val)
1963 {
1964 case 0 : /* fall through */
1965 case 1 : /* fall through */
1966 case 2 : /* fall through */
1967 case 3 : /* fall through */
1968 case 4 : /* fall through */
1969 case 5 : /* fall through */
1970 case 6 : /* fall through */
1971 case 7 : /* fall through */
1972 case 8 : /* fall through */
1973 case 9 : /* fall through */
1974 case 10 : /* fall through */
1975 case 11 : /* fall through */
1976 case 12 : /* fall through */
1977 case 13 : /* fall through */
1978 case 14 :
1979 if ((base_insn & 0xbf0) == 0xa30)
1980 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
1981 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1982 case 15 :
1983 if ((base_insn & 0xffff) == 0xae3f)
1984 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P10; goto extract_sfmt_move_c_sprv32_p2; }
1985 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1986 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
1987 }
1988 }
1989 case 11 :
1990 {
1991 unsigned int val = (((insn >> 0) & (15 << 0)));
1992 switch (val)
1993 {
1994 case 0 : /* fall through */
1995 case 1 : /* fall through */
1996 case 2 : /* fall through */
1997 case 3 : /* fall through */
1998 case 4 : /* fall through */
1999 case 5 : /* fall through */
2000 case 6 : /* fall through */
2001 case 7 : /* fall through */
2002 case 8 : /* fall through */
2003 case 9 : /* fall through */
2004 case 10 : /* fall through */
2005 case 11 : /* fall through */
2006 case 12 : /* fall through */
2007 case 13 : /* fall through */
2008 case 14 :
2009 if ((base_insn & 0xbf0) == 0xa30)
2010 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
2011 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2012 case 15 :
2013 if ((base_insn & 0xffff) == 0xbe3f)
2014 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P11; goto extract_sfmt_move_c_sprv32_p2; }
2015 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2016 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2017 }
2018 }
2019 case 12 :
2020 {
2021 unsigned int val = (((insn >> 0) & (15 << 0)));
2022 switch (val)
2023 {
2024 case 0 : /* fall through */
2025 case 1 : /* fall through */
2026 case 2 : /* fall through */
2027 case 3 : /* fall through */
2028 case 4 : /* fall through */
2029 case 5 : /* fall through */
2030 case 6 : /* fall through */
2031 case 7 : /* fall through */
2032 case 8 : /* fall through */
2033 case 9 : /* fall through */
2034 case 10 : /* fall through */
2035 case 11 : /* fall through */
2036 case 12 : /* fall through */
2037 case 13 : /* fall through */
2038 case 14 :
2039 if ((base_insn & 0xbf0) == 0xa30)
2040 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
2041 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2042 case 15 :
2043 if ((base_insn & 0xffff) == 0xce3f)
2044 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P12; goto extract_sfmt_move_c_sprv32_p2; }
2045 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2046 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2047 }
2048 }
2049 case 13 :
2050 {
2051 unsigned int val = (((insn >> 0) & (15 << 0)));
2052 switch (val)
2053 {
2054 case 0 : /* fall through */
2055 case 1 : /* fall through */
2056 case 2 : /* fall through */
2057 case 3 : /* fall through */
2058 case 4 : /* fall through */
2059 case 5 : /* fall through */
2060 case 6 : /* fall through */
2061 case 7 : /* fall through */
2062 case 8 : /* fall through */
2063 case 9 : /* fall through */
2064 case 10 : /* fall through */
2065 case 11 : /* fall through */
2066 case 12 : /* fall through */
2067 case 13 : /* fall through */
2068 case 14 :
2069 if ((base_insn & 0xbf0) == 0xa30)
2070 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
2071 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2072 case 15 :
2073 if ((base_insn & 0xffff) == 0xde3f)
2074 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P13; goto extract_sfmt_move_c_sprv32_p2; }
2075 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2076 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2077 }
2078 }
2079 case 14 :
2080 {
2081 unsigned int val = (((insn >> 0) & (15 << 0)));
2082 switch (val)
2083 {
2084 case 0 : /* fall through */
2085 case 1 : /* fall through */
2086 case 2 : /* fall through */
2087 case 3 : /* fall through */
2088 case 4 : /* fall through */
2089 case 5 : /* fall through */
2090 case 6 : /* fall through */
2091 case 7 : /* fall through */
2092 case 8 : /* fall through */
2093 case 9 : /* fall through */
2094 case 10 : /* fall through */
2095 case 11 : /* fall through */
2096 case 12 : /* fall through */
2097 case 13 : /* fall through */
2098 case 14 :
2099 if ((base_insn & 0xbf0) == 0xa30)
2100 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
2101 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2102 case 15 :
2103 if ((base_insn & 0xffff) == 0xee3f)
2104 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P14; goto extract_sfmt_move_c_sprv32_p2; }
2105 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2106 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2107 }
2108 }
2109 case 15 :
2110 {
2111 unsigned int val = (((insn >> 0) & (15 << 0)));
2112 switch (val)
2113 {
2114 case 0 : /* fall through */
2115 case 1 : /* fall through */
2116 case 2 : /* fall through */
2117 case 3 : /* fall through */
2118 case 4 : /* fall through */
2119 case 5 : /* fall through */
2120 case 6 : /* fall through */
2121 case 7 : /* fall through */
2122 case 8 : /* fall through */
2123 case 9 : /* fall through */
2124 case 10 : /* fall through */
2125 case 11 : /* fall through */
2126 case 12 : /* fall through */
2127 case 13 : /* fall through */
2128 case 14 :
2129 if ((base_insn & 0xbf0) == 0xa30)
2130 { itype = CRISV32F_INSN_MOVE_M_SPRV32; goto extract_sfmt_move_m_sprv32; }
2131 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2132 case 15 :
2133 if ((base_insn & 0xffff) == 0xfe3f)
2134 { itype = CRISV32F_INSN_MOVE_C_SPRV32_P15; goto extract_sfmt_move_c_sprv32_p2; }
2135 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2136 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2137 }
2138 }
2139 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2140 }
2141 }
2142 case 228 :
2143 {
2144 unsigned int val = (((insn >> 0) & (15 << 0)));
2145 switch (val)
2146 {
2147 case 0 : /* fall through */
2148 case 1 : /* fall through */
2149 case 2 : /* fall through */
2150 case 3 : /* fall through */
2151 case 4 : /* fall through */
2152 case 5 : /* fall through */
2153 case 6 : /* fall through */
2154 case 7 : /* fall through */
2155 case 8 : /* fall through */
2156 case 9 : /* fall through */
2157 case 10 : /* fall through */
2158 case 11 : /* fall through */
2159 case 12 : /* fall through */
2160 case 13 : /* fall through */
2161 case 14 :
2162 if ((base_insn & 0xbf0) == 0xa40)
2163 { itype = CRISV32F_INSN_MOVE_M_B_M; goto extract_sfmt_move_m_b_m; }
2164 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2165 case 15 :
2166 if ((base_insn & 0xfff) == 0xe4f)
2167 { itype = CRISV32F_INSN_MOVECBR; goto extract_sfmt_movecbr; }
2168 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2169 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2170 }
2171 }
2172 case 229 :
2173 {
2174 unsigned int val = (((insn >> 0) & (15 << 0)));
2175 switch (val)
2176 {
2177 case 0 : /* fall through */
2178 case 1 : /* fall through */
2179 case 2 : /* fall through */
2180 case 3 : /* fall through */
2181 case 4 : /* fall through */
2182 case 5 : /* fall through */
2183 case 6 : /* fall through */
2184 case 7 : /* fall through */
2185 case 8 : /* fall through */
2186 case 9 : /* fall through */
2187 case 10 : /* fall through */
2188 case 11 : /* fall through */
2189 case 12 : /* fall through */
2190 case 13 : /* fall through */
2191 case 14 :
2192 if ((base_insn & 0xbf0) == 0xa50)
2193 { itype = CRISV32F_INSN_MOVE_M_W_M; goto extract_sfmt_move_m_w_m; }
2194 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2195 case 15 :
2196 if ((base_insn & 0xfff) == 0xe5f)
2197 { itype = CRISV32F_INSN_MOVECWR; goto extract_sfmt_movecwr; }
2198 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2199 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2200 }
2201 }
2202 case 230 :
2203 {
2204 unsigned int val = (((insn >> 0) & (15 << 0)));
2205 switch (val)
2206 {
2207 case 0 : /* fall through */
2208 case 1 : /* fall through */
2209 case 2 : /* fall through */
2210 case 3 : /* fall through */
2211 case 4 : /* fall through */
2212 case 5 : /* fall through */
2213 case 6 : /* fall through */
2214 case 7 : /* fall through */
2215 case 8 : /* fall through */
2216 case 9 : /* fall through */
2217 case 10 : /* fall through */
2218 case 11 : /* fall through */
2219 case 12 : /* fall through */
2220 case 13 : /* fall through */
2221 case 14 :
2222 if ((base_insn & 0xbf0) == 0xa60)
2223 { itype = CRISV32F_INSN_MOVE_M_D_M; goto extract_sfmt_move_m_d_m; }
2224 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2225 case 15 :
2226 if ((base_insn & 0xfff) == 0xe6f)
2227 { itype = CRISV32F_INSN_MOVECDR; goto extract_sfmt_movecdr; }
2228 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2229 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2230 }
2231 }
2232 case 232 :
2233 {
2234 unsigned int val = (((insn >> 0) & (15 << 0)));
2235 switch (val)
2236 {
2237 case 0 : /* fall through */
2238 case 1 : /* fall through */
2239 case 2 : /* fall through */
2240 case 3 : /* fall through */
2241 case 4 : /* fall through */
2242 case 5 : /* fall through */
2243 case 6 : /* fall through */
2244 case 7 : /* fall through */
2245 case 8 : /* fall through */
2246 case 9 : /* fall through */
2247 case 10 : /* fall through */
2248 case 11 : /* fall through */
2249 case 12 : /* fall through */
2250 case 13 : /* fall through */
2251 case 14 :
2252 if ((base_insn & 0xbf0) == 0xa80)
2253 { itype = CRISV32F_INSN_SUB_M_B_M; goto extract_sfmt_add_m_b_m; }
2254 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2255 case 15 :
2256 if ((base_insn & 0xfff) == 0xe8f)
2257 { itype = CRISV32F_INSN_SUBCBR; goto extract_sfmt_addcbr; }
2258 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2259 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2260 }
2261 }
2262 case 233 :
2263 {
2264 unsigned int val = (((insn >> 0) & (15 << 0)));
2265 switch (val)
2266 {
2267 case 0 : /* fall through */
2268 case 1 : /* fall through */
2269 case 2 : /* fall through */
2270 case 3 : /* fall through */
2271 case 4 : /* fall through */
2272 case 5 : /* fall through */
2273 case 6 : /* fall through */
2274 case 7 : /* fall through */
2275 case 8 : /* fall through */
2276 case 9 : /* fall through */
2277 case 10 : /* fall through */
2278 case 11 : /* fall through */
2279 case 12 : /* fall through */
2280 case 13 : /* fall through */
2281 case 14 :
2282 if ((base_insn & 0xbf0) == 0xa90)
2283 { itype = CRISV32F_INSN_SUB_M_W_M; goto extract_sfmt_add_m_w_m; }
2284 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2285 case 15 :
2286 if ((base_insn & 0xfff) == 0xe9f)
2287 { itype = CRISV32F_INSN_SUBCWR; goto extract_sfmt_addcwr; }
2288 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2289 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2290 }
2291 }
2292 case 234 :
2293 {
2294 unsigned int val = (((insn >> 0) & (15 << 0)));
2295 switch (val)
2296 {
2297 case 0 : /* fall through */
2298 case 1 : /* fall through */
2299 case 2 : /* fall through */
2300 case 3 : /* fall through */
2301 case 4 : /* fall through */
2302 case 5 : /* fall through */
2303 case 6 : /* fall through */
2304 case 7 : /* fall through */
2305 case 8 : /* fall through */
2306 case 9 : /* fall through */
2307 case 10 : /* fall through */
2308 case 11 : /* fall through */
2309 case 12 : /* fall through */
2310 case 13 : /* fall through */
2311 case 14 :
2312 if ((base_insn & 0xbf0) == 0xaa0)
2313 { itype = CRISV32F_INSN_SUB_M_D_M; goto extract_sfmt_add_m_d_m; }
2314 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2315 case 15 :
2316 if ((base_insn & 0xfff) == 0xeaf)
2317 { itype = CRISV32F_INSN_SUBCDR; goto extract_sfmt_addcdr; }
2318 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2319 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2320 }
2321 }
2322 case 235 :
2323 if ((base_insn & 0xfff) == 0xebf)
2324 { itype = CRISV32F_INSN_BAS_C; goto extract_sfmt_bas_c; }
2325 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2326 case 236 :
2327 {
2328 unsigned int val = (((insn >> 0) & (15 << 0)));
2329 switch (val)
2330 {
2331 case 0 : /* fall through */
2332 case 1 : /* fall through */
2333 case 2 : /* fall through */
2334 case 3 : /* fall through */
2335 case 4 : /* fall through */
2336 case 5 : /* fall through */
2337 case 6 : /* fall through */
2338 case 7 : /* fall through */
2339 case 8 : /* fall through */
2340 case 9 : /* fall through */
2341 case 10 : /* fall through */
2342 case 11 : /* fall through */
2343 case 12 : /* fall through */
2344 case 13 : /* fall through */
2345 case 14 :
2346 if ((base_insn & 0xbf0) == 0xac0)
2347 { itype = CRISV32F_INSN_CMP_M_B_M; goto extract_sfmt_cmp_m_b_m; }
2348 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2349 case 15 :
2350 if ((base_insn & 0xfff) == 0xecf)
2351 { itype = CRISV32F_INSN_CMPCBR; goto extract_sfmt_cmpcbr; }
2352 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2353 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2354 }
2355 }
2356 case 237 :
2357 {
2358 unsigned int val = (((insn >> 0) & (15 << 0)));
2359 switch (val)
2360 {
2361 case 0 : /* fall through */
2362 case 1 : /* fall through */
2363 case 2 : /* fall through */
2364 case 3 : /* fall through */
2365 case 4 : /* fall through */
2366 case 5 : /* fall through */
2367 case 6 : /* fall through */
2368 case 7 : /* fall through */
2369 case 8 : /* fall through */
2370 case 9 : /* fall through */
2371 case 10 : /* fall through */
2372 case 11 : /* fall through */
2373 case 12 : /* fall through */
2374 case 13 : /* fall through */
2375 case 14 :
2376 if ((base_insn & 0xbf0) == 0xad0)
2377 { itype = CRISV32F_INSN_CMP_M_W_M; goto extract_sfmt_cmp_m_w_m; }
2378 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2379 case 15 :
2380 if ((base_insn & 0xfff) == 0xedf)
2381 { itype = CRISV32F_INSN_CMPCWR; goto extract_sfmt_cmpcwr; }
2382 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2383 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2384 }
2385 }
2386 case 238 :
2387 {
2388 unsigned int val = (((insn >> 0) & (15 << 0)));
2389 switch (val)
2390 {
2391 case 0 : /* fall through */
2392 case 1 : /* fall through */
2393 case 2 : /* fall through */
2394 case 3 : /* fall through */
2395 case 4 : /* fall through */
2396 case 5 : /* fall through */
2397 case 6 : /* fall through */
2398 case 7 : /* fall through */
2399 case 8 : /* fall through */
2400 case 9 : /* fall through */
2401 case 10 : /* fall through */
2402 case 11 : /* fall through */
2403 case 12 : /* fall through */
2404 case 13 : /* fall through */
2405 case 14 :
2406 if ((base_insn & 0xbf0) == 0xae0)
2407 { itype = CRISV32F_INSN_CMP_M_D_M; goto extract_sfmt_cmp_m_d_m; }
2408 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2409 case 15 :
2410 if ((base_insn & 0xfff) == 0xeef)
2411 { itype = CRISV32F_INSN_CMPCDR; goto extract_sfmt_cmpcdr; }
2412 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2413 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2414 }
2415 }
2416 case 239 :
2417 if ((base_insn & 0xfff) == 0xeff)
2418 { itype = CRISV32F_INSN_BASC_C; goto extract_sfmt_bas_c; }
2419 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2420 case 240 :
2421 {
2422 unsigned int val = (((insn >> 0) & (15 << 0)));
2423 switch (val)
2424 {
2425 case 0 : /* fall through */
2426 case 1 : /* fall through */
2427 case 2 : /* fall through */
2428 case 3 : /* fall through */
2429 case 4 : /* fall through */
2430 case 5 : /* fall through */
2431 case 6 : /* fall through */
2432 case 7 : /* fall through */
2433 case 8 : /* fall through */
2434 case 9 : /* fall through */
2435 case 10 : /* fall through */
2436 case 11 : /* fall through */
2437 case 12 : /* fall through */
2438 case 13 : /* fall through */
2439 case 14 :
2440 if ((base_insn & 0xbf0) == 0xb00)
2441 { itype = CRISV32F_INSN_AND_M_B_M; goto extract_sfmt_and_m_b_m; }
2442 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2443 case 15 :
2444 if ((base_insn & 0xfff) == 0xf0f)
2445 { itype = CRISV32F_INSN_ANDCBR; goto extract_sfmt_andcbr; }
2446 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2447 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2448 }
2449 }
2450 case 241 :
2451 {
2452 unsigned int val = (((insn >> 0) & (15 << 0)));
2453 switch (val)
2454 {
2455 case 0 : /* fall through */
2456 case 1 : /* fall through */
2457 case 2 : /* fall through */
2458 case 3 : /* fall through */
2459 case 4 : /* fall through */
2460 case 5 : /* fall through */
2461 case 6 : /* fall through */
2462 case 7 : /* fall through */
2463 case 8 : /* fall through */
2464 case 9 : /* fall through */
2465 case 10 : /* fall through */
2466 case 11 : /* fall through */
2467 case 12 : /* fall through */
2468 case 13 : /* fall through */
2469 case 14 :
2470 if ((base_insn & 0xbf0) == 0xb10)
2471 { itype = CRISV32F_INSN_AND_M_W_M; goto extract_sfmt_and_m_w_m; }
2472 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2473 case 15 :
2474 if ((base_insn & 0xfff) == 0xf1f)
2475 { itype = CRISV32F_INSN_ANDCWR; goto extract_sfmt_andcwr; }
2476 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2477 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2478 }
2479 }
2480 case 242 :
2481 {
2482 unsigned int val = (((insn >> 0) & (15 << 0)));
2483 switch (val)
2484 {
2485 case 0 : /* fall through */
2486 case 1 : /* fall through */
2487 case 2 : /* fall through */
2488 case 3 : /* fall through */
2489 case 4 : /* fall through */
2490 case 5 : /* fall through */
2491 case 6 : /* fall through */
2492 case 7 : /* fall through */
2493 case 8 : /* fall through */
2494 case 9 : /* fall through */
2495 case 10 : /* fall through */
2496 case 11 : /* fall through */
2497 case 12 : /* fall through */
2498 case 13 : /* fall through */
2499 case 14 :
2500 if ((base_insn & 0xbf0) == 0xb20)
2501 { itype = CRISV32F_INSN_AND_M_D_M; goto extract_sfmt_and_m_d_m; }
2502 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2503 case 15 :
2504 if ((base_insn & 0xfff) == 0xf2f)
2505 { itype = CRISV32F_INSN_ANDCDR; goto extract_sfmt_andcdr; }
2506 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2507 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2508 }
2509 }
2510 case 243 :
2511 if ((base_insn & 0xfff) == 0xf3f)
2512 { itype = CRISV32F_INSN_JASC_C; goto extract_sfmt_jas_c; }
2513 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2514 case 244 :
2515 {
2516 unsigned int val = (((insn >> 0) & (15 << 0)));
2517 switch (val)
2518 {
2519 case 0 : /* fall through */
2520 case 1 : /* fall through */
2521 case 2 : /* fall through */
2522 case 3 : /* fall through */
2523 case 4 : /* fall through */
2524 case 5 : /* fall through */
2525 case 6 : /* fall through */
2526 case 7 : /* fall through */
2527 case 8 : /* fall through */
2528 case 9 : /* fall through */
2529 case 10 : /* fall through */
2530 case 11 : /* fall through */
2531 case 12 : /* fall through */
2532 case 13 : /* fall through */
2533 case 14 :
2534 if ((base_insn & 0xbf0) == 0xb40)
2535 { itype = CRISV32F_INSN_OR_M_B_M; goto extract_sfmt_and_m_b_m; }
2536 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2537 case 15 :
2538 if ((base_insn & 0xfff) == 0xf4f)
2539 { itype = CRISV32F_INSN_ORCBR; goto extract_sfmt_andcbr; }
2540 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2541 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2542 }
2543 }
2544 case 245 :
2545 {
2546 unsigned int val = (((insn >> 0) & (15 << 0)));
2547 switch (val)
2548 {
2549 case 0 : /* fall through */
2550 case 1 : /* fall through */
2551 case 2 : /* fall through */
2552 case 3 : /* fall through */
2553 case 4 : /* fall through */
2554 case 5 : /* fall through */
2555 case 6 : /* fall through */
2556 case 7 : /* fall through */
2557 case 8 : /* fall through */
2558 case 9 : /* fall through */
2559 case 10 : /* fall through */
2560 case 11 : /* fall through */
2561 case 12 : /* fall through */
2562 case 13 : /* fall through */
2563 case 14 :
2564 if ((base_insn & 0xbf0) == 0xb50)
2565 { itype = CRISV32F_INSN_OR_M_W_M; goto extract_sfmt_and_m_w_m; }
2566 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2567 case 15 :
2568 if ((base_insn & 0xfff) == 0xf5f)
2569 { itype = CRISV32F_INSN_ORCWR; goto extract_sfmt_andcwr; }
2570 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2571 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2572 }
2573 }
2574 case 246 :
2575 {
2576 unsigned int val = (((insn >> 0) & (15 << 0)));
2577 switch (val)
2578 {
2579 case 0 : /* fall through */
2580 case 1 : /* fall through */
2581 case 2 : /* fall through */
2582 case 3 : /* fall through */
2583 case 4 : /* fall through */
2584 case 5 : /* fall through */
2585 case 6 : /* fall through */
2586 case 7 : /* fall through */
2587 case 8 : /* fall through */
2588 case 9 : /* fall through */
2589 case 10 : /* fall through */
2590 case 11 : /* fall through */
2591 case 12 : /* fall through */
2592 case 13 : /* fall through */
2593 case 14 :
2594 if ((base_insn & 0xbf0) == 0xb60)
2595 { itype = CRISV32F_INSN_OR_M_D_M; goto extract_sfmt_and_m_d_m; }
2596 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2597 case 15 :
2598 if ((base_insn & 0xfff) == 0xf6f)
2599 { itype = CRISV32F_INSN_ORCDR; goto extract_sfmt_andcdr; }
2600 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2601 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2602 }
2603 }
2604 case 247 :
2605 if ((base_insn & 0xff0) == 0xf70)
2606 { itype = CRISV32F_INSN_MOVE_SS_R; goto extract_sfmt_move_ss_r; }
2607 itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2608 default : itype = CRISV32F_INSN_X_INVALID; goto extract_sfmt_empty;
2609 }
2610 }
2611 }
2612
2613 /* The instruction has been decoded, now extract the fields. */
2614
2615 extract_sfmt_empty:
2616 {
2617 const IDESC *idesc = &crisv32f_insn_data[itype];
2618 #define FLD(f) abuf->fields.fmt_empty.f
2619
2620
2621 /* Record the fields for the semantic handler. */
2622 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
2623
2624 #undef FLD
2625 return idesc;
2626 }
2627
2628 extract_sfmt_move_b_r:
2629 {
2630 const IDESC *idesc = &crisv32f_insn_data[itype];
2631 CGEN_INSN_INT insn = base_insn;
2632 #define FLD(f) abuf->fields.sfmt_addc_m.f
2633 UINT f_operand2;
2634 UINT f_operand1;
2635
2636 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2637 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2638
2639 /* Record the fields for the semantic handler. */
2640 FLD (f_operand1) = f_operand1;
2641 FLD (f_operand2) = f_operand2;
2642 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));
2643
2644 #if WITH_PROFILE_MODEL_P
2645 /* Record the fields for profiling. */
2646 if (PROFILE_MODEL_P (current_cpu))
2647 {
2648 FLD (in_Rs) = f_operand1;
2649 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
2650 }
2651 #endif
2652 #undef FLD
2653 return idesc;
2654 }
2655
2656 extract_sfmt_move_d_r:
2657 {
2658 const IDESC *idesc = &crisv32f_insn_data[itype];
2659 CGEN_INSN_INT insn = base_insn;
2660 #define FLD(f) abuf->fields.sfmt_addc_m.f
2661 UINT f_operand2;
2662 UINT f_operand1;
2663
2664 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2665 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2666
2667 /* Record the fields for the semantic handler. */
2668 FLD (f_operand1) = f_operand1;
2669 FLD (f_operand2) = f_operand2;
2670 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));
2671
2672 #if WITH_PROFILE_MODEL_P
2673 /* Record the fields for profiling. */
2674 if (PROFILE_MODEL_P (current_cpu))
2675 {
2676 FLD (in_Rs) = f_operand1;
2677 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
2678 }
2679 #endif
2680 #undef FLD
2681 return idesc;
2682 }
2683
2684 extract_sfmt_moveq:
2685 {
2686 const IDESC *idesc = &crisv32f_insn_data[itype];
2687 CGEN_INSN_INT insn = base_insn;
2688 #define FLD(f) abuf->fields.sfmt_moveq.f
2689 UINT f_operand2;
2690 INT f_s6;
2691
2692 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2693 f_s6 = EXTRACT_LSB0_INT (insn, 16, 5, 6);
2694
2695 /* Record the fields for the semantic handler. */
2696 FLD (f_s6) = f_s6;
2697 FLD (f_operand2) = f_operand2;
2698 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));
2699
2700 #if WITH_PROFILE_MODEL_P
2701 /* Record the fields for profiling. */
2702 if (PROFILE_MODEL_P (current_cpu))
2703 {
2704 FLD (out_Rd) = f_operand2;
2705 }
2706 #endif
2707 #undef FLD
2708 return idesc;
2709 }
2710
2711 extract_sfmt_movs_b_r:
2712 {
2713 const IDESC *idesc = &crisv32f_insn_data[itype];
2714 CGEN_INSN_INT insn = base_insn;
2715 #define FLD(f) abuf->fields.sfmt_muls_b.f
2716 UINT f_operand2;
2717 UINT f_operand1;
2718
2719 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2720 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2721
2722 /* Record the fields for the semantic handler. */
2723 FLD (f_operand1) = f_operand1;
2724 FLD (f_operand2) = f_operand2;
2725 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));
2726
2727 #if WITH_PROFILE_MODEL_P
2728 /* Record the fields for profiling. */
2729 if (PROFILE_MODEL_P (current_cpu))
2730 {
2731 FLD (in_Rs) = f_operand1;
2732 FLD (out_Rd) = f_operand2;
2733 }
2734 #endif
2735 #undef FLD
2736 return idesc;
2737 }
2738
2739 extract_sfmt_movecbr:
2740 {
2741 const IDESC *idesc = &crisv32f_insn_data[itype];
2742 CGEN_INSN_INT insn = base_insn;
2743 #define FLD(f) abuf->fields.sfmt_addcbr.f
2744 INT f_indir_pc__byte;
2745 UINT f_operand2;
2746 /* Contents of trailing part of insn. */
2747 UINT word_1;
2748
2749 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2750 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2751 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2752
2753 /* Record the fields for the semantic handler. */
2754 FLD (f_operand2) = f_operand2;
2755 FLD (f_indir_pc__byte) = f_indir_pc__byte;
2756 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));
2757
2758 #if WITH_PROFILE_MODEL_P
2759 /* Record the fields for profiling. */
2760 if (PROFILE_MODEL_P (current_cpu))
2761 {
2762 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
2763 }
2764 #endif
2765 #undef FLD
2766 return idesc;
2767 }
2768
2769 extract_sfmt_movecwr:
2770 {
2771 const IDESC *idesc = &crisv32f_insn_data[itype];
2772 CGEN_INSN_INT insn = base_insn;
2773 #define FLD(f) abuf->fields.sfmt_addcwr.f
2774 INT f_indir_pc__word;
2775 UINT f_operand2;
2776 /* Contents of trailing part of insn. */
2777 UINT word_1;
2778
2779 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2780 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2781 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2782
2783 /* Record the fields for the semantic handler. */
2784 FLD (f_operand2) = f_operand2;
2785 FLD (f_indir_pc__word) = f_indir_pc__word;
2786 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));
2787
2788 #if WITH_PROFILE_MODEL_P
2789 /* Record the fields for profiling. */
2790 if (PROFILE_MODEL_P (current_cpu))
2791 {
2792 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
2793 }
2794 #endif
2795 #undef FLD
2796 return idesc;
2797 }
2798
2799 extract_sfmt_movecdr:
2800 {
2801 const IDESC *idesc = &crisv32f_insn_data[itype];
2802 CGEN_INSN_INT insn = base_insn;
2803 #define FLD(f) abuf->fields.sfmt_bound_cd.f
2804 INT f_indir_pc__dword;
2805 UINT f_operand2;
2806 /* Contents of trailing part of insn. */
2807 UINT word_1;
2808
2809 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2810 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
2811 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2812
2813 /* Record the fields for the semantic handler. */
2814 FLD (f_indir_pc__dword) = f_indir_pc__dword;
2815 FLD (f_operand2) = f_operand2;
2816 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));
2817
2818 #if WITH_PROFILE_MODEL_P
2819 /* Record the fields for profiling. */
2820 if (PROFILE_MODEL_P (current_cpu))
2821 {
2822 FLD (out_Rd) = f_operand2;
2823 }
2824 #endif
2825 #undef FLD
2826 return idesc;
2827 }
2828
2829 extract_sfmt_movscbr:
2830 {
2831 const IDESC *idesc = &crisv32f_insn_data[itype];
2832 CGEN_INSN_INT insn = base_insn;
2833 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2834 UINT f_operand2;
2835 INT f_indir_pc__byte;
2836 /* Contents of trailing part of insn. */
2837 UINT word_1;
2838
2839 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2840 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2841 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2842
2843 /* Record the fields for the semantic handler. */
2844 FLD (f_indir_pc__byte) = f_indir_pc__byte;
2845 FLD (f_operand2) = f_operand2;
2846 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));
2847
2848 #if WITH_PROFILE_MODEL_P
2849 /* Record the fields for profiling. */
2850 if (PROFILE_MODEL_P (current_cpu))
2851 {
2852 FLD (out_Rd) = f_operand2;
2853 }
2854 #endif
2855 #undef FLD
2856 return idesc;
2857 }
2858
2859 extract_sfmt_movscwr:
2860 {
2861 const IDESC *idesc = &crisv32f_insn_data[itype];
2862 CGEN_INSN_INT insn = base_insn;
2863 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2864 UINT f_operand2;
2865 INT f_indir_pc__word;
2866 /* Contents of trailing part of insn. */
2867 UINT word_1;
2868
2869 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2870 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2871 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2872
2873 /* Record the fields for the semantic handler. */
2874 FLD (f_indir_pc__word) = f_indir_pc__word;
2875 FLD (f_operand2) = f_operand2;
2876 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));
2877
2878 #if WITH_PROFILE_MODEL_P
2879 /* Record the fields for profiling. */
2880 if (PROFILE_MODEL_P (current_cpu))
2881 {
2882 FLD (out_Rd) = f_operand2;
2883 }
2884 #endif
2885 #undef FLD
2886 return idesc;
2887 }
2888
2889 extract_sfmt_movucbr:
2890 {
2891 const IDESC *idesc = &crisv32f_insn_data[itype];
2892 CGEN_INSN_INT insn = base_insn;
2893 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2894 UINT f_operand2;
2895 INT f_indir_pc__byte;
2896 /* Contents of trailing part of insn. */
2897 UINT word_1;
2898
2899 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2900 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2901 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2902
2903 /* Record the fields for the semantic handler. */
2904 FLD (f_indir_pc__byte) = f_indir_pc__byte;
2905 FLD (f_operand2) = f_operand2;
2906 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));
2907
2908 #if WITH_PROFILE_MODEL_P
2909 /* Record the fields for profiling. */
2910 if (PROFILE_MODEL_P (current_cpu))
2911 {
2912 FLD (out_Rd) = f_operand2;
2913 }
2914 #endif
2915 #undef FLD
2916 return idesc;
2917 }
2918
2919 extract_sfmt_movucwr:
2920 {
2921 const IDESC *idesc = &crisv32f_insn_data[itype];
2922 CGEN_INSN_INT insn = base_insn;
2923 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2924 UINT f_operand2;
2925 INT f_indir_pc__word;
2926 /* Contents of trailing part of insn. */
2927 UINT word_1;
2928
2929 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2930 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2931 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2932
2933 /* Record the fields for the semantic handler. */
2934 FLD (f_indir_pc__word) = f_indir_pc__word;
2935 FLD (f_operand2) = f_operand2;
2936 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));
2937
2938 #if WITH_PROFILE_MODEL_P
2939 /* Record the fields for profiling. */
2940 if (PROFILE_MODEL_P (current_cpu))
2941 {
2942 FLD (out_Rd) = f_operand2;
2943 }
2944 #endif
2945 #undef FLD
2946 return idesc;
2947 }
2948
2949 extract_sfmt_addq:
2950 {
2951 const IDESC *idesc = &crisv32f_insn_data[itype];
2952 CGEN_INSN_INT insn = base_insn;
2953 #define FLD(f) abuf->fields.sfmt_addq.f
2954 UINT f_operand2;
2955 UINT f_u6;
2956
2957 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2958 f_u6 = EXTRACT_LSB0_UINT (insn, 16, 5, 6);
2959
2960 /* Record the fields for the semantic handler. */
2961 FLD (f_operand2) = f_operand2;
2962 FLD (f_u6) = f_u6;
2963 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));
2964
2965 #if WITH_PROFILE_MODEL_P
2966 /* Record the fields for profiling. */
2967 if (PROFILE_MODEL_P (current_cpu))
2968 {
2969 FLD (in_Rd) = f_operand2;
2970 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
2971 }
2972 #endif
2973 #undef FLD
2974 return idesc;
2975 }
2976
2977 extract_sfmt_cmp_r_b_r:
2978 {
2979 const IDESC *idesc = &crisv32f_insn_data[itype];
2980 CGEN_INSN_INT insn = base_insn;
2981 #define FLD(f) abuf->fields.sfmt_muls_b.f
2982 UINT f_operand2;
2983 UINT f_operand1;
2984
2985 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2986 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2987
2988 /* Record the fields for the semantic handler. */
2989 FLD (f_operand2) = f_operand2;
2990 FLD (f_operand1) = f_operand1;
2991 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));
2992
2993 #if WITH_PROFILE_MODEL_P
2994 /* Record the fields for profiling. */
2995 if (PROFILE_MODEL_P (current_cpu))
2996 {
2997 FLD (in_Rd) = f_operand2;
2998 FLD (in_Rs) = f_operand1;
2999 }
3000 #endif
3001 #undef FLD
3002 return idesc;
3003 }
3004
3005 extract_sfmt_cmp_m_b_m:
3006 {
3007 const IDESC *idesc = &crisv32f_insn_data[itype];
3008 CGEN_INSN_INT insn = base_insn;
3009 #define FLD(f) abuf->fields.sfmt_addc_m.f
3010 UINT f_operand2;
3011 UINT f_memmode;
3012 UINT f_operand1;
3013
3014 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3015 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3016 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3017
3018 /* Record the fields for the semantic handler. */
3019 FLD (f_operand2) = f_operand2;
3020 FLD (f_operand1) = f_operand1;
3021 FLD (f_memmode) = f_memmode;
3022 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));
3023
3024 #if WITH_PROFILE_MODEL_P
3025 /* Record the fields for profiling. */
3026 if (PROFILE_MODEL_P (current_cpu))
3027 {
3028 FLD (in_Rd) = f_operand2;
3029 FLD (in_Rs) = f_operand1;
3030 FLD (out_Rs) = f_operand1;
3031 }
3032 #endif
3033 #undef FLD
3034 return idesc;
3035 }
3036
3037 extract_sfmt_cmp_m_w_m:
3038 {
3039 const IDESC *idesc = &crisv32f_insn_data[itype];
3040 CGEN_INSN_INT insn = base_insn;
3041 #define FLD(f) abuf->fields.sfmt_addc_m.f
3042 UINT f_operand2;
3043 UINT f_memmode;
3044 UINT f_operand1;
3045
3046 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3047 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3048 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3049
3050 /* Record the fields for the semantic handler. */
3051 FLD (f_operand2) = f_operand2;
3052 FLD (f_operand1) = f_operand1;
3053 FLD (f_memmode) = f_memmode;
3054 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));
3055
3056 #if WITH_PROFILE_MODEL_P
3057 /* Record the fields for profiling. */
3058 if (PROFILE_MODEL_P (current_cpu))
3059 {
3060 FLD (in_Rd) = f_operand2;
3061 FLD (in_Rs) = f_operand1;
3062 FLD (out_Rs) = f_operand1;
3063 }
3064 #endif
3065 #undef FLD
3066 return idesc;
3067 }
3068
3069 extract_sfmt_cmp_m_d_m:
3070 {
3071 const IDESC *idesc = &crisv32f_insn_data[itype];
3072 CGEN_INSN_INT insn = base_insn;
3073 #define FLD(f) abuf->fields.sfmt_addc_m.f
3074 UINT f_operand2;
3075 UINT f_memmode;
3076 UINT f_operand1;
3077
3078 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3079 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3080 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3081
3082 /* Record the fields for the semantic handler. */
3083 FLD (f_operand2) = f_operand2;
3084 FLD (f_operand1) = f_operand1;
3085 FLD (f_memmode) = f_memmode;
3086 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));
3087
3088 #if WITH_PROFILE_MODEL_P
3089 /* Record the fields for profiling. */
3090 if (PROFILE_MODEL_P (current_cpu))
3091 {
3092 FLD (in_Rd) = f_operand2;
3093 FLD (in_Rs) = f_operand1;
3094 FLD (out_Rs) = f_operand1;
3095 }
3096 #endif
3097 #undef FLD
3098 return idesc;
3099 }
3100
3101 extract_sfmt_cmpcbr:
3102 {
3103 const IDESC *idesc = &crisv32f_insn_data[itype];
3104 CGEN_INSN_INT insn = base_insn;
3105 #define FLD(f) abuf->fields.sfmt_bound_cb.f
3106 INT f_indir_pc__byte;
3107 UINT f_operand2;
3108 /* Contents of trailing part of insn. */
3109 UINT word_1;
3110
3111 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3112 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3113 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3114
3115 /* Record the fields for the semantic handler. */
3116 FLD (f_operand2) = f_operand2;
3117 FLD (f_indir_pc__byte) = f_indir_pc__byte;
3118 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));
3119
3120 #if WITH_PROFILE_MODEL_P
3121 /* Record the fields for profiling. */
3122 if (PROFILE_MODEL_P (current_cpu))
3123 {
3124 FLD (in_Rd) = f_operand2;
3125 }
3126 #endif
3127 #undef FLD
3128 return idesc;
3129 }
3130
3131 extract_sfmt_cmpcwr:
3132 {
3133 const IDESC *idesc = &crisv32f_insn_data[itype];
3134 CGEN_INSN_INT insn = base_insn;
3135 #define FLD(f) abuf->fields.sfmt_bound_cw.f
3136 INT f_indir_pc__word;
3137 UINT f_operand2;
3138 /* Contents of trailing part of insn. */
3139 UINT word_1;
3140
3141 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3142 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3143 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3144
3145 /* Record the fields for the semantic handler. */
3146 FLD (f_operand2) = f_operand2;
3147 FLD (f_indir_pc__word) = f_indir_pc__word;
3148 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));
3149
3150 #if WITH_PROFILE_MODEL_P
3151 /* Record the fields for profiling. */
3152 if (PROFILE_MODEL_P (current_cpu))
3153 {
3154 FLD (in_Rd) = f_operand2;
3155 }
3156 #endif
3157 #undef FLD
3158 return idesc;
3159 }
3160
3161 extract_sfmt_cmpcdr:
3162 {
3163 const IDESC *idesc = &crisv32f_insn_data[itype];
3164 CGEN_INSN_INT insn = base_insn;
3165 #define FLD(f) abuf->fields.sfmt_bound_cd.f
3166 INT f_indir_pc__dword;
3167 UINT f_operand2;
3168 /* Contents of trailing part of insn. */
3169 UINT word_1;
3170
3171 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3172 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
3173 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3174
3175 /* Record the fields for the semantic handler. */
3176 FLD (f_operand2) = f_operand2;
3177 FLD (f_indir_pc__dword) = f_indir_pc__dword;
3178 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));
3179
3180 #if WITH_PROFILE_MODEL_P
3181 /* Record the fields for profiling. */
3182 if (PROFILE_MODEL_P (current_cpu))
3183 {
3184 FLD (in_Rd) = f_operand2;
3185 }
3186 #endif
3187 #undef FLD
3188 return idesc;
3189 }
3190
3191 extract_sfmt_cmpq:
3192 {
3193 const IDESC *idesc = &crisv32f_insn_data[itype];
3194 CGEN_INSN_INT insn = base_insn;
3195 #define FLD(f) abuf->fields.sfmt_andq.f
3196 UINT f_operand2;
3197 INT f_s6;
3198
3199 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3200 f_s6 = EXTRACT_LSB0_INT (insn, 16, 5, 6);
3201
3202 /* Record the fields for the semantic handler. */
3203 FLD (f_operand2) = f_operand2;
3204 FLD (f_s6) = f_s6;
3205 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));
3206
3207 #if WITH_PROFILE_MODEL_P
3208 /* Record the fields for profiling. */
3209 if (PROFILE_MODEL_P (current_cpu))
3210 {
3211 FLD (in_Rd) = f_operand2;
3212 }
3213 #endif
3214 #undef FLD
3215 return idesc;
3216 }
3217
3218 extract_sfmt_cmpucbr:
3219 {
3220 const IDESC *idesc = &crisv32f_insn_data[itype];
3221 CGEN_INSN_INT insn = base_insn;
3222 #define FLD(f) abuf->fields.sfmt_bound_cb.f
3223 INT f_indir_pc__byte;
3224 UINT f_operand2;
3225 /* Contents of trailing part of insn. */
3226 UINT word_1;
3227
3228 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3229 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3230 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3231
3232 /* Record the fields for the semantic handler. */
3233 FLD (f_operand2) = f_operand2;
3234 FLD (f_indir_pc__byte) = f_indir_pc__byte;
3235 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));
3236
3237 #if WITH_PROFILE_MODEL_P
3238 /* Record the fields for profiling. */
3239 if (PROFILE_MODEL_P (current_cpu))
3240 {
3241 FLD (in_Rd) = f_operand2;
3242 }
3243 #endif
3244 #undef FLD
3245 return idesc;
3246 }
3247
3248 extract_sfmt_cmpucwr:
3249 {
3250 const IDESC *idesc = &crisv32f_insn_data[itype];
3251 CGEN_INSN_INT insn = base_insn;
3252 #define FLD(f) abuf->fields.sfmt_bound_cw.f
3253 INT f_indir_pc__word;
3254 UINT f_operand2;
3255 /* Contents of trailing part of insn. */
3256 UINT word_1;
3257
3258 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3259 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3260 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3261
3262 /* Record the fields for the semantic handler. */
3263 FLD (f_operand2) = f_operand2;
3264 FLD (f_indir_pc__word) = f_indir_pc__word;
3265 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));
3266
3267 #if WITH_PROFILE_MODEL_P
3268 /* Record the fields for profiling. */
3269 if (PROFILE_MODEL_P (current_cpu))
3270 {
3271 FLD (in_Rd) = f_operand2;
3272 }
3273 #endif
3274 #undef FLD
3275 return idesc;
3276 }
3277
3278 extract_sfmt_move_m_b_m:
3279 {
3280 const IDESC *idesc = &crisv32f_insn_data[itype];
3281 CGEN_INSN_INT insn = base_insn;
3282 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3283 UINT f_operand2;
3284 UINT f_memmode;
3285 UINT f_operand1;
3286
3287 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3288 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3289 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3290
3291 /* Record the fields for the semantic handler. */
3292 FLD (f_operand1) = f_operand1;
3293 FLD (f_operand2) = f_operand2;
3294 FLD (f_memmode) = f_memmode;
3295 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));
3296
3297 #if WITH_PROFILE_MODEL_P
3298 /* Record the fields for profiling. */
3299 if (PROFILE_MODEL_P (current_cpu))
3300 {
3301 FLD (in_Rs) = f_operand1;
3302 FLD (out_Rs) = f_operand1;
3303 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3304 }
3305 #endif
3306 #undef FLD
3307 return idesc;
3308 }
3309
3310 extract_sfmt_move_m_w_m:
3311 {
3312 const IDESC *idesc = &crisv32f_insn_data[itype];
3313 CGEN_INSN_INT insn = base_insn;
3314 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3315 UINT f_operand2;
3316 UINT f_memmode;
3317 UINT f_operand1;
3318
3319 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3320 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3321 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3322
3323 /* Record the fields for the semantic handler. */
3324 FLD (f_operand1) = f_operand1;
3325 FLD (f_operand2) = f_operand2;
3326 FLD (f_memmode) = f_memmode;
3327 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));
3328
3329 #if WITH_PROFILE_MODEL_P
3330 /* Record the fields for profiling. */
3331 if (PROFILE_MODEL_P (current_cpu))
3332 {
3333 FLD (in_Rs) = f_operand1;
3334 FLD (out_Rs) = f_operand1;
3335 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3336 }
3337 #endif
3338 #undef FLD
3339 return idesc;
3340 }
3341
3342 extract_sfmt_move_m_d_m:
3343 {
3344 const IDESC *idesc = &crisv32f_insn_data[itype];
3345 CGEN_INSN_INT insn = base_insn;
3346 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3347 UINT f_operand2;
3348 UINT f_memmode;
3349 UINT f_operand1;
3350
3351 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3352 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3353 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3354
3355 /* Record the fields for the semantic handler. */
3356 FLD (f_operand1) = f_operand1;
3357 FLD (f_operand2) = f_operand2;
3358 FLD (f_memmode) = f_memmode;
3359 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));
3360
3361 #if WITH_PROFILE_MODEL_P
3362 /* Record the fields for profiling. */
3363 if (PROFILE_MODEL_P (current_cpu))
3364 {
3365 FLD (in_Rs) = f_operand1;
3366 FLD (out_Rs) = f_operand1;
3367 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3368 }
3369 #endif
3370 #undef FLD
3371 return idesc;
3372 }
3373
3374 extract_sfmt_movs_m_b_m:
3375 {
3376 const IDESC *idesc = &crisv32f_insn_data[itype];
3377 CGEN_INSN_INT insn = base_insn;
3378 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
3379 UINT f_operand2;
3380 UINT f_memmode;
3381 UINT f_operand1;
3382
3383 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3384 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3385 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3386
3387 /* Record the fields for the semantic handler. */
3388 FLD (f_operand1) = f_operand1;
3389 FLD (f_memmode) = f_memmode;
3390 FLD (f_operand2) = f_operand2;
3391 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));
3392
3393 #if WITH_PROFILE_MODEL_P
3394 /* Record the fields for profiling. */
3395 if (PROFILE_MODEL_P (current_cpu))
3396 {
3397 FLD (in_Rs) = f_operand1;
3398 FLD (out_Rd) = f_operand2;
3399 FLD (out_Rs) = f_operand1;
3400 }
3401 #endif
3402 #undef FLD
3403 return idesc;
3404 }
3405
3406 extract_sfmt_movs_m_w_m:
3407 {
3408 const IDESC *idesc = &crisv32f_insn_data[itype];
3409 CGEN_INSN_INT insn = base_insn;
3410 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
3411 UINT f_operand2;
3412 UINT f_memmode;
3413 UINT f_operand1;
3414
3415 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3416 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3417 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3418
3419 /* Record the fields for the semantic handler. */
3420 FLD (f_operand1) = f_operand1;
3421 FLD (f_memmode) = f_memmode;
3422 FLD (f_operand2) = f_operand2;
3423 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));
3424
3425 #if WITH_PROFILE_MODEL_P
3426 /* Record the fields for profiling. */
3427 if (PROFILE_MODEL_P (current_cpu))
3428 {
3429 FLD (in_Rs) = f_operand1;
3430 FLD (out_Rd) = f_operand2;
3431 FLD (out_Rs) = f_operand1;
3432 }
3433 #endif
3434 #undef FLD
3435 return idesc;
3436 }
3437
3438 extract_sfmt_move_r_sprv32:
3439 {
3440 const IDESC *idesc = &crisv32f_insn_data[itype];
3441 CGEN_INSN_INT insn = base_insn;
3442 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
3443 UINT f_operand2;
3444 UINT f_operand1;
3445
3446 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3447 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3448
3449 /* Record the fields for the semantic handler. */
3450 FLD (f_operand1) = f_operand1;
3451 FLD (f_operand2) = f_operand2;
3452 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));
3453
3454 #if WITH_PROFILE_MODEL_P
3455 /* Record the fields for profiling. */
3456 if (PROFILE_MODEL_P (current_cpu))
3457 {
3458 FLD (in_Rs) = f_operand1;
3459 FLD (out_Pd) = f_operand2;
3460 }
3461 #endif
3462 #undef FLD
3463 return idesc;
3464 }
3465
3466 extract_sfmt_move_spr_rv32:
3467 {
3468 const IDESC *idesc = &crisv32f_insn_data[itype];
3469 CGEN_INSN_INT insn = base_insn;
3470 #define FLD(f) abuf->fields.sfmt_mcp.f
3471 UINT f_operand2;
3472 UINT f_operand1;
3473
3474 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3475 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3476
3477 /* Record the fields for the semantic handler. */
3478 FLD (f_operand2) = f_operand2;
3479 FLD (f_operand1) = f_operand1;
3480 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));
3481
3482 #if WITH_PROFILE_MODEL_P
3483 /* Record the fields for profiling. */
3484 if (PROFILE_MODEL_P (current_cpu))
3485 {
3486 FLD (in_Ps) = f_operand2;
3487 FLD (out_h_gr_SI_index_of__DFLT_Rs) = FLD (f_operand1);
3488 }
3489 #endif
3490 #undef FLD
3491 return idesc;
3492 }
3493
3494 extract_sfmt_move_m_sprv32:
3495 {
3496 const IDESC *idesc = &crisv32f_insn_data[itype];
3497 CGEN_INSN_INT insn = base_insn;
3498 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
3499 UINT f_operand2;
3500 UINT f_memmode;
3501 UINT f_operand1;
3502
3503 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3504 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3505 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3506
3507 /* Record the fields for the semantic handler. */
3508 FLD (f_operand1) = f_operand1;
3509 FLD (f_operand2) = f_operand2;
3510 FLD (f_memmode) = f_memmode;
3511 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));
3512
3513 #if WITH_PROFILE_MODEL_P
3514 /* Record the fields for profiling. */
3515 if (PROFILE_MODEL_P (current_cpu))
3516 {
3517 FLD (in_Rs) = f_operand1;
3518 FLD (out_Pd) = f_operand2;
3519 FLD (out_Rs) = f_operand1;
3520 }
3521 #endif
3522 #undef FLD
3523 return idesc;
3524 }
3525
3526 extract_sfmt_move_c_sprv32_p2:
3527 {
3528 const IDESC *idesc = &crisv32f_insn_data[itype];
3529 CGEN_INSN_INT insn = base_insn;
3530 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
3531 INT f_indir_pc__dword;
3532 UINT f_operand2;
3533 /* Contents of trailing part of insn. */
3534 UINT word_1;
3535
3536 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3537 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
3538 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3539
3540 /* Record the fields for the semantic handler. */
3541 FLD (f_indir_pc__dword) = f_indir_pc__dword;
3542 FLD (f_operand2) = f_operand2;
3543 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));
3544
3545 #if WITH_PROFILE_MODEL_P
3546 /* Record the fields for profiling. */
3547 if (PROFILE_MODEL_P (current_cpu))
3548 {
3549 FLD (out_Pd) = f_operand2;
3550 }
3551 #endif
3552 #undef FLD
3553 return idesc;
3554 }
3555
3556 extract_sfmt_move_spr_mv32:
3557 {
3558 const IDESC *idesc = &crisv32f_insn_data[itype];
3559 CGEN_INSN_INT insn = base_insn;
3560 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3561 UINT f_operand2;
3562 UINT f_memmode;
3563 UINT f_operand1;
3564
3565 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3566 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3567 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3568
3569 /* Record the fields for the semantic handler. */
3570 FLD (f_operand2) = f_operand2;
3571 FLD (f_operand1) = f_operand1;
3572 FLD (f_memmode) = f_memmode;
3573 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));
3574
3575 #if WITH_PROFILE_MODEL_P
3576 /* Record the fields for profiling. */
3577 if (PROFILE_MODEL_P (current_cpu))
3578 {
3579 FLD (in_Ps) = f_operand2;
3580 FLD (in_Rs) = f_operand1;
3581 FLD (out_Rs) = f_operand1;
3582 }
3583 #endif
3584 #undef FLD
3585 return idesc;
3586 }
3587
3588 extract_sfmt_move_ss_r:
3589 {
3590 const IDESC *idesc = &crisv32f_insn_data[itype];
3591 CGEN_INSN_INT insn = base_insn;
3592 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3593 UINT f_operand2;
3594 UINT f_operand1;
3595
3596 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3597 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3598
3599 /* Record the fields for the semantic handler. */
3600 FLD (f_operand2) = f_operand2;
3601 FLD (f_operand1) = f_operand1;
3602 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));
3603
3604 #if WITH_PROFILE_MODEL_P
3605 /* Record the fields for profiling. */
3606 if (PROFILE_MODEL_P (current_cpu))
3607 {
3608 FLD (out_Rs) = f_operand1;
3609 }
3610 #endif
3611 #undef FLD
3612 return idesc;
3613 }
3614
3615 extract_sfmt_move_r_ss:
3616 {
3617 const IDESC *idesc = &crisv32f_insn_data[itype];
3618 CGEN_INSN_INT insn = base_insn;
3619 #define FLD(f) abuf->fields.sfmt_mcp.f
3620 UINT f_operand2;
3621 UINT f_operand1;
3622
3623 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3624 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3625
3626 /* Record the fields for the semantic handler. */
3627 FLD (f_operand1) = f_operand1;
3628 FLD (f_operand2) = f_operand2;
3629 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));
3630
3631 #if WITH_PROFILE_MODEL_P
3632 /* Record the fields for profiling. */
3633 if (PROFILE_MODEL_P (current_cpu))
3634 {
3635 FLD (in_Rs) = f_operand1;
3636 }
3637 #endif
3638 #undef FLD
3639 return idesc;
3640 }
3641
3642 extract_sfmt_movem_r_m_v32:
3643 {
3644 const IDESC *idesc = &crisv32f_insn_data[itype];
3645 CGEN_INSN_INT insn = base_insn;
3646 #define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f
3647 UINT f_operand2;
3648 UINT f_memmode;
3649 UINT f_operand1;
3650
3651 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3652 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3653 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3654
3655 /* Record the fields for the semantic handler. */
3656 FLD (f_operand2) = f_operand2;
3657 FLD (f_operand1) = f_operand1;
3658 FLD (f_memmode) = f_memmode;
3659 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));
3660
3661 #if WITH_PROFILE_MODEL_P
3662 /* Record the fields for profiling. */
3663 if (PROFILE_MODEL_P (current_cpu))
3664 {
3665 FLD (in_Rd) = f_operand2;
3666 FLD (in_Rs) = f_operand1;
3667 FLD (in_h_gr_SI_0) = 0;
3668 FLD (in_h_gr_SI_1) = 1;
3669 FLD (in_h_gr_SI_10) = 10;
3670 FLD (in_h_gr_SI_11) = 11;
3671 FLD (in_h_gr_SI_12) = 12;
3672 FLD (in_h_gr_SI_13) = 13;
3673 FLD (in_h_gr_SI_14) = 14;
3674 FLD (in_h_gr_SI_15) = 15;
3675 FLD (in_h_gr_SI_2) = 2;
3676 FLD (in_h_gr_SI_3) = 3;
3677 FLD (in_h_gr_SI_4) = 4;
3678 FLD (in_h_gr_SI_5) = 5;
3679 FLD (in_h_gr_SI_6) = 6;
3680 FLD (in_h_gr_SI_7) = 7;
3681 FLD (in_h_gr_SI_8) = 8;
3682 FLD (in_h_gr_SI_9) = 9;
3683 FLD (out_Rs) = f_operand1;
3684 }
3685 #endif
3686 #undef FLD
3687 return idesc;
3688 }
3689
3690 extract_sfmt_movem_m_r_v32:
3691 {
3692 const IDESC *idesc = &crisv32f_insn_data[itype];
3693 CGEN_INSN_INT insn = base_insn;
3694 #define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f
3695 UINT f_operand2;
3696 UINT f_memmode;
3697 UINT f_operand1;
3698
3699 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3700 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3701 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3702
3703 /* Record the fields for the semantic handler. */
3704 FLD (f_operand2) = f_operand2;
3705 FLD (f_operand1) = f_operand1;
3706 FLD (f_memmode) = f_memmode;
3707 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));
3708
3709 #if WITH_PROFILE_MODEL_P
3710 /* Record the fields for profiling. */
3711 if (PROFILE_MODEL_P (current_cpu))
3712 {
3713 FLD (in_Rd) = f_operand2;
3714 FLD (in_Rs) = f_operand1;
3715 FLD (out_Rs) = f_operand1;
3716 FLD (out_h_gr_SI_0) = 0;
3717 FLD (out_h_gr_SI_1) = 1;
3718 FLD (out_h_gr_SI_10) = 10;
3719 FLD (out_h_gr_SI_11) = 11;
3720 FLD (out_h_gr_SI_12) = 12;
3721 FLD (out_h_gr_SI_13) = 13;
3722 FLD (out_h_gr_SI_14) = 14;
3723 FLD (out_h_gr_SI_15) = 15;
3724 FLD (out_h_gr_SI_2) = 2;
3725 FLD (out_h_gr_SI_3) = 3;
3726 FLD (out_h_gr_SI_4) = 4;
3727 FLD (out_h_gr_SI_5) = 5;
3728 FLD (out_h_gr_SI_6) = 6;
3729 FLD (out_h_gr_SI_7) = 7;
3730 FLD (out_h_gr_SI_8) = 8;
3731 FLD (out_h_gr_SI_9) = 9;
3732 }
3733 #endif
3734 #undef FLD
3735 return idesc;
3736 }
3737
3738 extract_sfmt_add_b_r:
3739 {
3740 const IDESC *idesc = &crisv32f_insn_data[itype];
3741 CGEN_INSN_INT insn = base_insn;
3742 #define FLD(f) abuf->fields.sfmt_addc_m.f
3743 UINT f_operand2;
3744 UINT f_operand1;
3745
3746 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3747 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3748
3749 /* Record the fields for the semantic handler. */
3750 FLD (f_operand2) = f_operand2;
3751 FLD (f_operand1) = f_operand1;
3752 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));
3753
3754 #if WITH_PROFILE_MODEL_P
3755 /* Record the fields for profiling. */
3756 if (PROFILE_MODEL_P (current_cpu))
3757 {
3758 FLD (in_Rd) = f_operand2;
3759 FLD (in_Rs) = f_operand1;
3760 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
3761 }
3762 #endif
3763 #undef FLD
3764 return idesc;
3765 }
3766
3767 extract_sfmt_add_d_r:
3768 {
3769 const IDESC *idesc = &crisv32f_insn_data[itype];
3770 CGEN_INSN_INT insn = base_insn;
3771 #define FLD(f) abuf->fields.sfmt_addc_m.f
3772 UINT f_operand2;
3773 UINT f_operand1;
3774
3775 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3776 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3777
3778 /* Record the fields for the semantic handler. */
3779 FLD (f_operand2) = f_operand2;
3780 FLD (f_operand1) = f_operand1;
3781 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));
3782
3783 #if WITH_PROFILE_MODEL_P
3784 /* Record the fields for profiling. */
3785 if (PROFILE_MODEL_P (current_cpu))
3786 {
3787 FLD (in_Rd) = f_operand2;
3788 FLD (in_Rs) = f_operand1;
3789 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
3790 }
3791 #endif
3792 #undef FLD
3793 return idesc;
3794 }
3795
3796 extract_sfmt_add_m_b_m:
3797 {
3798 const IDESC *idesc = &crisv32f_insn_data[itype];
3799 CGEN_INSN_INT insn = base_insn;
3800 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3801 UINT f_operand2;
3802 UINT f_memmode;
3803 UINT f_operand1;
3804
3805 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3806 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3807 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3808
3809 /* Record the fields for the semantic handler. */
3810 FLD (f_operand2) = f_operand2;
3811 FLD (f_operand1) = f_operand1;
3812 FLD (f_memmode) = f_memmode;
3813 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));
3814
3815 #if WITH_PROFILE_MODEL_P
3816 /* Record the fields for profiling. */
3817 if (PROFILE_MODEL_P (current_cpu))
3818 {
3819 FLD (in_Rd) = f_operand2;
3820 FLD (in_Rs) = f_operand1;
3821 FLD (out_Rs) = f_operand1;
3822 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3823 }
3824 #endif
3825 #undef FLD
3826 return idesc;
3827 }
3828
3829 extract_sfmt_add_m_w_m:
3830 {
3831 const IDESC *idesc = &crisv32f_insn_data[itype];
3832 CGEN_INSN_INT insn = base_insn;
3833 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3834 UINT f_operand2;
3835 UINT f_memmode;
3836 UINT f_operand1;
3837
3838 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3839 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3840 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3841
3842 /* Record the fields for the semantic handler. */
3843 FLD (f_operand2) = f_operand2;
3844 FLD (f_operand1) = f_operand1;
3845 FLD (f_memmode) = f_memmode;
3846 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));
3847
3848 #if WITH_PROFILE_MODEL_P
3849 /* Record the fields for profiling. */
3850 if (PROFILE_MODEL_P (current_cpu))
3851 {
3852 FLD (in_Rd) = f_operand2;
3853 FLD (in_Rs) = f_operand1;
3854 FLD (out_Rs) = f_operand1;
3855 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3856 }
3857 #endif
3858 #undef FLD
3859 return idesc;
3860 }
3861
3862 extract_sfmt_add_m_d_m:
3863 {
3864 const IDESC *idesc = &crisv32f_insn_data[itype];
3865 CGEN_INSN_INT insn = base_insn;
3866 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3867 UINT f_operand2;
3868 UINT f_memmode;
3869 UINT f_operand1;
3870
3871 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3872 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3873 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3874
3875 /* Record the fields for the semantic handler. */
3876 FLD (f_operand2) = f_operand2;
3877 FLD (f_operand1) = f_operand1;
3878 FLD (f_memmode) = f_memmode;
3879 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));
3880
3881 #if WITH_PROFILE_MODEL_P
3882 /* Record the fields for profiling. */
3883 if (PROFILE_MODEL_P (current_cpu))
3884 {
3885 FLD (in_Rd) = f_operand2;
3886 FLD (in_Rs) = f_operand1;
3887 FLD (out_Rs) = f_operand1;
3888 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3889 }
3890 #endif
3891 #undef FLD
3892 return idesc;
3893 }
3894
3895 extract_sfmt_addcbr:
3896 {
3897 const IDESC *idesc = &crisv32f_insn_data[itype];
3898 CGEN_INSN_INT insn = base_insn;
3899 #define FLD(f) abuf->fields.sfmt_addcbr.f
3900 INT f_indir_pc__byte;
3901 UINT f_operand2;
3902 /* Contents of trailing part of insn. */
3903 UINT word_1;
3904
3905 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3906 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3907 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3908
3909 /* Record the fields for the semantic handler. */
3910 FLD (f_operand2) = f_operand2;
3911 FLD (f_indir_pc__byte) = f_indir_pc__byte;
3912 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));
3913
3914 #if WITH_PROFILE_MODEL_P
3915 /* Record the fields for profiling. */
3916 if (PROFILE_MODEL_P (current_cpu))
3917 {
3918 FLD (in_Rd) = f_operand2;
3919 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
3920 }
3921 #endif
3922 #undef FLD
3923 return idesc;
3924 }
3925
3926 extract_sfmt_addcwr:
3927 {
3928 const IDESC *idesc = &crisv32f_insn_data[itype];
3929 CGEN_INSN_INT insn = base_insn;
3930 #define FLD(f) abuf->fields.sfmt_addcwr.f
3931 INT f_indir_pc__word;
3932 UINT f_operand2;
3933 /* Contents of trailing part of insn. */
3934 UINT word_1;
3935
3936 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3937 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3938 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3939
3940 /* Record the fields for the semantic handler. */
3941 FLD (f_operand2) = f_operand2;
3942 FLD (f_indir_pc__word) = f_indir_pc__word;
3943 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));
3944
3945 #if WITH_PROFILE_MODEL_P
3946 /* Record the fields for profiling. */
3947 if (PROFILE_MODEL_P (current_cpu))
3948 {
3949 FLD (in_Rd) = f_operand2;
3950 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
3951 }
3952 #endif
3953 #undef FLD
3954 return idesc;
3955 }
3956
3957 extract_sfmt_addcdr:
3958 {
3959 const IDESC *idesc = &crisv32f_insn_data[itype];
3960 CGEN_INSN_INT insn = base_insn;
3961 #define FLD(f) abuf->fields.sfmt_addcdr.f
3962 INT f_indir_pc__dword;
3963 UINT f_operand2;
3964 /* Contents of trailing part of insn. */
3965 UINT word_1;
3966
3967 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3968 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
3969 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3970
3971 /* Record the fields for the semantic handler. */
3972 FLD (f_operand2) = f_operand2;
3973 FLD (f_indir_pc__dword) = f_indir_pc__dword;
3974 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));
3975
3976 #if WITH_PROFILE_MODEL_P
3977 /* Record the fields for profiling. */
3978 if (PROFILE_MODEL_P (current_cpu))
3979 {
3980 FLD (in_Rd) = f_operand2;
3981 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
3982 }
3983 #endif
3984 #undef FLD
3985 return idesc;
3986 }
3987
3988 extract_sfmt_adds_m_b_m:
3989 {
3990 const IDESC *idesc = &crisv32f_insn_data[itype];
3991 CGEN_INSN_INT insn = base_insn;
3992 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3993 UINT f_operand2;
3994 UINT f_memmode;
3995 UINT f_operand1;
3996
3997 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3998 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3999 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4000
4001 /* Record the fields for the semantic handler. */
4002 FLD (f_operand2) = f_operand2;
4003 FLD (f_operand1) = f_operand1;
4004 FLD (f_memmode) = f_memmode;
4005 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));
4006
4007 #if WITH_PROFILE_MODEL_P
4008 /* Record the fields for profiling. */
4009 if (PROFILE_MODEL_P (current_cpu))
4010 {
4011 FLD (in_Rd) = f_operand2;
4012 FLD (in_Rs) = f_operand1;
4013 FLD (out_Rs) = f_operand1;
4014 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
4015 }
4016 #endif
4017 #undef FLD
4018 return idesc;
4019 }
4020
4021 extract_sfmt_adds_m_w_m:
4022 {
4023 const IDESC *idesc = &crisv32f_insn_data[itype];
4024 CGEN_INSN_INT insn = base_insn;
4025 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4026 UINT f_operand2;
4027 UINT f_memmode;
4028 UINT f_operand1;
4029
4030 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4031 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4032 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4033
4034 /* Record the fields for the semantic handler. */
4035 FLD (f_operand2) = f_operand2;
4036 FLD (f_operand1) = f_operand1;
4037 FLD (f_memmode) = f_memmode;
4038 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));
4039
4040 #if WITH_PROFILE_MODEL_P
4041 /* Record the fields for profiling. */
4042 if (PROFILE_MODEL_P (current_cpu))
4043 {
4044 FLD (in_Rd) = f_operand2;
4045 FLD (in_Rs) = f_operand1;
4046 FLD (out_Rs) = f_operand1;
4047 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
4048 }
4049 #endif
4050 #undef FLD
4051 return idesc;
4052 }
4053
4054 extract_sfmt_addscbr:
4055 {
4056 const IDESC *idesc = &crisv32f_insn_data[itype];
4057 CGEN_INSN_INT insn = base_insn;
4058 #define FLD(f) abuf->fields.sfmt_addcbr.f
4059 INT f_indir_pc__byte;
4060 UINT f_operand2;
4061 /* Contents of trailing part of insn. */
4062 UINT word_1;
4063
4064 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4065 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4066 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4067
4068 /* Record the fields for the semantic handler. */
4069 FLD (f_operand2) = f_operand2;
4070 FLD (f_indir_pc__byte) = f_indir_pc__byte;
4071 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));
4072
4073 #if WITH_PROFILE_MODEL_P
4074 /* Record the fields for profiling. */
4075 if (PROFILE_MODEL_P (current_cpu))
4076 {
4077 FLD (in_Rd) = f_operand2;
4078 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4079 }
4080 #endif
4081 #undef FLD
4082 return idesc;
4083 }
4084
4085 extract_sfmt_addscwr:
4086 {
4087 const IDESC *idesc = &crisv32f_insn_data[itype];
4088 CGEN_INSN_INT insn = base_insn;
4089 #define FLD(f) abuf->fields.sfmt_addcwr.f
4090 INT f_indir_pc__word;
4091 UINT f_operand2;
4092 /* Contents of trailing part of insn. */
4093 UINT word_1;
4094
4095 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4096 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4097 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4098
4099 /* Record the fields for the semantic handler. */
4100 FLD (f_operand2) = f_operand2;
4101 FLD (f_indir_pc__word) = f_indir_pc__word;
4102 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));
4103
4104 #if WITH_PROFILE_MODEL_P
4105 /* Record the fields for profiling. */
4106 if (PROFILE_MODEL_P (current_cpu))
4107 {
4108 FLD (in_Rd) = f_operand2;
4109 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4110 }
4111 #endif
4112 #undef FLD
4113 return idesc;
4114 }
4115
4116 extract_sfmt_addc_m:
4117 {
4118 const IDESC *idesc = &crisv32f_insn_data[itype];
4119 CGEN_INSN_INT insn = base_insn;
4120 #define FLD(f) abuf->fields.sfmt_addc_m.f
4121 UINT f_operand2;
4122 UINT f_memmode;
4123 UINT f_operand1;
4124
4125 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4126 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4127 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4128
4129 /* Record the fields for the semantic handler. */
4130 FLD (f_operand2) = f_operand2;
4131 FLD (f_operand1) = f_operand1;
4132 FLD (f_memmode) = f_memmode;
4133 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));
4134
4135 #if WITH_PROFILE_MODEL_P
4136 /* Record the fields for profiling. */
4137 if (PROFILE_MODEL_P (current_cpu))
4138 {
4139 FLD (in_Rd) = f_operand2;
4140 FLD (in_Rs) = f_operand1;
4141 FLD (out_Rs) = f_operand1;
4142 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4143 }
4144 #endif
4145 #undef FLD
4146 return idesc;
4147 }
4148
4149 extract_sfmt_lapc_d:
4150 {
4151 const IDESC *idesc = &crisv32f_insn_data[itype];
4152 CGEN_INSN_INT insn = base_insn;
4153 #define FLD(f) abuf->fields.sfmt_lapc_d.f
4154 SI f_indir_pc__dword_pcrel;
4155 UINT f_operand2;
4156 /* Contents of trailing part of insn. */
4157 UINT word_1;
4158
4159 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4160 f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0))));
4161 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4162
4163 /* Record the fields for the semantic handler. */
4164 FLD (f_operand2) = f_operand2;
4165 FLD (i_const32_pcrel) = f_indir_pc__dword_pcrel;
4166 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));
4167
4168 #if WITH_PROFILE_MODEL_P
4169 /* Record the fields for profiling. */
4170 if (PROFILE_MODEL_P (current_cpu))
4171 {
4172 FLD (out_Rd) = f_operand2;
4173 }
4174 #endif
4175 #undef FLD
4176 return idesc;
4177 }
4178
4179 extract_sfmt_lapcq:
4180 {
4181 const IDESC *idesc = &crisv32f_insn_data[itype];
4182 CGEN_INSN_INT insn = base_insn;
4183 #define FLD(f) abuf->fields.sfmt_lapcq.f
4184 UINT f_operand2;
4185 SI f_qo;
4186
4187 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4188 f_qo = ((pc) + (((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (1))));
4189
4190 /* Record the fields for the semantic handler. */
4191 FLD (f_operand2) = f_operand2;
4192 FLD (i_qo) = f_qo;
4193 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));
4194
4195 #if WITH_PROFILE_MODEL_P
4196 /* Record the fields for profiling. */
4197 if (PROFILE_MODEL_P (current_cpu))
4198 {
4199 FLD (out_Rd) = f_operand2;
4200 }
4201 #endif
4202 #undef FLD
4203 return idesc;
4204 }
4205
4206 extract_sfmt_addi_b_r:
4207 {
4208 const IDESC *idesc = &crisv32f_insn_data[itype];
4209 CGEN_INSN_INT insn = base_insn;
4210 #define FLD(f) abuf->fields.sfmt_addc_m.f
4211 UINT f_operand2;
4212 UINT f_operand1;
4213
4214 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4215 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4216
4217 /* Record the fields for the semantic handler. */
4218 FLD (f_operand2) = f_operand2;
4219 FLD (f_operand1) = f_operand1;
4220 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));
4221
4222 #if WITH_PROFILE_MODEL_P
4223 /* Record the fields for profiling. */
4224 if (PROFILE_MODEL_P (current_cpu))
4225 {
4226 FLD (in_Rd) = f_operand2;
4227 FLD (in_Rs) = f_operand1;
4228 FLD (out_Rs) = f_operand1;
4229 }
4230 #endif
4231 #undef FLD
4232 return idesc;
4233 }
4234
4235 extract_sfmt_neg_b_r:
4236 {
4237 const IDESC *idesc = &crisv32f_insn_data[itype];
4238 CGEN_INSN_INT insn = base_insn;
4239 #define FLD(f) abuf->fields.sfmt_addc_m.f
4240 UINT f_operand2;
4241 UINT f_operand1;
4242
4243 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4244 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4245
4246 /* Record the fields for the semantic handler. */
4247 FLD (f_operand1) = f_operand1;
4248 FLD (f_operand2) = f_operand2;
4249 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));
4250
4251 #if WITH_PROFILE_MODEL_P
4252 /* Record the fields for profiling. */
4253 if (PROFILE_MODEL_P (current_cpu))
4254 {
4255 FLD (in_Rs) = f_operand1;
4256 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4257 }
4258 #endif
4259 #undef FLD
4260 return idesc;
4261 }
4262
4263 extract_sfmt_neg_d_r:
4264 {
4265 const IDESC *idesc = &crisv32f_insn_data[itype];
4266 CGEN_INSN_INT insn = base_insn;
4267 #define FLD(f) abuf->fields.sfmt_addc_m.f
4268 UINT f_operand2;
4269 UINT f_operand1;
4270
4271 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4272 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4273
4274 /* Record the fields for the semantic handler. */
4275 FLD (f_operand1) = f_operand1;
4276 FLD (f_operand2) = f_operand2;
4277 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));
4278
4279 #if WITH_PROFILE_MODEL_P
4280 /* Record the fields for profiling. */
4281 if (PROFILE_MODEL_P (current_cpu))
4282 {
4283 FLD (in_Rs) = f_operand1;
4284 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4285 }
4286 #endif
4287 #undef FLD
4288 return idesc;
4289 }
4290
4291 extract_sfmt_test_m_b_m:
4292 {
4293 const IDESC *idesc = &crisv32f_insn_data[itype];
4294 CGEN_INSN_INT insn = base_insn;
4295 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
4296 UINT f_memmode;
4297 UINT f_operand1;
4298
4299 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4300 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4301
4302 /* Record the fields for the semantic handler. */
4303 FLD (f_operand1) = f_operand1;
4304 FLD (f_memmode) = f_memmode;
4305 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));
4306
4307 #if WITH_PROFILE_MODEL_P
4308 /* Record the fields for profiling. */
4309 if (PROFILE_MODEL_P (current_cpu))
4310 {
4311 FLD (in_Rs) = f_operand1;
4312 FLD (out_Rs) = f_operand1;
4313 }
4314 #endif
4315 #undef FLD
4316 return idesc;
4317 }
4318
4319 extract_sfmt_test_m_w_m:
4320 {
4321 const IDESC *idesc = &crisv32f_insn_data[itype];
4322 CGEN_INSN_INT insn = base_insn;
4323 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
4324 UINT f_memmode;
4325 UINT f_operand1;
4326
4327 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4328 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4329
4330 /* Record the fields for the semantic handler. */
4331 FLD (f_operand1) = f_operand1;
4332 FLD (f_memmode) = f_memmode;
4333 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));
4334
4335 #if WITH_PROFILE_MODEL_P
4336 /* Record the fields for profiling. */
4337 if (PROFILE_MODEL_P (current_cpu))
4338 {
4339 FLD (in_Rs) = f_operand1;
4340 FLD (out_Rs) = f_operand1;
4341 }
4342 #endif
4343 #undef FLD
4344 return idesc;
4345 }
4346
4347 extract_sfmt_test_m_d_m:
4348 {
4349 const IDESC *idesc = &crisv32f_insn_data[itype];
4350 CGEN_INSN_INT insn = base_insn;
4351 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
4352 UINT f_memmode;
4353 UINT f_operand1;
4354
4355 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4356 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4357
4358 /* Record the fields for the semantic handler. */
4359 FLD (f_operand1) = f_operand1;
4360 FLD (f_memmode) = f_memmode;
4361 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));
4362
4363 #if WITH_PROFILE_MODEL_P
4364 /* Record the fields for profiling. */
4365 if (PROFILE_MODEL_P (current_cpu))
4366 {
4367 FLD (in_Rs) = f_operand1;
4368 FLD (out_Rs) = f_operand1;
4369 }
4370 #endif
4371 #undef FLD
4372 return idesc;
4373 }
4374
4375 extract_sfmt_move_r_m_b_m:
4376 {
4377 const IDESC *idesc = &crisv32f_insn_data[itype];
4378 CGEN_INSN_INT insn = base_insn;
4379 #define FLD(f) abuf->fields.sfmt_addc_m.f
4380 UINT f_operand2;
4381 UINT f_memmode;
4382 UINT f_operand1;
4383
4384 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4385 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4386 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4387
4388 /* Record the fields for the semantic handler. */
4389 FLD (f_operand2) = f_operand2;
4390 FLD (f_operand1) = f_operand1;
4391 FLD (f_memmode) = f_memmode;
4392 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));
4393
4394 #if WITH_PROFILE_MODEL_P
4395 /* Record the fields for profiling. */
4396 if (PROFILE_MODEL_P (current_cpu))
4397 {
4398 FLD (in_Rd) = f_operand2;
4399 FLD (in_Rs) = f_operand1;
4400 FLD (out_Rs) = f_operand1;
4401 }
4402 #endif
4403 #undef FLD
4404 return idesc;
4405 }
4406
4407 extract_sfmt_move_r_m_w_m:
4408 {
4409 const IDESC *idesc = &crisv32f_insn_data[itype];
4410 CGEN_INSN_INT insn = base_insn;
4411 #define FLD(f) abuf->fields.sfmt_addc_m.f
4412 UINT f_operand2;
4413 UINT f_memmode;
4414 UINT f_operand1;
4415
4416 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4417 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4418 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4419
4420 /* Record the fields for the semantic handler. */
4421 FLD (f_operand2) = f_operand2;
4422 FLD (f_operand1) = f_operand1;
4423 FLD (f_memmode) = f_memmode;
4424 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));
4425
4426 #if WITH_PROFILE_MODEL_P
4427 /* Record the fields for profiling. */
4428 if (PROFILE_MODEL_P (current_cpu))
4429 {
4430 FLD (in_Rd) = f_operand2;
4431 FLD (in_Rs) = f_operand1;
4432 FLD (out_Rs) = f_operand1;
4433 }
4434 #endif
4435 #undef FLD
4436 return idesc;
4437 }
4438
4439 extract_sfmt_move_r_m_d_m:
4440 {
4441 const IDESC *idesc = &crisv32f_insn_data[itype];
4442 CGEN_INSN_INT insn = base_insn;
4443 #define FLD(f) abuf->fields.sfmt_addc_m.f
4444 UINT f_operand2;
4445 UINT f_memmode;
4446 UINT f_operand1;
4447
4448 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4449 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4450 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4451
4452 /* Record the fields for the semantic handler. */
4453 FLD (f_operand2) = f_operand2;
4454 FLD (f_operand1) = f_operand1;
4455 FLD (f_memmode) = f_memmode;
4456 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));
4457
4458 #if WITH_PROFILE_MODEL_P
4459 /* Record the fields for profiling. */
4460 if (PROFILE_MODEL_P (current_cpu))
4461 {
4462 FLD (in_Rd) = f_operand2;
4463 FLD (in_Rs) = f_operand1;
4464 FLD (out_Rs) = f_operand1;
4465 }
4466 #endif
4467 #undef FLD
4468 return idesc;
4469 }
4470
4471 extract_sfmt_muls_b:
4472 {
4473 const IDESC *idesc = &crisv32f_insn_data[itype];
4474 CGEN_INSN_INT insn = base_insn;
4475 #define FLD(f) abuf->fields.sfmt_muls_b.f
4476 UINT f_operand2;
4477 UINT f_operand1;
4478
4479 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4480 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4481
4482 /* Record the fields for the semantic handler. */
4483 FLD (f_operand2) = f_operand2;
4484 FLD (f_operand1) = f_operand1;
4485 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));
4486
4487 #if WITH_PROFILE_MODEL_P
4488 /* Record the fields for profiling. */
4489 if (PROFILE_MODEL_P (current_cpu))
4490 {
4491 FLD (in_Rd) = f_operand2;
4492 FLD (in_Rs) = f_operand1;
4493 FLD (out_Rd) = f_operand2;
4494 FLD (out_h_sr_SI_7) = 7;
4495 }
4496 #endif
4497 #undef FLD
4498 return idesc;
4499 }
4500
4501 extract_sfmt_mcp:
4502 {
4503 const IDESC *idesc = &crisv32f_insn_data[itype];
4504 CGEN_INSN_INT insn = base_insn;
4505 #define FLD(f) abuf->fields.sfmt_mcp.f
4506 UINT f_operand2;
4507 UINT f_operand1;
4508
4509 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4510 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4511
4512 /* Record the fields for the semantic handler. */
4513 FLD (f_operand2) = f_operand2;
4514 FLD (f_operand1) = f_operand1;
4515 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));
4516
4517 #if WITH_PROFILE_MODEL_P
4518 /* Record the fields for profiling. */
4519 if (PROFILE_MODEL_P (current_cpu))
4520 {
4521 FLD (in_Ps) = f_operand2;
4522 FLD (in_Rs) = f_operand1;
4523 FLD (out_h_gr_SI_index_of__DFLT_Rs) = FLD (f_operand1);
4524 }
4525 #endif
4526 #undef FLD
4527 return idesc;
4528 }
4529
4530 extract_sfmt_dstep:
4531 {
4532 const IDESC *idesc = &crisv32f_insn_data[itype];
4533 CGEN_INSN_INT insn = base_insn;
4534 #define FLD(f) abuf->fields.sfmt_muls_b.f
4535 UINT f_operand2;
4536 UINT f_operand1;
4537
4538 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4539 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4540
4541 /* Record the fields for the semantic handler. */
4542 FLD (f_operand2) = f_operand2;
4543 FLD (f_operand1) = f_operand1;
4544 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));
4545
4546 #if WITH_PROFILE_MODEL_P
4547 /* Record the fields for profiling. */
4548 if (PROFILE_MODEL_P (current_cpu))
4549 {
4550 FLD (in_Rd) = f_operand2;
4551 FLD (in_Rs) = f_operand1;
4552 FLD (out_Rd) = f_operand2;
4553 }
4554 #endif
4555 #undef FLD
4556 return idesc;
4557 }
4558
4559 extract_sfmt_and_b_r:
4560 {
4561 const IDESC *idesc = &crisv32f_insn_data[itype];
4562 CGEN_INSN_INT insn = base_insn;
4563 #define FLD(f) abuf->fields.sfmt_addc_m.f
4564 UINT f_operand2;
4565 UINT f_operand1;
4566
4567 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4568 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4569
4570 /* Record the fields for the semantic handler. */
4571 FLD (f_operand2) = f_operand2;
4572 FLD (f_operand1) = f_operand1;
4573 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));
4574
4575 #if WITH_PROFILE_MODEL_P
4576 /* Record the fields for profiling. */
4577 if (PROFILE_MODEL_P (current_cpu))
4578 {
4579 FLD (in_Rd) = f_operand2;
4580 FLD (in_Rs) = f_operand1;
4581 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4582 }
4583 #endif
4584 #undef FLD
4585 return idesc;
4586 }
4587
4588 extract_sfmt_and_w_r:
4589 {
4590 const IDESC *idesc = &crisv32f_insn_data[itype];
4591 CGEN_INSN_INT insn = base_insn;
4592 #define FLD(f) abuf->fields.sfmt_addc_m.f
4593 UINT f_operand2;
4594 UINT f_operand1;
4595
4596 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4597 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4598
4599 /* Record the fields for the semantic handler. */
4600 FLD (f_operand2) = f_operand2;
4601 FLD (f_operand1) = f_operand1;
4602 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_w_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
4603
4604 #if WITH_PROFILE_MODEL_P
4605 /* Record the fields for profiling. */
4606 if (PROFILE_MODEL_P (current_cpu))
4607 {
4608 FLD (in_Rd) = f_operand2;
4609 FLD (in_Rs) = f_operand1;
4610 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4611 }
4612 #endif
4613 #undef FLD
4614 return idesc;
4615 }
4616
4617 extract_sfmt_and_d_r:
4618 {
4619 const IDESC *idesc = &crisv32f_insn_data[itype];
4620 CGEN_INSN_INT insn = base_insn;
4621 #define FLD(f) abuf->fields.sfmt_addc_m.f
4622 UINT f_operand2;
4623 UINT f_operand1;
4624
4625 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4626 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4627
4628 /* Record the fields for the semantic handler. */
4629 FLD (f_operand2) = f_operand2;
4630 FLD (f_operand1) = f_operand1;
4631 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));
4632
4633 #if WITH_PROFILE_MODEL_P
4634 /* Record the fields for profiling. */
4635 if (PROFILE_MODEL_P (current_cpu))
4636 {
4637 FLD (in_Rd) = f_operand2;
4638 FLD (in_Rs) = f_operand1;
4639 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4640 }
4641 #endif
4642 #undef FLD
4643 return idesc;
4644 }
4645
4646 extract_sfmt_and_m_b_m:
4647 {
4648 const IDESC *idesc = &crisv32f_insn_data[itype];
4649 CGEN_INSN_INT insn = base_insn;
4650 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4651 UINT f_operand2;
4652 UINT f_memmode;
4653 UINT f_operand1;
4654
4655 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4656 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4657 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4658
4659 /* Record the fields for the semantic handler. */
4660 FLD (f_operand2) = f_operand2;
4661 FLD (f_operand1) = f_operand1;
4662 FLD (f_memmode) = f_memmode;
4663 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));
4664
4665 #if WITH_PROFILE_MODEL_P
4666 /* Record the fields for profiling. */
4667 if (PROFILE_MODEL_P (current_cpu))
4668 {
4669 FLD (in_Rd) = f_operand2;
4670 FLD (in_Rs) = f_operand1;
4671 FLD (out_Rs) = f_operand1;
4672 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
4673 }
4674 #endif
4675 #undef FLD
4676 return idesc;
4677 }
4678
4679 extract_sfmt_and_m_w_m:
4680 {
4681 const IDESC *idesc = &crisv32f_insn_data[itype];
4682 CGEN_INSN_INT insn = base_insn;
4683 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4684 UINT f_operand2;
4685 UINT f_memmode;
4686 UINT f_operand1;
4687
4688 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4689 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4690 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4691
4692 /* Record the fields for the semantic handler. */
4693 FLD (f_operand2) = f_operand2;
4694 FLD (f_operand1) = f_operand1;
4695 FLD (f_memmode) = f_memmode;
4696 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));
4697
4698 #if WITH_PROFILE_MODEL_P
4699 /* Record the fields for profiling. */
4700 if (PROFILE_MODEL_P (current_cpu))
4701 {
4702 FLD (in_Rd) = f_operand2;
4703 FLD (in_Rs) = f_operand1;
4704 FLD (out_Rs) = f_operand1;
4705 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
4706 }
4707 #endif
4708 #undef FLD
4709 return idesc;
4710 }
4711
4712 extract_sfmt_and_m_d_m:
4713 {
4714 const IDESC *idesc = &crisv32f_insn_data[itype];
4715 CGEN_INSN_INT insn = base_insn;
4716 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4717 UINT f_operand2;
4718 UINT f_memmode;
4719 UINT f_operand1;
4720
4721 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4722 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4723 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4724
4725 /* Record the fields for the semantic handler. */
4726 FLD (f_operand2) = f_operand2;
4727 FLD (f_operand1) = f_operand1;
4728 FLD (f_memmode) = f_memmode;
4729 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));
4730
4731 #if WITH_PROFILE_MODEL_P
4732 /* Record the fields for profiling. */
4733 if (PROFILE_MODEL_P (current_cpu))
4734 {
4735 FLD (in_Rd) = f_operand2;
4736 FLD (in_Rs) = f_operand1;
4737 FLD (out_Rs) = f_operand1;
4738 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__DFLT_inc_index_of__DFLT_Rs_index_of__DFLT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
4739 }
4740 #endif
4741 #undef FLD
4742 return idesc;
4743 }
4744
4745 extract_sfmt_andcbr:
4746 {
4747 const IDESC *idesc = &crisv32f_insn_data[itype];
4748 CGEN_INSN_INT insn = base_insn;
4749 #define FLD(f) abuf->fields.sfmt_addcbr.f
4750 INT f_indir_pc__byte;
4751 UINT f_operand2;
4752 /* Contents of trailing part of insn. */
4753 UINT word_1;
4754
4755 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4756 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4757 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4758
4759 /* Record the fields for the semantic handler. */
4760 FLD (f_operand2) = f_operand2;
4761 FLD (f_indir_pc__byte) = f_indir_pc__byte;
4762 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));
4763
4764 #if WITH_PROFILE_MODEL_P
4765 /* Record the fields for profiling. */
4766 if (PROFILE_MODEL_P (current_cpu))
4767 {
4768 FLD (in_Rd) = f_operand2;
4769 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4770 }
4771 #endif
4772 #undef FLD
4773 return idesc;
4774 }
4775
4776 extract_sfmt_andcwr:
4777 {
4778 const IDESC *idesc = &crisv32f_insn_data[itype];
4779 CGEN_INSN_INT insn = base_insn;
4780 #define FLD(f) abuf->fields.sfmt_addcwr.f
4781 INT f_indir_pc__word;
4782 UINT f_operand2;
4783 /* Contents of trailing part of insn. */
4784 UINT word_1;
4785
4786 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4787 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4788 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4789
4790 /* Record the fields for the semantic handler. */
4791 FLD (f_operand2) = f_operand2;
4792 FLD (f_indir_pc__word) = f_indir_pc__word;
4793 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));
4794
4795 #if WITH_PROFILE_MODEL_P
4796 /* Record the fields for profiling. */
4797 if (PROFILE_MODEL_P (current_cpu))
4798 {
4799 FLD (in_Rd) = f_operand2;
4800 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4801 }
4802 #endif
4803 #undef FLD
4804 return idesc;
4805 }
4806
4807 extract_sfmt_andcdr:
4808 {
4809 const IDESC *idesc = &crisv32f_insn_data[itype];
4810 CGEN_INSN_INT insn = base_insn;
4811 #define FLD(f) abuf->fields.sfmt_addcdr.f
4812 INT f_indir_pc__dword;
4813 UINT f_operand2;
4814 /* Contents of trailing part of insn. */
4815 UINT word_1;
4816
4817 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4818 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
4819 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4820
4821 /* Record the fields for the semantic handler. */
4822 FLD (f_operand2) = f_operand2;
4823 FLD (f_indir_pc__dword) = f_indir_pc__dword;
4824 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));
4825
4826 #if WITH_PROFILE_MODEL_P
4827 /* Record the fields for profiling. */
4828 if (PROFILE_MODEL_P (current_cpu))
4829 {
4830 FLD (in_Rd) = f_operand2;
4831 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4832 }
4833 #endif
4834 #undef FLD
4835 return idesc;
4836 }
4837
4838 extract_sfmt_andq:
4839 {
4840 const IDESC *idesc = &crisv32f_insn_data[itype];
4841 CGEN_INSN_INT insn = base_insn;
4842 #define FLD(f) abuf->fields.sfmt_andq.f
4843 UINT f_operand2;
4844 INT f_s6;
4845
4846 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4847 f_s6 = EXTRACT_LSB0_INT (insn, 16, 5, 6);
4848
4849 /* Record the fields for the semantic handler. */
4850 FLD (f_operand2) = f_operand2;
4851 FLD (f_s6) = f_s6;
4852 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));
4853
4854 #if WITH_PROFILE_MODEL_P
4855 /* Record the fields for profiling. */
4856 if (PROFILE_MODEL_P (current_cpu))
4857 {
4858 FLD (in_Rd) = f_operand2;
4859 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4860 }
4861 #endif
4862 #undef FLD
4863 return idesc;
4864 }
4865
4866 extract_sfmt_swap:
4867 {
4868 const IDESC *idesc = &crisv32f_insn_data[itype];
4869 CGEN_INSN_INT insn = base_insn;
4870 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
4871 UINT f_operand2;
4872 UINT f_operand1;
4873
4874 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4875 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4876
4877 /* Record the fields for the semantic handler. */
4878 FLD (f_operand1) = f_operand1;
4879 FLD (f_operand2) = f_operand2;
4880 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));
4881
4882 #if WITH_PROFILE_MODEL_P
4883 /* Record the fields for profiling. */
4884 if (PROFILE_MODEL_P (current_cpu))
4885 {
4886 FLD (in_Rs) = f_operand1;
4887 FLD (out_Rs) = f_operand1;
4888 }
4889 #endif
4890 #undef FLD
4891 return idesc;
4892 }
4893
4894 extract_sfmt_asrr_b_r:
4895 {
4896 const IDESC *idesc = &crisv32f_insn_data[itype];
4897 CGEN_INSN_INT insn = base_insn;
4898 #define FLD(f) abuf->fields.sfmt_addc_m.f
4899 UINT f_operand2;
4900 UINT f_operand1;
4901
4902 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4903 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4904
4905 /* Record the fields for the semantic handler. */
4906 FLD (f_operand2) = f_operand2;
4907 FLD (f_operand1) = f_operand1;
4908 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_asrr_b_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
4909
4910 #if WITH_PROFILE_MODEL_P
4911 /* Record the fields for profiling. */
4912 if (PROFILE_MODEL_P (current_cpu))
4913 {
4914 FLD (in_Rd) = f_operand2;
4915 FLD (in_Rs) = f_operand1;
4916 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4917 }
4918 #endif
4919 #undef FLD
4920 return idesc;
4921 }
4922
4923 extract_sfmt_asrq:
4924 {
4925 const IDESC *idesc = &crisv32f_insn_data[itype];
4926 CGEN_INSN_INT insn = base_insn;
4927 #define FLD(f) abuf->fields.sfmt_asrq.f
4928 UINT f_operand2;
4929 UINT f_u5;
4930
4931 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4932 f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5);
4933
4934 /* Record the fields for the semantic handler. */
4935 FLD (f_operand2) = f_operand2;
4936 FLD (f_u5) = f_u5;
4937 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));
4938
4939 #if WITH_PROFILE_MODEL_P
4940 /* Record the fields for profiling. */
4941 if (PROFILE_MODEL_P (current_cpu))
4942 {
4943 FLD (in_Rd) = f_operand2;
4944 FLD (out_Rd) = f_operand2;
4945 }
4946 #endif
4947 #undef FLD
4948 return idesc;
4949 }
4950
4951 extract_sfmt_lsrr_b_r:
4952 {
4953 const IDESC *idesc = &crisv32f_insn_data[itype];
4954 CGEN_INSN_INT insn = base_insn;
4955 #define FLD(f) abuf->fields.sfmt_addc_m.f
4956 UINT f_operand2;
4957 UINT f_operand1;
4958
4959 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4960 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4961
4962 /* Record the fields for the semantic handler. */
4963 FLD (f_operand2) = f_operand2;
4964 FLD (f_operand1) = f_operand1;
4965 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));
4966
4967 #if WITH_PROFILE_MODEL_P
4968 /* Record the fields for profiling. */
4969 if (PROFILE_MODEL_P (current_cpu))
4970 {
4971 FLD (in_Rd) = f_operand2;
4972 FLD (in_Rs) = f_operand1;
4973 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
4974 }
4975 #endif
4976 #undef FLD
4977 return idesc;
4978 }
4979
4980 extract_sfmt_lsrr_d_r:
4981 {
4982 const IDESC *idesc = &crisv32f_insn_data[itype];
4983 CGEN_INSN_INT insn = base_insn;
4984 #define FLD(f) abuf->fields.sfmt_addc_m.f
4985 UINT f_operand2;
4986 UINT f_operand1;
4987
4988 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4989 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4990
4991 /* Record the fields for the semantic handler. */
4992 FLD (f_operand2) = f_operand2;
4993 FLD (f_operand1) = f_operand1;
4994 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));
4995
4996 #if WITH_PROFILE_MODEL_P
4997 /* Record the fields for profiling. */
4998 if (PROFILE_MODEL_P (current_cpu))
4999 {
5000 FLD (in_Rd) = f_operand2;
5001 FLD (in_Rs) = f_operand1;
5002 FLD (out_h_gr_SI_index_of__DFLT_Rd) = FLD (f_operand2);
5003 }
5004 #endif
5005 #undef FLD
5006 return idesc;
5007 }
5008
5009 extract_sfmt_btst:
5010 {
5011 const IDESC *idesc = &crisv32f_insn_data[itype];
5012 CGEN_INSN_INT insn = base_insn;
5013 #define FLD(f) abuf->fields.sfmt_muls_b.f
5014 UINT f_operand2;
5015 UINT f_operand1;
5016
5017 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5018 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5019
5020 /* Record the fields for the semantic handler. */
5021 FLD (f_operand2) = f_operand2;
5022 FLD (f_operand1) = f_operand1;
5023 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));
5024
5025 #if WITH_PROFILE_MODEL_P
5026 /* Record the fields for profiling. */
5027 if (PROFILE_MODEL_P (current_cpu))
5028 {
5029 FLD (in_Rd) = f_operand2;
5030 FLD (in_Rs) = f_operand1;
5031 }
5032 #endif
5033 #undef FLD
5034 return idesc;
5035 }
5036
5037 extract_sfmt_btstq:
5038 {
5039 const IDESC *idesc = &crisv32f_insn_data[itype];
5040 CGEN_INSN_INT insn = base_insn;
5041 #define FLD(f) abuf->fields.sfmt_asrq.f
5042 UINT f_operand2;
5043 UINT f_u5;
5044
5045 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5046 f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5);
5047
5048 /* Record the fields for the semantic handler. */
5049 FLD (f_operand2) = f_operand2;
5050 FLD (f_u5) = f_u5;
5051 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));
5052
5053 #if WITH_PROFILE_MODEL_P
5054 /* Record the fields for profiling. */
5055 if (PROFILE_MODEL_P (current_cpu))
5056 {
5057 FLD (in_Rd) = f_operand2;
5058 }
5059 #endif
5060 #undef FLD
5061 return idesc;
5062 }
5063
5064 extract_sfmt_setf:
5065 {
5066 const IDESC *idesc = &crisv32f_insn_data[itype];
5067 CGEN_INSN_INT insn = base_insn;
5068 #define FLD(f) abuf->fields.sfmt_setf.f
5069 UINT f_operand2;
5070 UINT f_operand1;
5071 UINT f_dstsrc;
5072
5073 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5074 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5075 f_dstsrc = ((((f_operand1) | (((f_operand2) << (4))))) & (255));
5076
5077 /* Record the fields for the semantic handler. */
5078 FLD (f_dstsrc) = f_dstsrc;
5079 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_setf", "f_dstsrc 0x%x", 'x', f_dstsrc, (char *) 0));
5080
5081 #undef FLD
5082 return idesc;
5083 }
5084
5085 extract_sfmt_rfe:
5086 {
5087 const IDESC *idesc = &crisv32f_insn_data[itype];
5088 #define FLD(f) abuf->fields.sfmt_rfe.f
5089
5090
5091 /* Record the fields for the semantic handler. */
5092 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rfe", (char *) 0));
5093
5094 #if WITH_PROFILE_MODEL_P
5095 /* Record the fields for profiling. */
5096 if (PROFILE_MODEL_P (current_cpu))
5097 {
5098 FLD (in_h_sr_SI_13) = 13;
5099 FLD (out_h_sr_SI_13) = 13;
5100 }
5101 #endif
5102 #undef FLD
5103 return idesc;
5104 }
5105
5106 extract_sfmt_sfe:
5107 {
5108 const IDESC *idesc = &crisv32f_insn_data[itype];
5109 #define FLD(f) abuf->fields.sfmt_rfe.f
5110
5111
5112 /* Record the fields for the semantic handler. */
5113 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sfe", (char *) 0));
5114
5115 #if WITH_PROFILE_MODEL_P
5116 /* Record the fields for profiling. */
5117 if (PROFILE_MODEL_P (current_cpu))
5118 {
5119 FLD (in_h_sr_SI_13) = 13;
5120 FLD (out_h_sr_SI_13) = 13;
5121 }
5122 #endif
5123 #undef FLD
5124 return idesc;
5125 }
5126
5127 extract_sfmt_rfg:
5128 {
5129 const IDESC *idesc = &crisv32f_insn_data[itype];
5130 #define FLD(f) abuf->fields.fmt_empty.f
5131
5132
5133 /* Record the fields for the semantic handler. */
5134 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rfg", (char *) 0));
5135
5136 #if WITH_PROFILE_MODEL_P
5137 /* Record the fields for profiling. */
5138 if (PROFILE_MODEL_P (current_cpu))
5139 {
5140 }
5141 #endif
5142 #undef FLD
5143 return idesc;
5144 }
5145
5146 extract_sfmt_rfn:
5147 {
5148 const IDESC *idesc = &crisv32f_insn_data[itype];
5149 #define FLD(f) abuf->fields.sfmt_rfe.f
5150
5151
5152 /* Record the fields for the semantic handler. */
5153 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rfn", (char *) 0));
5154
5155 #if WITH_PROFILE_MODEL_P
5156 /* Record the fields for profiling. */
5157 if (PROFILE_MODEL_P (current_cpu))
5158 {
5159 FLD (in_h_sr_SI_13) = 13;
5160 FLD (out_h_sr_SI_13) = 13;
5161 }
5162 #endif
5163 #undef FLD
5164 return idesc;
5165 }
5166
5167 extract_sfmt_halt:
5168 {
5169 const IDESC *idesc = &crisv32f_insn_data[itype];
5170 #define FLD(f) abuf->fields.fmt_empty.f
5171
5172
5173 /* Record the fields for the semantic handler. */
5174 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_halt", (char *) 0));
5175
5176 #if WITH_PROFILE_MODEL_P
5177 /* Record the fields for profiling. */
5178 if (PROFILE_MODEL_P (current_cpu))
5179 {
5180 }
5181 #endif
5182 #undef FLD
5183 return idesc;
5184 }
5185
5186 extract_sfmt_bcc_b:
5187 {
5188 const IDESC *idesc = &crisv32f_insn_data[itype];
5189 CGEN_INSN_INT insn = base_insn;
5190 #define FLD(f) abuf->fields.sfmt_bcc_b.f
5191 UINT f_operand2;
5192 UINT f_disp9_lo;
5193 INT f_disp9_hi;
5194 INT f_disp9;
5195
5196 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5197 f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7);
5198 f_disp9_hi = EXTRACT_LSB0_INT (insn, 16, 0, 1);
5199 {
5200 SI tmp_abslo;
5201 SI tmp_absval;
5202 tmp_abslo = ((f_disp9_lo) << (1));
5203 tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));
5204 f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));
5205 }
5206
5207 /* Record the fields for the semantic handler. */
5208 FLD (f_operand2) = f_operand2;
5209 FLD (i_o_pcrel) = f_disp9;
5210 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));
5211
5212 #if WITH_PROFILE_MODEL_P
5213 /* Record the fields for profiling. */
5214 if (PROFILE_MODEL_P (current_cpu))
5215 {
5216 }
5217 #endif
5218 #undef FLD
5219 return idesc;
5220 }
5221
5222 extract_sfmt_ba_b:
5223 {
5224 const IDESC *idesc = &crisv32f_insn_data[itype];
5225 CGEN_INSN_INT insn = base_insn;
5226 #define FLD(f) abuf->fields.sfmt_bcc_b.f
5227 UINT f_disp9_lo;
5228 INT f_disp9_hi;
5229 INT f_disp9;
5230
5231 f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7);
5232 f_disp9_hi = EXTRACT_LSB0_INT (insn, 16, 0, 1);
5233 {
5234 SI tmp_abslo;
5235 SI tmp_absval;
5236 tmp_abslo = ((f_disp9_lo) << (1));
5237 tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));
5238 f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));
5239 }
5240
5241 /* Record the fields for the semantic handler. */
5242 FLD (i_o_pcrel) = f_disp9;
5243 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ba_b", "o_pcrel 0x%x", 'x', f_disp9, (char *) 0));
5244
5245 #if WITH_PROFILE_MODEL_P
5246 /* Record the fields for profiling. */
5247 if (PROFILE_MODEL_P (current_cpu))
5248 {
5249 }
5250 #endif
5251 #undef FLD
5252 return idesc;
5253 }
5254
5255 extract_sfmt_bcc_w:
5256 {
5257 const IDESC *idesc = &crisv32f_insn_data[itype];
5258 CGEN_INSN_INT insn = base_insn;
5259 #define FLD(f) abuf->fields.sfmt_bcc_w.f
5260 SI f_indir_pc__word_pcrel;
5261 UINT f_operand2;
5262 /* Contents of trailing part of insn. */
5263 UINT word_1;
5264
5265 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5266 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))))));
5267 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5268
5269 /* Record the fields for the semantic handler. */
5270 FLD (f_operand2) = f_operand2;
5271 FLD (i_o_word_pcrel) = f_indir_pc__word_pcrel;
5272 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));
5273
5274 #if WITH_PROFILE_MODEL_P
5275 /* Record the fields for profiling. */
5276 if (PROFILE_MODEL_P (current_cpu))
5277 {
5278 }
5279 #endif
5280 #undef FLD
5281 return idesc;
5282 }
5283
5284 extract_sfmt_ba_w:
5285 {
5286 const IDESC *idesc = &crisv32f_insn_data[itype];
5287 CGEN_INSN_INT insn = base_insn;
5288 #define FLD(f) abuf->fields.sfmt_bcc_w.f
5289 SI f_indir_pc__word_pcrel;
5290 /* Contents of trailing part of insn. */
5291 UINT word_1;
5292
5293 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5294 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))))));
5295
5296 /* Record the fields for the semantic handler. */
5297 FLD (i_o_word_pcrel) = f_indir_pc__word_pcrel;
5298 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ba_w", "o_word_pcrel 0x%x", 'x', f_indir_pc__word_pcrel, (char *) 0));
5299
5300 #if WITH_PROFILE_MODEL_P
5301 /* Record the fields for profiling. */
5302 if (PROFILE_MODEL_P (current_cpu))
5303 {
5304 }
5305 #endif
5306 #undef FLD
5307 return idesc;
5308 }
5309
5310 extract_sfmt_jas_r:
5311 {
5312 const IDESC *idesc = &crisv32f_insn_data[itype];
5313 CGEN_INSN_INT insn = base_insn;
5314 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
5315 UINT f_operand2;
5316 UINT f_operand1;
5317
5318 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5319 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5320
5321 /* Record the fields for the semantic handler. */
5322 FLD (f_operand1) = f_operand1;
5323 FLD (f_operand2) = f_operand2;
5324 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));
5325
5326 #if WITH_PROFILE_MODEL_P
5327 /* Record the fields for profiling. */
5328 if (PROFILE_MODEL_P (current_cpu))
5329 {
5330 FLD (in_Rs) = f_operand1;
5331 FLD (out_Pd) = f_operand2;
5332 }
5333 #endif
5334 #undef FLD
5335 return idesc;
5336 }
5337
5338 extract_sfmt_jas_c:
5339 {
5340 const IDESC *idesc = &crisv32f_insn_data[itype];
5341 CGEN_INSN_INT insn = base_insn;
5342 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
5343 INT f_indir_pc__dword;
5344 UINT f_operand2;
5345 /* Contents of trailing part of insn. */
5346 UINT word_1;
5347
5348 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5349 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
5350 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5351
5352 /* Record the fields for the semantic handler. */
5353 FLD (f_indir_pc__dword) = f_indir_pc__dword;
5354 FLD (f_operand2) = f_operand2;
5355 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));
5356
5357 #if WITH_PROFILE_MODEL_P
5358 /* Record the fields for profiling. */
5359 if (PROFILE_MODEL_P (current_cpu))
5360 {
5361 FLD (out_Pd) = f_operand2;
5362 }
5363 #endif
5364 #undef FLD
5365 return idesc;
5366 }
5367
5368 extract_sfmt_jump_p:
5369 {
5370 const IDESC *idesc = &crisv32f_insn_data[itype];
5371 CGEN_INSN_INT insn = base_insn;
5372 #define FLD(f) abuf->fields.sfmt_mcp.f
5373 UINT f_operand2;
5374
5375 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5376
5377 /* Record the fields for the semantic handler. */
5378 FLD (f_operand2) = f_operand2;
5379 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jump_p", "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
5380
5381 #if WITH_PROFILE_MODEL_P
5382 /* Record the fields for profiling. */
5383 if (PROFILE_MODEL_P (current_cpu))
5384 {
5385 FLD (in_Ps) = f_operand2;
5386 }
5387 #endif
5388 #undef FLD
5389 return idesc;
5390 }
5391
5392 extract_sfmt_bas_c:
5393 {
5394 const IDESC *idesc = &crisv32f_insn_data[itype];
5395 CGEN_INSN_INT insn = base_insn;
5396 #define FLD(f) abuf->fields.sfmt_bas_c.f
5397 SI f_indir_pc__dword_pcrel;
5398 UINT f_operand2;
5399 /* Contents of trailing part of insn. */
5400 UINT word_1;
5401
5402 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5403 f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0))));
5404 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5405
5406 /* Record the fields for the semantic handler. */
5407 FLD (f_operand2) = f_operand2;
5408 FLD (i_const32_pcrel) = f_indir_pc__dword_pcrel;
5409 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));
5410
5411 #if WITH_PROFILE_MODEL_P
5412 /* Record the fields for profiling. */
5413 if (PROFILE_MODEL_P (current_cpu))
5414 {
5415 FLD (out_Pd) = f_operand2;
5416 }
5417 #endif
5418 #undef FLD
5419 return idesc;
5420 }
5421
5422 extract_sfmt_jasc_r:
5423 {
5424 const IDESC *idesc = &crisv32f_insn_data[itype];
5425 CGEN_INSN_INT insn = base_insn;
5426 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
5427 UINT f_operand2;
5428 UINT f_operand1;
5429
5430 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5431 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5432
5433 /* Record the fields for the semantic handler. */
5434 FLD (f_operand1) = f_operand1;
5435 FLD (f_operand2) = f_operand2;
5436 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));
5437
5438 #if WITH_PROFILE_MODEL_P
5439 /* Record the fields for profiling. */
5440 if (PROFILE_MODEL_P (current_cpu))
5441 {
5442 FLD (in_Rs) = f_operand1;
5443 FLD (out_Pd) = f_operand2;
5444 }
5445 #endif
5446 #undef FLD
5447 return idesc;
5448 }
5449
5450 extract_sfmt_break:
5451 {
5452 const IDESC *idesc = &crisv32f_insn_data[itype];
5453 CGEN_INSN_INT insn = base_insn;
5454 #define FLD(f) abuf->fields.sfmt_break.f
5455 UINT f_u4;
5456
5457 f_u4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5458
5459 /* Record the fields for the semantic handler. */
5460 FLD (f_u4) = f_u4;
5461 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_break", "f_u4 0x%x", 'x', f_u4, (char *) 0));
5462
5463 #if WITH_PROFILE_MODEL_P
5464 /* Record the fields for profiling. */
5465 if (PROFILE_MODEL_P (current_cpu))
5466 {
5467 }
5468 #endif
5469 #undef FLD
5470 return idesc;
5471 }
5472
5473 extract_sfmt_bound_cb:
5474 {
5475 const IDESC *idesc = &crisv32f_insn_data[itype];
5476 CGEN_INSN_INT insn = base_insn;
5477 #define FLD(f) abuf->fields.sfmt_bound_cb.f
5478 INT f_indir_pc__byte;
5479 UINT f_operand2;
5480 /* Contents of trailing part of insn. */
5481 UINT word_1;
5482
5483 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5484 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
5485 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5486
5487 /* Record the fields for the semantic handler. */
5488 FLD (f_operand2) = f_operand2;
5489 FLD (f_indir_pc__byte) = f_indir_pc__byte;
5490 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));
5491
5492 #if WITH_PROFILE_MODEL_P
5493 /* Record the fields for profiling. */
5494 if (PROFILE_MODEL_P (current_cpu))
5495 {
5496 FLD (in_Rd) = f_operand2;
5497 FLD (out_Rd) = f_operand2;
5498 }
5499 #endif
5500 #undef FLD
5501 return idesc;
5502 }
5503
5504 extract_sfmt_bound_cw:
5505 {
5506 const IDESC *idesc = &crisv32f_insn_data[itype];
5507 CGEN_INSN_INT insn = base_insn;
5508 #define FLD(f) abuf->fields.sfmt_bound_cw.f
5509 INT f_indir_pc__word;
5510 UINT f_operand2;
5511 /* Contents of trailing part of insn. */
5512 UINT word_1;
5513
5514 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5515 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
5516 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5517
5518 /* Record the fields for the semantic handler. */
5519 FLD (f_operand2) = f_operand2;
5520 FLD (f_indir_pc__word) = f_indir_pc__word;
5521 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));
5522
5523 #if WITH_PROFILE_MODEL_P
5524 /* Record the fields for profiling. */
5525 if (PROFILE_MODEL_P (current_cpu))
5526 {
5527 FLD (in_Rd) = f_operand2;
5528 FLD (out_Rd) = f_operand2;
5529 }
5530 #endif
5531 #undef FLD
5532 return idesc;
5533 }
5534
5535 extract_sfmt_bound_cd:
5536 {
5537 const IDESC *idesc = &crisv32f_insn_data[itype];
5538 CGEN_INSN_INT insn = base_insn;
5539 #define FLD(f) abuf->fields.sfmt_bound_cd.f
5540 INT f_indir_pc__dword;
5541 UINT f_operand2;
5542 /* Contents of trailing part of insn. */
5543 UINT word_1;
5544
5545 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5546 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
5547 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5548
5549 /* Record the fields for the semantic handler. */
5550 FLD (f_operand2) = f_operand2;
5551 FLD (f_indir_pc__dword) = f_indir_pc__dword;
5552 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));
5553
5554 #if WITH_PROFILE_MODEL_P
5555 /* Record the fields for profiling. */
5556 if (PROFILE_MODEL_P (current_cpu))
5557 {
5558 FLD (in_Rd) = f_operand2;
5559 FLD (out_Rd) = f_operand2;
5560 }
5561 #endif
5562 #undef FLD
5563 return idesc;
5564 }
5565
5566 extract_sfmt_scc:
5567 {
5568 const IDESC *idesc = &crisv32f_insn_data[itype];
5569 CGEN_INSN_INT insn = base_insn;
5570 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
5571 UINT f_operand2;
5572 UINT f_operand1;
5573
5574 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5575 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5576
5577 /* Record the fields for the semantic handler. */
5578 FLD (f_operand2) = f_operand2;
5579 FLD (f_operand1) = f_operand1;
5580 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));
5581
5582 #if WITH_PROFILE_MODEL_P
5583 /* Record the fields for profiling. */
5584 if (PROFILE_MODEL_P (current_cpu))
5585 {
5586 FLD (out_Rs) = f_operand1;
5587 }
5588 #endif
5589 #undef FLD
5590 return idesc;
5591 }
5592
5593 extract_sfmt_addoq:
5594 {
5595 const IDESC *idesc = &crisv32f_insn_data[itype];
5596 CGEN_INSN_INT insn = base_insn;
5597 #define FLD(f) abuf->fields.sfmt_addoq.f
5598 UINT f_operand2;
5599 INT f_s8;
5600
5601 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5602 f_s8 = EXTRACT_LSB0_INT (insn, 16, 7, 8);
5603
5604 /* Record the fields for the semantic handler. */
5605 FLD (f_operand2) = f_operand2;
5606 FLD (f_s8) = f_s8;
5607 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));
5608
5609 #if WITH_PROFILE_MODEL_P
5610 /* Record the fields for profiling. */
5611 if (PROFILE_MODEL_P (current_cpu))
5612 {
5613 FLD (in_Rd) = f_operand2;
5614 }
5615 #endif
5616 #undef FLD
5617 return idesc;
5618 }
5619
5620 extract_sfmt_addo_m_b_m:
5621 {
5622 const IDESC *idesc = &crisv32f_insn_data[itype];
5623 CGEN_INSN_INT insn = base_insn;
5624 #define FLD(f) abuf->fields.sfmt_addc_m.f
5625 UINT f_operand2;
5626 UINT f_memmode;
5627 UINT f_operand1;
5628
5629 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5630 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5631 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5632
5633 /* Record the fields for the semantic handler. */
5634 FLD (f_operand2) = f_operand2;
5635 FLD (f_operand1) = f_operand1;
5636 FLD (f_memmode) = f_memmode;
5637 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));
5638
5639 #if WITH_PROFILE_MODEL_P
5640 /* Record the fields for profiling. */
5641 if (PROFILE_MODEL_P (current_cpu))
5642 {
5643 FLD (in_Rd) = f_operand2;
5644 FLD (in_Rs) = f_operand1;
5645 FLD (out_Rs) = f_operand1;
5646 }
5647 #endif
5648 #undef FLD
5649 return idesc;
5650 }
5651
5652 extract_sfmt_addo_m_w_m:
5653 {
5654 const IDESC *idesc = &crisv32f_insn_data[itype];
5655 CGEN_INSN_INT insn = base_insn;
5656 #define FLD(f) abuf->fields.sfmt_addc_m.f
5657 UINT f_operand2;
5658 UINT f_memmode;
5659 UINT f_operand1;
5660
5661 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5662 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5663 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5664
5665 /* Record the fields for the semantic handler. */
5666 FLD (f_operand2) = f_operand2;
5667 FLD (f_operand1) = f_operand1;
5668 FLD (f_memmode) = f_memmode;
5669 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));
5670
5671 #if WITH_PROFILE_MODEL_P
5672 /* Record the fields for profiling. */
5673 if (PROFILE_MODEL_P (current_cpu))
5674 {
5675 FLD (in_Rd) = f_operand2;
5676 FLD (in_Rs) = f_operand1;
5677 FLD (out_Rs) = f_operand1;
5678 }
5679 #endif
5680 #undef FLD
5681 return idesc;
5682 }
5683
5684 extract_sfmt_addo_m_d_m:
5685 {
5686 const IDESC *idesc = &crisv32f_insn_data[itype];
5687 CGEN_INSN_INT insn = base_insn;
5688 #define FLD(f) abuf->fields.sfmt_addc_m.f
5689 UINT f_operand2;
5690 UINT f_memmode;
5691 UINT f_operand1;
5692
5693 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5694 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5695 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5696
5697 /* Record the fields for the semantic handler. */
5698 FLD (f_operand2) = f_operand2;
5699 FLD (f_operand1) = f_operand1;
5700 FLD (f_memmode) = f_memmode;
5701 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));
5702
5703 #if WITH_PROFILE_MODEL_P
5704 /* Record the fields for profiling. */
5705 if (PROFILE_MODEL_P (current_cpu))
5706 {
5707 FLD (in_Rd) = f_operand2;
5708 FLD (in_Rs) = f_operand1;
5709 FLD (out_Rs) = f_operand1;
5710 }
5711 #endif
5712 #undef FLD
5713 return idesc;
5714 }
5715
5716 extract_sfmt_addo_cb:
5717 {
5718 const IDESC *idesc = &crisv32f_insn_data[itype];
5719 CGEN_INSN_INT insn = base_insn;
5720 #define FLD(f) abuf->fields.sfmt_bound_cb.f
5721 INT f_indir_pc__byte;
5722 UINT f_operand2;
5723 /* Contents of trailing part of insn. */
5724 UINT word_1;
5725
5726 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5727 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
5728 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5729
5730 /* Record the fields for the semantic handler. */
5731 FLD (f_operand2) = f_operand2;
5732 FLD (f_indir_pc__byte) = f_indir_pc__byte;
5733 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));
5734
5735 #if WITH_PROFILE_MODEL_P
5736 /* Record the fields for profiling. */
5737 if (PROFILE_MODEL_P (current_cpu))
5738 {
5739 FLD (in_Rd) = f_operand2;
5740 }
5741 #endif
5742 #undef FLD
5743 return idesc;
5744 }
5745
5746 extract_sfmt_addo_cw:
5747 {
5748 const IDESC *idesc = &crisv32f_insn_data[itype];
5749 CGEN_INSN_INT insn = base_insn;
5750 #define FLD(f) abuf->fields.sfmt_bound_cw.f
5751 INT f_indir_pc__word;
5752 UINT f_operand2;
5753 /* Contents of trailing part of insn. */
5754 UINT word_1;
5755
5756 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5757 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
5758 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5759
5760 /* Record the fields for the semantic handler. */
5761 FLD (f_operand2) = f_operand2;
5762 FLD (f_indir_pc__word) = f_indir_pc__word;
5763 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));
5764
5765 #if WITH_PROFILE_MODEL_P
5766 /* Record the fields for profiling. */
5767 if (PROFILE_MODEL_P (current_cpu))
5768 {
5769 FLD (in_Rd) = f_operand2;
5770 }
5771 #endif
5772 #undef FLD
5773 return idesc;
5774 }
5775
5776 extract_sfmt_addo_cd:
5777 {
5778 const IDESC *idesc = &crisv32f_insn_data[itype];
5779 CGEN_INSN_INT insn = base_insn;
5780 #define FLD(f) abuf->fields.sfmt_bound_cd.f
5781 INT f_indir_pc__dword;
5782 UINT f_operand2;
5783 /* Contents of trailing part of insn. */
5784 UINT word_1;
5785
5786 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5787 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
5788 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5789
5790 /* Record the fields for the semantic handler. */
5791 FLD (f_operand2) = f_operand2;
5792 FLD (f_indir_pc__dword) = f_indir_pc__dword;
5793 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));
5794
5795 #if WITH_PROFILE_MODEL_P
5796 /* Record the fields for profiling. */
5797 if (PROFILE_MODEL_P (current_cpu))
5798 {
5799 FLD (in_Rd) = f_operand2;
5800 }
5801 #endif
5802 #undef FLD
5803 return idesc;
5804 }
5805
5806 extract_sfmt_addi_acr_b_r:
5807 {
5808 const IDESC *idesc = &crisv32f_insn_data[itype];
5809 CGEN_INSN_INT insn = base_insn;
5810 #define FLD(f) abuf->fields.sfmt_muls_b.f
5811 UINT f_operand2;
5812 UINT f_operand1;
5813
5814 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5815 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5816
5817 /* Record the fields for the semantic handler. */
5818 FLD (f_operand2) = f_operand2;
5819 FLD (f_operand1) = f_operand1;
5820 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));
5821
5822 #if WITH_PROFILE_MODEL_P
5823 /* Record the fields for profiling. */
5824 if (PROFILE_MODEL_P (current_cpu))
5825 {
5826 FLD (in_Rd) = f_operand2;
5827 FLD (in_Rs) = f_operand1;
5828 }
5829 #endif
5830 #undef FLD
5831 return idesc;
5832 }
5833
5834 extract_sfmt_fidxi:
5835 {
5836 const IDESC *idesc = &crisv32f_insn_data[itype];
5837 CGEN_INSN_INT insn = base_insn;
5838 #define FLD(f) abuf->fields.sfmt_mcp.f
5839 UINT f_operand1;
5840
5841 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5842
5843 /* Record the fields for the semantic handler. */
5844 FLD (f_operand1) = f_operand1;
5845 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fidxi", "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
5846
5847 #if WITH_PROFILE_MODEL_P
5848 /* Record the fields for profiling. */
5849 if (PROFILE_MODEL_P (current_cpu))
5850 {
5851 FLD (in_Rs) = f_operand1;
5852 }
5853 #endif
5854 #undef FLD
5855 return idesc;
5856 }
5857
5858 }
This page took 0.147557 seconds and 5 git commands to generate.