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