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