OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [sim/] [cris/] [decodev32.c] - Blame information for rev 438

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.