]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/cris/decodev10.c
Regenerate cgen-derived files.
[thirdparty/binutils-gdb.git] / sim / cris / decodev10.c
1 /* Simulator instruction decoder for crisv10f.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996-2010 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 crisv10f
26 #define WANT_CPU_CRISV10F
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 crisv10f_insn_data[CRISV10F_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 crisv10f_insn_sem[] =
43 {
44 { VIRTUAL_INSN_X_INVALID, CRISV10F_INSN_X_INVALID, CRISV10F_SFMT_EMPTY },
45 { VIRTUAL_INSN_X_AFTER, CRISV10F_INSN_X_AFTER, CRISV10F_SFMT_EMPTY },
46 { VIRTUAL_INSN_X_BEFORE, CRISV10F_INSN_X_BEFORE, CRISV10F_SFMT_EMPTY },
47 { VIRTUAL_INSN_X_CTI_CHAIN, CRISV10F_INSN_X_CTI_CHAIN, CRISV10F_SFMT_EMPTY },
48 { VIRTUAL_INSN_X_CHAIN, CRISV10F_INSN_X_CHAIN, CRISV10F_SFMT_EMPTY },
49 { VIRTUAL_INSN_X_BEGIN, CRISV10F_INSN_X_BEGIN, CRISV10F_SFMT_EMPTY },
50 { CRIS_INSN_NOP, CRISV10F_INSN_NOP, CRISV10F_SFMT_NOP },
51 { CRIS_INSN_MOVE_B_R, CRISV10F_INSN_MOVE_B_R, CRISV10F_SFMT_MOVE_B_R },
52 { CRIS_INSN_MOVE_W_R, CRISV10F_INSN_MOVE_W_R, CRISV10F_SFMT_MOVE_B_R },
53 { CRIS_INSN_MOVE_D_R, CRISV10F_INSN_MOVE_D_R, CRISV10F_SFMT_MOVE_D_R },
54 { CRIS_INSN_MOVEPCR, CRISV10F_INSN_MOVEPCR, CRISV10F_SFMT_MOVEPCR },
55 { CRIS_INSN_MOVEQ, CRISV10F_INSN_MOVEQ, CRISV10F_SFMT_MOVEQ },
56 { CRIS_INSN_MOVS_B_R, CRISV10F_INSN_MOVS_B_R, CRISV10F_SFMT_MOVS_B_R },
57 { CRIS_INSN_MOVS_W_R, CRISV10F_INSN_MOVS_W_R, CRISV10F_SFMT_MOVS_B_R },
58 { CRIS_INSN_MOVU_B_R, CRISV10F_INSN_MOVU_B_R, CRISV10F_SFMT_MOVS_B_R },
59 { CRIS_INSN_MOVU_W_R, CRISV10F_INSN_MOVU_W_R, CRISV10F_SFMT_MOVS_B_R },
60 { CRIS_INSN_MOVECBR, CRISV10F_INSN_MOVECBR, CRISV10F_SFMT_MOVECBR },
61 { CRIS_INSN_MOVECWR, CRISV10F_INSN_MOVECWR, CRISV10F_SFMT_MOVECWR },
62 { CRIS_INSN_MOVECDR, CRISV10F_INSN_MOVECDR, CRISV10F_SFMT_MOVECDR },
63 { CRIS_INSN_MOVSCBR, CRISV10F_INSN_MOVSCBR, CRISV10F_SFMT_MOVSCBR },
64 { CRIS_INSN_MOVSCWR, CRISV10F_INSN_MOVSCWR, CRISV10F_SFMT_MOVSCWR },
65 { CRIS_INSN_MOVUCBR, CRISV10F_INSN_MOVUCBR, CRISV10F_SFMT_MOVUCBR },
66 { CRIS_INSN_MOVUCWR, CRISV10F_INSN_MOVUCWR, CRISV10F_SFMT_MOVUCWR },
67 { CRIS_INSN_ADDQ, CRISV10F_INSN_ADDQ, CRISV10F_SFMT_ADDQ },
68 { CRIS_INSN_SUBQ, CRISV10F_INSN_SUBQ, CRISV10F_SFMT_ADDQ },
69 { CRIS_INSN_CMP_R_B_R, CRISV10F_INSN_CMP_R_B_R, CRISV10F_SFMT_CMP_R_B_R },
70 { CRIS_INSN_CMP_R_W_R, CRISV10F_INSN_CMP_R_W_R, CRISV10F_SFMT_CMP_R_B_R },
71 { CRIS_INSN_CMP_R_D_R, CRISV10F_INSN_CMP_R_D_R, CRISV10F_SFMT_CMP_R_B_R },
72 { CRIS_INSN_CMP_M_B_M, CRISV10F_INSN_CMP_M_B_M, CRISV10F_SFMT_CMP_M_B_M },
73 { CRIS_INSN_CMP_M_W_M, CRISV10F_INSN_CMP_M_W_M, CRISV10F_SFMT_CMP_M_W_M },
74 { CRIS_INSN_CMP_M_D_M, CRISV10F_INSN_CMP_M_D_M, CRISV10F_SFMT_CMP_M_D_M },
75 { CRIS_INSN_CMPCBR, CRISV10F_INSN_CMPCBR, CRISV10F_SFMT_CMPCBR },
76 { CRIS_INSN_CMPCWR, CRISV10F_INSN_CMPCWR, CRISV10F_SFMT_CMPCWR },
77 { CRIS_INSN_CMPCDR, CRISV10F_INSN_CMPCDR, CRISV10F_SFMT_CMPCDR },
78 { CRIS_INSN_CMPQ, CRISV10F_INSN_CMPQ, CRISV10F_SFMT_CMPQ },
79 { CRIS_INSN_CMPS_M_B_M, CRISV10F_INSN_CMPS_M_B_M, CRISV10F_SFMT_CMP_M_B_M },
80 { CRIS_INSN_CMPS_M_W_M, CRISV10F_INSN_CMPS_M_W_M, CRISV10F_SFMT_CMP_M_W_M },
81 { CRIS_INSN_CMPSCBR, CRISV10F_INSN_CMPSCBR, CRISV10F_SFMT_CMPCBR },
82 { CRIS_INSN_CMPSCWR, CRISV10F_INSN_CMPSCWR, CRISV10F_SFMT_CMPCWR },
83 { CRIS_INSN_CMPU_M_B_M, CRISV10F_INSN_CMPU_M_B_M, CRISV10F_SFMT_CMP_M_B_M },
84 { CRIS_INSN_CMPU_M_W_M, CRISV10F_INSN_CMPU_M_W_M, CRISV10F_SFMT_CMP_M_W_M },
85 { CRIS_INSN_CMPUCBR, CRISV10F_INSN_CMPUCBR, CRISV10F_SFMT_CMPUCBR },
86 { CRIS_INSN_CMPUCWR, CRISV10F_INSN_CMPUCWR, CRISV10F_SFMT_CMPUCWR },
87 { CRIS_INSN_MOVE_M_B_M, CRISV10F_INSN_MOVE_M_B_M, CRISV10F_SFMT_MOVE_M_B_M },
88 { CRIS_INSN_MOVE_M_W_M, CRISV10F_INSN_MOVE_M_W_M, CRISV10F_SFMT_MOVE_M_W_M },
89 { CRIS_INSN_MOVE_M_D_M, CRISV10F_INSN_MOVE_M_D_M, CRISV10F_SFMT_MOVE_M_D_M },
90 { CRIS_INSN_MOVS_M_B_M, CRISV10F_INSN_MOVS_M_B_M, CRISV10F_SFMT_MOVS_M_B_M },
91 { CRIS_INSN_MOVS_M_W_M, CRISV10F_INSN_MOVS_M_W_M, CRISV10F_SFMT_MOVS_M_W_M },
92 { CRIS_INSN_MOVU_M_B_M, CRISV10F_INSN_MOVU_M_B_M, CRISV10F_SFMT_MOVS_M_B_M },
93 { CRIS_INSN_MOVU_M_W_M, CRISV10F_INSN_MOVU_M_W_M, CRISV10F_SFMT_MOVS_M_W_M },
94 { CRIS_INSN_MOVE_R_SPRV10, CRISV10F_INSN_MOVE_R_SPRV10, CRISV10F_SFMT_MOVE_R_SPRV10 },
95 { CRIS_INSN_MOVE_SPR_RV10, CRISV10F_INSN_MOVE_SPR_RV10, CRISV10F_SFMT_MOVE_SPR_RV10 },
96 { CRIS_INSN_RET_TYPE, CRISV10F_INSN_RET_TYPE, CRISV10F_SFMT_RET_TYPE },
97 { CRIS_INSN_MOVE_M_SPRV10, CRISV10F_INSN_MOVE_M_SPRV10, CRISV10F_SFMT_MOVE_M_SPRV10 },
98 { CRIS_INSN_MOVE_C_SPRV10_P5, CRISV10F_INSN_MOVE_C_SPRV10_P5, CRISV10F_SFMT_MOVE_C_SPRV10_P5 },
99 { CRIS_INSN_MOVE_C_SPRV10_P9, CRISV10F_INSN_MOVE_C_SPRV10_P9, CRISV10F_SFMT_MOVE_C_SPRV10_P9 },
100 { CRIS_INSN_MOVE_C_SPRV10_P10, CRISV10F_INSN_MOVE_C_SPRV10_P10, CRISV10F_SFMT_MOVE_C_SPRV10_P9 },
101 { CRIS_INSN_MOVE_C_SPRV10_P11, CRISV10F_INSN_MOVE_C_SPRV10_P11, CRISV10F_SFMT_MOVE_C_SPRV10_P9 },
102 { CRIS_INSN_MOVE_C_SPRV10_P12, CRISV10F_INSN_MOVE_C_SPRV10_P12, CRISV10F_SFMT_MOVE_C_SPRV10_P9 },
103 { CRIS_INSN_MOVE_C_SPRV10_P13, CRISV10F_INSN_MOVE_C_SPRV10_P13, CRISV10F_SFMT_MOVE_C_SPRV10_P9 },
104 { CRIS_INSN_MOVE_C_SPRV10_P7, CRISV10F_INSN_MOVE_C_SPRV10_P7, CRISV10F_SFMT_MOVE_C_SPRV10_P9 },
105 { CRIS_INSN_MOVE_C_SPRV10_P14, CRISV10F_INSN_MOVE_C_SPRV10_P14, CRISV10F_SFMT_MOVE_C_SPRV10_P9 },
106 { CRIS_INSN_MOVE_C_SPRV10_P15, CRISV10F_INSN_MOVE_C_SPRV10_P15, CRISV10F_SFMT_MOVE_C_SPRV10_P9 },
107 { CRIS_INSN_MOVE_SPR_MV10, CRISV10F_INSN_MOVE_SPR_MV10, CRISV10F_SFMT_MOVE_SPR_MV10 },
108 { CRIS_INSN_SBFS, CRISV10F_INSN_SBFS, CRISV10F_SFMT_SBFS },
109 { CRIS_INSN_MOVEM_R_M, CRISV10F_INSN_MOVEM_R_M, CRISV10F_SFMT_MOVEM_R_M },
110 { CRIS_INSN_MOVEM_M_R, CRISV10F_INSN_MOVEM_M_R, CRISV10F_SFMT_MOVEM_M_R },
111 { CRIS_INSN_MOVEM_M_PC, CRISV10F_INSN_MOVEM_M_PC, CRISV10F_SFMT_MOVEM_M_PC },
112 { CRIS_INSN_ADD_B_R, CRISV10F_INSN_ADD_B_R, CRISV10F_SFMT_ADD_B_R },
113 { CRIS_INSN_ADD_W_R, CRISV10F_INSN_ADD_W_R, CRISV10F_SFMT_ADD_B_R },
114 { CRIS_INSN_ADD_D_R, CRISV10F_INSN_ADD_D_R, CRISV10F_SFMT_ADD_D_R },
115 { CRIS_INSN_ADD_M_B_M, CRISV10F_INSN_ADD_M_B_M, CRISV10F_SFMT_ADD_M_B_M },
116 { CRIS_INSN_ADD_M_W_M, CRISV10F_INSN_ADD_M_W_M, CRISV10F_SFMT_ADD_M_W_M },
117 { CRIS_INSN_ADD_M_D_M, CRISV10F_INSN_ADD_M_D_M, CRISV10F_SFMT_ADD_M_D_M },
118 { CRIS_INSN_ADDCBR, CRISV10F_INSN_ADDCBR, CRISV10F_SFMT_ADDCBR },
119 { CRIS_INSN_ADDCWR, CRISV10F_INSN_ADDCWR, CRISV10F_SFMT_ADDCWR },
120 { CRIS_INSN_ADDCDR, CRISV10F_INSN_ADDCDR, CRISV10F_SFMT_ADDCDR },
121 { CRIS_INSN_ADDCPC, CRISV10F_INSN_ADDCPC, CRISV10F_SFMT_ADDCPC },
122 { CRIS_INSN_ADDS_B_R, CRISV10F_INSN_ADDS_B_R, CRISV10F_SFMT_ADD_D_R },
123 { CRIS_INSN_ADDS_W_R, CRISV10F_INSN_ADDS_W_R, CRISV10F_SFMT_ADD_D_R },
124 { CRIS_INSN_ADDS_M_B_M, CRISV10F_INSN_ADDS_M_B_M, CRISV10F_SFMT_ADDS_M_B_M },
125 { CRIS_INSN_ADDS_M_W_M, CRISV10F_INSN_ADDS_M_W_M, CRISV10F_SFMT_ADDS_M_W_M },
126 { CRIS_INSN_ADDSCBR, CRISV10F_INSN_ADDSCBR, CRISV10F_SFMT_ADDSCBR },
127 { CRIS_INSN_ADDSCWR, CRISV10F_INSN_ADDSCWR, CRISV10F_SFMT_ADDSCWR },
128 { CRIS_INSN_ADDSPCPC, CRISV10F_INSN_ADDSPCPC, CRISV10F_SFMT_ADDSPCPC },
129 { CRIS_INSN_ADDU_B_R, CRISV10F_INSN_ADDU_B_R, CRISV10F_SFMT_ADD_D_R },
130 { CRIS_INSN_ADDU_W_R, CRISV10F_INSN_ADDU_W_R, CRISV10F_SFMT_ADD_D_R },
131 { CRIS_INSN_ADDU_M_B_M, CRISV10F_INSN_ADDU_M_B_M, CRISV10F_SFMT_ADDS_M_B_M },
132 { CRIS_INSN_ADDU_M_W_M, CRISV10F_INSN_ADDU_M_W_M, CRISV10F_SFMT_ADDS_M_W_M },
133 { CRIS_INSN_ADDUCBR, CRISV10F_INSN_ADDUCBR, CRISV10F_SFMT_ADDSCBR },
134 { CRIS_INSN_ADDUCWR, CRISV10F_INSN_ADDUCWR, CRISV10F_SFMT_ADDSCWR },
135 { CRIS_INSN_SUB_B_R, CRISV10F_INSN_SUB_B_R, CRISV10F_SFMT_ADD_B_R },
136 { CRIS_INSN_SUB_W_R, CRISV10F_INSN_SUB_W_R, CRISV10F_SFMT_ADD_B_R },
137 { CRIS_INSN_SUB_D_R, CRISV10F_INSN_SUB_D_R, CRISV10F_SFMT_ADD_D_R },
138 { CRIS_INSN_SUB_M_B_M, CRISV10F_INSN_SUB_M_B_M, CRISV10F_SFMT_ADD_M_B_M },
139 { CRIS_INSN_SUB_M_W_M, CRISV10F_INSN_SUB_M_W_M, CRISV10F_SFMT_ADD_M_W_M },
140 { CRIS_INSN_SUB_M_D_M, CRISV10F_INSN_SUB_M_D_M, CRISV10F_SFMT_ADD_M_D_M },
141 { CRIS_INSN_SUBCBR, CRISV10F_INSN_SUBCBR, CRISV10F_SFMT_ADDCBR },
142 { CRIS_INSN_SUBCWR, CRISV10F_INSN_SUBCWR, CRISV10F_SFMT_ADDCWR },
143 { CRIS_INSN_SUBCDR, CRISV10F_INSN_SUBCDR, CRISV10F_SFMT_ADDCDR },
144 { CRIS_INSN_SUBS_B_R, CRISV10F_INSN_SUBS_B_R, CRISV10F_SFMT_ADD_D_R },
145 { CRIS_INSN_SUBS_W_R, CRISV10F_INSN_SUBS_W_R, CRISV10F_SFMT_ADD_D_R },
146 { CRIS_INSN_SUBS_M_B_M, CRISV10F_INSN_SUBS_M_B_M, CRISV10F_SFMT_ADDS_M_B_M },
147 { CRIS_INSN_SUBS_M_W_M, CRISV10F_INSN_SUBS_M_W_M, CRISV10F_SFMT_ADDS_M_W_M },
148 { CRIS_INSN_SUBSCBR, CRISV10F_INSN_SUBSCBR, CRISV10F_SFMT_ADDSCBR },
149 { CRIS_INSN_SUBSCWR, CRISV10F_INSN_SUBSCWR, CRISV10F_SFMT_ADDSCWR },
150 { CRIS_INSN_SUBU_B_R, CRISV10F_INSN_SUBU_B_R, CRISV10F_SFMT_ADD_D_R },
151 { CRIS_INSN_SUBU_W_R, CRISV10F_INSN_SUBU_W_R, CRISV10F_SFMT_ADD_D_R },
152 { CRIS_INSN_SUBU_M_B_M, CRISV10F_INSN_SUBU_M_B_M, CRISV10F_SFMT_ADDS_M_B_M },
153 { CRIS_INSN_SUBU_M_W_M, CRISV10F_INSN_SUBU_M_W_M, CRISV10F_SFMT_ADDS_M_W_M },
154 { CRIS_INSN_SUBUCBR, CRISV10F_INSN_SUBUCBR, CRISV10F_SFMT_ADDSCBR },
155 { CRIS_INSN_SUBUCWR, CRISV10F_INSN_SUBUCWR, CRISV10F_SFMT_ADDSCWR },
156 { CRIS_INSN_ADDI_B_R, CRISV10F_INSN_ADDI_B_R, CRISV10F_SFMT_ADDI_B_R },
157 { CRIS_INSN_ADDI_W_R, CRISV10F_INSN_ADDI_W_R, CRISV10F_SFMT_ADDI_B_R },
158 { CRIS_INSN_ADDI_D_R, CRISV10F_INSN_ADDI_D_R, CRISV10F_SFMT_ADDI_B_R },
159 { CRIS_INSN_NEG_B_R, CRISV10F_INSN_NEG_B_R, CRISV10F_SFMT_NEG_B_R },
160 { CRIS_INSN_NEG_W_R, CRISV10F_INSN_NEG_W_R, CRISV10F_SFMT_NEG_B_R },
161 { CRIS_INSN_NEG_D_R, CRISV10F_INSN_NEG_D_R, CRISV10F_SFMT_NEG_D_R },
162 { CRIS_INSN_TEST_M_B_M, CRISV10F_INSN_TEST_M_B_M, CRISV10F_SFMT_TEST_M_B_M },
163 { CRIS_INSN_TEST_M_W_M, CRISV10F_INSN_TEST_M_W_M, CRISV10F_SFMT_TEST_M_W_M },
164 { CRIS_INSN_TEST_M_D_M, CRISV10F_INSN_TEST_M_D_M, CRISV10F_SFMT_TEST_M_D_M },
165 { CRIS_INSN_MOVE_R_M_B_M, CRISV10F_INSN_MOVE_R_M_B_M, CRISV10F_SFMT_MOVE_R_M_B_M },
166 { CRIS_INSN_MOVE_R_M_W_M, CRISV10F_INSN_MOVE_R_M_W_M, CRISV10F_SFMT_MOVE_R_M_W_M },
167 { CRIS_INSN_MOVE_R_M_D_M, CRISV10F_INSN_MOVE_R_M_D_M, CRISV10F_SFMT_MOVE_R_M_D_M },
168 { CRIS_INSN_MULS_B, CRISV10F_INSN_MULS_B, CRISV10F_SFMT_MULS_B },
169 { CRIS_INSN_MULS_W, CRISV10F_INSN_MULS_W, CRISV10F_SFMT_MULS_B },
170 { CRIS_INSN_MULS_D, CRISV10F_INSN_MULS_D, CRISV10F_SFMT_MULS_B },
171 { CRIS_INSN_MULU_B, CRISV10F_INSN_MULU_B, CRISV10F_SFMT_MULS_B },
172 { CRIS_INSN_MULU_W, CRISV10F_INSN_MULU_W, CRISV10F_SFMT_MULS_B },
173 { CRIS_INSN_MULU_D, CRISV10F_INSN_MULU_D, CRISV10F_SFMT_MULS_B },
174 { CRIS_INSN_MSTEP, CRISV10F_INSN_MSTEP, CRISV10F_SFMT_MSTEP },
175 { CRIS_INSN_DSTEP, CRISV10F_INSN_DSTEP, CRISV10F_SFMT_DSTEP },
176 { CRIS_INSN_ABS, CRISV10F_INSN_ABS, CRISV10F_SFMT_MOVS_B_R },
177 { CRIS_INSN_AND_B_R, CRISV10F_INSN_AND_B_R, CRISV10F_SFMT_AND_B_R },
178 { CRIS_INSN_AND_W_R, CRISV10F_INSN_AND_W_R, CRISV10F_SFMT_AND_B_R },
179 { CRIS_INSN_AND_D_R, CRISV10F_INSN_AND_D_R, CRISV10F_SFMT_AND_D_R },
180 { CRIS_INSN_AND_M_B_M, CRISV10F_INSN_AND_M_B_M, CRISV10F_SFMT_AND_M_B_M },
181 { CRIS_INSN_AND_M_W_M, CRISV10F_INSN_AND_M_W_M, CRISV10F_SFMT_AND_M_W_M },
182 { CRIS_INSN_AND_M_D_M, CRISV10F_INSN_AND_M_D_M, CRISV10F_SFMT_AND_M_D_M },
183 { CRIS_INSN_ANDCBR, CRISV10F_INSN_ANDCBR, CRISV10F_SFMT_ANDCBR },
184 { CRIS_INSN_ANDCWR, CRISV10F_INSN_ANDCWR, CRISV10F_SFMT_ANDCWR },
185 { CRIS_INSN_ANDCDR, CRISV10F_INSN_ANDCDR, CRISV10F_SFMT_ANDCDR },
186 { CRIS_INSN_ANDQ, CRISV10F_INSN_ANDQ, CRISV10F_SFMT_ANDQ },
187 { CRIS_INSN_ORR_B_R, CRISV10F_INSN_ORR_B_R, CRISV10F_SFMT_AND_B_R },
188 { CRIS_INSN_ORR_W_R, CRISV10F_INSN_ORR_W_R, CRISV10F_SFMT_AND_B_R },
189 { CRIS_INSN_ORR_D_R, CRISV10F_INSN_ORR_D_R, CRISV10F_SFMT_AND_D_R },
190 { CRIS_INSN_OR_M_B_M, CRISV10F_INSN_OR_M_B_M, CRISV10F_SFMT_AND_M_B_M },
191 { CRIS_INSN_OR_M_W_M, CRISV10F_INSN_OR_M_W_M, CRISV10F_SFMT_AND_M_W_M },
192 { CRIS_INSN_OR_M_D_M, CRISV10F_INSN_OR_M_D_M, CRISV10F_SFMT_AND_M_D_M },
193 { CRIS_INSN_ORCBR, CRISV10F_INSN_ORCBR, CRISV10F_SFMT_ANDCBR },
194 { CRIS_INSN_ORCWR, CRISV10F_INSN_ORCWR, CRISV10F_SFMT_ANDCWR },
195 { CRIS_INSN_ORCDR, CRISV10F_INSN_ORCDR, CRISV10F_SFMT_ANDCDR },
196 { CRIS_INSN_ORQ, CRISV10F_INSN_ORQ, CRISV10F_SFMT_ANDQ },
197 { CRIS_INSN_XOR, CRISV10F_INSN_XOR, CRISV10F_SFMT_DSTEP },
198 { CRIS_INSN_SWAP, CRISV10F_INSN_SWAP, CRISV10F_SFMT_SWAP },
199 { CRIS_INSN_ASRR_B_R, CRISV10F_INSN_ASRR_B_R, CRISV10F_SFMT_AND_B_R },
200 { CRIS_INSN_ASRR_W_R, CRISV10F_INSN_ASRR_W_R, CRISV10F_SFMT_AND_B_R },
201 { CRIS_INSN_ASRR_D_R, CRISV10F_INSN_ASRR_D_R, CRISV10F_SFMT_AND_D_R },
202 { CRIS_INSN_ASRQ, CRISV10F_INSN_ASRQ, CRISV10F_SFMT_ASRQ },
203 { CRIS_INSN_LSRR_B_R, CRISV10F_INSN_LSRR_B_R, CRISV10F_SFMT_LSRR_B_R },
204 { CRIS_INSN_LSRR_W_R, CRISV10F_INSN_LSRR_W_R, CRISV10F_SFMT_LSRR_B_R },
205 { CRIS_INSN_LSRR_D_R, CRISV10F_INSN_LSRR_D_R, CRISV10F_SFMT_LSRR_D_R },
206 { CRIS_INSN_LSRQ, CRISV10F_INSN_LSRQ, CRISV10F_SFMT_ASRQ },
207 { CRIS_INSN_LSLR_B_R, CRISV10F_INSN_LSLR_B_R, CRISV10F_SFMT_LSRR_B_R },
208 { CRIS_INSN_LSLR_W_R, CRISV10F_INSN_LSLR_W_R, CRISV10F_SFMT_LSRR_B_R },
209 { CRIS_INSN_LSLR_D_R, CRISV10F_INSN_LSLR_D_R, CRISV10F_SFMT_LSRR_D_R },
210 { CRIS_INSN_LSLQ, CRISV10F_INSN_LSLQ, CRISV10F_SFMT_ASRQ },
211 { CRIS_INSN_BTST, CRISV10F_INSN_BTST, CRISV10F_SFMT_BTST },
212 { CRIS_INSN_BTSTQ, CRISV10F_INSN_BTSTQ, CRISV10F_SFMT_BTSTQ },
213 { CRIS_INSN_SETF, CRISV10F_INSN_SETF, CRISV10F_SFMT_SETF },
214 { CRIS_INSN_CLEARF, CRISV10F_INSN_CLEARF, CRISV10F_SFMT_SETF },
215 { CRIS_INSN_BCC_B, CRISV10F_INSN_BCC_B, CRISV10F_SFMT_BCC_B },
216 { CRIS_INSN_BA_B, CRISV10F_INSN_BA_B, CRISV10F_SFMT_BA_B },
217 { CRIS_INSN_BCC_W, CRISV10F_INSN_BCC_W, CRISV10F_SFMT_BCC_W },
218 { CRIS_INSN_BA_W, CRISV10F_INSN_BA_W, CRISV10F_SFMT_BA_W },
219 { CRIS_INSN_JUMP_R, CRISV10F_INSN_JUMP_R, CRISV10F_SFMT_JUMP_R },
220 { CRIS_INSN_JUMP_M, CRISV10F_INSN_JUMP_M, CRISV10F_SFMT_JUMP_M },
221 { CRIS_INSN_JUMP_C, CRISV10F_INSN_JUMP_C, CRISV10F_SFMT_JUMP_C },
222 { CRIS_INSN_BREAK, CRISV10F_INSN_BREAK, CRISV10F_SFMT_BREAK },
223 { CRIS_INSN_BOUND_R_B_R, CRISV10F_INSN_BOUND_R_B_R, CRISV10F_SFMT_DSTEP },
224 { CRIS_INSN_BOUND_R_W_R, CRISV10F_INSN_BOUND_R_W_R, CRISV10F_SFMT_DSTEP },
225 { CRIS_INSN_BOUND_R_D_R, CRISV10F_INSN_BOUND_R_D_R, CRISV10F_SFMT_DSTEP },
226 { CRIS_INSN_BOUND_M_B_M, CRISV10F_INSN_BOUND_M_B_M, CRISV10F_SFMT_BOUND_M_B_M },
227 { CRIS_INSN_BOUND_M_W_M, CRISV10F_INSN_BOUND_M_W_M, CRISV10F_SFMT_BOUND_M_W_M },
228 { CRIS_INSN_BOUND_M_D_M, CRISV10F_INSN_BOUND_M_D_M, CRISV10F_SFMT_BOUND_M_D_M },
229 { CRIS_INSN_BOUND_CB, CRISV10F_INSN_BOUND_CB, CRISV10F_SFMT_BOUND_CB },
230 { CRIS_INSN_BOUND_CW, CRISV10F_INSN_BOUND_CW, CRISV10F_SFMT_BOUND_CW },
231 { CRIS_INSN_BOUND_CD, CRISV10F_INSN_BOUND_CD, CRISV10F_SFMT_BOUND_CD },
232 { CRIS_INSN_SCC, CRISV10F_INSN_SCC, CRISV10F_SFMT_SCC },
233 { CRIS_INSN_LZ, CRISV10F_INSN_LZ, CRISV10F_SFMT_MOVS_B_R },
234 { CRIS_INSN_ADDOQ, CRISV10F_INSN_ADDOQ, CRISV10F_SFMT_ADDOQ },
235 { CRIS_INSN_BDAPQPC, CRISV10F_INSN_BDAPQPC, CRISV10F_SFMT_BDAPQPC },
236 { CRIS_INSN_BDAP_32_PC, CRISV10F_INSN_BDAP_32_PC, CRISV10F_SFMT_BDAP_32_PC },
237 { CRIS_INSN_MOVE_M_PCPLUS_P0, CRISV10F_INSN_MOVE_M_PCPLUS_P0, CRISV10F_SFMT_MOVE_M_PCPLUS_P0 },
238 { CRIS_INSN_MOVE_M_SPPLUS_P8, CRISV10F_INSN_MOVE_M_SPPLUS_P8, CRISV10F_SFMT_MOVE_M_SPPLUS_P8 },
239 { CRIS_INSN_ADDO_M_B_M, CRISV10F_INSN_ADDO_M_B_M, CRISV10F_SFMT_ADDO_M_B_M },
240 { CRIS_INSN_ADDO_M_W_M, CRISV10F_INSN_ADDO_M_W_M, CRISV10F_SFMT_ADDO_M_W_M },
241 { CRIS_INSN_ADDO_M_D_M, CRISV10F_INSN_ADDO_M_D_M, CRISV10F_SFMT_ADDO_M_D_M },
242 { CRIS_INSN_ADDO_CB, CRISV10F_INSN_ADDO_CB, CRISV10F_SFMT_ADDO_CB },
243 { CRIS_INSN_ADDO_CW, CRISV10F_INSN_ADDO_CW, CRISV10F_SFMT_ADDO_CW },
244 { CRIS_INSN_ADDO_CD, CRISV10F_INSN_ADDO_CD, CRISV10F_SFMT_ADDO_CD },
245 { CRIS_INSN_DIP_M, CRISV10F_INSN_DIP_M, CRISV10F_SFMT_DIP_M },
246 { CRIS_INSN_DIP_C, CRISV10F_INSN_DIP_C, CRISV10F_SFMT_DIP_C },
247 { CRIS_INSN_ADDI_ACR_B_R, CRISV10F_INSN_ADDI_ACR_B_R, CRISV10F_SFMT_ADDI_ACR_B_R },
248 { CRIS_INSN_ADDI_ACR_W_R, CRISV10F_INSN_ADDI_ACR_W_R, CRISV10F_SFMT_ADDI_ACR_B_R },
249 { CRIS_INSN_ADDI_ACR_D_R, CRISV10F_INSN_ADDI_ACR_D_R, CRISV10F_SFMT_ADDI_ACR_B_R },
250 { CRIS_INSN_BIAP_PC_B_R, CRISV10F_INSN_BIAP_PC_B_R, CRISV10F_SFMT_BIAP_PC_B_R },
251 { CRIS_INSN_BIAP_PC_W_R, CRISV10F_INSN_BIAP_PC_W_R, CRISV10F_SFMT_BIAP_PC_B_R },
252 { CRIS_INSN_BIAP_PC_D_R, CRISV10F_INSN_BIAP_PC_D_R, CRISV10F_SFMT_BIAP_PC_B_R },
253 };
254
255 static const struct insn_sem crisv10f_insn_sem_invalid =
256 {
257 VIRTUAL_INSN_X_INVALID, CRISV10F_INSN_X_INVALID, CRISV10F_SFMT_EMPTY
258 };
259
260 /* Initialize an IDESC from the compile-time computable parts. */
261
262 static INLINE void
263 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
264 {
265 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
266
267 id->num = t->index;
268 id->sfmt = t->sfmt;
269 if ((int) t->type <= 0)
270 id->idata = & cgen_virtual_insn_table[- (int) t->type];
271 else
272 id->idata = & insn_table[t->type];
273 id->attrs = CGEN_INSN_ATTRS (id->idata);
274 /* Oh my god, a magic number. */
275 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
276
277 #if WITH_PROFILE_MODEL_P
278 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
279 {
280 SIM_DESC sd = CPU_STATE (cpu);
281 SIM_ASSERT (t->index == id->timing->num);
282 }
283 #endif
284
285 /* Semantic pointers are initialized elsewhere. */
286 }
287
288 /* Initialize the instruction descriptor table. */
289
290 void
291 crisv10f_init_idesc_table (SIM_CPU *cpu)
292 {
293 IDESC *id,*tabend;
294 const struct insn_sem *t,*tend;
295 int tabsize = CRISV10F_INSN__MAX;
296 IDESC *table = crisv10f_insn_data;
297
298 memset (table, 0, tabsize * sizeof (IDESC));
299
300 /* First set all entries to the `invalid insn'. */
301 t = & crisv10f_insn_sem_invalid;
302 for (id = table, tabend = table + tabsize; id < tabend; ++id)
303 init_idesc (cpu, id, t);
304
305 /* Now fill in the values for the chosen cpu. */
306 for (t = crisv10f_insn_sem, tend = t + sizeof (crisv10f_insn_sem) / sizeof (*t);
307 t != tend; ++t)
308 {
309 init_idesc (cpu, & table[t->index], t);
310 }
311
312 /* Link the IDESC table into the cpu. */
313 CPU_IDESC (cpu) = table;
314 }
315
316 /* Given an instruction, return a pointer to its IDESC entry. */
317
318 const IDESC *
319 crisv10f_decode (SIM_CPU *current_cpu, IADDR pc,
320 CGEN_INSN_WORD base_insn,
321 ARGBUF *abuf)
322 {
323 /* Result of decoder. */
324 CRISV10F_INSN_TYPE itype;
325
326 {
327 CGEN_INSN_WORD insn = base_insn;
328
329 {
330 unsigned int val = (((insn >> 4) & (255 << 0)));
331 switch (val)
332 {
333 case 0 : /* fall through */
334 case 1 : /* fall through */
335 case 2 : /* fall through */
336 case 3 : /* fall through */
337 case 4 : /* fall through */
338 case 5 : /* fall through */
339 case 6 : /* fall through */
340 case 7 : /* fall through */
341 case 8 : /* fall through */
342 case 9 : /* fall through */
343 case 10 : /* fall through */
344 case 11 : /* fall through */
345 case 12 : /* fall through */
346 case 13 : /* fall through */
347 case 14 : /* fall through */
348 case 15 :
349 {
350 unsigned int val = (((insn >> 12) & (15 << 0)));
351 switch (val)
352 {
353 case 0 : /* fall through */
354 case 1 : /* fall through */
355 case 2 : /* fall through */
356 case 3 : /* fall through */
357 case 4 : /* fall through */
358 case 5 : /* fall through */
359 case 6 : /* fall through */
360 case 7 : /* fall through */
361 case 8 : /* fall through */
362 case 9 : /* fall through */
363 case 10 : /* fall through */
364 case 11 : /* fall through */
365 case 12 : /* fall through */
366 case 13 : /* fall through */
367 case 15 : itype = CRISV10F_INSN_BCC_B; goto extract_sfmt_bcc_b;
368 case 14 : itype = CRISV10F_INSN_BA_B; goto extract_sfmt_ba_b;
369 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
370 }
371 }
372 case 16 : /* fall through */
373 case 17 : /* fall through */
374 case 18 : /* fall through */
375 case 19 : /* fall through */
376 case 20 : /* fall through */
377 case 21 : /* fall through */
378 case 22 : /* fall through */
379 case 23 : /* fall through */
380 case 24 : /* fall through */
381 case 25 : /* fall through */
382 case 26 : /* fall through */
383 case 27 : /* fall through */
384 case 28 : /* fall through */
385 case 29 : /* fall through */
386 case 30 : /* fall through */
387 case 31 :
388 {
389 unsigned int val = (((insn >> 12) & (15 << 0)));
390 switch (val)
391 {
392 case 0 : /* fall through */
393 case 1 : /* fall through */
394 case 2 : /* fall through */
395 case 3 : /* fall through */
396 case 4 : /* fall through */
397 case 5 : /* fall through */
398 case 6 : /* fall through */
399 case 7 : /* fall through */
400 case 8 : /* fall through */
401 case 9 : /* fall through */
402 case 10 : /* fall through */
403 case 11 : /* fall through */
404 case 12 : /* fall through */
405 case 13 : /* fall through */
406 case 14 : itype = CRISV10F_INSN_ADDOQ; goto extract_sfmt_addoq;
407 case 15 : itype = CRISV10F_INSN_BDAPQPC; goto extract_sfmt_bdapqpc;
408 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
409 }
410 }
411 case 32 : /* fall through */
412 case 33 : /* fall through */
413 case 34 : /* fall through */
414 case 35 : itype = CRISV10F_INSN_ADDQ; goto extract_sfmt_addq;
415 case 36 : /* fall through */
416 case 37 : /* fall through */
417 case 38 : /* fall through */
418 case 39 : itype = CRISV10F_INSN_MOVEQ; goto extract_sfmt_moveq;
419 case 40 : /* fall through */
420 case 41 : /* fall through */
421 case 42 : /* fall through */
422 case 43 : itype = CRISV10F_INSN_SUBQ; goto extract_sfmt_addq;
423 case 44 : /* fall through */
424 case 45 : /* fall through */
425 case 46 : /* fall through */
426 case 47 : itype = CRISV10F_INSN_CMPQ; goto extract_sfmt_cmpq;
427 case 48 : /* fall through */
428 case 49 : /* fall through */
429 case 50 : /* fall through */
430 case 51 : itype = CRISV10F_INSN_ANDQ; goto extract_sfmt_andq;
431 case 52 : /* fall through */
432 case 53 : /* fall through */
433 case 54 : /* fall through */
434 case 55 : itype = CRISV10F_INSN_ORQ; goto extract_sfmt_andq;
435 case 56 : /* fall through */
436 case 57 : itype = CRISV10F_INSN_BTSTQ; goto extract_sfmt_btstq;
437 case 58 : /* fall through */
438 case 59 : itype = CRISV10F_INSN_ASRQ; goto extract_sfmt_asrq;
439 case 60 : /* fall through */
440 case 61 : itype = CRISV10F_INSN_LSLQ; goto extract_sfmt_asrq;
441 case 62 : /* fall through */
442 case 63 : itype = CRISV10F_INSN_LSRQ; goto extract_sfmt_asrq;
443 case 64 : itype = CRISV10F_INSN_ADDU_B_R; goto extract_sfmt_add_d_r;
444 case 65 : itype = CRISV10F_INSN_ADDU_W_R; goto extract_sfmt_add_d_r;
445 case 66 : itype = CRISV10F_INSN_ADDS_B_R; goto extract_sfmt_add_d_r;
446 case 67 : itype = CRISV10F_INSN_ADDS_W_R; goto extract_sfmt_add_d_r;
447 case 68 : itype = CRISV10F_INSN_MOVU_B_R; goto extract_sfmt_movs_b_r;
448 case 69 : itype = CRISV10F_INSN_MOVU_W_R; goto extract_sfmt_movs_b_r;
449 case 70 : itype = CRISV10F_INSN_MOVS_B_R; goto extract_sfmt_movs_b_r;
450 case 71 : itype = CRISV10F_INSN_MOVS_W_R; goto extract_sfmt_movs_b_r;
451 case 72 : itype = CRISV10F_INSN_SUBU_B_R; goto extract_sfmt_add_d_r;
452 case 73 : itype = CRISV10F_INSN_SUBU_W_R; goto extract_sfmt_add_d_r;
453 case 74 : itype = CRISV10F_INSN_SUBS_B_R; goto extract_sfmt_add_d_r;
454 case 75 : itype = CRISV10F_INSN_SUBS_W_R; goto extract_sfmt_add_d_r;
455 case 76 : itype = CRISV10F_INSN_LSLR_B_R; goto extract_sfmt_lsrr_b_r;
456 case 77 : itype = CRISV10F_INSN_LSLR_W_R; goto extract_sfmt_lsrr_b_r;
457 case 78 : itype = CRISV10F_INSN_LSLR_D_R; goto extract_sfmt_lsrr_d_r;
458 case 79 : itype = CRISV10F_INSN_BTST; goto extract_sfmt_btst;
459 case 80 :
460 {
461 unsigned int val = (((insn >> 8) & (7 << 4)) | ((insn >> 0) & (15 << 0)));
462 switch (val)
463 {
464 case 0 : /* fall through */
465 case 1 : /* fall through */
466 case 2 : /* fall through */
467 case 3 : /* fall through */
468 case 4 : /* fall through */
469 case 5 : /* fall through */
470 case 6 : /* fall through */
471 case 7 : /* fall through */
472 case 8 : /* fall through */
473 case 9 : /* fall through */
474 case 10 : /* fall through */
475 case 11 : /* fall through */
476 case 12 : /* fall through */
477 case 13 : /* fall through */
478 case 14 : /* fall through */
479 case 16 : /* fall through */
480 case 17 : /* fall through */
481 case 18 : /* fall through */
482 case 19 : /* fall through */
483 case 20 : /* fall through */
484 case 21 : /* fall through */
485 case 22 : /* fall through */
486 case 23 : /* fall through */
487 case 24 : /* fall through */
488 case 25 : /* fall through */
489 case 26 : /* fall through */
490 case 27 : /* fall through */
491 case 28 : /* fall through */
492 case 29 : /* fall through */
493 case 30 : /* fall through */
494 case 31 : /* fall through */
495 case 32 : /* fall through */
496 case 33 : /* fall through */
497 case 34 : /* fall through */
498 case 35 : /* fall through */
499 case 36 : /* fall through */
500 case 37 : /* fall through */
501 case 38 : /* fall through */
502 case 39 : /* fall through */
503 case 40 : /* fall through */
504 case 41 : /* fall through */
505 case 42 : /* fall through */
506 case 43 : /* fall through */
507 case 44 : /* fall through */
508 case 45 : /* fall through */
509 case 46 : /* fall through */
510 case 47 : /* fall through */
511 case 48 : /* fall through */
512 case 49 : /* fall through */
513 case 50 : /* fall through */
514 case 51 : /* fall through */
515 case 52 : /* fall through */
516 case 53 : /* fall through */
517 case 54 : /* fall through */
518 case 55 : /* fall through */
519 case 56 : /* fall through */
520 case 57 : /* fall through */
521 case 58 : /* fall through */
522 case 59 : /* fall through */
523 case 60 : /* fall through */
524 case 61 : /* fall through */
525 case 62 : /* fall through */
526 case 63 : /* fall through */
527 case 64 : /* fall through */
528 case 65 : /* fall through */
529 case 66 : /* fall through */
530 case 67 : /* fall through */
531 case 68 : /* fall through */
532 case 69 : /* fall through */
533 case 70 : /* fall through */
534 case 71 : /* fall through */
535 case 72 : /* fall through */
536 case 73 : /* fall through */
537 case 74 : /* fall through */
538 case 75 : /* fall through */
539 case 76 : /* fall through */
540 case 77 : /* fall through */
541 case 78 : /* fall through */
542 case 79 : /* fall through */
543 case 80 : /* fall through */
544 case 81 : /* fall through */
545 case 82 : /* fall through */
546 case 83 : /* fall through */
547 case 84 : /* fall through */
548 case 85 : /* fall through */
549 case 86 : /* fall through */
550 case 87 : /* fall through */
551 case 88 : /* fall through */
552 case 89 : /* fall through */
553 case 90 : /* fall through */
554 case 91 : /* fall through */
555 case 92 : /* fall through */
556 case 93 : /* fall through */
557 case 94 : /* fall through */
558 case 95 : /* fall through */
559 case 96 : /* fall through */
560 case 97 : /* fall through */
561 case 98 : /* fall through */
562 case 99 : /* fall through */
563 case 100 : /* fall through */
564 case 101 : /* fall through */
565 case 102 : /* fall through */
566 case 103 : /* fall through */
567 case 104 : /* fall through */
568 case 105 : /* fall through */
569 case 106 : /* fall through */
570 case 107 : /* fall through */
571 case 108 : /* fall through */
572 case 109 : /* fall through */
573 case 110 : /* fall through */
574 case 111 : /* fall through */
575 case 112 : /* fall through */
576 case 113 : /* fall through */
577 case 114 : /* fall through */
578 case 115 : /* fall through */
579 case 116 : /* fall through */
580 case 117 : /* fall through */
581 case 118 : /* fall through */
582 case 119 : /* fall through */
583 case 120 : /* fall through */
584 case 121 : /* fall through */
585 case 122 : /* fall through */
586 case 123 : /* fall through */
587 case 124 : /* fall through */
588 case 125 : /* fall through */
589 case 126 : /* fall through */
590 case 127 : itype = CRISV10F_INSN_ADDI_B_R; goto extract_sfmt_addi_b_r;
591 case 15 :
592 {
593 unsigned int val = (((insn >> 15) & (1 << 0)));
594 switch (val)
595 {
596 case 0 : itype = CRISV10F_INSN_NOP; goto extract_sfmt_nop;
597 case 1 : itype = CRISV10F_INSN_ADDI_B_R; goto extract_sfmt_addi_b_r;
598 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
599 }
600 }
601 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
602 }
603 }
604 case 81 : itype = CRISV10F_INSN_ADDI_W_R; goto extract_sfmt_addi_b_r;
605 case 82 : itype = CRISV10F_INSN_ADDI_D_R; goto extract_sfmt_addi_b_r;
606 case 83 : itype = CRISV10F_INSN_SCC; goto extract_sfmt_scc;
607 case 84 :
608 {
609 unsigned int val = (((insn >> 0) & (15 << 0)));
610 switch (val)
611 {
612 case 0 : /* fall through */
613 case 1 : /* fall through */
614 case 2 : /* fall through */
615 case 3 : /* fall through */
616 case 4 : /* fall through */
617 case 5 : /* fall through */
618 case 6 : /* fall through */
619 case 7 : /* fall through */
620 case 8 : /* fall through */
621 case 9 : /* fall through */
622 case 10 : /* fall through */
623 case 11 : /* fall through */
624 case 12 : /* fall through */
625 case 13 : /* fall through */
626 case 14 : itype = CRISV10F_INSN_ADDI_ACR_B_R; goto extract_sfmt_addi_acr_b_r;
627 case 15 : itype = CRISV10F_INSN_BIAP_PC_B_R; goto extract_sfmt_biap_pc_b_r;
628 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
629 }
630 }
631 case 85 :
632 {
633 unsigned int val = (((insn >> 0) & (15 << 0)));
634 switch (val)
635 {
636 case 0 : /* fall through */
637 case 1 : /* fall through */
638 case 2 : /* fall through */
639 case 3 : /* fall through */
640 case 4 : /* fall through */
641 case 5 : /* fall through */
642 case 6 : /* fall through */
643 case 7 : /* fall through */
644 case 8 : /* fall through */
645 case 9 : /* fall through */
646 case 10 : /* fall through */
647 case 11 : /* fall through */
648 case 12 : /* fall through */
649 case 13 : /* fall through */
650 case 14 : itype = CRISV10F_INSN_ADDI_ACR_W_R; goto extract_sfmt_addi_acr_b_r;
651 case 15 : itype = CRISV10F_INSN_BIAP_PC_W_R; goto extract_sfmt_biap_pc_b_r;
652 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
653 }
654 }
655 case 86 :
656 {
657 unsigned int val = (((insn >> 0) & (15 << 0)));
658 switch (val)
659 {
660 case 0 : /* fall through */
661 case 1 : /* fall through */
662 case 2 : /* fall through */
663 case 3 : /* fall through */
664 case 4 : /* fall through */
665 case 5 : /* fall through */
666 case 6 : /* fall through */
667 case 7 : /* fall through */
668 case 8 : /* fall through */
669 case 9 : /* fall through */
670 case 10 : /* fall through */
671 case 11 : /* fall through */
672 case 12 : /* fall through */
673 case 13 : /* fall through */
674 case 14 : itype = CRISV10F_INSN_ADDI_ACR_D_R; goto extract_sfmt_addi_acr_b_r;
675 case 15 : itype = CRISV10F_INSN_BIAP_PC_D_R; goto extract_sfmt_biap_pc_b_r;
676 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
677 }
678 }
679 case 88 : itype = CRISV10F_INSN_NEG_B_R; goto extract_sfmt_neg_b_r;
680 case 89 : itype = CRISV10F_INSN_NEG_W_R; goto extract_sfmt_neg_b_r;
681 case 90 : itype = CRISV10F_INSN_NEG_D_R; goto extract_sfmt_neg_d_r;
682 case 91 : itype = CRISV10F_INSN_SETF; goto extract_sfmt_setf;
683 case 92 : itype = CRISV10F_INSN_BOUND_R_B_R; goto extract_sfmt_dstep;
684 case 93 : itype = CRISV10F_INSN_BOUND_R_W_R; goto extract_sfmt_dstep;
685 case 94 : itype = CRISV10F_INSN_BOUND_R_D_R; goto extract_sfmt_dstep;
686 case 95 : itype = CRISV10F_INSN_CLEARF; goto extract_sfmt_setf;
687 case 96 : itype = CRISV10F_INSN_ADD_B_R; goto extract_sfmt_add_b_r;
688 case 97 : itype = CRISV10F_INSN_ADD_W_R; goto extract_sfmt_add_b_r;
689 case 98 : itype = CRISV10F_INSN_ADD_D_R; goto extract_sfmt_add_d_r;
690 case 99 : itype = CRISV10F_INSN_MOVE_R_SPRV10; goto extract_sfmt_move_r_sprv10;
691 case 100 : itype = CRISV10F_INSN_MOVE_B_R; goto extract_sfmt_move_b_r;
692 case 101 : itype = CRISV10F_INSN_MOVE_W_R; goto extract_sfmt_move_b_r;
693 case 102 :
694 {
695 unsigned int val = (((insn >> 0) & (15 << 0)));
696 switch (val)
697 {
698 case 0 : /* fall through */
699 case 1 : /* fall through */
700 case 2 : /* fall through */
701 case 3 : /* fall through */
702 case 4 : /* fall through */
703 case 5 : /* fall through */
704 case 6 : /* fall through */
705 case 7 : /* fall through */
706 case 8 : /* fall through */
707 case 9 : /* fall through */
708 case 10 : /* fall through */
709 case 11 : /* fall through */
710 case 12 : /* fall through */
711 case 13 : /* fall through */
712 case 14 : itype = CRISV10F_INSN_MOVE_D_R; goto extract_sfmt_move_d_r;
713 case 15 : itype = CRISV10F_INSN_MOVEPCR; goto extract_sfmt_movepcr;
714 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
715 }
716 }
717 case 103 :
718 {
719 unsigned int val = (((insn >> 0) & (15 << 0)));
720 switch (val)
721 {
722 case 0 : /* fall through */
723 case 1 : /* fall through */
724 case 2 : /* fall through */
725 case 3 : /* fall through */
726 case 4 : /* fall through */
727 case 5 : /* fall through */
728 case 6 : /* fall through */
729 case 7 : /* fall through */
730 case 8 : /* fall through */
731 case 9 : /* fall through */
732 case 10 : /* fall through */
733 case 11 : /* fall through */
734 case 12 : /* fall through */
735 case 13 : /* fall through */
736 case 14 : itype = CRISV10F_INSN_MOVE_SPR_RV10; goto extract_sfmt_move_spr_rv10;
737 case 15 : itype = CRISV10F_INSN_RET_TYPE; goto extract_sfmt_ret_type;
738 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
739 }
740 }
741 case 104 : itype = CRISV10F_INSN_SUB_B_R; goto extract_sfmt_add_b_r;
742 case 105 : itype = CRISV10F_INSN_SUB_W_R; goto extract_sfmt_add_b_r;
743 case 106 : itype = CRISV10F_INSN_SUB_D_R; goto extract_sfmt_add_d_r;
744 case 107 : itype = CRISV10F_INSN_ABS; goto extract_sfmt_movs_b_r;
745 case 108 : itype = CRISV10F_INSN_CMP_R_B_R; goto extract_sfmt_cmp_r_b_r;
746 case 109 : itype = CRISV10F_INSN_CMP_R_W_R; goto extract_sfmt_cmp_r_b_r;
747 case 110 : itype = CRISV10F_INSN_CMP_R_D_R; goto extract_sfmt_cmp_r_b_r;
748 case 111 : itype = CRISV10F_INSN_DSTEP; goto extract_sfmt_dstep;
749 case 112 : itype = CRISV10F_INSN_AND_B_R; goto extract_sfmt_and_b_r;
750 case 113 : itype = CRISV10F_INSN_AND_W_R; goto extract_sfmt_and_b_r;
751 case 114 : itype = CRISV10F_INSN_AND_D_R; goto extract_sfmt_and_d_r;
752 case 115 : itype = CRISV10F_INSN_LZ; goto extract_sfmt_movs_b_r;
753 case 116 : itype = CRISV10F_INSN_ORR_B_R; goto extract_sfmt_and_b_r;
754 case 117 : itype = CRISV10F_INSN_ORR_W_R; goto extract_sfmt_and_b_r;
755 case 118 : itype = CRISV10F_INSN_ORR_D_R; goto extract_sfmt_and_d_r;
756 case 119 : itype = CRISV10F_INSN_SWAP; goto extract_sfmt_swap;
757 case 120 : itype = CRISV10F_INSN_ASRR_B_R; goto extract_sfmt_and_b_r;
758 case 121 : itype = CRISV10F_INSN_ASRR_W_R; goto extract_sfmt_and_b_r;
759 case 122 : itype = CRISV10F_INSN_ASRR_D_R; goto extract_sfmt_and_d_r;
760 case 123 : itype = CRISV10F_INSN_XOR; goto extract_sfmt_dstep;
761 case 124 : itype = CRISV10F_INSN_LSRR_B_R; goto extract_sfmt_lsrr_b_r;
762 case 125 : itype = CRISV10F_INSN_LSRR_W_R; goto extract_sfmt_lsrr_b_r;
763 case 126 : itype = CRISV10F_INSN_LSRR_D_R; goto extract_sfmt_lsrr_d_r;
764 case 127 : itype = CRISV10F_INSN_MSTEP; goto extract_sfmt_mstep;
765 case 128 : itype = CRISV10F_INSN_ADDU_M_B_M; goto extract_sfmt_adds_m_b_m;
766 case 129 : itype = CRISV10F_INSN_ADDU_M_W_M; goto extract_sfmt_adds_m_w_m;
767 case 130 : itype = CRISV10F_INSN_ADDS_M_B_M; goto extract_sfmt_adds_m_b_m;
768 case 131 :
769 {
770 unsigned int val = (((insn >> 8) & (7 << 4)) | ((insn >> 0) & (15 << 0)));
771 switch (val)
772 {
773 case 0 : /* fall through */
774 case 1 : /* fall through */
775 case 2 : /* fall through */
776 case 3 : /* fall through */
777 case 4 : /* fall through */
778 case 5 : /* fall through */
779 case 6 : /* fall through */
780 case 7 : /* fall through */
781 case 8 : /* fall through */
782 case 9 : /* fall through */
783 case 10 : /* fall through */
784 case 11 : /* fall through */
785 case 12 : /* fall through */
786 case 13 : /* fall through */
787 case 14 : /* fall through */
788 case 15 : /* fall through */
789 case 16 : /* fall through */
790 case 17 : /* fall through */
791 case 18 : /* fall through */
792 case 19 : /* fall through */
793 case 20 : /* fall through */
794 case 21 : /* fall through */
795 case 22 : /* fall through */
796 case 23 : /* fall through */
797 case 24 : /* fall through */
798 case 25 : /* fall through */
799 case 26 : /* fall through */
800 case 27 : /* fall through */
801 case 28 : /* fall through */
802 case 29 : /* fall through */
803 case 30 : /* fall through */
804 case 31 : /* fall through */
805 case 32 : /* fall through */
806 case 33 : /* fall through */
807 case 34 : /* fall through */
808 case 35 : /* fall through */
809 case 36 : /* fall through */
810 case 37 : /* fall through */
811 case 38 : /* fall through */
812 case 39 : /* fall through */
813 case 40 : /* fall through */
814 case 41 : /* fall through */
815 case 42 : /* fall through */
816 case 43 : /* fall through */
817 case 44 : /* fall through */
818 case 45 : /* fall through */
819 case 46 : /* fall through */
820 case 47 : /* fall through */
821 case 48 : /* fall through */
822 case 49 : /* fall through */
823 case 50 : /* fall through */
824 case 51 : /* fall through */
825 case 52 : /* fall through */
826 case 53 : /* fall through */
827 case 54 : /* fall through */
828 case 55 : /* fall through */
829 case 56 : /* fall through */
830 case 57 : /* fall through */
831 case 58 : /* fall through */
832 case 59 : /* fall through */
833 case 60 : /* fall through */
834 case 61 : /* fall through */
835 case 62 : /* fall through */
836 case 63 : /* fall through */
837 case 64 : /* fall through */
838 case 65 : /* fall through */
839 case 66 : /* fall through */
840 case 67 : /* fall through */
841 case 68 : /* fall through */
842 case 69 : /* fall through */
843 case 70 : /* fall through */
844 case 71 : /* fall through */
845 case 72 : /* fall through */
846 case 73 : /* fall through */
847 case 74 : /* fall through */
848 case 75 : /* fall through */
849 case 76 : /* fall through */
850 case 77 : /* fall through */
851 case 78 : /* fall through */
852 case 79 : /* fall through */
853 case 80 : /* fall through */
854 case 81 : /* fall through */
855 case 82 : /* fall through */
856 case 83 : /* fall through */
857 case 84 : /* fall through */
858 case 85 : /* fall through */
859 case 86 : /* fall through */
860 case 87 : /* fall through */
861 case 88 : /* fall through */
862 case 89 : /* fall through */
863 case 90 : /* fall through */
864 case 91 : /* fall through */
865 case 92 : /* fall through */
866 case 93 : /* fall through */
867 case 94 : /* fall through */
868 case 95 : /* fall through */
869 case 96 : /* fall through */
870 case 97 : /* fall through */
871 case 98 : /* fall through */
872 case 99 : /* fall through */
873 case 100 : /* fall through */
874 case 101 : /* fall through */
875 case 102 : /* fall through */
876 case 103 : /* fall through */
877 case 104 : /* fall through */
878 case 105 : /* fall through */
879 case 106 : /* fall through */
880 case 107 : /* fall through */
881 case 108 : /* fall through */
882 case 109 : /* fall through */
883 case 110 : /* fall through */
884 case 111 : /* fall through */
885 case 112 : /* fall through */
886 case 113 : /* fall through */
887 case 114 : /* fall through */
888 case 115 : /* fall through */
889 case 116 : /* fall through */
890 case 117 : /* fall through */
891 case 118 : /* fall through */
892 case 119 : /* fall through */
893 case 120 : /* fall through */
894 case 121 : /* fall through */
895 case 122 : /* fall through */
896 case 123 : /* fall through */
897 case 124 : /* fall through */
898 case 125 : /* fall through */
899 case 126 : itype = CRISV10F_INSN_ADDS_M_W_M; goto extract_sfmt_adds_m_w_m;
900 case 127 :
901 {
902 unsigned int val = (((insn >> 15) & (1 << 0)));
903 switch (val)
904 {
905 case 0 : itype = CRISV10F_INSN_ADDS_M_W_M; goto extract_sfmt_adds_m_w_m;
906 case 1 : itype = CRISV10F_INSN_ADDSPCPC; goto extract_sfmt_addspcpc;
907 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
908 }
909 }
910 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
911 }
912 }
913 case 132 : itype = CRISV10F_INSN_MOVU_M_B_M; goto extract_sfmt_movs_m_b_m;
914 case 133 : itype = CRISV10F_INSN_MOVU_M_W_M; goto extract_sfmt_movs_m_w_m;
915 case 134 : itype = CRISV10F_INSN_MOVS_M_B_M; goto extract_sfmt_movs_m_b_m;
916 case 135 : itype = CRISV10F_INSN_MOVS_M_W_M; goto extract_sfmt_movs_m_w_m;
917 case 136 : itype = CRISV10F_INSN_SUBU_M_B_M; goto extract_sfmt_adds_m_b_m;
918 case 137 : itype = CRISV10F_INSN_SUBU_M_W_M; goto extract_sfmt_adds_m_w_m;
919 case 138 : itype = CRISV10F_INSN_SUBS_M_B_M; goto extract_sfmt_adds_m_b_m;
920 case 139 : itype = CRISV10F_INSN_SUBS_M_W_M; goto extract_sfmt_adds_m_w_m;
921 case 140 : itype = CRISV10F_INSN_CMPU_M_B_M; goto extract_sfmt_cmp_m_b_m;
922 case 141 : itype = CRISV10F_INSN_CMPU_M_W_M; goto extract_sfmt_cmp_m_w_m;
923 case 142 : itype = CRISV10F_INSN_CMPS_M_B_M; goto extract_sfmt_cmp_m_b_m;
924 case 143 : itype = CRISV10F_INSN_CMPS_M_W_M; goto extract_sfmt_cmp_m_w_m;
925 case 144 : itype = CRISV10F_INSN_MULU_B; goto extract_sfmt_muls_b;
926 case 145 : itype = CRISV10F_INSN_MULU_W; goto extract_sfmt_muls_b;
927 case 146 : itype = CRISV10F_INSN_MULU_D; goto extract_sfmt_muls_b;
928 case 147 :
929 {
930 unsigned int val = (((insn >> 12) & (15 << 0)));
931 switch (val)
932 {
933 case 0 : /* fall through */
934 case 1 : /* fall through */
935 case 2 : /* fall through */
936 case 3 : /* fall through */
937 case 4 : /* fall through */
938 case 5 : /* fall through */
939 case 6 : /* fall through */
940 case 7 : /* fall through */
941 case 8 : /* fall through */
942 case 9 : /* fall through */
943 case 10 : /* fall through */
944 case 11 : /* fall through */
945 case 12 : /* fall through */
946 case 13 : /* fall through */
947 case 15 : itype = CRISV10F_INSN_JUMP_M; goto extract_sfmt_jump_m;
948 case 14 : itype = CRISV10F_INSN_BREAK; goto extract_sfmt_break;
949 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
950 }
951 }
952 case 148 : itype = CRISV10F_INSN_ADDO_M_B_M; goto extract_sfmt_addo_m_b_m;
953 case 149 : itype = CRISV10F_INSN_ADDO_M_W_M; goto extract_sfmt_addo_m_w_m;
954 case 150 : itype = CRISV10F_INSN_ADDO_M_D_M; goto extract_sfmt_addo_m_d_m;
955 case 151 :
956 if ((base_insn & 0xfbf0) == 0x970)
957 { itype = CRISV10F_INSN_DIP_M; goto extract_sfmt_dip_m; }
958 itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
959 case 155 : itype = CRISV10F_INSN_JUMP_R; goto extract_sfmt_jump_r;
960 case 156 : itype = CRISV10F_INSN_BOUND_M_B_M; goto extract_sfmt_bound_m_b_m;
961 case 157 : itype = CRISV10F_INSN_BOUND_M_W_M; goto extract_sfmt_bound_m_w_m;
962 case 158 : itype = CRISV10F_INSN_BOUND_M_D_M; goto extract_sfmt_bound_m_d_m;
963 case 160 : itype = CRISV10F_INSN_ADD_M_B_M; goto extract_sfmt_add_m_b_m;
964 case 161 : itype = CRISV10F_INSN_ADD_M_W_M; goto extract_sfmt_add_m_w_m;
965 case 162 : itype = CRISV10F_INSN_ADD_M_D_M; goto extract_sfmt_add_m_d_m;
966 case 163 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
967 case 164 : itype = CRISV10F_INSN_MOVE_M_B_M; goto extract_sfmt_move_m_b_m;
968 case 165 : itype = CRISV10F_INSN_MOVE_M_W_M; goto extract_sfmt_move_m_w_m;
969 case 166 : itype = CRISV10F_INSN_MOVE_M_D_M; goto extract_sfmt_move_m_d_m;
970 case 167 : /* fall through */
971 case 231 : itype = CRISV10F_INSN_MOVE_SPR_MV10; goto extract_sfmt_move_spr_mv10;
972 case 168 : itype = CRISV10F_INSN_SUB_M_B_M; goto extract_sfmt_add_m_b_m;
973 case 169 : itype = CRISV10F_INSN_SUB_M_W_M; goto extract_sfmt_add_m_w_m;
974 case 170 : itype = CRISV10F_INSN_SUB_M_D_M; goto extract_sfmt_add_m_d_m;
975 case 172 : itype = CRISV10F_INSN_CMP_M_B_M; goto extract_sfmt_cmp_m_b_m;
976 case 173 : itype = CRISV10F_INSN_CMP_M_W_M; goto extract_sfmt_cmp_m_w_m;
977 case 174 : itype = CRISV10F_INSN_CMP_M_D_M; goto extract_sfmt_cmp_m_d_m;
978 case 176 : itype = CRISV10F_INSN_AND_M_B_M; goto extract_sfmt_and_m_b_m;
979 case 177 : itype = CRISV10F_INSN_AND_M_W_M; goto extract_sfmt_and_m_w_m;
980 case 178 : itype = CRISV10F_INSN_AND_M_D_M; goto extract_sfmt_and_m_d_m;
981 case 180 : itype = CRISV10F_INSN_OR_M_B_M; goto extract_sfmt_and_m_b_m;
982 case 181 : itype = CRISV10F_INSN_OR_M_W_M; goto extract_sfmt_and_m_w_m;
983 case 182 : itype = CRISV10F_INSN_OR_M_D_M; goto extract_sfmt_and_m_d_m;
984 case 183 : /* fall through */
985 case 247 :
986 if ((base_insn & 0xfbf0) == 0x3b70)
987 { itype = CRISV10F_INSN_SBFS; goto extract_sfmt_sbfs; }
988 itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
989 case 184 : /* fall through */
990 case 248 :
991 if ((base_insn & 0xfbf0) == 0xb80)
992 { itype = CRISV10F_INSN_TEST_M_B_M; goto extract_sfmt_test_m_b_m; }
993 itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
994 case 185 : /* fall through */
995 case 249 :
996 if ((base_insn & 0xfbf0) == 0xb90)
997 { itype = CRISV10F_INSN_TEST_M_W_M; goto extract_sfmt_test_m_w_m; }
998 itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
999 case 186 : /* fall through */
1000 case 250 :
1001 if ((base_insn & 0xfbf0) == 0xba0)
1002 { itype = CRISV10F_INSN_TEST_M_D_M; goto extract_sfmt_test_m_d_m; }
1003 itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1004 case 187 : /* fall through */
1005 case 251 :
1006 {
1007 unsigned int val = (((insn >> 12) & (15 << 0)));
1008 switch (val)
1009 {
1010 case 0 : /* fall through */
1011 case 1 : /* fall through */
1012 case 2 : /* fall through */
1013 case 3 : /* fall through */
1014 case 4 : /* fall through */
1015 case 5 : /* fall through */
1016 case 6 : /* fall through */
1017 case 7 : /* fall through */
1018 case 8 : /* fall through */
1019 case 9 : /* fall through */
1020 case 10 : /* fall through */
1021 case 11 : /* fall through */
1022 case 12 : /* fall through */
1023 case 13 : /* fall through */
1024 case 14 : itype = CRISV10F_INSN_MOVEM_M_R; goto extract_sfmt_movem_m_r;
1025 case 15 : itype = CRISV10F_INSN_MOVEM_M_PC; goto extract_sfmt_movem_m_pc;
1026 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1027 }
1028 }
1029 case 188 : /* fall through */
1030 case 252 : itype = CRISV10F_INSN_MOVE_R_M_B_M; goto extract_sfmt_move_r_m_b_m;
1031 case 189 : /* fall through */
1032 case 253 : itype = CRISV10F_INSN_MOVE_R_M_W_M; goto extract_sfmt_move_r_m_w_m;
1033 case 190 : /* fall through */
1034 case 254 : itype = CRISV10F_INSN_MOVE_R_M_D_M; goto extract_sfmt_move_r_m_d_m;
1035 case 191 : /* fall through */
1036 case 255 : itype = CRISV10F_INSN_MOVEM_R_M; goto extract_sfmt_movem_r_m;
1037 case 192 :
1038 {
1039 unsigned int val = (((insn >> 0) & (15 << 0)));
1040 switch (val)
1041 {
1042 case 0 : /* fall through */
1043 case 1 : /* fall through */
1044 case 2 : /* fall through */
1045 case 3 : /* fall through */
1046 case 4 : /* fall through */
1047 case 5 : /* fall through */
1048 case 6 : /* fall through */
1049 case 7 : /* fall through */
1050 case 8 : /* fall through */
1051 case 9 : /* fall through */
1052 case 10 : /* fall through */
1053 case 11 : /* fall through */
1054 case 12 : /* fall through */
1055 case 13 : /* fall through */
1056 case 14 : itype = CRISV10F_INSN_ADDU_M_B_M; goto extract_sfmt_adds_m_b_m;
1057 case 15 : itype = CRISV10F_INSN_ADDUCBR; goto extract_sfmt_addscbr;
1058 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1059 }
1060 }
1061 case 193 :
1062 {
1063 unsigned int val = (((insn >> 0) & (15 << 0)));
1064 switch (val)
1065 {
1066 case 0 : /* fall through */
1067 case 1 : /* fall through */
1068 case 2 : /* fall through */
1069 case 3 : /* fall through */
1070 case 4 : /* fall through */
1071 case 5 : /* fall through */
1072 case 6 : /* fall through */
1073 case 7 : /* fall through */
1074 case 8 : /* fall through */
1075 case 9 : /* fall through */
1076 case 10 : /* fall through */
1077 case 11 : /* fall through */
1078 case 12 : /* fall through */
1079 case 13 : /* fall through */
1080 case 14 : itype = CRISV10F_INSN_ADDU_M_W_M; goto extract_sfmt_adds_m_w_m;
1081 case 15 : itype = CRISV10F_INSN_ADDUCWR; goto extract_sfmt_addscwr;
1082 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1083 }
1084 }
1085 case 194 :
1086 {
1087 unsigned int val = (((insn >> 0) & (15 << 0)));
1088 switch (val)
1089 {
1090 case 0 : /* fall through */
1091 case 1 : /* fall through */
1092 case 2 : /* fall through */
1093 case 3 : /* fall through */
1094 case 4 : /* fall through */
1095 case 5 : /* fall through */
1096 case 6 : /* fall through */
1097 case 7 : /* fall through */
1098 case 8 : /* fall through */
1099 case 9 : /* fall through */
1100 case 10 : /* fall through */
1101 case 11 : /* fall through */
1102 case 12 : /* fall through */
1103 case 13 : /* fall through */
1104 case 14 : itype = CRISV10F_INSN_ADDS_M_B_M; goto extract_sfmt_adds_m_b_m;
1105 case 15 : itype = CRISV10F_INSN_ADDSCBR; goto extract_sfmt_addscbr;
1106 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1107 }
1108 }
1109 case 195 :
1110 {
1111 unsigned int val = (((insn >> 0) & (15 << 0)));
1112 switch (val)
1113 {
1114 case 0 : /* fall through */
1115 case 1 : /* fall through */
1116 case 2 : /* fall through */
1117 case 3 : /* fall through */
1118 case 4 : /* fall through */
1119 case 5 : /* fall through */
1120 case 6 : /* fall through */
1121 case 7 : /* fall through */
1122 case 8 : /* fall through */
1123 case 9 : /* fall through */
1124 case 10 : /* fall through */
1125 case 11 : /* fall through */
1126 case 12 : /* fall through */
1127 case 13 : /* fall through */
1128 case 14 : itype = CRISV10F_INSN_ADDS_M_W_M; goto extract_sfmt_adds_m_w_m;
1129 case 15 : itype = CRISV10F_INSN_ADDSCWR; goto extract_sfmt_addscwr;
1130 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1131 }
1132 }
1133 case 196 :
1134 {
1135 unsigned int val = (((insn >> 0) & (15 << 0)));
1136 switch (val)
1137 {
1138 case 0 : /* fall through */
1139 case 1 : /* fall through */
1140 case 2 : /* fall through */
1141 case 3 : /* fall through */
1142 case 4 : /* fall through */
1143 case 5 : /* fall through */
1144 case 6 : /* fall through */
1145 case 7 : /* fall through */
1146 case 8 : /* fall through */
1147 case 9 : /* fall through */
1148 case 10 : /* fall through */
1149 case 11 : /* fall through */
1150 case 12 : /* fall through */
1151 case 13 : /* fall through */
1152 case 14 : itype = CRISV10F_INSN_MOVU_M_B_M; goto extract_sfmt_movs_m_b_m;
1153 case 15 : itype = CRISV10F_INSN_MOVUCBR; goto extract_sfmt_movucbr;
1154 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1155 }
1156 }
1157 case 197 :
1158 {
1159 unsigned int val = (((insn >> 0) & (15 << 0)));
1160 switch (val)
1161 {
1162 case 0 : /* fall through */
1163 case 1 : /* fall through */
1164 case 2 : /* fall through */
1165 case 3 : /* fall through */
1166 case 4 : /* fall through */
1167 case 5 : /* fall through */
1168 case 6 : /* fall through */
1169 case 7 : /* fall through */
1170 case 8 : /* fall through */
1171 case 9 : /* fall through */
1172 case 10 : /* fall through */
1173 case 11 : /* fall through */
1174 case 12 : /* fall through */
1175 case 13 : /* fall through */
1176 case 14 : itype = CRISV10F_INSN_MOVU_M_W_M; goto extract_sfmt_movs_m_w_m;
1177 case 15 : itype = CRISV10F_INSN_MOVUCWR; goto extract_sfmt_movucwr;
1178 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1179 }
1180 }
1181 case 198 :
1182 {
1183 unsigned int val = (((insn >> 0) & (15 << 0)));
1184 switch (val)
1185 {
1186 case 0 : /* fall through */
1187 case 1 : /* fall through */
1188 case 2 : /* fall through */
1189 case 3 : /* fall through */
1190 case 4 : /* fall through */
1191 case 5 : /* fall through */
1192 case 6 : /* fall through */
1193 case 7 : /* fall through */
1194 case 8 : /* fall through */
1195 case 9 : /* fall through */
1196 case 10 : /* fall through */
1197 case 11 : /* fall through */
1198 case 12 : /* fall through */
1199 case 13 : /* fall through */
1200 case 14 : itype = CRISV10F_INSN_MOVS_M_B_M; goto extract_sfmt_movs_m_b_m;
1201 case 15 : itype = CRISV10F_INSN_MOVSCBR; goto extract_sfmt_movscbr;
1202 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1203 }
1204 }
1205 case 199 :
1206 {
1207 unsigned int val = (((insn >> 0) & (15 << 0)));
1208 switch (val)
1209 {
1210 case 0 : /* fall through */
1211 case 1 : /* fall through */
1212 case 2 : /* fall through */
1213 case 3 : /* fall through */
1214 case 4 : /* fall through */
1215 case 5 : /* fall through */
1216 case 6 : /* fall through */
1217 case 7 : /* fall through */
1218 case 8 : /* fall through */
1219 case 9 : /* fall through */
1220 case 10 : /* fall through */
1221 case 11 : /* fall through */
1222 case 12 : /* fall through */
1223 case 13 : /* fall through */
1224 case 14 : itype = CRISV10F_INSN_MOVS_M_W_M; goto extract_sfmt_movs_m_w_m;
1225 case 15 : itype = CRISV10F_INSN_MOVSCWR; goto extract_sfmt_movscwr;
1226 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1227 }
1228 }
1229 case 200 :
1230 {
1231 unsigned int val = (((insn >> 0) & (15 << 0)));
1232 switch (val)
1233 {
1234 case 0 : /* fall through */
1235 case 1 : /* fall through */
1236 case 2 : /* fall through */
1237 case 3 : /* fall through */
1238 case 4 : /* fall through */
1239 case 5 : /* fall through */
1240 case 6 : /* fall through */
1241 case 7 : /* fall through */
1242 case 8 : /* fall through */
1243 case 9 : /* fall through */
1244 case 10 : /* fall through */
1245 case 11 : /* fall through */
1246 case 12 : /* fall through */
1247 case 13 : /* fall through */
1248 case 14 : itype = CRISV10F_INSN_SUBU_M_B_M; goto extract_sfmt_adds_m_b_m;
1249 case 15 : itype = CRISV10F_INSN_SUBUCBR; goto extract_sfmt_addscbr;
1250 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1251 }
1252 }
1253 case 201 :
1254 {
1255 unsigned int val = (((insn >> 0) & (15 << 0)));
1256 switch (val)
1257 {
1258 case 0 : /* fall through */
1259 case 1 : /* fall through */
1260 case 2 : /* fall through */
1261 case 3 : /* fall through */
1262 case 4 : /* fall through */
1263 case 5 : /* fall through */
1264 case 6 : /* fall through */
1265 case 7 : /* fall through */
1266 case 8 : /* fall through */
1267 case 9 : /* fall through */
1268 case 10 : /* fall through */
1269 case 11 : /* fall through */
1270 case 12 : /* fall through */
1271 case 13 : /* fall through */
1272 case 14 : itype = CRISV10F_INSN_SUBU_M_W_M; goto extract_sfmt_adds_m_w_m;
1273 case 15 : itype = CRISV10F_INSN_SUBUCWR; goto extract_sfmt_addscwr;
1274 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1275 }
1276 }
1277 case 202 :
1278 {
1279 unsigned int val = (((insn >> 0) & (15 << 0)));
1280 switch (val)
1281 {
1282 case 0 : /* fall through */
1283 case 1 : /* fall through */
1284 case 2 : /* fall through */
1285 case 3 : /* fall through */
1286 case 4 : /* fall through */
1287 case 5 : /* fall through */
1288 case 6 : /* fall through */
1289 case 7 : /* fall through */
1290 case 8 : /* fall through */
1291 case 9 : /* fall through */
1292 case 10 : /* fall through */
1293 case 11 : /* fall through */
1294 case 12 : /* fall through */
1295 case 13 : /* fall through */
1296 case 14 : itype = CRISV10F_INSN_SUBS_M_B_M; goto extract_sfmt_adds_m_b_m;
1297 case 15 : itype = CRISV10F_INSN_SUBSCBR; goto extract_sfmt_addscbr;
1298 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1299 }
1300 }
1301 case 203 :
1302 {
1303 unsigned int val = (((insn >> 0) & (15 << 0)));
1304 switch (val)
1305 {
1306 case 0 : /* fall through */
1307 case 1 : /* fall through */
1308 case 2 : /* fall through */
1309 case 3 : /* fall through */
1310 case 4 : /* fall through */
1311 case 5 : /* fall through */
1312 case 6 : /* fall through */
1313 case 7 : /* fall through */
1314 case 8 : /* fall through */
1315 case 9 : /* fall through */
1316 case 10 : /* fall through */
1317 case 11 : /* fall through */
1318 case 12 : /* fall through */
1319 case 13 : /* fall through */
1320 case 14 : itype = CRISV10F_INSN_SUBS_M_W_M; goto extract_sfmt_adds_m_w_m;
1321 case 15 : itype = CRISV10F_INSN_SUBSCWR; goto extract_sfmt_addscwr;
1322 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1323 }
1324 }
1325 case 204 :
1326 {
1327 unsigned int val = (((insn >> 0) & (15 << 0)));
1328 switch (val)
1329 {
1330 case 0 : /* fall through */
1331 case 1 : /* fall through */
1332 case 2 : /* fall through */
1333 case 3 : /* fall through */
1334 case 4 : /* fall through */
1335 case 5 : /* fall through */
1336 case 6 : /* fall through */
1337 case 7 : /* fall through */
1338 case 8 : /* fall through */
1339 case 9 : /* fall through */
1340 case 10 : /* fall through */
1341 case 11 : /* fall through */
1342 case 12 : /* fall through */
1343 case 13 : /* fall through */
1344 case 14 : itype = CRISV10F_INSN_CMPU_M_B_M; goto extract_sfmt_cmp_m_b_m;
1345 case 15 : itype = CRISV10F_INSN_CMPUCBR; goto extract_sfmt_cmpucbr;
1346 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1347 }
1348 }
1349 case 205 :
1350 {
1351 unsigned int val = (((insn >> 0) & (15 << 0)));
1352 switch (val)
1353 {
1354 case 0 : /* fall through */
1355 case 1 : /* fall through */
1356 case 2 : /* fall through */
1357 case 3 : /* fall through */
1358 case 4 : /* fall through */
1359 case 5 : /* fall through */
1360 case 6 : /* fall through */
1361 case 7 : /* fall through */
1362 case 8 : /* fall through */
1363 case 9 : /* fall through */
1364 case 10 : /* fall through */
1365 case 11 : /* fall through */
1366 case 12 : /* fall through */
1367 case 13 : /* fall through */
1368 case 14 : itype = CRISV10F_INSN_CMPU_M_W_M; goto extract_sfmt_cmp_m_w_m;
1369 case 15 : itype = CRISV10F_INSN_CMPUCWR; goto extract_sfmt_cmpucwr;
1370 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1371 }
1372 }
1373 case 206 :
1374 {
1375 unsigned int val = (((insn >> 0) & (15 << 0)));
1376 switch (val)
1377 {
1378 case 0 : /* fall through */
1379 case 1 : /* fall through */
1380 case 2 : /* fall through */
1381 case 3 : /* fall through */
1382 case 4 : /* fall through */
1383 case 5 : /* fall through */
1384 case 6 : /* fall through */
1385 case 7 : /* fall through */
1386 case 8 : /* fall through */
1387 case 9 : /* fall through */
1388 case 10 : /* fall through */
1389 case 11 : /* fall through */
1390 case 12 : /* fall through */
1391 case 13 : /* fall through */
1392 case 14 : itype = CRISV10F_INSN_CMPS_M_B_M; goto extract_sfmt_cmp_m_b_m;
1393 case 15 : itype = CRISV10F_INSN_CMPSCBR; goto extract_sfmt_cmpcbr;
1394 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1395 }
1396 }
1397 case 207 :
1398 {
1399 unsigned int val = (((insn >> 0) & (15 << 0)));
1400 switch (val)
1401 {
1402 case 0 : /* fall through */
1403 case 1 : /* fall through */
1404 case 2 : /* fall through */
1405 case 3 : /* fall through */
1406 case 4 : /* fall through */
1407 case 5 : /* fall through */
1408 case 6 : /* fall through */
1409 case 7 : /* fall through */
1410 case 8 : /* fall through */
1411 case 9 : /* fall through */
1412 case 10 : /* fall through */
1413 case 11 : /* fall through */
1414 case 12 : /* fall through */
1415 case 13 : /* fall through */
1416 case 14 : itype = CRISV10F_INSN_CMPS_M_W_M; goto extract_sfmt_cmp_m_w_m;
1417 case 15 : itype = CRISV10F_INSN_CMPSCWR; goto extract_sfmt_cmpcwr;
1418 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1419 }
1420 }
1421 case 208 : itype = CRISV10F_INSN_MULS_B; goto extract_sfmt_muls_b;
1422 case 209 : itype = CRISV10F_INSN_MULS_W; goto extract_sfmt_muls_b;
1423 case 210 : itype = CRISV10F_INSN_MULS_D; goto extract_sfmt_muls_b;
1424 case 211 :
1425 {
1426 unsigned int val = (((insn >> 0) & (15 << 0)));
1427 switch (val)
1428 {
1429 case 0 : /* fall through */
1430 case 1 : /* fall through */
1431 case 2 : /* fall through */
1432 case 3 : /* fall through */
1433 case 4 : /* fall through */
1434 case 5 : /* fall through */
1435 case 6 : /* fall through */
1436 case 7 : /* fall through */
1437 case 8 : /* fall through */
1438 case 9 : /* fall through */
1439 case 10 : /* fall through */
1440 case 11 : /* fall through */
1441 case 12 : /* fall through */
1442 case 13 : /* fall through */
1443 case 14 : itype = CRISV10F_INSN_JUMP_M; goto extract_sfmt_jump_m;
1444 case 15 : itype = CRISV10F_INSN_JUMP_C; goto extract_sfmt_jump_c;
1445 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1446 }
1447 }
1448 case 212 :
1449 {
1450 unsigned int val = (((insn >> 0) & (15 << 0)));
1451 switch (val)
1452 {
1453 case 0 : /* fall through */
1454 case 1 : /* fall through */
1455 case 2 : /* fall through */
1456 case 3 : /* fall through */
1457 case 4 : /* fall through */
1458 case 5 : /* fall through */
1459 case 6 : /* fall through */
1460 case 7 : /* fall through */
1461 case 8 : /* fall through */
1462 case 9 : /* fall through */
1463 case 10 : /* fall through */
1464 case 11 : /* fall through */
1465 case 12 : /* fall through */
1466 case 13 : /* fall through */
1467 case 14 : itype = CRISV10F_INSN_ADDO_M_B_M; goto extract_sfmt_addo_m_b_m;
1468 case 15 : itype = CRISV10F_INSN_ADDO_CB; goto extract_sfmt_addo_cb;
1469 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1470 }
1471 }
1472 case 213 :
1473 {
1474 unsigned int val = (((insn >> 0) & (15 << 0)));
1475 switch (val)
1476 {
1477 case 0 : /* fall through */
1478 case 1 : /* fall through */
1479 case 2 : /* fall through */
1480 case 3 : /* fall through */
1481 case 4 : /* fall through */
1482 case 5 : /* fall through */
1483 case 6 : /* fall through */
1484 case 7 : /* fall through */
1485 case 8 : /* fall through */
1486 case 9 : /* fall through */
1487 case 10 : /* fall through */
1488 case 11 : /* fall through */
1489 case 12 : /* fall through */
1490 case 13 : /* fall through */
1491 case 14 : itype = CRISV10F_INSN_ADDO_M_W_M; goto extract_sfmt_addo_m_w_m;
1492 case 15 : itype = CRISV10F_INSN_ADDO_CW; goto extract_sfmt_addo_cw;
1493 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1494 }
1495 }
1496 case 214 :
1497 {
1498 unsigned int val = (((insn >> 12) & (15 << 0)));
1499 switch (val)
1500 {
1501 case 0 : /* fall through */
1502 case 1 : /* fall through */
1503 case 2 : /* fall through */
1504 case 3 : /* fall through */
1505 case 4 : /* fall through */
1506 case 5 : /* fall through */
1507 case 6 : /* fall through */
1508 case 7 : /* fall through */
1509 case 8 : /* fall through */
1510 case 9 : /* fall through */
1511 case 10 : /* fall through */
1512 case 11 : /* fall through */
1513 case 12 : /* fall through */
1514 case 13 : /* fall through */
1515 case 14 :
1516 {
1517 unsigned int val = (((insn >> 0) & (15 << 0)));
1518 switch (val)
1519 {
1520 case 0 : /* fall through */
1521 case 1 : /* fall through */
1522 case 2 : /* fall through */
1523 case 3 : /* fall through */
1524 case 4 : /* fall through */
1525 case 5 : /* fall through */
1526 case 6 : /* fall through */
1527 case 7 : /* fall through */
1528 case 8 : /* fall through */
1529 case 9 : /* fall through */
1530 case 10 : /* fall through */
1531 case 11 : /* fall through */
1532 case 12 : /* fall through */
1533 case 13 : /* fall through */
1534 case 14 : itype = CRISV10F_INSN_ADDO_M_D_M; goto extract_sfmt_addo_m_d_m;
1535 case 15 : itype = CRISV10F_INSN_ADDO_CD; goto extract_sfmt_addo_cd;
1536 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1537 }
1538 }
1539 case 15 :
1540 {
1541 unsigned int val = (((insn >> 0) & (15 << 0)));
1542 switch (val)
1543 {
1544 case 0 : /* fall through */
1545 case 1 : /* fall through */
1546 case 2 : /* fall through */
1547 case 3 : /* fall through */
1548 case 4 : /* fall through */
1549 case 5 : /* fall through */
1550 case 6 : /* fall through */
1551 case 7 : /* fall through */
1552 case 8 : /* fall through */
1553 case 9 : /* fall through */
1554 case 10 : /* fall through */
1555 case 11 : /* fall through */
1556 case 12 : /* fall through */
1557 case 13 : /* fall through */
1558 case 14 : itype = CRISV10F_INSN_ADDO_M_D_M; goto extract_sfmt_addo_m_d_m;
1559 case 15 : itype = CRISV10F_INSN_BDAP_32_PC; goto extract_sfmt_bdap_32_pc;
1560 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1561 }
1562 }
1563 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1564 }
1565 }
1566 case 215 :
1567 {
1568 unsigned int val = (((insn >> 0) & (15 << 0)));
1569 switch (val)
1570 {
1571 case 0 : /* fall through */
1572 case 1 : /* fall through */
1573 case 2 : /* fall through */
1574 case 3 : /* fall through */
1575 case 4 : /* fall through */
1576 case 5 : /* fall through */
1577 case 6 : /* fall through */
1578 case 7 : /* fall through */
1579 case 8 : /* fall through */
1580 case 9 : /* fall through */
1581 case 10 : /* fall through */
1582 case 11 : /* fall through */
1583 case 12 : /* fall through */
1584 case 13 : /* fall through */
1585 case 14 :
1586 if ((base_insn & 0xfbf0) == 0x970)
1587 { itype = CRISV10F_INSN_DIP_M; goto extract_sfmt_dip_m; }
1588 itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1589 case 15 :
1590 if ((base_insn & 0xffff) == 0xd7f)
1591 { itype = CRISV10F_INSN_DIP_C; goto extract_sfmt_dip_c; }
1592 itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1593 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1594 }
1595 }
1596 case 220 :
1597 {
1598 unsigned int val = (((insn >> 0) & (15 << 0)));
1599 switch (val)
1600 {
1601 case 0 : /* fall through */
1602 case 1 : /* fall through */
1603 case 2 : /* fall through */
1604 case 3 : /* fall through */
1605 case 4 : /* fall through */
1606 case 5 : /* fall through */
1607 case 6 : /* fall through */
1608 case 7 : /* fall through */
1609 case 8 : /* fall through */
1610 case 9 : /* fall through */
1611 case 10 : /* fall through */
1612 case 11 : /* fall through */
1613 case 12 : /* fall through */
1614 case 13 : /* fall through */
1615 case 14 : itype = CRISV10F_INSN_BOUND_M_B_M; goto extract_sfmt_bound_m_b_m;
1616 case 15 : itype = CRISV10F_INSN_BOUND_CB; goto extract_sfmt_bound_cb;
1617 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1618 }
1619 }
1620 case 221 :
1621 {
1622 unsigned int val = (((insn >> 0) & (15 << 0)));
1623 switch (val)
1624 {
1625 case 0 : /* fall through */
1626 case 1 : /* fall through */
1627 case 2 : /* fall through */
1628 case 3 : /* fall through */
1629 case 4 : /* fall through */
1630 case 5 : /* fall through */
1631 case 6 : /* fall through */
1632 case 7 : /* fall through */
1633 case 8 : /* fall through */
1634 case 9 : /* fall through */
1635 case 10 : /* fall through */
1636 case 11 : /* fall through */
1637 case 12 : /* fall through */
1638 case 13 : /* fall through */
1639 case 14 : itype = CRISV10F_INSN_BOUND_M_W_M; goto extract_sfmt_bound_m_w_m;
1640 case 15 : itype = CRISV10F_INSN_BOUND_CW; goto extract_sfmt_bound_cw;
1641 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1642 }
1643 }
1644 case 222 :
1645 {
1646 unsigned int val = (((insn >> 0) & (15 << 0)));
1647 switch (val)
1648 {
1649 case 0 : /* fall through */
1650 case 1 : /* fall through */
1651 case 2 : /* fall through */
1652 case 3 : /* fall through */
1653 case 4 : /* fall through */
1654 case 5 : /* fall through */
1655 case 6 : /* fall through */
1656 case 7 : /* fall through */
1657 case 8 : /* fall through */
1658 case 9 : /* fall through */
1659 case 10 : /* fall through */
1660 case 11 : /* fall through */
1661 case 12 : /* fall through */
1662 case 13 : /* fall through */
1663 case 14 : itype = CRISV10F_INSN_BOUND_M_D_M; goto extract_sfmt_bound_m_d_m;
1664 case 15 : itype = CRISV10F_INSN_BOUND_CD; goto extract_sfmt_bound_cd;
1665 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1666 }
1667 }
1668 case 223 :
1669 {
1670 unsigned int val = (((insn >> 12) & (15 << 0)));
1671 switch (val)
1672 {
1673 case 0 : /* fall through */
1674 case 1 : /* fall through */
1675 case 2 : /* fall through */
1676 case 3 : /* fall through */
1677 case 4 : /* fall through */
1678 case 5 : /* fall through */
1679 case 6 : /* fall through */
1680 case 7 : /* fall through */
1681 case 8 : /* fall through */
1682 case 9 : /* fall through */
1683 case 10 : /* fall through */
1684 case 11 : /* fall through */
1685 case 12 : /* fall through */
1686 case 13 : /* fall through */
1687 case 15 :
1688 if ((base_insn & 0xfff) == 0xdff)
1689 { itype = CRISV10F_INSN_BCC_W; goto extract_sfmt_bcc_w; }
1690 itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1691 case 14 :
1692 if ((base_insn & 0xffff) == 0xedff)
1693 { itype = CRISV10F_INSN_BA_W; goto extract_sfmt_ba_w; }
1694 itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1695 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1696 }
1697 }
1698 case 224 :
1699 {
1700 unsigned int val = (((insn >> 0) & (15 << 0)));
1701 switch (val)
1702 {
1703 case 0 : /* fall through */
1704 case 1 : /* fall through */
1705 case 2 : /* fall through */
1706 case 3 : /* fall through */
1707 case 4 : /* fall through */
1708 case 5 : /* fall through */
1709 case 6 : /* fall through */
1710 case 7 : /* fall through */
1711 case 8 : /* fall through */
1712 case 9 : /* fall through */
1713 case 10 : /* fall through */
1714 case 11 : /* fall through */
1715 case 12 : /* fall through */
1716 case 13 : /* fall through */
1717 case 14 : itype = CRISV10F_INSN_ADD_M_B_M; goto extract_sfmt_add_m_b_m;
1718 case 15 : itype = CRISV10F_INSN_ADDCBR; goto extract_sfmt_addcbr;
1719 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1720 }
1721 }
1722 case 225 :
1723 {
1724 unsigned int val = (((insn >> 0) & (15 << 0)));
1725 switch (val)
1726 {
1727 case 0 : /* fall through */
1728 case 1 : /* fall through */
1729 case 2 : /* fall through */
1730 case 3 : /* fall through */
1731 case 4 : /* fall through */
1732 case 5 : /* fall through */
1733 case 6 : /* fall through */
1734 case 7 : /* fall through */
1735 case 8 : /* fall through */
1736 case 9 : /* fall through */
1737 case 10 : /* fall through */
1738 case 11 : /* fall through */
1739 case 12 : /* fall through */
1740 case 13 : /* fall through */
1741 case 14 : itype = CRISV10F_INSN_ADD_M_W_M; goto extract_sfmt_add_m_w_m;
1742 case 15 : itype = CRISV10F_INSN_ADDCWR; goto extract_sfmt_addcwr;
1743 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1744 }
1745 }
1746 case 226 :
1747 {
1748 unsigned int val = (((insn >> 12) & (15 << 0)));
1749 switch (val)
1750 {
1751 case 0 : /* fall through */
1752 case 1 : /* fall through */
1753 case 2 : /* fall through */
1754 case 3 : /* fall through */
1755 case 4 : /* fall through */
1756 case 5 : /* fall through */
1757 case 6 : /* fall through */
1758 case 7 : /* fall through */
1759 case 8 : /* fall through */
1760 case 9 : /* fall through */
1761 case 10 : /* fall through */
1762 case 11 : /* fall through */
1763 case 12 : /* fall through */
1764 case 13 : /* fall through */
1765 case 14 :
1766 {
1767 unsigned int val = (((insn >> 0) & (15 << 0)));
1768 switch (val)
1769 {
1770 case 0 : /* fall through */
1771 case 1 : /* fall through */
1772 case 2 : /* fall through */
1773 case 3 : /* fall through */
1774 case 4 : /* fall through */
1775 case 5 : /* fall through */
1776 case 6 : /* fall through */
1777 case 7 : /* fall through */
1778 case 8 : /* fall through */
1779 case 9 : /* fall through */
1780 case 10 : /* fall through */
1781 case 11 : /* fall through */
1782 case 12 : /* fall through */
1783 case 13 : /* fall through */
1784 case 14 : itype = CRISV10F_INSN_ADD_M_D_M; goto extract_sfmt_add_m_d_m;
1785 case 15 : itype = CRISV10F_INSN_ADDCDR; goto extract_sfmt_addcdr;
1786 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1787 }
1788 }
1789 case 15 :
1790 {
1791 unsigned int val = (((insn >> 0) & (15 << 0)));
1792 switch (val)
1793 {
1794 case 0 : /* fall through */
1795 case 1 : /* fall through */
1796 case 2 : /* fall through */
1797 case 3 : /* fall through */
1798 case 4 : /* fall through */
1799 case 5 : /* fall through */
1800 case 6 : /* fall through */
1801 case 7 : /* fall through */
1802 case 8 : /* fall through */
1803 case 9 : /* fall through */
1804 case 10 : /* fall through */
1805 case 11 : /* fall through */
1806 case 12 : /* fall through */
1807 case 13 : /* fall through */
1808 case 14 : itype = CRISV10F_INSN_ADD_M_D_M; goto extract_sfmt_add_m_d_m;
1809 case 15 : itype = CRISV10F_INSN_ADDCPC; goto extract_sfmt_addcpc;
1810 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1811 }
1812 }
1813 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1814 }
1815 }
1816 case 227 :
1817 {
1818 unsigned int val = (((insn >> 11) & (15 << 1)) | ((insn >> 0) & (1 << 0)));
1819 switch (val)
1820 {
1821 case 0 : /* fall through */
1822 case 2 : /* fall through */
1823 case 3 : /* fall through */
1824 case 4 : /* fall through */
1825 case 5 : /* fall through */
1826 case 6 : /* fall through */
1827 case 7 : /* fall through */
1828 case 8 : /* fall through */
1829 case 9 : /* fall through */
1830 case 10 : /* fall through */
1831 case 12 : /* fall through */
1832 case 13 : /* fall through */
1833 case 14 : /* fall through */
1834 case 17 : /* fall through */
1835 case 18 : /* fall through */
1836 case 20 : /* fall through */
1837 case 22 : /* fall through */
1838 case 24 : /* fall through */
1839 case 26 : /* fall through */
1840 case 28 : /* fall through */
1841 case 30 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1842 case 1 :
1843 {
1844 unsigned int val = (((insn >> 1) & (7 << 0)));
1845 switch (val)
1846 {
1847 case 0 : /* fall through */
1848 case 1 : /* fall through */
1849 case 2 : /* fall through */
1850 case 3 : /* fall through */
1851 case 4 : /* fall through */
1852 case 5 : /* fall through */
1853 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1854 case 7 : itype = CRISV10F_INSN_MOVE_M_PCPLUS_P0; goto extract_sfmt_move_m_pcplus_p0;
1855 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1856 }
1857 }
1858 case 11 :
1859 {
1860 unsigned int val = (((insn >> 1) & (7 << 0)));
1861 switch (val)
1862 {
1863 case 0 : /* fall through */
1864 case 1 : /* fall through */
1865 case 2 : /* fall through */
1866 case 3 : /* fall through */
1867 case 4 : /* fall through */
1868 case 5 : /* fall through */
1869 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1870 case 7 : itype = CRISV10F_INSN_MOVE_C_SPRV10_P5; goto extract_sfmt_move_c_sprv10_p5;
1871 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1872 }
1873 }
1874 case 15 :
1875 {
1876 unsigned int val = (((insn >> 1) & (7 << 0)));
1877 switch (val)
1878 {
1879 case 0 : /* fall through */
1880 case 1 : /* fall through */
1881 case 2 : /* fall through */
1882 case 3 : /* fall through */
1883 case 4 : /* fall through */
1884 case 5 : /* fall through */
1885 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1886 case 7 : itype = CRISV10F_INSN_MOVE_C_SPRV10_P7; goto extract_sfmt_move_c_sprv10_p9;
1887 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1888 }
1889 }
1890 case 16 :
1891 {
1892 unsigned int val = (((insn >> 1) & (7 << 0)));
1893 switch (val)
1894 {
1895 case 0 : /* fall through */
1896 case 1 : /* fall through */
1897 case 2 : /* fall through */
1898 case 3 : /* fall through */
1899 case 4 : /* fall through */
1900 case 5 : /* fall through */
1901 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1902 case 7 : itype = CRISV10F_INSN_MOVE_M_SPPLUS_P8; goto extract_sfmt_move_m_spplus_p8;
1903 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1904 }
1905 }
1906 case 19 :
1907 {
1908 unsigned int val = (((insn >> 1) & (7 << 0)));
1909 switch (val)
1910 {
1911 case 0 : /* fall through */
1912 case 1 : /* fall through */
1913 case 2 : /* fall through */
1914 case 3 : /* fall through */
1915 case 4 : /* fall through */
1916 case 5 : /* fall through */
1917 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1918 case 7 : itype = CRISV10F_INSN_MOVE_C_SPRV10_P9; goto extract_sfmt_move_c_sprv10_p9;
1919 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1920 }
1921 }
1922 case 21 :
1923 {
1924 unsigned int val = (((insn >> 1) & (7 << 0)));
1925 switch (val)
1926 {
1927 case 0 : /* fall through */
1928 case 1 : /* fall through */
1929 case 2 : /* fall through */
1930 case 3 : /* fall through */
1931 case 4 : /* fall through */
1932 case 5 : /* fall through */
1933 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1934 case 7 : itype = CRISV10F_INSN_MOVE_C_SPRV10_P10; goto extract_sfmt_move_c_sprv10_p9;
1935 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1936 }
1937 }
1938 case 23 :
1939 {
1940 unsigned int val = (((insn >> 1) & (7 << 0)));
1941 switch (val)
1942 {
1943 case 0 : /* fall through */
1944 case 1 : /* fall through */
1945 case 2 : /* fall through */
1946 case 3 : /* fall through */
1947 case 4 : /* fall through */
1948 case 5 : /* fall through */
1949 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1950 case 7 : itype = CRISV10F_INSN_MOVE_C_SPRV10_P11; goto extract_sfmt_move_c_sprv10_p9;
1951 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1952 }
1953 }
1954 case 25 :
1955 {
1956 unsigned int val = (((insn >> 1) & (7 << 0)));
1957 switch (val)
1958 {
1959 case 0 : /* fall through */
1960 case 1 : /* fall through */
1961 case 2 : /* fall through */
1962 case 3 : /* fall through */
1963 case 4 : /* fall through */
1964 case 5 : /* fall through */
1965 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1966 case 7 : itype = CRISV10F_INSN_MOVE_C_SPRV10_P12; goto extract_sfmt_move_c_sprv10_p9;
1967 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1968 }
1969 }
1970 case 27 :
1971 {
1972 unsigned int val = (((insn >> 1) & (7 << 0)));
1973 switch (val)
1974 {
1975 case 0 : /* fall through */
1976 case 1 : /* fall through */
1977 case 2 : /* fall through */
1978 case 3 : /* fall through */
1979 case 4 : /* fall through */
1980 case 5 : /* fall through */
1981 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1982 case 7 : itype = CRISV10F_INSN_MOVE_C_SPRV10_P13; goto extract_sfmt_move_c_sprv10_p9;
1983 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
1984 }
1985 }
1986 case 29 :
1987 {
1988 unsigned int val = (((insn >> 1) & (7 << 0)));
1989 switch (val)
1990 {
1991 case 0 : /* fall through */
1992 case 1 : /* fall through */
1993 case 2 : /* fall through */
1994 case 3 : /* fall through */
1995 case 4 : /* fall through */
1996 case 5 : /* fall through */
1997 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
1998 case 7 : itype = CRISV10F_INSN_MOVE_C_SPRV10_P14; goto extract_sfmt_move_c_sprv10_p9;
1999 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2000 }
2001 }
2002 case 31 :
2003 {
2004 unsigned int val = (((insn >> 1) & (7 << 0)));
2005 switch (val)
2006 {
2007 case 0 : /* fall through */
2008 case 1 : /* fall through */
2009 case 2 : /* fall through */
2010 case 3 : /* fall through */
2011 case 4 : /* fall through */
2012 case 5 : /* fall through */
2013 case 6 : itype = CRISV10F_INSN_MOVE_M_SPRV10; goto extract_sfmt_move_m_sprv10;
2014 case 7 : itype = CRISV10F_INSN_MOVE_C_SPRV10_P15; goto extract_sfmt_move_c_sprv10_p9;
2015 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2016 }
2017 }
2018 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2019 }
2020 }
2021 case 228 :
2022 {
2023 unsigned int val = (((insn >> 0) & (15 << 0)));
2024 switch (val)
2025 {
2026 case 0 : /* fall through */
2027 case 1 : /* fall through */
2028 case 2 : /* fall through */
2029 case 3 : /* fall through */
2030 case 4 : /* fall through */
2031 case 5 : /* fall through */
2032 case 6 : /* fall through */
2033 case 7 : /* fall through */
2034 case 8 : /* fall through */
2035 case 9 : /* fall through */
2036 case 10 : /* fall through */
2037 case 11 : /* fall through */
2038 case 12 : /* fall through */
2039 case 13 : /* fall through */
2040 case 14 : itype = CRISV10F_INSN_MOVE_M_B_M; goto extract_sfmt_move_m_b_m;
2041 case 15 : itype = CRISV10F_INSN_MOVECBR; goto extract_sfmt_movecbr;
2042 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2043 }
2044 }
2045 case 229 :
2046 {
2047 unsigned int val = (((insn >> 0) & (15 << 0)));
2048 switch (val)
2049 {
2050 case 0 : /* fall through */
2051 case 1 : /* fall through */
2052 case 2 : /* fall through */
2053 case 3 : /* fall through */
2054 case 4 : /* fall through */
2055 case 5 : /* fall through */
2056 case 6 : /* fall through */
2057 case 7 : /* fall through */
2058 case 8 : /* fall through */
2059 case 9 : /* fall through */
2060 case 10 : /* fall through */
2061 case 11 : /* fall through */
2062 case 12 : /* fall through */
2063 case 13 : /* fall through */
2064 case 14 : itype = CRISV10F_INSN_MOVE_M_W_M; goto extract_sfmt_move_m_w_m;
2065 case 15 : itype = CRISV10F_INSN_MOVECWR; goto extract_sfmt_movecwr;
2066 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2067 }
2068 }
2069 case 230 :
2070 {
2071 unsigned int val = (((insn >> 0) & (15 << 0)));
2072 switch (val)
2073 {
2074 case 0 : /* fall through */
2075 case 1 : /* fall through */
2076 case 2 : /* fall through */
2077 case 3 : /* fall through */
2078 case 4 : /* fall through */
2079 case 5 : /* fall through */
2080 case 6 : /* fall through */
2081 case 7 : /* fall through */
2082 case 8 : /* fall through */
2083 case 9 : /* fall through */
2084 case 10 : /* fall through */
2085 case 11 : /* fall through */
2086 case 12 : /* fall through */
2087 case 13 : /* fall through */
2088 case 14 : itype = CRISV10F_INSN_MOVE_M_D_M; goto extract_sfmt_move_m_d_m;
2089 case 15 : itype = CRISV10F_INSN_MOVECDR; goto extract_sfmt_movecdr;
2090 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2091 }
2092 }
2093 case 232 :
2094 {
2095 unsigned int val = (((insn >> 0) & (15 << 0)));
2096 switch (val)
2097 {
2098 case 0 : /* fall through */
2099 case 1 : /* fall through */
2100 case 2 : /* fall through */
2101 case 3 : /* fall through */
2102 case 4 : /* fall through */
2103 case 5 : /* fall through */
2104 case 6 : /* fall through */
2105 case 7 : /* fall through */
2106 case 8 : /* fall through */
2107 case 9 : /* fall through */
2108 case 10 : /* fall through */
2109 case 11 : /* fall through */
2110 case 12 : /* fall through */
2111 case 13 : /* fall through */
2112 case 14 : itype = CRISV10F_INSN_SUB_M_B_M; goto extract_sfmt_add_m_b_m;
2113 case 15 : itype = CRISV10F_INSN_SUBCBR; goto extract_sfmt_addcbr;
2114 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2115 }
2116 }
2117 case 233 :
2118 {
2119 unsigned int val = (((insn >> 0) & (15 << 0)));
2120 switch (val)
2121 {
2122 case 0 : /* fall through */
2123 case 1 : /* fall through */
2124 case 2 : /* fall through */
2125 case 3 : /* fall through */
2126 case 4 : /* fall through */
2127 case 5 : /* fall through */
2128 case 6 : /* fall through */
2129 case 7 : /* fall through */
2130 case 8 : /* fall through */
2131 case 9 : /* fall through */
2132 case 10 : /* fall through */
2133 case 11 : /* fall through */
2134 case 12 : /* fall through */
2135 case 13 : /* fall through */
2136 case 14 : itype = CRISV10F_INSN_SUB_M_W_M; goto extract_sfmt_add_m_w_m;
2137 case 15 : itype = CRISV10F_INSN_SUBCWR; goto extract_sfmt_addcwr;
2138 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2139 }
2140 }
2141 case 234 :
2142 {
2143 unsigned int val = (((insn >> 0) & (15 << 0)));
2144 switch (val)
2145 {
2146 case 0 : /* fall through */
2147 case 1 : /* fall through */
2148 case 2 : /* fall through */
2149 case 3 : /* fall through */
2150 case 4 : /* fall through */
2151 case 5 : /* fall through */
2152 case 6 : /* fall through */
2153 case 7 : /* fall through */
2154 case 8 : /* fall through */
2155 case 9 : /* fall through */
2156 case 10 : /* fall through */
2157 case 11 : /* fall through */
2158 case 12 : /* fall through */
2159 case 13 : /* fall through */
2160 case 14 : itype = CRISV10F_INSN_SUB_M_D_M; goto extract_sfmt_add_m_d_m;
2161 case 15 : itype = CRISV10F_INSN_SUBCDR; goto extract_sfmt_addcdr;
2162 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2163 }
2164 }
2165 case 236 :
2166 {
2167 unsigned int val = (((insn >> 0) & (15 << 0)));
2168 switch (val)
2169 {
2170 case 0 : /* fall through */
2171 case 1 : /* fall through */
2172 case 2 : /* fall through */
2173 case 3 : /* fall through */
2174 case 4 : /* fall through */
2175 case 5 : /* fall through */
2176 case 6 : /* fall through */
2177 case 7 : /* fall through */
2178 case 8 : /* fall through */
2179 case 9 : /* fall through */
2180 case 10 : /* fall through */
2181 case 11 : /* fall through */
2182 case 12 : /* fall through */
2183 case 13 : /* fall through */
2184 case 14 : itype = CRISV10F_INSN_CMP_M_B_M; goto extract_sfmt_cmp_m_b_m;
2185 case 15 : itype = CRISV10F_INSN_CMPCBR; goto extract_sfmt_cmpcbr;
2186 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2187 }
2188 }
2189 case 237 :
2190 {
2191 unsigned int val = (((insn >> 0) & (15 << 0)));
2192 switch (val)
2193 {
2194 case 0 : /* fall through */
2195 case 1 : /* fall through */
2196 case 2 : /* fall through */
2197 case 3 : /* fall through */
2198 case 4 : /* fall through */
2199 case 5 : /* fall through */
2200 case 6 : /* fall through */
2201 case 7 : /* fall through */
2202 case 8 : /* fall through */
2203 case 9 : /* fall through */
2204 case 10 : /* fall through */
2205 case 11 : /* fall through */
2206 case 12 : /* fall through */
2207 case 13 : /* fall through */
2208 case 14 : itype = CRISV10F_INSN_CMP_M_W_M; goto extract_sfmt_cmp_m_w_m;
2209 case 15 : itype = CRISV10F_INSN_CMPCWR; goto extract_sfmt_cmpcwr;
2210 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2211 }
2212 }
2213 case 238 :
2214 {
2215 unsigned int val = (((insn >> 0) & (15 << 0)));
2216 switch (val)
2217 {
2218 case 0 : /* fall through */
2219 case 1 : /* fall through */
2220 case 2 : /* fall through */
2221 case 3 : /* fall through */
2222 case 4 : /* fall through */
2223 case 5 : /* fall through */
2224 case 6 : /* fall through */
2225 case 7 : /* fall through */
2226 case 8 : /* fall through */
2227 case 9 : /* fall through */
2228 case 10 : /* fall through */
2229 case 11 : /* fall through */
2230 case 12 : /* fall through */
2231 case 13 : /* fall through */
2232 case 14 : itype = CRISV10F_INSN_CMP_M_D_M; goto extract_sfmt_cmp_m_d_m;
2233 case 15 : itype = CRISV10F_INSN_CMPCDR; goto extract_sfmt_cmpcdr;
2234 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2235 }
2236 }
2237 case 240 :
2238 {
2239 unsigned int val = (((insn >> 0) & (15 << 0)));
2240 switch (val)
2241 {
2242 case 0 : /* fall through */
2243 case 1 : /* fall through */
2244 case 2 : /* fall through */
2245 case 3 : /* fall through */
2246 case 4 : /* fall through */
2247 case 5 : /* fall through */
2248 case 6 : /* fall through */
2249 case 7 : /* fall through */
2250 case 8 : /* fall through */
2251 case 9 : /* fall through */
2252 case 10 : /* fall through */
2253 case 11 : /* fall through */
2254 case 12 : /* fall through */
2255 case 13 : /* fall through */
2256 case 14 : itype = CRISV10F_INSN_AND_M_B_M; goto extract_sfmt_and_m_b_m;
2257 case 15 : itype = CRISV10F_INSN_ANDCBR; goto extract_sfmt_andcbr;
2258 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2259 }
2260 }
2261 case 241 :
2262 {
2263 unsigned int val = (((insn >> 0) & (15 << 0)));
2264 switch (val)
2265 {
2266 case 0 : /* fall through */
2267 case 1 : /* fall through */
2268 case 2 : /* fall through */
2269 case 3 : /* fall through */
2270 case 4 : /* fall through */
2271 case 5 : /* fall through */
2272 case 6 : /* fall through */
2273 case 7 : /* fall through */
2274 case 8 : /* fall through */
2275 case 9 : /* fall through */
2276 case 10 : /* fall through */
2277 case 11 : /* fall through */
2278 case 12 : /* fall through */
2279 case 13 : /* fall through */
2280 case 14 : itype = CRISV10F_INSN_AND_M_W_M; goto extract_sfmt_and_m_w_m;
2281 case 15 : itype = CRISV10F_INSN_ANDCWR; goto extract_sfmt_andcwr;
2282 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2283 }
2284 }
2285 case 242 :
2286 {
2287 unsigned int val = (((insn >> 0) & (15 << 0)));
2288 switch (val)
2289 {
2290 case 0 : /* fall through */
2291 case 1 : /* fall through */
2292 case 2 : /* fall through */
2293 case 3 : /* fall through */
2294 case 4 : /* fall through */
2295 case 5 : /* fall through */
2296 case 6 : /* fall through */
2297 case 7 : /* fall through */
2298 case 8 : /* fall through */
2299 case 9 : /* fall through */
2300 case 10 : /* fall through */
2301 case 11 : /* fall through */
2302 case 12 : /* fall through */
2303 case 13 : /* fall through */
2304 case 14 : itype = CRISV10F_INSN_AND_M_D_M; goto extract_sfmt_and_m_d_m;
2305 case 15 : itype = CRISV10F_INSN_ANDCDR; goto extract_sfmt_andcdr;
2306 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2307 }
2308 }
2309 case 244 :
2310 {
2311 unsigned int val = (((insn >> 0) & (15 << 0)));
2312 switch (val)
2313 {
2314 case 0 : /* fall through */
2315 case 1 : /* fall through */
2316 case 2 : /* fall through */
2317 case 3 : /* fall through */
2318 case 4 : /* fall through */
2319 case 5 : /* fall through */
2320 case 6 : /* fall through */
2321 case 7 : /* fall through */
2322 case 8 : /* fall through */
2323 case 9 : /* fall through */
2324 case 10 : /* fall through */
2325 case 11 : /* fall through */
2326 case 12 : /* fall through */
2327 case 13 : /* fall through */
2328 case 14 : itype = CRISV10F_INSN_OR_M_B_M; goto extract_sfmt_and_m_b_m;
2329 case 15 : itype = CRISV10F_INSN_ORCBR; goto extract_sfmt_andcbr;
2330 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2331 }
2332 }
2333 case 245 :
2334 {
2335 unsigned int val = (((insn >> 0) & (15 << 0)));
2336 switch (val)
2337 {
2338 case 0 : /* fall through */
2339 case 1 : /* fall through */
2340 case 2 : /* fall through */
2341 case 3 : /* fall through */
2342 case 4 : /* fall through */
2343 case 5 : /* fall through */
2344 case 6 : /* fall through */
2345 case 7 : /* fall through */
2346 case 8 : /* fall through */
2347 case 9 : /* fall through */
2348 case 10 : /* fall through */
2349 case 11 : /* fall through */
2350 case 12 : /* fall through */
2351 case 13 : /* fall through */
2352 case 14 : itype = CRISV10F_INSN_OR_M_W_M; goto extract_sfmt_and_m_w_m;
2353 case 15 : itype = CRISV10F_INSN_ORCWR; goto extract_sfmt_andcwr;
2354 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2355 }
2356 }
2357 case 246 :
2358 {
2359 unsigned int val = (((insn >> 0) & (15 << 0)));
2360 switch (val)
2361 {
2362 case 0 : /* fall through */
2363 case 1 : /* fall through */
2364 case 2 : /* fall through */
2365 case 3 : /* fall through */
2366 case 4 : /* fall through */
2367 case 5 : /* fall through */
2368 case 6 : /* fall through */
2369 case 7 : /* fall through */
2370 case 8 : /* fall through */
2371 case 9 : /* fall through */
2372 case 10 : /* fall through */
2373 case 11 : /* fall through */
2374 case 12 : /* fall through */
2375 case 13 : /* fall through */
2376 case 14 : itype = CRISV10F_INSN_OR_M_D_M; goto extract_sfmt_and_m_d_m;
2377 case 15 : itype = CRISV10F_INSN_ORCDR; goto extract_sfmt_andcdr;
2378 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2379 }
2380 }
2381 default : itype = CRISV10F_INSN_X_INVALID; goto extract_sfmt_empty;
2382 }
2383 }
2384 }
2385
2386 /* The instruction has been decoded, now extract the fields. */
2387
2388 extract_sfmt_empty:
2389 {
2390 const IDESC *idesc = &crisv10f_insn_data[itype];
2391 #define FLD(f) abuf->fields.sfmt_empty.f
2392
2393
2394 /* Record the fields for the semantic handler. */
2395 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
2396
2397 #undef FLD
2398 return idesc;
2399 }
2400
2401 extract_sfmt_nop:
2402 {
2403 const IDESC *idesc = &crisv10f_insn_data[itype];
2404 #define FLD(f) abuf->fields.sfmt_empty.f
2405
2406
2407 /* Record the fields for the semantic handler. */
2408 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
2409
2410 #undef FLD
2411 return idesc;
2412 }
2413
2414 extract_sfmt_move_b_r:
2415 {
2416 const IDESC *idesc = &crisv10f_insn_data[itype];
2417 CGEN_INSN_WORD insn = base_insn;
2418 #define FLD(f) abuf->fields.sfmt_add_b_r.f
2419 UINT f_operand2;
2420 UINT f_operand1;
2421
2422 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2423 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2424
2425 /* Record the fields for the semantic handler. */
2426 FLD (f_operand1) = f_operand1;
2427 FLD (f_operand2) = f_operand2;
2428 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));
2429
2430 #if WITH_PROFILE_MODEL_P
2431 /* Record the fields for profiling. */
2432 if (PROFILE_MODEL_P (current_cpu))
2433 {
2434 FLD (in_Rs) = f_operand1;
2435 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
2436 }
2437 #endif
2438 #undef FLD
2439 return idesc;
2440 }
2441
2442 extract_sfmt_move_d_r:
2443 {
2444 const IDESC *idesc = &crisv10f_insn_data[itype];
2445 CGEN_INSN_WORD insn = base_insn;
2446 #define FLD(f) abuf->fields.sfmt_add_b_r.f
2447 UINT f_operand2;
2448 UINT f_operand1;
2449
2450 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2451 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2452
2453 /* Record the fields for the semantic handler. */
2454 FLD (f_operand1) = f_operand1;
2455 FLD (f_operand2) = f_operand2;
2456 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));
2457
2458 #if WITH_PROFILE_MODEL_P
2459 /* Record the fields for profiling. */
2460 if (PROFILE_MODEL_P (current_cpu))
2461 {
2462 FLD (in_Rs) = f_operand1;
2463 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
2464 }
2465 #endif
2466 #undef FLD
2467 return idesc;
2468 }
2469
2470 extract_sfmt_movepcr:
2471 {
2472 const IDESC *idesc = &crisv10f_insn_data[itype];
2473 CGEN_INSN_WORD insn = base_insn;
2474 #define FLD(f) abuf->fields.sfmt_moveq.f
2475 UINT f_operand2;
2476
2477 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2478
2479 /* Record the fields for the semantic handler. */
2480 FLD (f_operand2) = f_operand2;
2481 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movepcr", "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
2482
2483 #if WITH_PROFILE_MODEL_P
2484 /* Record the fields for profiling. */
2485 if (PROFILE_MODEL_P (current_cpu))
2486 {
2487 FLD (out_Rd) = f_operand2;
2488 }
2489 #endif
2490 #undef FLD
2491 return idesc;
2492 }
2493
2494 extract_sfmt_moveq:
2495 {
2496 const IDESC *idesc = &crisv10f_insn_data[itype];
2497 CGEN_INSN_WORD insn = base_insn;
2498 #define FLD(f) abuf->fields.sfmt_moveq.f
2499 UINT f_operand2;
2500 INT f_s6;
2501
2502 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2503 f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6);
2504
2505 /* Record the fields for the semantic handler. */
2506 FLD (f_s6) = f_s6;
2507 FLD (f_operand2) = f_operand2;
2508 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));
2509
2510 #if WITH_PROFILE_MODEL_P
2511 /* Record the fields for profiling. */
2512 if (PROFILE_MODEL_P (current_cpu))
2513 {
2514 FLD (out_Rd) = f_operand2;
2515 }
2516 #endif
2517 #undef FLD
2518 return idesc;
2519 }
2520
2521 extract_sfmt_movs_b_r:
2522 {
2523 const IDESC *idesc = &crisv10f_insn_data[itype];
2524 CGEN_INSN_WORD insn = base_insn;
2525 #define FLD(f) abuf->fields.sfmt_muls_b.f
2526 UINT f_operand2;
2527 UINT f_operand1;
2528
2529 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2530 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2531
2532 /* Record the fields for the semantic handler. */
2533 FLD (f_operand1) = f_operand1;
2534 FLD (f_operand2) = f_operand2;
2535 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));
2536
2537 #if WITH_PROFILE_MODEL_P
2538 /* Record the fields for profiling. */
2539 if (PROFILE_MODEL_P (current_cpu))
2540 {
2541 FLD (in_Rs) = f_operand1;
2542 FLD (out_Rd) = f_operand2;
2543 }
2544 #endif
2545 #undef FLD
2546 return idesc;
2547 }
2548
2549 extract_sfmt_movecbr:
2550 {
2551 const IDESC *idesc = &crisv10f_insn_data[itype];
2552 CGEN_INSN_WORD insn = base_insn;
2553 #define FLD(f) abuf->fields.sfmt_addcbr.f
2554 INT f_indir_pc__byte;
2555 UINT f_operand2;
2556 /* Contents of trailing part of insn. */
2557 UINT word_1;
2558
2559 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2560 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2561 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2562
2563 /* Record the fields for the semantic handler. */
2564 FLD (f_operand2) = f_operand2;
2565 FLD (f_indir_pc__byte) = f_indir_pc__byte;
2566 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));
2567
2568 #if WITH_PROFILE_MODEL_P
2569 /* Record the fields for profiling. */
2570 if (PROFILE_MODEL_P (current_cpu))
2571 {
2572 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
2573 }
2574 #endif
2575 #undef FLD
2576 return idesc;
2577 }
2578
2579 extract_sfmt_movecwr:
2580 {
2581 const IDESC *idesc = &crisv10f_insn_data[itype];
2582 CGEN_INSN_WORD insn = base_insn;
2583 #define FLD(f) abuf->fields.sfmt_addcwr.f
2584 INT f_indir_pc__word;
2585 UINT f_operand2;
2586 /* Contents of trailing part of insn. */
2587 UINT word_1;
2588
2589 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2590 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2591 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2592
2593 /* Record the fields for the semantic handler. */
2594 FLD (f_operand2) = f_operand2;
2595 FLD (f_indir_pc__word) = f_indir_pc__word;
2596 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));
2597
2598 #if WITH_PROFILE_MODEL_P
2599 /* Record the fields for profiling. */
2600 if (PROFILE_MODEL_P (current_cpu))
2601 {
2602 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
2603 }
2604 #endif
2605 #undef FLD
2606 return idesc;
2607 }
2608
2609 extract_sfmt_movecdr:
2610 {
2611 const IDESC *idesc = &crisv10f_insn_data[itype];
2612 CGEN_INSN_WORD insn = base_insn;
2613 #define FLD(f) abuf->fields.sfmt_bound_cd.f
2614 INT f_indir_pc__dword;
2615 UINT f_operand2;
2616 /* Contents of trailing part of insn. */
2617 UINT word_1;
2618
2619 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2620 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
2621 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2622
2623 /* Record the fields for the semantic handler. */
2624 FLD (f_indir_pc__dword) = f_indir_pc__dword;
2625 FLD (f_operand2) = f_operand2;
2626 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));
2627
2628 #if WITH_PROFILE_MODEL_P
2629 /* Record the fields for profiling. */
2630 if (PROFILE_MODEL_P (current_cpu))
2631 {
2632 FLD (out_Rd) = f_operand2;
2633 }
2634 #endif
2635 #undef FLD
2636 return idesc;
2637 }
2638
2639 extract_sfmt_movscbr:
2640 {
2641 const IDESC *idesc = &crisv10f_insn_data[itype];
2642 CGEN_INSN_WORD insn = base_insn;
2643 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2644 UINT f_operand2;
2645 INT f_indir_pc__byte;
2646 /* Contents of trailing part of insn. */
2647 UINT word_1;
2648
2649 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2650 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2651 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2652
2653 /* Record the fields for the semantic handler. */
2654 FLD (f_indir_pc__byte) = f_indir_pc__byte;
2655 FLD (f_operand2) = f_operand2;
2656 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));
2657
2658 #if WITH_PROFILE_MODEL_P
2659 /* Record the fields for profiling. */
2660 if (PROFILE_MODEL_P (current_cpu))
2661 {
2662 FLD (out_Rd) = f_operand2;
2663 }
2664 #endif
2665 #undef FLD
2666 return idesc;
2667 }
2668
2669 extract_sfmt_movscwr:
2670 {
2671 const IDESC *idesc = &crisv10f_insn_data[itype];
2672 CGEN_INSN_WORD insn = base_insn;
2673 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2674 UINT f_operand2;
2675 INT f_indir_pc__word;
2676 /* Contents of trailing part of insn. */
2677 UINT word_1;
2678
2679 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2680 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2681 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2682
2683 /* Record the fields for the semantic handler. */
2684 FLD (f_indir_pc__word) = f_indir_pc__word;
2685 FLD (f_operand2) = f_operand2;
2686 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));
2687
2688 #if WITH_PROFILE_MODEL_P
2689 /* Record the fields for profiling. */
2690 if (PROFILE_MODEL_P (current_cpu))
2691 {
2692 FLD (out_Rd) = f_operand2;
2693 }
2694 #endif
2695 #undef FLD
2696 return idesc;
2697 }
2698
2699 extract_sfmt_movucbr:
2700 {
2701 const IDESC *idesc = &crisv10f_insn_data[itype];
2702 CGEN_INSN_WORD insn = base_insn;
2703 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2704 UINT f_operand2;
2705 INT f_indir_pc__byte;
2706 /* Contents of trailing part of insn. */
2707 UINT word_1;
2708
2709 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2710 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2711 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2712
2713 /* Record the fields for the semantic handler. */
2714 FLD (f_indir_pc__byte) = f_indir_pc__byte;
2715 FLD (f_operand2) = f_operand2;
2716 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));
2717
2718 #if WITH_PROFILE_MODEL_P
2719 /* Record the fields for profiling. */
2720 if (PROFILE_MODEL_P (current_cpu))
2721 {
2722 FLD (out_Rd) = f_operand2;
2723 }
2724 #endif
2725 #undef FLD
2726 return idesc;
2727 }
2728
2729 extract_sfmt_movucwr:
2730 {
2731 const IDESC *idesc = &crisv10f_insn_data[itype];
2732 CGEN_INSN_WORD insn = base_insn;
2733 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2734 UINT f_operand2;
2735 INT f_indir_pc__word;
2736 /* Contents of trailing part of insn. */
2737 UINT word_1;
2738
2739 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2740 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2741 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2742
2743 /* Record the fields for the semantic handler. */
2744 FLD (f_indir_pc__word) = f_indir_pc__word;
2745 FLD (f_operand2) = f_operand2;
2746 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));
2747
2748 #if WITH_PROFILE_MODEL_P
2749 /* Record the fields for profiling. */
2750 if (PROFILE_MODEL_P (current_cpu))
2751 {
2752 FLD (out_Rd) = f_operand2;
2753 }
2754 #endif
2755 #undef FLD
2756 return idesc;
2757 }
2758
2759 extract_sfmt_addq:
2760 {
2761 const IDESC *idesc = &crisv10f_insn_data[itype];
2762 CGEN_INSN_WORD insn = base_insn;
2763 #define FLD(f) abuf->fields.sfmt_addq.f
2764 UINT f_operand2;
2765 UINT f_u6;
2766
2767 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2768 f_u6 = EXTRACT_LSB0_UINT (insn, 16, 5, 6);
2769
2770 /* Record the fields for the semantic handler. */
2771 FLD (f_operand2) = f_operand2;
2772 FLD (f_u6) = f_u6;
2773 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));
2774
2775 #if WITH_PROFILE_MODEL_P
2776 /* Record the fields for profiling. */
2777 if (PROFILE_MODEL_P (current_cpu))
2778 {
2779 FLD (in_Rd) = f_operand2;
2780 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
2781 }
2782 #endif
2783 #undef FLD
2784 return idesc;
2785 }
2786
2787 extract_sfmt_cmp_r_b_r:
2788 {
2789 const IDESC *idesc = &crisv10f_insn_data[itype];
2790 CGEN_INSN_WORD insn = base_insn;
2791 #define FLD(f) abuf->fields.sfmt_add_b_r.f
2792 UINT f_operand2;
2793 UINT f_operand1;
2794
2795 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2796 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2797
2798 /* Record the fields for the semantic handler. */
2799 FLD (f_operand2) = f_operand2;
2800 FLD (f_operand1) = f_operand1;
2801 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));
2802
2803 #if WITH_PROFILE_MODEL_P
2804 /* Record the fields for profiling. */
2805 if (PROFILE_MODEL_P (current_cpu))
2806 {
2807 FLD (in_Rd) = f_operand2;
2808 FLD (in_Rs) = f_operand1;
2809 }
2810 #endif
2811 #undef FLD
2812 return idesc;
2813 }
2814
2815 extract_sfmt_cmp_m_b_m:
2816 {
2817 const IDESC *idesc = &crisv10f_insn_data[itype];
2818 CGEN_INSN_WORD insn = base_insn;
2819 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2820 UINT f_operand2;
2821 UINT f_memmode;
2822 UINT f_operand1;
2823
2824 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2825 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2826 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2827
2828 /* Record the fields for the semantic handler. */
2829 FLD (f_operand2) = f_operand2;
2830 FLD (f_operand1) = f_operand1;
2831 FLD (f_memmode) = f_memmode;
2832 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));
2833
2834 #if WITH_PROFILE_MODEL_P
2835 /* Record the fields for profiling. */
2836 if (PROFILE_MODEL_P (current_cpu))
2837 {
2838 FLD (in_Rd) = f_operand2;
2839 FLD (in_Rs) = f_operand1;
2840 FLD (out_Rs) = f_operand1;
2841 }
2842 #endif
2843 #undef FLD
2844 return idesc;
2845 }
2846
2847 extract_sfmt_cmp_m_w_m:
2848 {
2849 const IDESC *idesc = &crisv10f_insn_data[itype];
2850 CGEN_INSN_WORD insn = base_insn;
2851 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2852 UINT f_operand2;
2853 UINT f_memmode;
2854 UINT f_operand1;
2855
2856 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2857 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2858 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2859
2860 /* Record the fields for the semantic handler. */
2861 FLD (f_operand2) = f_operand2;
2862 FLD (f_operand1) = f_operand1;
2863 FLD (f_memmode) = f_memmode;
2864 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));
2865
2866 #if WITH_PROFILE_MODEL_P
2867 /* Record the fields for profiling. */
2868 if (PROFILE_MODEL_P (current_cpu))
2869 {
2870 FLD (in_Rd) = f_operand2;
2871 FLD (in_Rs) = f_operand1;
2872 FLD (out_Rs) = f_operand1;
2873 }
2874 #endif
2875 #undef FLD
2876 return idesc;
2877 }
2878
2879 extract_sfmt_cmp_m_d_m:
2880 {
2881 const IDESC *idesc = &crisv10f_insn_data[itype];
2882 CGEN_INSN_WORD insn = base_insn;
2883 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
2884 UINT f_operand2;
2885 UINT f_memmode;
2886 UINT f_operand1;
2887
2888 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2889 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
2890 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
2891
2892 /* Record the fields for the semantic handler. */
2893 FLD (f_operand2) = f_operand2;
2894 FLD (f_operand1) = f_operand1;
2895 FLD (f_memmode) = f_memmode;
2896 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));
2897
2898 #if WITH_PROFILE_MODEL_P
2899 /* Record the fields for profiling. */
2900 if (PROFILE_MODEL_P (current_cpu))
2901 {
2902 FLD (in_Rd) = f_operand2;
2903 FLD (in_Rs) = f_operand1;
2904 FLD (out_Rs) = f_operand1;
2905 }
2906 #endif
2907 #undef FLD
2908 return idesc;
2909 }
2910
2911 extract_sfmt_cmpcbr:
2912 {
2913 const IDESC *idesc = &crisv10f_insn_data[itype];
2914 CGEN_INSN_WORD insn = base_insn;
2915 #define FLD(f) abuf->fields.sfmt_bound_cb.f
2916 INT f_indir_pc__byte;
2917 UINT f_operand2;
2918 /* Contents of trailing part of insn. */
2919 UINT word_1;
2920
2921 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2922 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2923 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2924
2925 /* Record the fields for the semantic handler. */
2926 FLD (f_operand2) = f_operand2;
2927 FLD (f_indir_pc__byte) = f_indir_pc__byte;
2928 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));
2929
2930 #if WITH_PROFILE_MODEL_P
2931 /* Record the fields for profiling. */
2932 if (PROFILE_MODEL_P (current_cpu))
2933 {
2934 FLD (in_Rd) = f_operand2;
2935 }
2936 #endif
2937 #undef FLD
2938 return idesc;
2939 }
2940
2941 extract_sfmt_cmpcwr:
2942 {
2943 const IDESC *idesc = &crisv10f_insn_data[itype];
2944 CGEN_INSN_WORD insn = base_insn;
2945 #define FLD(f) abuf->fields.sfmt_bound_cw.f
2946 INT f_indir_pc__word;
2947 UINT f_operand2;
2948 /* Contents of trailing part of insn. */
2949 UINT word_1;
2950
2951 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2952 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
2953 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2954
2955 /* Record the fields for the semantic handler. */
2956 FLD (f_operand2) = f_operand2;
2957 FLD (f_indir_pc__word) = f_indir_pc__word;
2958 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));
2959
2960 #if WITH_PROFILE_MODEL_P
2961 /* Record the fields for profiling. */
2962 if (PROFILE_MODEL_P (current_cpu))
2963 {
2964 FLD (in_Rd) = f_operand2;
2965 }
2966 #endif
2967 #undef FLD
2968 return idesc;
2969 }
2970
2971 extract_sfmt_cmpcdr:
2972 {
2973 const IDESC *idesc = &crisv10f_insn_data[itype];
2974 CGEN_INSN_WORD insn = base_insn;
2975 #define FLD(f) abuf->fields.sfmt_bound_cd.f
2976 INT f_indir_pc__dword;
2977 UINT f_operand2;
2978 /* Contents of trailing part of insn. */
2979 UINT word_1;
2980
2981 word_1 = GETIMEMUSI (current_cpu, pc + 2);
2982 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
2983 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
2984
2985 /* Record the fields for the semantic handler. */
2986 FLD (f_operand2) = f_operand2;
2987 FLD (f_indir_pc__dword) = f_indir_pc__dword;
2988 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));
2989
2990 #if WITH_PROFILE_MODEL_P
2991 /* Record the fields for profiling. */
2992 if (PROFILE_MODEL_P (current_cpu))
2993 {
2994 FLD (in_Rd) = f_operand2;
2995 }
2996 #endif
2997 #undef FLD
2998 return idesc;
2999 }
3000
3001 extract_sfmt_cmpq:
3002 {
3003 const IDESC *idesc = &crisv10f_insn_data[itype];
3004 CGEN_INSN_WORD insn = base_insn;
3005 #define FLD(f) abuf->fields.sfmt_andq.f
3006 UINT f_operand2;
3007 INT f_s6;
3008
3009 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3010 f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6);
3011
3012 /* Record the fields for the semantic handler. */
3013 FLD (f_operand2) = f_operand2;
3014 FLD (f_s6) = f_s6;
3015 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));
3016
3017 #if WITH_PROFILE_MODEL_P
3018 /* Record the fields for profiling. */
3019 if (PROFILE_MODEL_P (current_cpu))
3020 {
3021 FLD (in_Rd) = f_operand2;
3022 }
3023 #endif
3024 #undef FLD
3025 return idesc;
3026 }
3027
3028 extract_sfmt_cmpucbr:
3029 {
3030 const IDESC *idesc = &crisv10f_insn_data[itype];
3031 CGEN_INSN_WORD insn = base_insn;
3032 #define FLD(f) abuf->fields.sfmt_bound_cb.f
3033 INT f_indir_pc__byte;
3034 UINT f_operand2;
3035 /* Contents of trailing part of insn. */
3036 UINT word_1;
3037
3038 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3039 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3040 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3041
3042 /* Record the fields for the semantic handler. */
3043 FLD (f_operand2) = f_operand2;
3044 FLD (f_indir_pc__byte) = f_indir_pc__byte;
3045 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));
3046
3047 #if WITH_PROFILE_MODEL_P
3048 /* Record the fields for profiling. */
3049 if (PROFILE_MODEL_P (current_cpu))
3050 {
3051 FLD (in_Rd) = f_operand2;
3052 }
3053 #endif
3054 #undef FLD
3055 return idesc;
3056 }
3057
3058 extract_sfmt_cmpucwr:
3059 {
3060 const IDESC *idesc = &crisv10f_insn_data[itype];
3061 CGEN_INSN_WORD insn = base_insn;
3062 #define FLD(f) abuf->fields.sfmt_bound_cw.f
3063 INT f_indir_pc__word;
3064 UINT f_operand2;
3065 /* Contents of trailing part of insn. */
3066 UINT word_1;
3067
3068 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3069 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3070 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3071
3072 /* Record the fields for the semantic handler. */
3073 FLD (f_operand2) = f_operand2;
3074 FLD (f_indir_pc__word) = f_indir_pc__word;
3075 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));
3076
3077 #if WITH_PROFILE_MODEL_P
3078 /* Record the fields for profiling. */
3079 if (PROFILE_MODEL_P (current_cpu))
3080 {
3081 FLD (in_Rd) = f_operand2;
3082 }
3083 #endif
3084 #undef FLD
3085 return idesc;
3086 }
3087
3088 extract_sfmt_move_m_b_m:
3089 {
3090 const IDESC *idesc = &crisv10f_insn_data[itype];
3091 CGEN_INSN_WORD insn = base_insn;
3092 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3093 UINT f_operand2;
3094 UINT f_memmode;
3095 UINT f_operand1;
3096
3097 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3098 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3099 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3100
3101 /* Record the fields for the semantic handler. */
3102 FLD (f_operand1) = f_operand1;
3103 FLD (f_operand2) = f_operand2;
3104 FLD (f_memmode) = f_memmode;
3105 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));
3106
3107 #if WITH_PROFILE_MODEL_P
3108 /* Record the fields for profiling. */
3109 if (PROFILE_MODEL_P (current_cpu))
3110 {
3111 FLD (in_Rs) = f_operand1;
3112 FLD (out_Rs) = f_operand1;
3113 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3114 }
3115 #endif
3116 #undef FLD
3117 return idesc;
3118 }
3119
3120 extract_sfmt_move_m_w_m:
3121 {
3122 const IDESC *idesc = &crisv10f_insn_data[itype];
3123 CGEN_INSN_WORD insn = base_insn;
3124 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3125 UINT f_operand2;
3126 UINT f_memmode;
3127 UINT f_operand1;
3128
3129 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3130 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3131 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3132
3133 /* Record the fields for the semantic handler. */
3134 FLD (f_operand1) = f_operand1;
3135 FLD (f_operand2) = f_operand2;
3136 FLD (f_memmode) = f_memmode;
3137 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));
3138
3139 #if WITH_PROFILE_MODEL_P
3140 /* Record the fields for profiling. */
3141 if (PROFILE_MODEL_P (current_cpu))
3142 {
3143 FLD (in_Rs) = f_operand1;
3144 FLD (out_Rs) = f_operand1;
3145 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3146 }
3147 #endif
3148 #undef FLD
3149 return idesc;
3150 }
3151
3152 extract_sfmt_move_m_d_m:
3153 {
3154 const IDESC *idesc = &crisv10f_insn_data[itype];
3155 CGEN_INSN_WORD insn = base_insn;
3156 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3157 UINT f_operand2;
3158 UINT f_memmode;
3159 UINT f_operand1;
3160
3161 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3162 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3163 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3164
3165 /* Record the fields for the semantic handler. */
3166 FLD (f_operand1) = f_operand1;
3167 FLD (f_operand2) = f_operand2;
3168 FLD (f_memmode) = f_memmode;
3169 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));
3170
3171 #if WITH_PROFILE_MODEL_P
3172 /* Record the fields for profiling. */
3173 if (PROFILE_MODEL_P (current_cpu))
3174 {
3175 FLD (in_Rs) = f_operand1;
3176 FLD (out_Rs) = f_operand1;
3177 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3178 }
3179 #endif
3180 #undef FLD
3181 return idesc;
3182 }
3183
3184 extract_sfmt_movs_m_b_m:
3185 {
3186 const IDESC *idesc = &crisv10f_insn_data[itype];
3187 CGEN_INSN_WORD insn = base_insn;
3188 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3189 UINT f_operand2;
3190 UINT f_memmode;
3191 UINT f_operand1;
3192
3193 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3194 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3195 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3196
3197 /* Record the fields for the semantic handler. */
3198 FLD (f_operand1) = f_operand1;
3199 FLD (f_memmode) = f_memmode;
3200 FLD (f_operand2) = f_operand2;
3201 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));
3202
3203 #if WITH_PROFILE_MODEL_P
3204 /* Record the fields for profiling. */
3205 if (PROFILE_MODEL_P (current_cpu))
3206 {
3207 FLD (in_Rs) = f_operand1;
3208 FLD (out_Rd) = f_operand2;
3209 FLD (out_Rs) = f_operand1;
3210 }
3211 #endif
3212 #undef FLD
3213 return idesc;
3214 }
3215
3216 extract_sfmt_movs_m_w_m:
3217 {
3218 const IDESC *idesc = &crisv10f_insn_data[itype];
3219 CGEN_INSN_WORD insn = base_insn;
3220 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
3221 UINT f_operand2;
3222 UINT f_memmode;
3223 UINT f_operand1;
3224
3225 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3226 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3227 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3228
3229 /* Record the fields for the semantic handler. */
3230 FLD (f_operand1) = f_operand1;
3231 FLD (f_memmode) = f_memmode;
3232 FLD (f_operand2) = f_operand2;
3233 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));
3234
3235 #if WITH_PROFILE_MODEL_P
3236 /* Record the fields for profiling. */
3237 if (PROFILE_MODEL_P (current_cpu))
3238 {
3239 FLD (in_Rs) = f_operand1;
3240 FLD (out_Rd) = f_operand2;
3241 FLD (out_Rs) = f_operand1;
3242 }
3243 #endif
3244 #undef FLD
3245 return idesc;
3246 }
3247
3248 extract_sfmt_move_r_sprv10:
3249 {
3250 const IDESC *idesc = &crisv10f_insn_data[itype];
3251 CGEN_INSN_WORD insn = base_insn;
3252 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3253 UINT f_operand2;
3254 UINT f_operand1;
3255
3256 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3257 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3258
3259 /* Record the fields for the semantic handler. */
3260 FLD (f_operand1) = f_operand1;
3261 FLD (f_operand2) = f_operand2;
3262 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_r_sprv10", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
3263
3264 #if WITH_PROFILE_MODEL_P
3265 /* Record the fields for profiling. */
3266 if (PROFILE_MODEL_P (current_cpu))
3267 {
3268 FLD (in_Rs) = f_operand1;
3269 FLD (out_Pd) = f_operand2;
3270 }
3271 #endif
3272 #undef FLD
3273 return idesc;
3274 }
3275
3276 extract_sfmt_move_spr_rv10:
3277 {
3278 const IDESC *idesc = &crisv10f_insn_data[itype];
3279 CGEN_INSN_WORD insn = base_insn;
3280 #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
3281 UINT f_operand2;
3282 UINT f_operand1;
3283
3284 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3285 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3286
3287 /* Record the fields for the semantic handler. */
3288 FLD (f_operand2) = f_operand2;
3289 FLD (f_operand1) = f_operand1;
3290 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_spr_rv10", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
3291
3292 #if WITH_PROFILE_MODEL_P
3293 /* Record the fields for profiling. */
3294 if (PROFILE_MODEL_P (current_cpu))
3295 {
3296 FLD (in_Ps) = f_operand2;
3297 FLD (out_h_gr_SI_index_of__INT_Rs) = FLD (f_operand1);
3298 }
3299 #endif
3300 #undef FLD
3301 return idesc;
3302 }
3303
3304 extract_sfmt_ret_type:
3305 {
3306 const IDESC *idesc = &crisv10f_insn_data[itype];
3307 CGEN_INSN_WORD insn = base_insn;
3308 #define FLD(f) abuf->fields.sfmt_move_spr_rv10.f
3309 UINT f_operand2;
3310
3311 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3312
3313 /* Record the fields for the semantic handler. */
3314 FLD (f_operand2) = f_operand2;
3315 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ret_type", "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
3316
3317 #if WITH_PROFILE_MODEL_P
3318 /* Record the fields for profiling. */
3319 if (PROFILE_MODEL_P (current_cpu))
3320 {
3321 FLD (in_Ps) = f_operand2;
3322 }
3323 #endif
3324 #undef FLD
3325 return idesc;
3326 }
3327
3328 extract_sfmt_move_m_sprv10:
3329 {
3330 const IDESC *idesc = &crisv10f_insn_data[itype];
3331 CGEN_INSN_WORD insn = base_insn;
3332 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
3333 UINT f_operand2;
3334 UINT f_memmode;
3335 UINT f_operand1;
3336
3337 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3338 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3339 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3340
3341 /* Record the fields for the semantic handler. */
3342 FLD (f_operand1) = f_operand1;
3343 FLD (f_operand2) = f_operand2;
3344 FLD (f_memmode) = f_memmode;
3345 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_sprv10", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3346
3347 #if WITH_PROFILE_MODEL_P
3348 /* Record the fields for profiling. */
3349 if (PROFILE_MODEL_P (current_cpu))
3350 {
3351 FLD (in_Rs) = f_operand1;
3352 FLD (out_Pd) = f_operand2;
3353 FLD (out_Rs) = f_operand1;
3354 }
3355 #endif
3356 #undef FLD
3357 return idesc;
3358 }
3359
3360 extract_sfmt_move_c_sprv10_p5:
3361 {
3362 const IDESC *idesc = &crisv10f_insn_data[itype];
3363 CGEN_INSN_WORD insn = base_insn;
3364 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p5.f
3365 UINT f_operand2;
3366 INT f_indir_pc__word;
3367 /* Contents of trailing part of insn. */
3368 UINT word_1;
3369
3370 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3371 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3372 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3373
3374 /* Record the fields for the semantic handler. */
3375 FLD (f_indir_pc__word) = f_indir_pc__word;
3376 FLD (f_operand2) = f_operand2;
3377 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_c_sprv10_p5", "f_indir_pc__word 0x%x", 'x', f_indir_pc__word, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
3378
3379 #if WITH_PROFILE_MODEL_P
3380 /* Record the fields for profiling. */
3381 if (PROFILE_MODEL_P (current_cpu))
3382 {
3383 FLD (out_Pd) = f_operand2;
3384 }
3385 #endif
3386 #undef FLD
3387 return idesc;
3388 }
3389
3390 extract_sfmt_move_c_sprv10_p9:
3391 {
3392 const IDESC *idesc = &crisv10f_insn_data[itype];
3393 CGEN_INSN_WORD insn = base_insn;
3394 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3395 INT f_indir_pc__dword;
3396 UINT f_operand2;
3397 /* Contents of trailing part of insn. */
3398 UINT word_1;
3399
3400 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3401 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
3402 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3403
3404 /* Record the fields for the semantic handler. */
3405 FLD (f_indir_pc__dword) = f_indir_pc__dword;
3406 FLD (f_operand2) = f_operand2;
3407 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_c_sprv10_p9", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
3408
3409 #if WITH_PROFILE_MODEL_P
3410 /* Record the fields for profiling. */
3411 if (PROFILE_MODEL_P (current_cpu))
3412 {
3413 FLD (out_Pd) = f_operand2;
3414 }
3415 #endif
3416 #undef FLD
3417 return idesc;
3418 }
3419
3420 extract_sfmt_move_spr_mv10:
3421 {
3422 const IDESC *idesc = &crisv10f_insn_data[itype];
3423 CGEN_INSN_WORD insn = base_insn;
3424 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
3425 UINT f_operand2;
3426 UINT f_memmode;
3427 UINT f_operand1;
3428
3429 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3430 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3431 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3432
3433 /* Record the fields for the semantic handler. */
3434 FLD (f_operand2) = f_operand2;
3435 FLD (f_operand1) = f_operand1;
3436 FLD (f_memmode) = f_memmode;
3437 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_spr_mv10", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3438
3439 #if WITH_PROFILE_MODEL_P
3440 /* Record the fields for profiling. */
3441 if (PROFILE_MODEL_P (current_cpu))
3442 {
3443 FLD (in_Ps) = f_operand2;
3444 FLD (in_Rs) = f_operand1;
3445 FLD (out_Rs) = f_operand1;
3446 }
3447 #endif
3448 #undef FLD
3449 return idesc;
3450 }
3451
3452 extract_sfmt_sbfs:
3453 {
3454 const IDESC *idesc = &crisv10f_insn_data[itype];
3455 #define FLD(f) abuf->fields.sfmt_empty.f
3456
3457
3458 /* Record the fields for the semantic handler. */
3459 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sbfs", (char *) 0));
3460
3461 #undef FLD
3462 return idesc;
3463 }
3464
3465 extract_sfmt_movem_r_m:
3466 {
3467 const IDESC *idesc = &crisv10f_insn_data[itype];
3468 CGEN_INSN_WORD insn = base_insn;
3469 #define FLD(f) abuf->fields.sfmt_movem_r_m.f
3470 UINT f_operand2;
3471 UINT f_memmode;
3472 UINT f_operand1;
3473
3474 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3475 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3476 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3477
3478 /* Record the fields for the semantic handler. */
3479 FLD (f_operand2) = f_operand2;
3480 FLD (f_operand1) = f_operand1;
3481 FLD (f_memmode) = f_memmode;
3482 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movem_r_m", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3483
3484 #if WITH_PROFILE_MODEL_P
3485 /* Record the fields for profiling. */
3486 if (PROFILE_MODEL_P (current_cpu))
3487 {
3488 FLD (in_Rd) = f_operand2;
3489 FLD (in_Rs) = f_operand1;
3490 FLD (in_h_gr_SI_0) = 0;
3491 FLD (in_h_gr_SI_1) = 1;
3492 FLD (in_h_gr_SI_10) = 10;
3493 FLD (in_h_gr_SI_11) = 11;
3494 FLD (in_h_gr_SI_12) = 12;
3495 FLD (in_h_gr_SI_13) = 13;
3496 FLD (in_h_gr_SI_14) = 14;
3497 FLD (in_h_gr_SI_15) = 15;
3498 FLD (in_h_gr_SI_2) = 2;
3499 FLD (in_h_gr_SI_3) = 3;
3500 FLD (in_h_gr_SI_4) = 4;
3501 FLD (in_h_gr_SI_5) = 5;
3502 FLD (in_h_gr_SI_6) = 6;
3503 FLD (in_h_gr_SI_7) = 7;
3504 FLD (in_h_gr_SI_8) = 8;
3505 FLD (in_h_gr_SI_9) = 9;
3506 FLD (out_Rs) = f_operand1;
3507 }
3508 #endif
3509 #undef FLD
3510 return idesc;
3511 }
3512
3513 extract_sfmt_movem_m_r:
3514 {
3515 const IDESC *idesc = &crisv10f_insn_data[itype];
3516 CGEN_INSN_WORD insn = base_insn;
3517 #define FLD(f) abuf->fields.sfmt_movem_m_r.f
3518 UINT f_operand2;
3519 UINT f_memmode;
3520 UINT f_operand1;
3521
3522 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3523 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3524 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3525
3526 /* Record the fields for the semantic handler. */
3527 FLD (f_operand2) = f_operand2;
3528 FLD (f_operand1) = f_operand1;
3529 FLD (f_memmode) = f_memmode;
3530 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movem_m_r", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3531
3532 #if WITH_PROFILE_MODEL_P
3533 /* Record the fields for profiling. */
3534 if (PROFILE_MODEL_P (current_cpu))
3535 {
3536 FLD (in_Rd) = f_operand2;
3537 FLD (in_Rs) = f_operand1;
3538 FLD (out_Rs) = f_operand1;
3539 FLD (out_h_gr_SI_0) = 0;
3540 FLD (out_h_gr_SI_1) = 1;
3541 FLD (out_h_gr_SI_10) = 10;
3542 FLD (out_h_gr_SI_11) = 11;
3543 FLD (out_h_gr_SI_12) = 12;
3544 FLD (out_h_gr_SI_13) = 13;
3545 FLD (out_h_gr_SI_14) = 14;
3546 FLD (out_h_gr_SI_2) = 2;
3547 FLD (out_h_gr_SI_3) = 3;
3548 FLD (out_h_gr_SI_4) = 4;
3549 FLD (out_h_gr_SI_5) = 5;
3550 FLD (out_h_gr_SI_6) = 6;
3551 FLD (out_h_gr_SI_7) = 7;
3552 FLD (out_h_gr_SI_8) = 8;
3553 FLD (out_h_gr_SI_9) = 9;
3554 }
3555 #endif
3556 #undef FLD
3557 return idesc;
3558 }
3559
3560 extract_sfmt_movem_m_pc:
3561 {
3562 const IDESC *idesc = &crisv10f_insn_data[itype];
3563 CGEN_INSN_WORD insn = base_insn;
3564 #define FLD(f) abuf->fields.sfmt_movem_m_r.f
3565 UINT f_memmode;
3566 UINT f_operand1;
3567
3568 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3569 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3570
3571 /* Record the fields for the semantic handler. */
3572 FLD (f_operand1) = f_operand1;
3573 FLD (f_memmode) = f_memmode;
3574 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movem_m_pc", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
3575
3576 #if WITH_PROFILE_MODEL_P
3577 /* Record the fields for profiling. */
3578 if (PROFILE_MODEL_P (current_cpu))
3579 {
3580 FLD (in_Rs) = f_operand1;
3581 FLD (out_Rs) = f_operand1;
3582 FLD (out_h_gr_SI_0) = 0;
3583 FLD (out_h_gr_SI_1) = 1;
3584 FLD (out_h_gr_SI_10) = 10;
3585 FLD (out_h_gr_SI_11) = 11;
3586 FLD (out_h_gr_SI_12) = 12;
3587 FLD (out_h_gr_SI_13) = 13;
3588 FLD (out_h_gr_SI_14) = 14;
3589 FLD (out_h_gr_SI_2) = 2;
3590 FLD (out_h_gr_SI_3) = 3;
3591 FLD (out_h_gr_SI_4) = 4;
3592 FLD (out_h_gr_SI_5) = 5;
3593 FLD (out_h_gr_SI_6) = 6;
3594 FLD (out_h_gr_SI_7) = 7;
3595 FLD (out_h_gr_SI_8) = 8;
3596 FLD (out_h_gr_SI_9) = 9;
3597 }
3598 #endif
3599 #undef FLD
3600 return idesc;
3601 }
3602
3603 extract_sfmt_add_b_r:
3604 {
3605 const IDESC *idesc = &crisv10f_insn_data[itype];
3606 CGEN_INSN_WORD insn = base_insn;
3607 #define FLD(f) abuf->fields.sfmt_add_b_r.f
3608 UINT f_operand2;
3609 UINT f_operand1;
3610
3611 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3612 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3613
3614 /* Record the fields for the semantic handler. */
3615 FLD (f_operand2) = f_operand2;
3616 FLD (f_operand1) = f_operand1;
3617 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));
3618
3619 #if WITH_PROFILE_MODEL_P
3620 /* Record the fields for profiling. */
3621 if (PROFILE_MODEL_P (current_cpu))
3622 {
3623 FLD (in_Rd) = f_operand2;
3624 FLD (in_Rs) = f_operand1;
3625 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3626 }
3627 #endif
3628 #undef FLD
3629 return idesc;
3630 }
3631
3632 extract_sfmt_add_d_r:
3633 {
3634 const IDESC *idesc = &crisv10f_insn_data[itype];
3635 CGEN_INSN_WORD insn = base_insn;
3636 #define FLD(f) abuf->fields.sfmt_add_b_r.f
3637 UINT f_operand2;
3638 UINT f_operand1;
3639
3640 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3641 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3642
3643 /* Record the fields for the semantic handler. */
3644 FLD (f_operand2) = f_operand2;
3645 FLD (f_operand1) = f_operand1;
3646 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));
3647
3648 #if WITH_PROFILE_MODEL_P
3649 /* Record the fields for profiling. */
3650 if (PROFILE_MODEL_P (current_cpu))
3651 {
3652 FLD (in_Rd) = f_operand2;
3653 FLD (in_Rs) = f_operand1;
3654 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3655 }
3656 #endif
3657 #undef FLD
3658 return idesc;
3659 }
3660
3661 extract_sfmt_add_m_b_m:
3662 {
3663 const IDESC *idesc = &crisv10f_insn_data[itype];
3664 CGEN_INSN_WORD insn = base_insn;
3665 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3666 UINT f_operand2;
3667 UINT f_memmode;
3668 UINT f_operand1;
3669
3670 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3671 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3672 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3673
3674 /* Record the fields for the semantic handler. */
3675 FLD (f_operand2) = f_operand2;
3676 FLD (f_operand1) = f_operand1;
3677 FLD (f_memmode) = f_memmode;
3678 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));
3679
3680 #if WITH_PROFILE_MODEL_P
3681 /* Record the fields for profiling. */
3682 if (PROFILE_MODEL_P (current_cpu))
3683 {
3684 FLD (in_Rd) = f_operand2;
3685 FLD (in_Rs) = f_operand1;
3686 FLD (out_Rs) = f_operand1;
3687 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3688 }
3689 #endif
3690 #undef FLD
3691 return idesc;
3692 }
3693
3694 extract_sfmt_add_m_w_m:
3695 {
3696 const IDESC *idesc = &crisv10f_insn_data[itype];
3697 CGEN_INSN_WORD insn = base_insn;
3698 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3699 UINT f_operand2;
3700 UINT f_memmode;
3701 UINT f_operand1;
3702
3703 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3704 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3705 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3706
3707 /* Record the fields for the semantic handler. */
3708 FLD (f_operand2) = f_operand2;
3709 FLD (f_operand1) = f_operand1;
3710 FLD (f_memmode) = f_memmode;
3711 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));
3712
3713 #if WITH_PROFILE_MODEL_P
3714 /* Record the fields for profiling. */
3715 if (PROFILE_MODEL_P (current_cpu))
3716 {
3717 FLD (in_Rd) = f_operand2;
3718 FLD (in_Rs) = f_operand1;
3719 FLD (out_Rs) = f_operand1;
3720 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3721 }
3722 #endif
3723 #undef FLD
3724 return idesc;
3725 }
3726
3727 extract_sfmt_add_m_d_m:
3728 {
3729 const IDESC *idesc = &crisv10f_insn_data[itype];
3730 CGEN_INSN_WORD insn = base_insn;
3731 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3732 UINT f_operand2;
3733 UINT f_memmode;
3734 UINT f_operand1;
3735
3736 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3737 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3738 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3739
3740 /* Record the fields for the semantic handler. */
3741 FLD (f_operand2) = f_operand2;
3742 FLD (f_operand1) = f_operand1;
3743 FLD (f_memmode) = f_memmode;
3744 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));
3745
3746 #if WITH_PROFILE_MODEL_P
3747 /* Record the fields for profiling. */
3748 if (PROFILE_MODEL_P (current_cpu))
3749 {
3750 FLD (in_Rd) = f_operand2;
3751 FLD (in_Rs) = f_operand1;
3752 FLD (out_Rs) = f_operand1;
3753 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3754 }
3755 #endif
3756 #undef FLD
3757 return idesc;
3758 }
3759
3760 extract_sfmt_addcbr:
3761 {
3762 const IDESC *idesc = &crisv10f_insn_data[itype];
3763 CGEN_INSN_WORD insn = base_insn;
3764 #define FLD(f) abuf->fields.sfmt_addcbr.f
3765 INT f_indir_pc__byte;
3766 UINT f_operand2;
3767 /* Contents of trailing part of insn. */
3768 UINT word_1;
3769
3770 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3771 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3772 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3773
3774 /* Record the fields for the semantic handler. */
3775 FLD (f_operand2) = f_operand2;
3776 FLD (f_indir_pc__byte) = f_indir_pc__byte;
3777 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));
3778
3779 #if WITH_PROFILE_MODEL_P
3780 /* Record the fields for profiling. */
3781 if (PROFILE_MODEL_P (current_cpu))
3782 {
3783 FLD (in_Rd) = f_operand2;
3784 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3785 }
3786 #endif
3787 #undef FLD
3788 return idesc;
3789 }
3790
3791 extract_sfmt_addcwr:
3792 {
3793 const IDESC *idesc = &crisv10f_insn_data[itype];
3794 CGEN_INSN_WORD insn = base_insn;
3795 #define FLD(f) abuf->fields.sfmt_addcwr.f
3796 INT f_indir_pc__word;
3797 UINT f_operand2;
3798 /* Contents of trailing part of insn. */
3799 UINT word_1;
3800
3801 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3802 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3803 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3804
3805 /* Record the fields for the semantic handler. */
3806 FLD (f_operand2) = f_operand2;
3807 FLD (f_indir_pc__word) = f_indir_pc__word;
3808 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));
3809
3810 #if WITH_PROFILE_MODEL_P
3811 /* Record the fields for profiling. */
3812 if (PROFILE_MODEL_P (current_cpu))
3813 {
3814 FLD (in_Rd) = f_operand2;
3815 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3816 }
3817 #endif
3818 #undef FLD
3819 return idesc;
3820 }
3821
3822 extract_sfmt_addcdr:
3823 {
3824 const IDESC *idesc = &crisv10f_insn_data[itype];
3825 CGEN_INSN_WORD insn = base_insn;
3826 #define FLD(f) abuf->fields.sfmt_addcdr.f
3827 INT f_indir_pc__dword;
3828 UINT f_operand2;
3829 /* Contents of trailing part of insn. */
3830 UINT word_1;
3831
3832 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3833 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
3834 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3835
3836 /* Record the fields for the semantic handler. */
3837 FLD (f_operand2) = f_operand2;
3838 FLD (f_indir_pc__dword) = f_indir_pc__dword;
3839 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));
3840
3841 #if WITH_PROFILE_MODEL_P
3842 /* Record the fields for profiling. */
3843 if (PROFILE_MODEL_P (current_cpu))
3844 {
3845 FLD (in_Rd) = f_operand2;
3846 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3847 }
3848 #endif
3849 #undef FLD
3850 return idesc;
3851 }
3852
3853 extract_sfmt_addcpc:
3854 {
3855 const IDESC *idesc = &crisv10f_insn_data[itype];
3856 CGEN_INSN_WORD insn = base_insn;
3857 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
3858 INT f_indir_pc__dword;
3859 /* Contents of trailing part of insn. */
3860 UINT word_1;
3861
3862 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3863 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
3864
3865 /* Record the fields for the semantic handler. */
3866 FLD (f_indir_pc__dword) = f_indir_pc__dword;
3867 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addcpc", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
3868
3869 #if WITH_PROFILE_MODEL_P
3870 /* Record the fields for profiling. */
3871 if (PROFILE_MODEL_P (current_cpu))
3872 {
3873 }
3874 #endif
3875 #undef FLD
3876 return idesc;
3877 }
3878
3879 extract_sfmt_adds_m_b_m:
3880 {
3881 const IDESC *idesc = &crisv10f_insn_data[itype];
3882 CGEN_INSN_WORD insn = base_insn;
3883 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3884 UINT f_operand2;
3885 UINT f_memmode;
3886 UINT f_operand1;
3887
3888 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3889 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3890 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3891
3892 /* Record the fields for the semantic handler. */
3893 FLD (f_operand2) = f_operand2;
3894 FLD (f_operand1) = f_operand1;
3895 FLD (f_memmode) = f_memmode;
3896 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));
3897
3898 #if WITH_PROFILE_MODEL_P
3899 /* Record the fields for profiling. */
3900 if (PROFILE_MODEL_P (current_cpu))
3901 {
3902 FLD (in_Rd) = f_operand2;
3903 FLD (in_Rs) = f_operand1;
3904 FLD (out_Rs) = f_operand1;
3905 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3906 }
3907 #endif
3908 #undef FLD
3909 return idesc;
3910 }
3911
3912 extract_sfmt_adds_m_w_m:
3913 {
3914 const IDESC *idesc = &crisv10f_insn_data[itype];
3915 CGEN_INSN_WORD insn = base_insn;
3916 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3917 UINT f_operand2;
3918 UINT f_memmode;
3919 UINT f_operand1;
3920
3921 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3922 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
3923 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
3924
3925 /* Record the fields for the semantic handler. */
3926 FLD (f_operand2) = f_operand2;
3927 FLD (f_operand1) = f_operand1;
3928 FLD (f_memmode) = f_memmode;
3929 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_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));
3930
3931 #if WITH_PROFILE_MODEL_P
3932 /* Record the fields for profiling. */
3933 if (PROFILE_MODEL_P (current_cpu))
3934 {
3935 FLD (in_Rd) = f_operand2;
3936 FLD (in_Rs) = f_operand1;
3937 FLD (out_Rs) = f_operand1;
3938 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
3939 }
3940 #endif
3941 #undef FLD
3942 return idesc;
3943 }
3944
3945 extract_sfmt_addscbr:
3946 {
3947 const IDESC *idesc = &crisv10f_insn_data[itype];
3948 CGEN_INSN_WORD insn = base_insn;
3949 #define FLD(f) abuf->fields.sfmt_addcbr.f
3950 INT f_indir_pc__byte;
3951 UINT f_operand2;
3952 /* Contents of trailing part of insn. */
3953 UINT word_1;
3954
3955 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3956 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3957 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3958
3959 /* Record the fields for the semantic handler. */
3960 FLD (f_operand2) = f_operand2;
3961 FLD (f_indir_pc__byte) = f_indir_pc__byte;
3962 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));
3963
3964 #if WITH_PROFILE_MODEL_P
3965 /* Record the fields for profiling. */
3966 if (PROFILE_MODEL_P (current_cpu))
3967 {
3968 FLD (in_Rd) = f_operand2;
3969 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
3970 }
3971 #endif
3972 #undef FLD
3973 return idesc;
3974 }
3975
3976 extract_sfmt_addscwr:
3977 {
3978 const IDESC *idesc = &crisv10f_insn_data[itype];
3979 CGEN_INSN_WORD insn = base_insn;
3980 #define FLD(f) abuf->fields.sfmt_addcwr.f
3981 INT f_indir_pc__word;
3982 UINT f_operand2;
3983 /* Contents of trailing part of insn. */
3984 UINT word_1;
3985
3986 word_1 = GETIMEMUSI (current_cpu, pc + 2);
3987 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
3988 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
3989
3990 /* Record the fields for the semantic handler. */
3991 FLD (f_operand2) = f_operand2;
3992 FLD (f_indir_pc__word) = f_indir_pc__word;
3993 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));
3994
3995 #if WITH_PROFILE_MODEL_P
3996 /* Record the fields for profiling. */
3997 if (PROFILE_MODEL_P (current_cpu))
3998 {
3999 FLD (in_Rd) = f_operand2;
4000 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4001 }
4002 #endif
4003 #undef FLD
4004 return idesc;
4005 }
4006
4007 extract_sfmt_addspcpc:
4008 {
4009 const IDESC *idesc = &crisv10f_insn_data[itype];
4010 #define FLD(f) abuf->fields.sfmt_empty.f
4011
4012
4013 /* Record the fields for the semantic handler. */
4014 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addspcpc", (char *) 0));
4015
4016 #if WITH_PROFILE_MODEL_P
4017 /* Record the fields for profiling. */
4018 if (PROFILE_MODEL_P (current_cpu))
4019 {
4020 }
4021 #endif
4022 #undef FLD
4023 return idesc;
4024 }
4025
4026 extract_sfmt_addi_b_r:
4027 {
4028 const IDESC *idesc = &crisv10f_insn_data[itype];
4029 CGEN_INSN_WORD insn = base_insn;
4030 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
4031 UINT f_operand2;
4032 UINT f_operand1;
4033
4034 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4035 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4036
4037 /* Record the fields for the semantic handler. */
4038 FLD (f_operand2) = f_operand2;
4039 FLD (f_operand1) = f_operand1;
4040 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));
4041
4042 #if WITH_PROFILE_MODEL_P
4043 /* Record the fields for profiling. */
4044 if (PROFILE_MODEL_P (current_cpu))
4045 {
4046 FLD (in_Rd) = f_operand2;
4047 FLD (in_Rs) = f_operand1;
4048 FLD (out_Rs) = f_operand1;
4049 }
4050 #endif
4051 #undef FLD
4052 return idesc;
4053 }
4054
4055 extract_sfmt_neg_b_r:
4056 {
4057 const IDESC *idesc = &crisv10f_insn_data[itype];
4058 CGEN_INSN_WORD insn = base_insn;
4059 #define FLD(f) abuf->fields.sfmt_add_b_r.f
4060 UINT f_operand2;
4061 UINT f_operand1;
4062
4063 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4064 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4065
4066 /* Record the fields for the semantic handler. */
4067 FLD (f_operand1) = f_operand1;
4068 FLD (f_operand2) = f_operand2;
4069 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));
4070
4071 #if WITH_PROFILE_MODEL_P
4072 /* Record the fields for profiling. */
4073 if (PROFILE_MODEL_P (current_cpu))
4074 {
4075 FLD (in_Rs) = f_operand1;
4076 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4077 }
4078 #endif
4079 #undef FLD
4080 return idesc;
4081 }
4082
4083 extract_sfmt_neg_d_r:
4084 {
4085 const IDESC *idesc = &crisv10f_insn_data[itype];
4086 CGEN_INSN_WORD insn = base_insn;
4087 #define FLD(f) abuf->fields.sfmt_add_b_r.f
4088 UINT f_operand2;
4089 UINT f_operand1;
4090
4091 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4092 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4093
4094 /* Record the fields for the semantic handler. */
4095 FLD (f_operand1) = f_operand1;
4096 FLD (f_operand2) = f_operand2;
4097 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));
4098
4099 #if WITH_PROFILE_MODEL_P
4100 /* Record the fields for profiling. */
4101 if (PROFILE_MODEL_P (current_cpu))
4102 {
4103 FLD (in_Rs) = f_operand1;
4104 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4105 }
4106 #endif
4107 #undef FLD
4108 return idesc;
4109 }
4110
4111 extract_sfmt_test_m_b_m:
4112 {
4113 const IDESC *idesc = &crisv10f_insn_data[itype];
4114 CGEN_INSN_WORD insn = base_insn;
4115 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
4116 UINT f_memmode;
4117 UINT f_operand1;
4118
4119 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4120 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4121
4122 /* Record the fields for the semantic handler. */
4123 FLD (f_operand1) = f_operand1;
4124 FLD (f_memmode) = f_memmode;
4125 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));
4126
4127 #if WITH_PROFILE_MODEL_P
4128 /* Record the fields for profiling. */
4129 if (PROFILE_MODEL_P (current_cpu))
4130 {
4131 FLD (in_Rs) = f_operand1;
4132 FLD (out_Rs) = f_operand1;
4133 }
4134 #endif
4135 #undef FLD
4136 return idesc;
4137 }
4138
4139 extract_sfmt_test_m_w_m:
4140 {
4141 const IDESC *idesc = &crisv10f_insn_data[itype];
4142 CGEN_INSN_WORD insn = base_insn;
4143 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
4144 UINT f_memmode;
4145 UINT f_operand1;
4146
4147 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4148 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4149
4150 /* Record the fields for the semantic handler. */
4151 FLD (f_operand1) = f_operand1;
4152 FLD (f_memmode) = f_memmode;
4153 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));
4154
4155 #if WITH_PROFILE_MODEL_P
4156 /* Record the fields for profiling. */
4157 if (PROFILE_MODEL_P (current_cpu))
4158 {
4159 FLD (in_Rs) = f_operand1;
4160 FLD (out_Rs) = f_operand1;
4161 }
4162 #endif
4163 #undef FLD
4164 return idesc;
4165 }
4166
4167 extract_sfmt_test_m_d_m:
4168 {
4169 const IDESC *idesc = &crisv10f_insn_data[itype];
4170 CGEN_INSN_WORD insn = base_insn;
4171 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
4172 UINT f_memmode;
4173 UINT f_operand1;
4174
4175 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4176 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4177
4178 /* Record the fields for the semantic handler. */
4179 FLD (f_operand1) = f_operand1;
4180 FLD (f_memmode) = f_memmode;
4181 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));
4182
4183 #if WITH_PROFILE_MODEL_P
4184 /* Record the fields for profiling. */
4185 if (PROFILE_MODEL_P (current_cpu))
4186 {
4187 FLD (in_Rs) = f_operand1;
4188 FLD (out_Rs) = f_operand1;
4189 }
4190 #endif
4191 #undef FLD
4192 return idesc;
4193 }
4194
4195 extract_sfmt_move_r_m_b_m:
4196 {
4197 const IDESC *idesc = &crisv10f_insn_data[itype];
4198 CGEN_INSN_WORD insn = base_insn;
4199 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
4200 UINT f_operand2;
4201 UINT f_memmode;
4202 UINT f_operand1;
4203
4204 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4205 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4206 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4207
4208 /* Record the fields for the semantic handler. */
4209 FLD (f_operand2) = f_operand2;
4210 FLD (f_operand1) = f_operand1;
4211 FLD (f_memmode) = f_memmode;
4212 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));
4213
4214 #if WITH_PROFILE_MODEL_P
4215 /* Record the fields for profiling. */
4216 if (PROFILE_MODEL_P (current_cpu))
4217 {
4218 FLD (in_Rd) = f_operand2;
4219 FLD (in_Rs) = f_operand1;
4220 FLD (out_Rs) = f_operand1;
4221 }
4222 #endif
4223 #undef FLD
4224 return idesc;
4225 }
4226
4227 extract_sfmt_move_r_m_w_m:
4228 {
4229 const IDESC *idesc = &crisv10f_insn_data[itype];
4230 CGEN_INSN_WORD insn = base_insn;
4231 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
4232 UINT f_operand2;
4233 UINT f_memmode;
4234 UINT f_operand1;
4235
4236 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4237 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4238 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4239
4240 /* Record the fields for the semantic handler. */
4241 FLD (f_operand2) = f_operand2;
4242 FLD (f_operand1) = f_operand1;
4243 FLD (f_memmode) = f_memmode;
4244 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));
4245
4246 #if WITH_PROFILE_MODEL_P
4247 /* Record the fields for profiling. */
4248 if (PROFILE_MODEL_P (current_cpu))
4249 {
4250 FLD (in_Rd) = f_operand2;
4251 FLD (in_Rs) = f_operand1;
4252 FLD (out_Rs) = f_operand1;
4253 }
4254 #endif
4255 #undef FLD
4256 return idesc;
4257 }
4258
4259 extract_sfmt_move_r_m_d_m:
4260 {
4261 const IDESC *idesc = &crisv10f_insn_data[itype];
4262 CGEN_INSN_WORD insn = base_insn;
4263 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
4264 UINT f_operand2;
4265 UINT f_memmode;
4266 UINT f_operand1;
4267
4268 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4269 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4270 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4271
4272 /* Record the fields for the semantic handler. */
4273 FLD (f_operand2) = f_operand2;
4274 FLD (f_operand1) = f_operand1;
4275 FLD (f_memmode) = f_memmode;
4276 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));
4277
4278 #if WITH_PROFILE_MODEL_P
4279 /* Record the fields for profiling. */
4280 if (PROFILE_MODEL_P (current_cpu))
4281 {
4282 FLD (in_Rd) = f_operand2;
4283 FLD (in_Rs) = f_operand1;
4284 FLD (out_Rs) = f_operand1;
4285 }
4286 #endif
4287 #undef FLD
4288 return idesc;
4289 }
4290
4291 extract_sfmt_muls_b:
4292 {
4293 const IDESC *idesc = &crisv10f_insn_data[itype];
4294 CGEN_INSN_WORD insn = base_insn;
4295 #define FLD(f) abuf->fields.sfmt_muls_b.f
4296 UINT f_operand2;
4297 UINT f_operand1;
4298
4299 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4300 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4301
4302 /* Record the fields for the semantic handler. */
4303 FLD (f_operand2) = f_operand2;
4304 FLD (f_operand1) = f_operand1;
4305 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));
4306
4307 #if WITH_PROFILE_MODEL_P
4308 /* Record the fields for profiling. */
4309 if (PROFILE_MODEL_P (current_cpu))
4310 {
4311 FLD (in_Rd) = f_operand2;
4312 FLD (in_Rs) = f_operand1;
4313 FLD (out_Rd) = f_operand2;
4314 FLD (out_h_sr_SI_7) = 7;
4315 }
4316 #endif
4317 #undef FLD
4318 return idesc;
4319 }
4320
4321 extract_sfmt_mstep:
4322 {
4323 const IDESC *idesc = &crisv10f_insn_data[itype];
4324 CGEN_INSN_WORD insn = base_insn;
4325 #define FLD(f) abuf->fields.sfmt_muls_b.f
4326 UINT f_operand2;
4327 UINT f_operand1;
4328
4329 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4330 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4331
4332 /* Record the fields for the semantic handler. */
4333 FLD (f_operand2) = f_operand2;
4334 FLD (f_operand1) = f_operand1;
4335 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mstep", "f_operand2 0x%x", 'x', f_operand2, "f_operand1 0x%x", 'x', f_operand1, (char *) 0));
4336
4337 #if WITH_PROFILE_MODEL_P
4338 /* Record the fields for profiling. */
4339 if (PROFILE_MODEL_P (current_cpu))
4340 {
4341 FLD (in_Rd) = f_operand2;
4342 FLD (in_Rs) = f_operand1;
4343 FLD (out_Rd) = f_operand2;
4344 }
4345 #endif
4346 #undef FLD
4347 return idesc;
4348 }
4349
4350 extract_sfmt_dstep:
4351 {
4352 const IDESC *idesc = &crisv10f_insn_data[itype];
4353 CGEN_INSN_WORD insn = base_insn;
4354 #define FLD(f) abuf->fields.sfmt_muls_b.f
4355 UINT f_operand2;
4356 UINT f_operand1;
4357
4358 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4359 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4360
4361 /* Record the fields for the semantic handler. */
4362 FLD (f_operand2) = f_operand2;
4363 FLD (f_operand1) = f_operand1;
4364 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));
4365
4366 #if WITH_PROFILE_MODEL_P
4367 /* Record the fields for profiling. */
4368 if (PROFILE_MODEL_P (current_cpu))
4369 {
4370 FLD (in_Rd) = f_operand2;
4371 FLD (in_Rs) = f_operand1;
4372 FLD (out_Rd) = f_operand2;
4373 }
4374 #endif
4375 #undef FLD
4376 return idesc;
4377 }
4378
4379 extract_sfmt_and_b_r:
4380 {
4381 const IDESC *idesc = &crisv10f_insn_data[itype];
4382 CGEN_INSN_WORD insn = base_insn;
4383 #define FLD(f) abuf->fields.sfmt_add_b_r.f
4384 UINT f_operand2;
4385 UINT f_operand1;
4386
4387 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4388 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4389
4390 /* Record the fields for the semantic handler. */
4391 FLD (f_operand2) = f_operand2;
4392 FLD (f_operand1) = f_operand1;
4393 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));
4394
4395 #if WITH_PROFILE_MODEL_P
4396 /* Record the fields for profiling. */
4397 if (PROFILE_MODEL_P (current_cpu))
4398 {
4399 FLD (in_Rd) = f_operand2;
4400 FLD (in_Rs) = f_operand1;
4401 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4402 }
4403 #endif
4404 #undef FLD
4405 return idesc;
4406 }
4407
4408 extract_sfmt_and_d_r:
4409 {
4410 const IDESC *idesc = &crisv10f_insn_data[itype];
4411 CGEN_INSN_WORD insn = base_insn;
4412 #define FLD(f) abuf->fields.sfmt_add_b_r.f
4413 UINT f_operand2;
4414 UINT f_operand1;
4415
4416 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4417 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4418
4419 /* Record the fields for the semantic handler. */
4420 FLD (f_operand2) = f_operand2;
4421 FLD (f_operand1) = f_operand1;
4422 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));
4423
4424 #if WITH_PROFILE_MODEL_P
4425 /* Record the fields for profiling. */
4426 if (PROFILE_MODEL_P (current_cpu))
4427 {
4428 FLD (in_Rd) = f_operand2;
4429 FLD (in_Rs) = f_operand1;
4430 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4431 }
4432 #endif
4433 #undef FLD
4434 return idesc;
4435 }
4436
4437 extract_sfmt_and_m_b_m:
4438 {
4439 const IDESC *idesc = &crisv10f_insn_data[itype];
4440 CGEN_INSN_WORD insn = base_insn;
4441 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4442 UINT f_operand2;
4443 UINT f_memmode;
4444 UINT f_operand1;
4445
4446 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4447 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4448 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4449
4450 /* Record the fields for the semantic handler. */
4451 FLD (f_operand2) = f_operand2;
4452 FLD (f_operand1) = f_operand1;
4453 FLD (f_memmode) = f_memmode;
4454 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));
4455
4456 #if WITH_PROFILE_MODEL_P
4457 /* Record the fields for profiling. */
4458 if (PROFILE_MODEL_P (current_cpu))
4459 {
4460 FLD (in_Rd) = f_operand2;
4461 FLD (in_Rs) = f_operand1;
4462 FLD (out_Rs) = f_operand1;
4463 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
4464 }
4465 #endif
4466 #undef FLD
4467 return idesc;
4468 }
4469
4470 extract_sfmt_and_m_w_m:
4471 {
4472 const IDESC *idesc = &crisv10f_insn_data[itype];
4473 CGEN_INSN_WORD insn = base_insn;
4474 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4475 UINT f_operand2;
4476 UINT f_memmode;
4477 UINT f_operand1;
4478
4479 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4480 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4481 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4482
4483 /* Record the fields for the semantic handler. */
4484 FLD (f_operand2) = f_operand2;
4485 FLD (f_operand1) = f_operand1;
4486 FLD (f_memmode) = f_memmode;
4487 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));
4488
4489 #if WITH_PROFILE_MODEL_P
4490 /* Record the fields for profiling. */
4491 if (PROFILE_MODEL_P (current_cpu))
4492 {
4493 FLD (in_Rd) = f_operand2;
4494 FLD (in_Rs) = f_operand1;
4495 FLD (out_Rs) = f_operand1;
4496 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
4497 }
4498 #endif
4499 #undef FLD
4500 return idesc;
4501 }
4502
4503 extract_sfmt_and_m_d_m:
4504 {
4505 const IDESC *idesc = &crisv10f_insn_data[itype];
4506 CGEN_INSN_WORD insn = base_insn;
4507 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4508 UINT f_operand2;
4509 UINT f_memmode;
4510 UINT f_operand1;
4511
4512 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4513 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
4514 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4515
4516 /* Record the fields for the semantic handler. */
4517 FLD (f_operand2) = f_operand2;
4518 FLD (f_operand1) = f_operand1;
4519 FLD (f_memmode) = f_memmode;
4520 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));
4521
4522 #if WITH_PROFILE_MODEL_P
4523 /* Record the fields for profiling. */
4524 if (PROFILE_MODEL_P (current_cpu))
4525 {
4526 FLD (in_Rd) = f_operand2;
4527 FLD (in_Rs) = f_operand1;
4528 FLD (out_Rs) = f_operand1;
4529 FLD (out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd) = ((ANDIF (GET_H_INSN_PREFIXED_P (), (! (FLD (f_memmode))))) ? (FLD (f_operand1)) : (FLD (f_operand2)));
4530 }
4531 #endif
4532 #undef FLD
4533 return idesc;
4534 }
4535
4536 extract_sfmt_andcbr:
4537 {
4538 const IDESC *idesc = &crisv10f_insn_data[itype];
4539 CGEN_INSN_WORD insn = base_insn;
4540 #define FLD(f) abuf->fields.sfmt_addcbr.f
4541 INT f_indir_pc__byte;
4542 UINT f_operand2;
4543 /* Contents of trailing part of insn. */
4544 UINT word_1;
4545
4546 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4547 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4548 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4549
4550 /* Record the fields for the semantic handler. */
4551 FLD (f_operand2) = f_operand2;
4552 FLD (f_indir_pc__byte) = f_indir_pc__byte;
4553 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));
4554
4555 #if WITH_PROFILE_MODEL_P
4556 /* Record the fields for profiling. */
4557 if (PROFILE_MODEL_P (current_cpu))
4558 {
4559 FLD (in_Rd) = f_operand2;
4560 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4561 }
4562 #endif
4563 #undef FLD
4564 return idesc;
4565 }
4566
4567 extract_sfmt_andcwr:
4568 {
4569 const IDESC *idesc = &crisv10f_insn_data[itype];
4570 CGEN_INSN_WORD insn = base_insn;
4571 #define FLD(f) abuf->fields.sfmt_addcwr.f
4572 INT f_indir_pc__word;
4573 UINT f_operand2;
4574 /* Contents of trailing part of insn. */
4575 UINT word_1;
4576
4577 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4578 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
4579 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4580
4581 /* Record the fields for the semantic handler. */
4582 FLD (f_operand2) = f_operand2;
4583 FLD (f_indir_pc__word) = f_indir_pc__word;
4584 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));
4585
4586 #if WITH_PROFILE_MODEL_P
4587 /* Record the fields for profiling. */
4588 if (PROFILE_MODEL_P (current_cpu))
4589 {
4590 FLD (in_Rd) = f_operand2;
4591 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4592 }
4593 #endif
4594 #undef FLD
4595 return idesc;
4596 }
4597
4598 extract_sfmt_andcdr:
4599 {
4600 const IDESC *idesc = &crisv10f_insn_data[itype];
4601 CGEN_INSN_WORD insn = base_insn;
4602 #define FLD(f) abuf->fields.sfmt_addcdr.f
4603 INT f_indir_pc__dword;
4604 UINT f_operand2;
4605 /* Contents of trailing part of insn. */
4606 UINT word_1;
4607
4608 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4609 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
4610 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4611
4612 /* Record the fields for the semantic handler. */
4613 FLD (f_operand2) = f_operand2;
4614 FLD (f_indir_pc__dword) = f_indir_pc__dword;
4615 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));
4616
4617 #if WITH_PROFILE_MODEL_P
4618 /* Record the fields for profiling. */
4619 if (PROFILE_MODEL_P (current_cpu))
4620 {
4621 FLD (in_Rd) = f_operand2;
4622 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4623 }
4624 #endif
4625 #undef FLD
4626 return idesc;
4627 }
4628
4629 extract_sfmt_andq:
4630 {
4631 const IDESC *idesc = &crisv10f_insn_data[itype];
4632 CGEN_INSN_WORD insn = base_insn;
4633 #define FLD(f) abuf->fields.sfmt_andq.f
4634 UINT f_operand2;
4635 INT f_s6;
4636
4637 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4638 f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6);
4639
4640 /* Record the fields for the semantic handler. */
4641 FLD (f_operand2) = f_operand2;
4642 FLD (f_s6) = f_s6;
4643 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));
4644
4645 #if WITH_PROFILE_MODEL_P
4646 /* Record the fields for profiling. */
4647 if (PROFILE_MODEL_P (current_cpu))
4648 {
4649 FLD (in_Rd) = f_operand2;
4650 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4651 }
4652 #endif
4653 #undef FLD
4654 return idesc;
4655 }
4656
4657 extract_sfmt_swap:
4658 {
4659 const IDESC *idesc = &crisv10f_insn_data[itype];
4660 CGEN_INSN_WORD insn = base_insn;
4661 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
4662 UINT f_operand2;
4663 UINT f_operand1;
4664
4665 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4666 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4667
4668 /* Record the fields for the semantic handler. */
4669 FLD (f_operand1) = f_operand1;
4670 FLD (f_operand2) = f_operand2;
4671 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));
4672
4673 #if WITH_PROFILE_MODEL_P
4674 /* Record the fields for profiling. */
4675 if (PROFILE_MODEL_P (current_cpu))
4676 {
4677 FLD (in_Rs) = f_operand1;
4678 FLD (out_Rs) = f_operand1;
4679 }
4680 #endif
4681 #undef FLD
4682 return idesc;
4683 }
4684
4685 extract_sfmt_asrq:
4686 {
4687 const IDESC *idesc = &crisv10f_insn_data[itype];
4688 CGEN_INSN_WORD insn = base_insn;
4689 #define FLD(f) abuf->fields.sfmt_asrq.f
4690 UINT f_operand2;
4691 UINT f_u5;
4692
4693 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4694 f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5);
4695
4696 /* Record the fields for the semantic handler. */
4697 FLD (f_operand2) = f_operand2;
4698 FLD (f_u5) = f_u5;
4699 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));
4700
4701 #if WITH_PROFILE_MODEL_P
4702 /* Record the fields for profiling. */
4703 if (PROFILE_MODEL_P (current_cpu))
4704 {
4705 FLD (in_Rd) = f_operand2;
4706 FLD (out_Rd) = f_operand2;
4707 }
4708 #endif
4709 #undef FLD
4710 return idesc;
4711 }
4712
4713 extract_sfmt_lsrr_b_r:
4714 {
4715 const IDESC *idesc = &crisv10f_insn_data[itype];
4716 CGEN_INSN_WORD insn = base_insn;
4717 #define FLD(f) abuf->fields.sfmt_add_b_r.f
4718 UINT f_operand2;
4719 UINT f_operand1;
4720
4721 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4722 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4723
4724 /* Record the fields for the semantic handler. */
4725 FLD (f_operand2) = f_operand2;
4726 FLD (f_operand1) = f_operand1;
4727 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));
4728
4729 #if WITH_PROFILE_MODEL_P
4730 /* Record the fields for profiling. */
4731 if (PROFILE_MODEL_P (current_cpu))
4732 {
4733 FLD (in_Rd) = f_operand2;
4734 FLD (in_Rs) = f_operand1;
4735 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4736 }
4737 #endif
4738 #undef FLD
4739 return idesc;
4740 }
4741
4742 extract_sfmt_lsrr_d_r:
4743 {
4744 const IDESC *idesc = &crisv10f_insn_data[itype];
4745 CGEN_INSN_WORD insn = base_insn;
4746 #define FLD(f) abuf->fields.sfmt_add_b_r.f
4747 UINT f_operand2;
4748 UINT f_operand1;
4749
4750 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4751 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4752
4753 /* Record the fields for the semantic handler. */
4754 FLD (f_operand2) = f_operand2;
4755 FLD (f_operand1) = f_operand1;
4756 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));
4757
4758 #if WITH_PROFILE_MODEL_P
4759 /* Record the fields for profiling. */
4760 if (PROFILE_MODEL_P (current_cpu))
4761 {
4762 FLD (in_Rd) = f_operand2;
4763 FLD (in_Rs) = f_operand1;
4764 FLD (out_h_gr_SI_index_of__INT_Rd) = FLD (f_operand2);
4765 }
4766 #endif
4767 #undef FLD
4768 return idesc;
4769 }
4770
4771 extract_sfmt_btst:
4772 {
4773 const IDESC *idesc = &crisv10f_insn_data[itype];
4774 CGEN_INSN_WORD insn = base_insn;
4775 #define FLD(f) abuf->fields.sfmt_add_b_r.f
4776 UINT f_operand2;
4777 UINT f_operand1;
4778
4779 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4780 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4781
4782 /* Record the fields for the semantic handler. */
4783 FLD (f_operand2) = f_operand2;
4784 FLD (f_operand1) = f_operand1;
4785 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));
4786
4787 #if WITH_PROFILE_MODEL_P
4788 /* Record the fields for profiling. */
4789 if (PROFILE_MODEL_P (current_cpu))
4790 {
4791 FLD (in_Rd) = f_operand2;
4792 FLD (in_Rs) = f_operand1;
4793 }
4794 #endif
4795 #undef FLD
4796 return idesc;
4797 }
4798
4799 extract_sfmt_btstq:
4800 {
4801 const IDESC *idesc = &crisv10f_insn_data[itype];
4802 CGEN_INSN_WORD insn = base_insn;
4803 #define FLD(f) abuf->fields.sfmt_asrq.f
4804 UINT f_operand2;
4805 UINT f_u5;
4806
4807 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4808 f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5);
4809
4810 /* Record the fields for the semantic handler. */
4811 FLD (f_operand2) = f_operand2;
4812 FLD (f_u5) = f_u5;
4813 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));
4814
4815 #if WITH_PROFILE_MODEL_P
4816 /* Record the fields for profiling. */
4817 if (PROFILE_MODEL_P (current_cpu))
4818 {
4819 FLD (in_Rd) = f_operand2;
4820 }
4821 #endif
4822 #undef FLD
4823 return idesc;
4824 }
4825
4826 extract_sfmt_setf:
4827 {
4828 const IDESC *idesc = &crisv10f_insn_data[itype];
4829 CGEN_INSN_WORD insn = base_insn;
4830 #define FLD(f) abuf->fields.sfmt_setf.f
4831 UINT f_operand2;
4832 UINT f_operand1;
4833 UINT f_dstsrc;
4834
4835 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4836 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4837 f_dstsrc = ((((f_operand1) | (((f_operand2) << (4))))) & (255));
4838
4839 /* Record the fields for the semantic handler. */
4840 FLD (f_dstsrc) = f_dstsrc;
4841 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_setf", "f_dstsrc 0x%x", 'x', f_dstsrc, (char *) 0));
4842
4843 #undef FLD
4844 return idesc;
4845 }
4846
4847 extract_sfmt_bcc_b:
4848 {
4849 const IDESC *idesc = &crisv10f_insn_data[itype];
4850 CGEN_INSN_WORD insn = base_insn;
4851 #define FLD(f) abuf->fields.sfmt_bcc_b.f
4852 UINT f_operand2;
4853 UINT f_disp9_lo;
4854 INT f_disp9_hi;
4855 INT f_disp9;
4856
4857 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4858 f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7);
4859 f_disp9_hi = EXTRACT_LSB0_SINT (insn, 16, 0, 1);
4860 {
4861 SI tmp_abslo;
4862 SI tmp_absval;
4863 tmp_abslo = ((f_disp9_lo) << (1));
4864 tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));
4865 f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_NON_V32 ()) ? (0) : (2))));
4866 }
4867
4868 /* Record the fields for the semantic handler. */
4869 FLD (f_operand2) = f_operand2;
4870 FLD (i_o_pcrel) = f_disp9;
4871 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));
4872
4873 #if WITH_PROFILE_MODEL_P
4874 /* Record the fields for profiling. */
4875 if (PROFILE_MODEL_P (current_cpu))
4876 {
4877 }
4878 #endif
4879 #undef FLD
4880 return idesc;
4881 }
4882
4883 extract_sfmt_ba_b:
4884 {
4885 const IDESC *idesc = &crisv10f_insn_data[itype];
4886 CGEN_INSN_WORD insn = base_insn;
4887 #define FLD(f) abuf->fields.sfmt_bcc_b.f
4888 UINT f_disp9_lo;
4889 INT f_disp9_hi;
4890 INT f_disp9;
4891
4892 f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7);
4893 f_disp9_hi = EXTRACT_LSB0_SINT (insn, 16, 0, 1);
4894 {
4895 SI tmp_abslo;
4896 SI tmp_absval;
4897 tmp_abslo = ((f_disp9_lo) << (1));
4898 tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));
4899 f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_NON_V32 ()) ? (0) : (2))));
4900 }
4901
4902 /* Record the fields for the semantic handler. */
4903 FLD (i_o_pcrel) = f_disp9;
4904 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ba_b", "o_pcrel 0x%x", 'x', f_disp9, (char *) 0));
4905
4906 #if WITH_PROFILE_MODEL_P
4907 /* Record the fields for profiling. */
4908 if (PROFILE_MODEL_P (current_cpu))
4909 {
4910 }
4911 #endif
4912 #undef FLD
4913 return idesc;
4914 }
4915
4916 extract_sfmt_bcc_w:
4917 {
4918 const IDESC *idesc = &crisv10f_insn_data[itype];
4919 CGEN_INSN_WORD insn = base_insn;
4920 #define FLD(f) abuf->fields.sfmt_bcc_w.f
4921 SI f_indir_pc__word_pcrel;
4922 UINT f_operand2;
4923 /* Contents of trailing part of insn. */
4924 UINT word_1;
4925
4926 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4927 f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_NON_V32 ()) ? (0) : (4))))));
4928 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4929
4930 /* Record the fields for the semantic handler. */
4931 FLD (f_operand2) = f_operand2;
4932 FLD (i_o_word_pcrel) = f_indir_pc__word_pcrel;
4933 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));
4934
4935 #if WITH_PROFILE_MODEL_P
4936 /* Record the fields for profiling. */
4937 if (PROFILE_MODEL_P (current_cpu))
4938 {
4939 }
4940 #endif
4941 #undef FLD
4942 return idesc;
4943 }
4944
4945 extract_sfmt_ba_w:
4946 {
4947 const IDESC *idesc = &crisv10f_insn_data[itype];
4948 CGEN_INSN_WORD insn = base_insn;
4949 #define FLD(f) abuf->fields.sfmt_bcc_w.f
4950 SI f_indir_pc__word_pcrel;
4951 /* Contents of trailing part of insn. */
4952 UINT word_1;
4953
4954 word_1 = GETIMEMUSI (current_cpu, pc + 2);
4955 f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_NON_V32 ()) ? (0) : (4))))));
4956
4957 /* Record the fields for the semantic handler. */
4958 FLD (i_o_word_pcrel) = f_indir_pc__word_pcrel;
4959 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ba_w", "o_word_pcrel 0x%x", 'x', f_indir_pc__word_pcrel, (char *) 0));
4960
4961 #if WITH_PROFILE_MODEL_P
4962 /* Record the fields for profiling. */
4963 if (PROFILE_MODEL_P (current_cpu))
4964 {
4965 }
4966 #endif
4967 #undef FLD
4968 return idesc;
4969 }
4970
4971 extract_sfmt_jump_r:
4972 {
4973 const IDESC *idesc = &crisv10f_insn_data[itype];
4974 CGEN_INSN_WORD insn = base_insn;
4975 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
4976 UINT f_operand2;
4977 UINT f_operand1;
4978
4979 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
4980 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
4981
4982 /* Record the fields for the semantic handler. */
4983 FLD (f_operand1) = f_operand1;
4984 FLD (f_operand2) = f_operand2;
4985 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jump_r", "f_operand1 0x%x", 'x', f_operand1, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
4986
4987 #if WITH_PROFILE_MODEL_P
4988 /* Record the fields for profiling. */
4989 if (PROFILE_MODEL_P (current_cpu))
4990 {
4991 FLD (in_Rs) = f_operand1;
4992 FLD (out_Pd) = f_operand2;
4993 }
4994 #endif
4995 #undef FLD
4996 return idesc;
4997 }
4998
4999 extract_sfmt_jump_m:
5000 {
5001 const IDESC *idesc = &crisv10f_insn_data[itype];
5002 CGEN_INSN_WORD insn = base_insn;
5003 #define FLD(f) abuf->fields.sfmt_move_m_sprv10.f
5004 UINT f_operand2;
5005 UINT f_memmode;
5006 UINT f_operand1;
5007
5008 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5009 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5010 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5011
5012 /* Record the fields for the semantic handler. */
5013 FLD (f_operand1) = f_operand1;
5014 FLD (f_memmode) = f_memmode;
5015 FLD (f_operand2) = f_operand2;
5016 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jump_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
5017
5018 #if WITH_PROFILE_MODEL_P
5019 /* Record the fields for profiling. */
5020 if (PROFILE_MODEL_P (current_cpu))
5021 {
5022 FLD (in_Rs) = f_operand1;
5023 FLD (out_Pd) = f_operand2;
5024 FLD (out_Rs) = f_operand1;
5025 }
5026 #endif
5027 #undef FLD
5028 return idesc;
5029 }
5030
5031 extract_sfmt_jump_c:
5032 {
5033 const IDESC *idesc = &crisv10f_insn_data[itype];
5034 CGEN_INSN_WORD insn = base_insn;
5035 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
5036 INT f_indir_pc__dword;
5037 UINT f_operand2;
5038 /* Contents of trailing part of insn. */
5039 UINT word_1;
5040
5041 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5042 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
5043 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5044
5045 /* Record the fields for the semantic handler. */
5046 FLD (f_indir_pc__dword) = f_indir_pc__dword;
5047 FLD (f_operand2) = f_operand2;
5048 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jump_c", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
5049
5050 #if WITH_PROFILE_MODEL_P
5051 /* Record the fields for profiling. */
5052 if (PROFILE_MODEL_P (current_cpu))
5053 {
5054 FLD (out_Pd) = f_operand2;
5055 }
5056 #endif
5057 #undef FLD
5058 return idesc;
5059 }
5060
5061 extract_sfmt_break:
5062 {
5063 const IDESC *idesc = &crisv10f_insn_data[itype];
5064 CGEN_INSN_WORD insn = base_insn;
5065 #define FLD(f) abuf->fields.sfmt_break.f
5066 UINT f_u4;
5067
5068 f_u4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5069
5070 /* Record the fields for the semantic handler. */
5071 FLD (f_u4) = f_u4;
5072 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_break", "f_u4 0x%x", 'x', f_u4, (char *) 0));
5073
5074 #if WITH_PROFILE_MODEL_P
5075 /* Record the fields for profiling. */
5076 if (PROFILE_MODEL_P (current_cpu))
5077 {
5078 }
5079 #endif
5080 #undef FLD
5081 return idesc;
5082 }
5083
5084 extract_sfmt_bound_m_b_m:
5085 {
5086 const IDESC *idesc = &crisv10f_insn_data[itype];
5087 CGEN_INSN_WORD insn = base_insn;
5088 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
5089 UINT f_operand2;
5090 UINT f_memmode;
5091 UINT f_operand1;
5092
5093 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5094 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5095 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5096
5097 /* Record the fields for the semantic handler. */
5098 FLD (f_operand2) = f_operand2;
5099 FLD (f_operand1) = f_operand1;
5100 FLD (f_memmode) = f_memmode;
5101 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bound_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));
5102
5103 #if WITH_PROFILE_MODEL_P
5104 /* Record the fields for profiling. */
5105 if (PROFILE_MODEL_P (current_cpu))
5106 {
5107 FLD (in_Rd) = f_operand2;
5108 FLD (in_Rs) = f_operand1;
5109 FLD (out_Rd) = f_operand2;
5110 FLD (out_Rs) = f_operand1;
5111 }
5112 #endif
5113 #undef FLD
5114 return idesc;
5115 }
5116
5117 extract_sfmt_bound_m_w_m:
5118 {
5119 const IDESC *idesc = &crisv10f_insn_data[itype];
5120 CGEN_INSN_WORD insn = base_insn;
5121 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
5122 UINT f_operand2;
5123 UINT f_memmode;
5124 UINT f_operand1;
5125
5126 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5127 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5128 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5129
5130 /* Record the fields for the semantic handler. */
5131 FLD (f_operand2) = f_operand2;
5132 FLD (f_operand1) = f_operand1;
5133 FLD (f_memmode) = f_memmode;
5134 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bound_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));
5135
5136 #if WITH_PROFILE_MODEL_P
5137 /* Record the fields for profiling. */
5138 if (PROFILE_MODEL_P (current_cpu))
5139 {
5140 FLD (in_Rd) = f_operand2;
5141 FLD (in_Rs) = f_operand1;
5142 FLD (out_Rd) = f_operand2;
5143 FLD (out_Rs) = f_operand1;
5144 }
5145 #endif
5146 #undef FLD
5147 return idesc;
5148 }
5149
5150 extract_sfmt_bound_m_d_m:
5151 {
5152 const IDESC *idesc = &crisv10f_insn_data[itype];
5153 CGEN_INSN_WORD insn = base_insn;
5154 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
5155 UINT f_operand2;
5156 UINT f_memmode;
5157 UINT f_operand1;
5158
5159 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5160 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5161 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5162
5163 /* Record the fields for the semantic handler. */
5164 FLD (f_operand2) = f_operand2;
5165 FLD (f_operand1) = f_operand1;
5166 FLD (f_memmode) = f_memmode;
5167 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bound_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));
5168
5169 #if WITH_PROFILE_MODEL_P
5170 /* Record the fields for profiling. */
5171 if (PROFILE_MODEL_P (current_cpu))
5172 {
5173 FLD (in_Rd) = f_operand2;
5174 FLD (in_Rs) = f_operand1;
5175 FLD (out_Rd) = f_operand2;
5176 FLD (out_Rs) = f_operand1;
5177 }
5178 #endif
5179 #undef FLD
5180 return idesc;
5181 }
5182
5183 extract_sfmt_bound_cb:
5184 {
5185 const IDESC *idesc = &crisv10f_insn_data[itype];
5186 CGEN_INSN_WORD insn = base_insn;
5187 #define FLD(f) abuf->fields.sfmt_bound_cb.f
5188 INT f_indir_pc__byte;
5189 UINT f_operand2;
5190 /* Contents of trailing part of insn. */
5191 UINT word_1;
5192
5193 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5194 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
5195 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5196
5197 /* Record the fields for the semantic handler. */
5198 FLD (f_operand2) = f_operand2;
5199 FLD (f_indir_pc__byte) = f_indir_pc__byte;
5200 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));
5201
5202 #if WITH_PROFILE_MODEL_P
5203 /* Record the fields for profiling. */
5204 if (PROFILE_MODEL_P (current_cpu))
5205 {
5206 FLD (in_Rd) = f_operand2;
5207 FLD (out_Rd) = f_operand2;
5208 }
5209 #endif
5210 #undef FLD
5211 return idesc;
5212 }
5213
5214 extract_sfmt_bound_cw:
5215 {
5216 const IDESC *idesc = &crisv10f_insn_data[itype];
5217 CGEN_INSN_WORD insn = base_insn;
5218 #define FLD(f) abuf->fields.sfmt_bound_cw.f
5219 INT f_indir_pc__word;
5220 UINT f_operand2;
5221 /* Contents of trailing part of insn. */
5222 UINT word_1;
5223
5224 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5225 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
5226 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5227
5228 /* Record the fields for the semantic handler. */
5229 FLD (f_operand2) = f_operand2;
5230 FLD (f_indir_pc__word) = f_indir_pc__word;
5231 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));
5232
5233 #if WITH_PROFILE_MODEL_P
5234 /* Record the fields for profiling. */
5235 if (PROFILE_MODEL_P (current_cpu))
5236 {
5237 FLD (in_Rd) = f_operand2;
5238 FLD (out_Rd) = f_operand2;
5239 }
5240 #endif
5241 #undef FLD
5242 return idesc;
5243 }
5244
5245 extract_sfmt_bound_cd:
5246 {
5247 const IDESC *idesc = &crisv10f_insn_data[itype];
5248 CGEN_INSN_WORD insn = base_insn;
5249 #define FLD(f) abuf->fields.sfmt_bound_cd.f
5250 INT f_indir_pc__dword;
5251 UINT f_operand2;
5252 /* Contents of trailing part of insn. */
5253 UINT word_1;
5254
5255 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5256 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
5257 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5258
5259 /* Record the fields for the semantic handler. */
5260 FLD (f_operand2) = f_operand2;
5261 FLD (f_indir_pc__dword) = f_indir_pc__dword;
5262 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));
5263
5264 #if WITH_PROFILE_MODEL_P
5265 /* Record the fields for profiling. */
5266 if (PROFILE_MODEL_P (current_cpu))
5267 {
5268 FLD (in_Rd) = f_operand2;
5269 FLD (out_Rd) = f_operand2;
5270 }
5271 #endif
5272 #undef FLD
5273 return idesc;
5274 }
5275
5276 extract_sfmt_scc:
5277 {
5278 const IDESC *idesc = &crisv10f_insn_data[itype];
5279 CGEN_INSN_WORD insn = base_insn;
5280 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
5281 UINT f_operand2;
5282 UINT f_operand1;
5283
5284 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5285 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5286
5287 /* Record the fields for the semantic handler. */
5288 FLD (f_operand2) = f_operand2;
5289 FLD (f_operand1) = f_operand1;
5290 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));
5291
5292 #if WITH_PROFILE_MODEL_P
5293 /* Record the fields for profiling. */
5294 if (PROFILE_MODEL_P (current_cpu))
5295 {
5296 FLD (out_Rs) = f_operand1;
5297 }
5298 #endif
5299 #undef FLD
5300 return idesc;
5301 }
5302
5303 extract_sfmt_addoq:
5304 {
5305 const IDESC *idesc = &crisv10f_insn_data[itype];
5306 CGEN_INSN_WORD insn = base_insn;
5307 #define FLD(f) abuf->fields.sfmt_addoq.f
5308 UINT f_operand2;
5309 INT f_s8;
5310
5311 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5312 f_s8 = EXTRACT_LSB0_SINT (insn, 16, 7, 8);
5313
5314 /* Record the fields for the semantic handler. */
5315 FLD (f_operand2) = f_operand2;
5316 FLD (f_s8) = f_s8;
5317 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));
5318
5319 #if WITH_PROFILE_MODEL_P
5320 /* Record the fields for profiling. */
5321 if (PROFILE_MODEL_P (current_cpu))
5322 {
5323 FLD (in_Rd) = f_operand2;
5324 }
5325 #endif
5326 #undef FLD
5327 return idesc;
5328 }
5329
5330 extract_sfmt_bdapqpc:
5331 {
5332 const IDESC *idesc = &crisv10f_insn_data[itype];
5333 CGEN_INSN_WORD insn = base_insn;
5334 #define FLD(f) abuf->fields.sfmt_addoq.f
5335 INT f_s8;
5336
5337 f_s8 = EXTRACT_LSB0_SINT (insn, 16, 7, 8);
5338
5339 /* Record the fields for the semantic handler. */
5340 FLD (f_s8) = f_s8;
5341 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bdapqpc", "f_s8 0x%x", 'x', f_s8, (char *) 0));
5342
5343 #if WITH_PROFILE_MODEL_P
5344 /* Record the fields for profiling. */
5345 if (PROFILE_MODEL_P (current_cpu))
5346 {
5347 }
5348 #endif
5349 #undef FLD
5350 return idesc;
5351 }
5352
5353 extract_sfmt_bdap_32_pc:
5354 {
5355 const IDESC *idesc = &crisv10f_insn_data[itype];
5356 CGEN_INSN_WORD insn = base_insn;
5357 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
5358 INT f_indir_pc__dword;
5359 /* Contents of trailing part of insn. */
5360 UINT word_1;
5361
5362 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5363 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
5364
5365 /* Record the fields for the semantic handler. */
5366 FLD (f_indir_pc__dword) = f_indir_pc__dword;
5367 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bdap_32_pc", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
5368
5369 #if WITH_PROFILE_MODEL_P
5370 /* Record the fields for profiling. */
5371 if (PROFILE_MODEL_P (current_cpu))
5372 {
5373 }
5374 #endif
5375 #undef FLD
5376 return idesc;
5377 }
5378
5379 extract_sfmt_move_m_pcplus_p0:
5380 {
5381 const IDESC *idesc = &crisv10f_insn_data[itype];
5382 CGEN_INSN_WORD insn = base_insn;
5383 #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
5384 UINT f_memmode;
5385
5386 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5387
5388 /* Record the fields for the semantic handler. */
5389 FLD (f_memmode) = f_memmode;
5390 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_pcplus_p0", "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
5391
5392 #if WITH_PROFILE_MODEL_P
5393 /* Record the fields for profiling. */
5394 if (PROFILE_MODEL_P (current_cpu))
5395 {
5396 }
5397 #endif
5398 #undef FLD
5399 return idesc;
5400 }
5401
5402 extract_sfmt_move_m_spplus_p8:
5403 {
5404 const IDESC *idesc = &crisv10f_insn_data[itype];
5405 CGEN_INSN_WORD insn = base_insn;
5406 #define FLD(f) abuf->fields.sfmt_move_m_spplus_p8.f
5407 UINT f_memmode;
5408
5409 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5410
5411 /* Record the fields for the semantic handler. */
5412 FLD (f_memmode) = f_memmode;
5413 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_move_m_spplus_p8", "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
5414
5415 #if WITH_PROFILE_MODEL_P
5416 /* Record the fields for profiling. */
5417 if (PROFILE_MODEL_P (current_cpu))
5418 {
5419 FLD (in_h_gr_SI_14) = 14;
5420 FLD (out_h_gr_SI_14) = 14;
5421 }
5422 #endif
5423 #undef FLD
5424 return idesc;
5425 }
5426
5427 extract_sfmt_addo_m_b_m:
5428 {
5429 const IDESC *idesc = &crisv10f_insn_data[itype];
5430 CGEN_INSN_WORD insn = base_insn;
5431 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
5432 UINT f_operand2;
5433 UINT f_memmode;
5434 UINT f_operand1;
5435
5436 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5437 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5438 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5439
5440 /* Record the fields for the semantic handler. */
5441 FLD (f_operand2) = f_operand2;
5442 FLD (f_operand1) = f_operand1;
5443 FLD (f_memmode) = f_memmode;
5444 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));
5445
5446 #if WITH_PROFILE_MODEL_P
5447 /* Record the fields for profiling. */
5448 if (PROFILE_MODEL_P (current_cpu))
5449 {
5450 FLD (in_Rd) = f_operand2;
5451 FLD (in_Rs) = f_operand1;
5452 FLD (out_Rs) = f_operand1;
5453 }
5454 #endif
5455 #undef FLD
5456 return idesc;
5457 }
5458
5459 extract_sfmt_addo_m_w_m:
5460 {
5461 const IDESC *idesc = &crisv10f_insn_data[itype];
5462 CGEN_INSN_WORD insn = base_insn;
5463 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
5464 UINT f_operand2;
5465 UINT f_memmode;
5466 UINT f_operand1;
5467
5468 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5469 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5470 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5471
5472 /* Record the fields for the semantic handler. */
5473 FLD (f_operand2) = f_operand2;
5474 FLD (f_operand1) = f_operand1;
5475 FLD (f_memmode) = f_memmode;
5476 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));
5477
5478 #if WITH_PROFILE_MODEL_P
5479 /* Record the fields for profiling. */
5480 if (PROFILE_MODEL_P (current_cpu))
5481 {
5482 FLD (in_Rd) = f_operand2;
5483 FLD (in_Rs) = f_operand1;
5484 FLD (out_Rs) = f_operand1;
5485 }
5486 #endif
5487 #undef FLD
5488 return idesc;
5489 }
5490
5491 extract_sfmt_addo_m_d_m:
5492 {
5493 const IDESC *idesc = &crisv10f_insn_data[itype];
5494 CGEN_INSN_WORD insn = base_insn;
5495 #define FLD(f) abuf->fields.sfmt_bound_m_b_m.f
5496 UINT f_operand2;
5497 UINT f_memmode;
5498 UINT f_operand1;
5499
5500 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5501 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5502 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5503
5504 /* Record the fields for the semantic handler. */
5505 FLD (f_operand2) = f_operand2;
5506 FLD (f_operand1) = f_operand1;
5507 FLD (f_memmode) = f_memmode;
5508 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));
5509
5510 #if WITH_PROFILE_MODEL_P
5511 /* Record the fields for profiling. */
5512 if (PROFILE_MODEL_P (current_cpu))
5513 {
5514 FLD (in_Rd) = f_operand2;
5515 FLD (in_Rs) = f_operand1;
5516 FLD (out_Rs) = f_operand1;
5517 }
5518 #endif
5519 #undef FLD
5520 return idesc;
5521 }
5522
5523 extract_sfmt_addo_cb:
5524 {
5525 const IDESC *idesc = &crisv10f_insn_data[itype];
5526 CGEN_INSN_WORD insn = base_insn;
5527 #define FLD(f) abuf->fields.sfmt_bound_cb.f
5528 INT f_indir_pc__byte;
5529 UINT f_operand2;
5530 /* Contents of trailing part of insn. */
5531 UINT word_1;
5532
5533 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5534 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
5535 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5536
5537 /* Record the fields for the semantic handler. */
5538 FLD (f_operand2) = f_operand2;
5539 FLD (f_indir_pc__byte) = f_indir_pc__byte;
5540 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));
5541
5542 #if WITH_PROFILE_MODEL_P
5543 /* Record the fields for profiling. */
5544 if (PROFILE_MODEL_P (current_cpu))
5545 {
5546 FLD (in_Rd) = f_operand2;
5547 }
5548 #endif
5549 #undef FLD
5550 return idesc;
5551 }
5552
5553 extract_sfmt_addo_cw:
5554 {
5555 const IDESC *idesc = &crisv10f_insn_data[itype];
5556 CGEN_INSN_WORD insn = base_insn;
5557 #define FLD(f) abuf->fields.sfmt_bound_cw.f
5558 INT f_indir_pc__word;
5559 UINT f_operand2;
5560 /* Contents of trailing part of insn. */
5561 UINT word_1;
5562
5563 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5564 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0));
5565 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5566
5567 /* Record the fields for the semantic handler. */
5568 FLD (f_operand2) = f_operand2;
5569 FLD (f_indir_pc__word) = f_indir_pc__word;
5570 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));
5571
5572 #if WITH_PROFILE_MODEL_P
5573 /* Record the fields for profiling. */
5574 if (PROFILE_MODEL_P (current_cpu))
5575 {
5576 FLD (in_Rd) = f_operand2;
5577 }
5578 #endif
5579 #undef FLD
5580 return idesc;
5581 }
5582
5583 extract_sfmt_addo_cd:
5584 {
5585 const IDESC *idesc = &crisv10f_insn_data[itype];
5586 CGEN_INSN_WORD insn = base_insn;
5587 #define FLD(f) abuf->fields.sfmt_bound_cd.f
5588 INT f_indir_pc__dword;
5589 UINT f_operand2;
5590 /* Contents of trailing part of insn. */
5591 UINT word_1;
5592
5593 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5594 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
5595 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5596
5597 /* Record the fields for the semantic handler. */
5598 FLD (f_operand2) = f_operand2;
5599 FLD (f_indir_pc__dword) = f_indir_pc__dword;
5600 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));
5601
5602 #if WITH_PROFILE_MODEL_P
5603 /* Record the fields for profiling. */
5604 if (PROFILE_MODEL_P (current_cpu))
5605 {
5606 FLD (in_Rd) = f_operand2;
5607 }
5608 #endif
5609 #undef FLD
5610 return idesc;
5611 }
5612
5613 extract_sfmt_dip_m:
5614 {
5615 const IDESC *idesc = &crisv10f_insn_data[itype];
5616 CGEN_INSN_WORD insn = base_insn;
5617 #define FLD(f) abuf->fields.sfmt_move_spr_mv10.f
5618 UINT f_memmode;
5619 UINT f_operand1;
5620
5621 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1);
5622 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5623
5624 /* Record the fields for the semantic handler. */
5625 FLD (f_operand1) = f_operand1;
5626 FLD (f_memmode) = f_memmode;
5627 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dip_m", "f_operand1 0x%x", 'x', f_operand1, "f_memmode 0x%x", 'x', f_memmode, (char *) 0));
5628
5629 #if WITH_PROFILE_MODEL_P
5630 /* Record the fields for profiling. */
5631 if (PROFILE_MODEL_P (current_cpu))
5632 {
5633 FLD (in_Rs) = f_operand1;
5634 FLD (out_Rs) = f_operand1;
5635 }
5636 #endif
5637 #undef FLD
5638 return idesc;
5639 }
5640
5641 extract_sfmt_dip_c:
5642 {
5643 const IDESC *idesc = &crisv10f_insn_data[itype];
5644 CGEN_INSN_WORD insn = base_insn;
5645 #define FLD(f) abuf->fields.sfmt_move_c_sprv10_p9.f
5646 INT f_indir_pc__dword;
5647 /* Contents of trailing part of insn. */
5648 UINT word_1;
5649
5650 word_1 = GETIMEMUSI (current_cpu, pc + 2);
5651 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0));
5652
5653 /* Record the fields for the semantic handler. */
5654 FLD (f_indir_pc__dword) = f_indir_pc__dword;
5655 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dip_c", "f_indir_pc__dword 0x%x", 'x', f_indir_pc__dword, (char *) 0));
5656
5657 #undef FLD
5658 return idesc;
5659 }
5660
5661 extract_sfmt_addi_acr_b_r:
5662 {
5663 const IDESC *idesc = &crisv10f_insn_data[itype];
5664 CGEN_INSN_WORD insn = base_insn;
5665 #define FLD(f) abuf->fields.sfmt_add_b_r.f
5666 UINT f_operand2;
5667 UINT f_operand1;
5668
5669 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5670 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
5671
5672 /* Record the fields for the semantic handler. */
5673 FLD (f_operand2) = f_operand2;
5674 FLD (f_operand1) = f_operand1;
5675 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));
5676
5677 #if WITH_PROFILE_MODEL_P
5678 /* Record the fields for profiling. */
5679 if (PROFILE_MODEL_P (current_cpu))
5680 {
5681 FLD (in_Rd) = f_operand2;
5682 FLD (in_Rs) = f_operand1;
5683 }
5684 #endif
5685 #undef FLD
5686 return idesc;
5687 }
5688
5689 extract_sfmt_biap_pc_b_r:
5690 {
5691 const IDESC *idesc = &crisv10f_insn_data[itype];
5692 CGEN_INSN_WORD insn = base_insn;
5693 #define FLD(f) abuf->fields.sfmt_addoq.f
5694 UINT f_operand2;
5695
5696 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4);
5697
5698 /* Record the fields for the semantic handler. */
5699 FLD (f_operand2) = f_operand2;
5700 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_biap_pc_b_r", "f_operand2 0x%x", 'x', f_operand2, (char *) 0));
5701
5702 #if WITH_PROFILE_MODEL_P
5703 /* Record the fields for profiling. */
5704 if (PROFILE_MODEL_P (current_cpu))
5705 {
5706 FLD (in_Rd) = f_operand2;
5707 }
5708 #endif
5709 #undef FLD
5710 return idesc;
5711 }
5712
5713 }