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