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