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