gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / sim / or1k / decode.c
1 /* Simulator instruction decoder for or1k32bf.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright (C) 1996-2020 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 or1k32bf
26 #define WANT_CPU_OR1K32BF
27
28 #include "sim-main.h"
29 #include "sim-assert.h"
30
31 /* The instruction descriptor array.
32 This is computed at runtime. Space for it is not malloc'd to save a
33 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
34 but won't be done until necessary (we don't currently support the runtime
35 addition of instructions nor an SMP machine with different cpus). */
36 static IDESC or1k32bf_insn_data[OR1K32BF_INSN__MAX];
37
38 /* Commas between elements are contained in the macros.
39 Some of these are conditionally compiled out. */
40
41 static const struct insn_sem or1k32bf_insn_sem[] =
42 {
43 { VIRTUAL_INSN_X_INVALID, OR1K32BF_INSN_X_INVALID, OR1K32BF_SFMT_EMPTY },
44 { VIRTUAL_INSN_X_AFTER, OR1K32BF_INSN_X_AFTER, OR1K32BF_SFMT_EMPTY },
45 { VIRTUAL_INSN_X_BEFORE, OR1K32BF_INSN_X_BEFORE, OR1K32BF_SFMT_EMPTY },
46 { VIRTUAL_INSN_X_CTI_CHAIN, OR1K32BF_INSN_X_CTI_CHAIN, OR1K32BF_SFMT_EMPTY },
47 { VIRTUAL_INSN_X_CHAIN, OR1K32BF_INSN_X_CHAIN, OR1K32BF_SFMT_EMPTY },
48 { VIRTUAL_INSN_X_BEGIN, OR1K32BF_INSN_X_BEGIN, OR1K32BF_SFMT_EMPTY },
49 { OR1K_INSN_L_J, OR1K32BF_INSN_L_J, OR1K32BF_SFMT_L_J },
50 { OR1K_INSN_L_ADRP, OR1K32BF_INSN_L_ADRP, OR1K32BF_SFMT_L_ADRP },
51 { OR1K_INSN_L_JAL, OR1K32BF_INSN_L_JAL, OR1K32BF_SFMT_L_JAL },
52 { OR1K_INSN_L_JR, OR1K32BF_INSN_L_JR, OR1K32BF_SFMT_L_JR },
53 { OR1K_INSN_L_JALR, OR1K32BF_INSN_L_JALR, OR1K32BF_SFMT_L_JALR },
54 { OR1K_INSN_L_BNF, OR1K32BF_INSN_L_BNF, OR1K32BF_SFMT_L_BNF },
55 { OR1K_INSN_L_BF, OR1K32BF_INSN_L_BF, OR1K32BF_SFMT_L_BNF },
56 { OR1K_INSN_L_TRAP, OR1K32BF_INSN_L_TRAP, OR1K32BF_SFMT_L_TRAP },
57 { OR1K_INSN_L_SYS, OR1K32BF_INSN_L_SYS, OR1K32BF_SFMT_L_TRAP },
58 { OR1K_INSN_L_MSYNC, OR1K32BF_INSN_L_MSYNC, OR1K32BF_SFMT_L_MSYNC },
59 { OR1K_INSN_L_PSYNC, OR1K32BF_INSN_L_PSYNC, OR1K32BF_SFMT_L_MSYNC },
60 { OR1K_INSN_L_CSYNC, OR1K32BF_INSN_L_CSYNC, OR1K32BF_SFMT_L_MSYNC },
61 { OR1K_INSN_L_RFE, OR1K32BF_INSN_L_RFE, OR1K32BF_SFMT_L_MSYNC },
62 { OR1K_INSN_L_NOP_IMM, OR1K32BF_INSN_L_NOP_IMM, OR1K32BF_SFMT_L_NOP_IMM },
63 { OR1K_INSN_L_MOVHI, OR1K32BF_INSN_L_MOVHI, OR1K32BF_SFMT_L_MOVHI },
64 { OR1K_INSN_L_MACRC, OR1K32BF_INSN_L_MACRC, OR1K32BF_SFMT_L_MACRC },
65 { OR1K_INSN_L_MFSPR, OR1K32BF_INSN_L_MFSPR, OR1K32BF_SFMT_L_MFSPR },
66 { OR1K_INSN_L_MTSPR, OR1K32BF_INSN_L_MTSPR, OR1K32BF_SFMT_L_MTSPR },
67 { OR1K_INSN_L_LWZ, OR1K32BF_INSN_L_LWZ, OR1K32BF_SFMT_L_LWZ },
68 { OR1K_INSN_L_LWS, OR1K32BF_INSN_L_LWS, OR1K32BF_SFMT_L_LWS },
69 { OR1K_INSN_L_LWA, OR1K32BF_INSN_L_LWA, OR1K32BF_SFMT_L_LWA },
70 { OR1K_INSN_L_LBZ, OR1K32BF_INSN_L_LBZ, OR1K32BF_SFMT_L_LBZ },
71 { OR1K_INSN_L_LBS, OR1K32BF_INSN_L_LBS, OR1K32BF_SFMT_L_LBS },
72 { OR1K_INSN_L_LHZ, OR1K32BF_INSN_L_LHZ, OR1K32BF_SFMT_L_LHZ },
73 { OR1K_INSN_L_LHS, OR1K32BF_INSN_L_LHS, OR1K32BF_SFMT_L_LHS },
74 { OR1K_INSN_L_SW, OR1K32BF_INSN_L_SW, OR1K32BF_SFMT_L_SW },
75 { OR1K_INSN_L_SB, OR1K32BF_INSN_L_SB, OR1K32BF_SFMT_L_SB },
76 { OR1K_INSN_L_SH, OR1K32BF_INSN_L_SH, OR1K32BF_SFMT_L_SH },
77 { OR1K_INSN_L_SWA, OR1K32BF_INSN_L_SWA, OR1K32BF_SFMT_L_SWA },
78 { OR1K_INSN_L_SLL, OR1K32BF_INSN_L_SLL, OR1K32BF_SFMT_L_SLL },
79 { OR1K_INSN_L_SLLI, OR1K32BF_INSN_L_SLLI, OR1K32BF_SFMT_L_SLLI },
80 { OR1K_INSN_L_SRL, OR1K32BF_INSN_L_SRL, OR1K32BF_SFMT_L_SLL },
81 { OR1K_INSN_L_SRLI, OR1K32BF_INSN_L_SRLI, OR1K32BF_SFMT_L_SLLI },
82 { OR1K_INSN_L_SRA, OR1K32BF_INSN_L_SRA, OR1K32BF_SFMT_L_SLL },
83 { OR1K_INSN_L_SRAI, OR1K32BF_INSN_L_SRAI, OR1K32BF_SFMT_L_SLLI },
84 { OR1K_INSN_L_ROR, OR1K32BF_INSN_L_ROR, OR1K32BF_SFMT_L_SLL },
85 { OR1K_INSN_L_RORI, OR1K32BF_INSN_L_RORI, OR1K32BF_SFMT_L_SLLI },
86 { OR1K_INSN_L_AND, OR1K32BF_INSN_L_AND, OR1K32BF_SFMT_L_AND },
87 { OR1K_INSN_L_OR, OR1K32BF_INSN_L_OR, OR1K32BF_SFMT_L_AND },
88 { OR1K_INSN_L_XOR, OR1K32BF_INSN_L_XOR, OR1K32BF_SFMT_L_AND },
89 { OR1K_INSN_L_ADD, OR1K32BF_INSN_L_ADD, OR1K32BF_SFMT_L_ADD },
90 { OR1K_INSN_L_SUB, OR1K32BF_INSN_L_SUB, OR1K32BF_SFMT_L_ADD },
91 { OR1K_INSN_L_ADDC, OR1K32BF_INSN_L_ADDC, OR1K32BF_SFMT_L_ADDC },
92 { OR1K_INSN_L_MUL, OR1K32BF_INSN_L_MUL, OR1K32BF_SFMT_L_MUL },
93 { OR1K_INSN_L_MULD, OR1K32BF_INSN_L_MULD, OR1K32BF_SFMT_L_MULD },
94 { OR1K_INSN_L_MULU, OR1K32BF_INSN_L_MULU, OR1K32BF_SFMT_L_MULU },
95 { OR1K_INSN_L_MULDU, OR1K32BF_INSN_L_MULDU, OR1K32BF_SFMT_L_MULD },
96 { OR1K_INSN_L_DIV, OR1K32BF_INSN_L_DIV, OR1K32BF_SFMT_L_DIV },
97 { OR1K_INSN_L_DIVU, OR1K32BF_INSN_L_DIVU, OR1K32BF_SFMT_L_DIVU },
98 { OR1K_INSN_L_FF1, OR1K32BF_INSN_L_FF1, OR1K32BF_SFMT_L_FF1 },
99 { OR1K_INSN_L_FL1, OR1K32BF_INSN_L_FL1, OR1K32BF_SFMT_L_FF1 },
100 { OR1K_INSN_L_ANDI, OR1K32BF_INSN_L_ANDI, OR1K32BF_SFMT_L_MFSPR },
101 { OR1K_INSN_L_ORI, OR1K32BF_INSN_L_ORI, OR1K32BF_SFMT_L_MFSPR },
102 { OR1K_INSN_L_XORI, OR1K32BF_INSN_L_XORI, OR1K32BF_SFMT_L_XORI },
103 { OR1K_INSN_L_ADDI, OR1K32BF_INSN_L_ADDI, OR1K32BF_SFMT_L_ADDI },
104 { OR1K_INSN_L_ADDIC, OR1K32BF_INSN_L_ADDIC, OR1K32BF_SFMT_L_ADDIC },
105 { OR1K_INSN_L_MULI, OR1K32BF_INSN_L_MULI, OR1K32BF_SFMT_L_MULI },
106 { OR1K_INSN_L_EXTHS, OR1K32BF_INSN_L_EXTHS, OR1K32BF_SFMT_L_EXTHS },
107 { OR1K_INSN_L_EXTBS, OR1K32BF_INSN_L_EXTBS, OR1K32BF_SFMT_L_EXTHS },
108 { OR1K_INSN_L_EXTHZ, OR1K32BF_INSN_L_EXTHZ, OR1K32BF_SFMT_L_EXTHS },
109 { OR1K_INSN_L_EXTBZ, OR1K32BF_INSN_L_EXTBZ, OR1K32BF_SFMT_L_EXTHS },
110 { OR1K_INSN_L_EXTWS, OR1K32BF_INSN_L_EXTWS, OR1K32BF_SFMT_L_EXTHS },
111 { OR1K_INSN_L_EXTWZ, OR1K32BF_INSN_L_EXTWZ, OR1K32BF_SFMT_L_EXTHS },
112 { OR1K_INSN_L_CMOV, OR1K32BF_INSN_L_CMOV, OR1K32BF_SFMT_L_CMOV },
113 { OR1K_INSN_L_SFGTS, OR1K32BF_INSN_L_SFGTS, OR1K32BF_SFMT_L_SFGTS },
114 { OR1K_INSN_L_SFGTSI, OR1K32BF_INSN_L_SFGTSI, OR1K32BF_SFMT_L_SFGTSI },
115 { OR1K_INSN_L_SFGTU, OR1K32BF_INSN_L_SFGTU, OR1K32BF_SFMT_L_SFGTS },
116 { OR1K_INSN_L_SFGTUI, OR1K32BF_INSN_L_SFGTUI, OR1K32BF_SFMT_L_SFGTSI },
117 { OR1K_INSN_L_SFGES, OR1K32BF_INSN_L_SFGES, OR1K32BF_SFMT_L_SFGTS },
118 { OR1K_INSN_L_SFGESI, OR1K32BF_INSN_L_SFGESI, OR1K32BF_SFMT_L_SFGTSI },
119 { OR1K_INSN_L_SFGEU, OR1K32BF_INSN_L_SFGEU, OR1K32BF_SFMT_L_SFGTS },
120 { OR1K_INSN_L_SFGEUI, OR1K32BF_INSN_L_SFGEUI, OR1K32BF_SFMT_L_SFGTSI },
121 { OR1K_INSN_L_SFLTS, OR1K32BF_INSN_L_SFLTS, OR1K32BF_SFMT_L_SFGTS },
122 { OR1K_INSN_L_SFLTSI, OR1K32BF_INSN_L_SFLTSI, OR1K32BF_SFMT_L_SFGTSI },
123 { OR1K_INSN_L_SFLTU, OR1K32BF_INSN_L_SFLTU, OR1K32BF_SFMT_L_SFGTS },
124 { OR1K_INSN_L_SFLTUI, OR1K32BF_INSN_L_SFLTUI, OR1K32BF_SFMT_L_SFGTSI },
125 { OR1K_INSN_L_SFLES, OR1K32BF_INSN_L_SFLES, OR1K32BF_SFMT_L_SFGTS },
126 { OR1K_INSN_L_SFLESI, OR1K32BF_INSN_L_SFLESI, OR1K32BF_SFMT_L_SFGTSI },
127 { OR1K_INSN_L_SFLEU, OR1K32BF_INSN_L_SFLEU, OR1K32BF_SFMT_L_SFGTS },
128 { OR1K_INSN_L_SFLEUI, OR1K32BF_INSN_L_SFLEUI, OR1K32BF_SFMT_L_SFGTSI },
129 { OR1K_INSN_L_SFEQ, OR1K32BF_INSN_L_SFEQ, OR1K32BF_SFMT_L_SFGTS },
130 { OR1K_INSN_L_SFEQI, OR1K32BF_INSN_L_SFEQI, OR1K32BF_SFMT_L_SFGTSI },
131 { OR1K_INSN_L_SFNE, OR1K32BF_INSN_L_SFNE, OR1K32BF_SFMT_L_SFGTS },
132 { OR1K_INSN_L_SFNEI, OR1K32BF_INSN_L_SFNEI, OR1K32BF_SFMT_L_SFGTSI },
133 { OR1K_INSN_L_MAC, OR1K32BF_INSN_L_MAC, OR1K32BF_SFMT_L_MAC },
134 { OR1K_INSN_L_MACI, OR1K32BF_INSN_L_MACI, OR1K32BF_SFMT_L_MACI },
135 { OR1K_INSN_L_MACU, OR1K32BF_INSN_L_MACU, OR1K32BF_SFMT_L_MACU },
136 { OR1K_INSN_L_MSB, OR1K32BF_INSN_L_MSB, OR1K32BF_SFMT_L_MAC },
137 { OR1K_INSN_L_MSBU, OR1K32BF_INSN_L_MSBU, OR1K32BF_SFMT_L_MACU },
138 { OR1K_INSN_L_CUST1, OR1K32BF_INSN_L_CUST1, OR1K32BF_SFMT_L_MSYNC },
139 { OR1K_INSN_L_CUST2, OR1K32BF_INSN_L_CUST2, OR1K32BF_SFMT_L_MSYNC },
140 { OR1K_INSN_L_CUST3, OR1K32BF_INSN_L_CUST3, OR1K32BF_SFMT_L_MSYNC },
141 { OR1K_INSN_L_CUST4, OR1K32BF_INSN_L_CUST4, OR1K32BF_SFMT_L_MSYNC },
142 { OR1K_INSN_L_CUST5, OR1K32BF_INSN_L_CUST5, OR1K32BF_SFMT_L_MSYNC },
143 { OR1K_INSN_L_CUST6, OR1K32BF_INSN_L_CUST6, OR1K32BF_SFMT_L_MSYNC },
144 { OR1K_INSN_L_CUST7, OR1K32BF_INSN_L_CUST7, OR1K32BF_SFMT_L_MSYNC },
145 { OR1K_INSN_L_CUST8, OR1K32BF_INSN_L_CUST8, OR1K32BF_SFMT_L_MSYNC },
146 { OR1K_INSN_LF_ADD_S, OR1K32BF_INSN_LF_ADD_S, OR1K32BF_SFMT_LF_ADD_S },
147 { OR1K_INSN_LF_ADD_D32, OR1K32BF_INSN_LF_ADD_D32, OR1K32BF_SFMT_LF_ADD_D32 },
148 { OR1K_INSN_LF_SUB_S, OR1K32BF_INSN_LF_SUB_S, OR1K32BF_SFMT_LF_ADD_S },
149 { OR1K_INSN_LF_SUB_D32, OR1K32BF_INSN_LF_SUB_D32, OR1K32BF_SFMT_LF_ADD_D32 },
150 { OR1K_INSN_LF_MUL_S, OR1K32BF_INSN_LF_MUL_S, OR1K32BF_SFMT_LF_ADD_S },
151 { OR1K_INSN_LF_MUL_D32, OR1K32BF_INSN_LF_MUL_D32, OR1K32BF_SFMT_LF_ADD_D32 },
152 { OR1K_INSN_LF_DIV_S, OR1K32BF_INSN_LF_DIV_S, OR1K32BF_SFMT_LF_ADD_S },
153 { OR1K_INSN_LF_DIV_D32, OR1K32BF_INSN_LF_DIV_D32, OR1K32BF_SFMT_LF_ADD_D32 },
154 { OR1K_INSN_LF_REM_S, OR1K32BF_INSN_LF_REM_S, OR1K32BF_SFMT_LF_ADD_S },
155 { OR1K_INSN_LF_REM_D32, OR1K32BF_INSN_LF_REM_D32, OR1K32BF_SFMT_LF_ADD_D32 },
156 { OR1K_INSN_LF_ITOF_S, OR1K32BF_INSN_LF_ITOF_S, OR1K32BF_SFMT_LF_ITOF_S },
157 { OR1K_INSN_LF_ITOF_D32, OR1K32BF_INSN_LF_ITOF_D32, OR1K32BF_SFMT_LF_ITOF_D32 },
158 { OR1K_INSN_LF_FTOI_S, OR1K32BF_INSN_LF_FTOI_S, OR1K32BF_SFMT_LF_FTOI_S },
159 { OR1K_INSN_LF_FTOI_D32, OR1K32BF_INSN_LF_FTOI_D32, OR1K32BF_SFMT_LF_FTOI_D32 },
160 { OR1K_INSN_LF_SFEQ_S, OR1K32BF_INSN_LF_SFEQ_S, OR1K32BF_SFMT_LF_SFEQ_S },
161 { OR1K_INSN_LF_SFEQ_D32, OR1K32BF_INSN_LF_SFEQ_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
162 { OR1K_INSN_LF_SFNE_S, OR1K32BF_INSN_LF_SFNE_S, OR1K32BF_SFMT_LF_SFEQ_S },
163 { OR1K_INSN_LF_SFNE_D32, OR1K32BF_INSN_LF_SFNE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
164 { OR1K_INSN_LF_SFGE_S, OR1K32BF_INSN_LF_SFGE_S, OR1K32BF_SFMT_LF_SFEQ_S },
165 { OR1K_INSN_LF_SFGE_D32, OR1K32BF_INSN_LF_SFGE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
166 { OR1K_INSN_LF_SFGT_S, OR1K32BF_INSN_LF_SFGT_S, OR1K32BF_SFMT_LF_SFEQ_S },
167 { OR1K_INSN_LF_SFGT_D32, OR1K32BF_INSN_LF_SFGT_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
168 { OR1K_INSN_LF_SFLT_S, OR1K32BF_INSN_LF_SFLT_S, OR1K32BF_SFMT_LF_SFEQ_S },
169 { OR1K_INSN_LF_SFLT_D32, OR1K32BF_INSN_LF_SFLT_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
170 { OR1K_INSN_LF_SFLE_S, OR1K32BF_INSN_LF_SFLE_S, OR1K32BF_SFMT_LF_SFEQ_S },
171 { OR1K_INSN_LF_SFLE_D32, OR1K32BF_INSN_LF_SFLE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
172 { OR1K_INSN_LF_SFUEQ_S, OR1K32BF_INSN_LF_SFUEQ_S, OR1K32BF_SFMT_LF_SFEQ_S },
173 { OR1K_INSN_LF_SFUEQ_D32, OR1K32BF_INSN_LF_SFUEQ_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
174 { OR1K_INSN_LF_SFUNE_S, OR1K32BF_INSN_LF_SFUNE_S, OR1K32BF_SFMT_LF_SFEQ_S },
175 { OR1K_INSN_LF_SFUNE_D32, OR1K32BF_INSN_LF_SFUNE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
176 { OR1K_INSN_LF_SFUGT_S, OR1K32BF_INSN_LF_SFUGT_S, OR1K32BF_SFMT_LF_SFEQ_S },
177 { OR1K_INSN_LF_SFUGT_D32, OR1K32BF_INSN_LF_SFUGT_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
178 { OR1K_INSN_LF_SFUGE_S, OR1K32BF_INSN_LF_SFUGE_S, OR1K32BF_SFMT_LF_SFEQ_S },
179 { OR1K_INSN_LF_SFUGE_D32, OR1K32BF_INSN_LF_SFUGE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
180 { OR1K_INSN_LF_SFULT_S, OR1K32BF_INSN_LF_SFULT_S, OR1K32BF_SFMT_LF_SFEQ_S },
181 { OR1K_INSN_LF_SFULT_D32, OR1K32BF_INSN_LF_SFULT_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
182 { OR1K_INSN_LF_SFULE_S, OR1K32BF_INSN_LF_SFULE_S, OR1K32BF_SFMT_LF_SFEQ_S },
183 { OR1K_INSN_LF_SFULE_D32, OR1K32BF_INSN_LF_SFULE_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
184 { OR1K_INSN_LF_SFUN_S, OR1K32BF_INSN_LF_SFUN_S, OR1K32BF_SFMT_LF_SFEQ_S },
185 { OR1K_INSN_LF_SFUN_D32, OR1K32BF_INSN_LF_SFUN_D32, OR1K32BF_SFMT_LF_SFEQ_D32 },
186 { OR1K_INSN_LF_MADD_S, OR1K32BF_INSN_LF_MADD_S, OR1K32BF_SFMT_LF_MADD_S },
187 { OR1K_INSN_LF_MADD_D32, OR1K32BF_INSN_LF_MADD_D32, OR1K32BF_SFMT_LF_MADD_D32 },
188 { OR1K_INSN_LF_CUST1_S, OR1K32BF_INSN_LF_CUST1_S, OR1K32BF_SFMT_L_MSYNC },
189 { OR1K_INSN_LF_CUST1_D32, OR1K32BF_INSN_LF_CUST1_D32, OR1K32BF_SFMT_L_MSYNC },
190 };
191
192 static const struct insn_sem or1k32bf_insn_sem_invalid =
193 {
194 VIRTUAL_INSN_X_INVALID, OR1K32BF_INSN_X_INVALID, OR1K32BF_SFMT_EMPTY
195 };
196
197 /* Initialize an IDESC from the compile-time computable parts. */
198
199 static INLINE void
200 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
201 {
202 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
203
204 id->num = t->index;
205 id->sfmt = t->sfmt;
206 if ((int) t->type <= 0)
207 id->idata = & cgen_virtual_insn_table[- (int) t->type];
208 else
209 id->idata = & insn_table[t->type];
210 id->attrs = CGEN_INSN_ATTRS (id->idata);
211 /* Oh my god, a magic number. */
212 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
213
214 #if WITH_PROFILE_MODEL_P
215 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
216 {
217 SIM_DESC sd = CPU_STATE (cpu);
218 SIM_ASSERT (t->index == id->timing->num);
219 }
220 #endif
221
222 /* Semantic pointers are initialized elsewhere. */
223 }
224
225 /* Initialize the instruction descriptor table. */
226
227 void
228 or1k32bf_init_idesc_table (SIM_CPU *cpu)
229 {
230 IDESC *id,*tabend;
231 const struct insn_sem *t,*tend;
232 int tabsize = OR1K32BF_INSN__MAX;
233 IDESC *table = or1k32bf_insn_data;
234
235 memset (table, 0, tabsize * sizeof (IDESC));
236
237 /* First set all entries to the `invalid insn'. */
238 t = & or1k32bf_insn_sem_invalid;
239 for (id = table, tabend = table + tabsize; id < tabend; ++id)
240 init_idesc (cpu, id, t);
241
242 /* Now fill in the values for the chosen cpu. */
243 for (t = or1k32bf_insn_sem, tend = t + sizeof (or1k32bf_insn_sem) / sizeof (*t);
244 t != tend; ++t)
245 {
246 init_idesc (cpu, & table[t->index], t);
247 }
248
249 /* Link the IDESC table into the cpu. */
250 CPU_IDESC (cpu) = table;
251 }
252
253 /* Given an instruction, return a pointer to its IDESC entry. */
254
255 const IDESC *
256 or1k32bf_decode (SIM_CPU *current_cpu, IADDR pc,
257 CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn,
258 ARGBUF *abuf)
259 {
260 /* Result of decoder. */
261 OR1K32BF_INSN_TYPE itype;
262
263 {
264 CGEN_INSN_WORD insn = base_insn;
265
266 {
267 unsigned int val = (((insn >> 21) & (63 << 5)) | ((insn >> 0) & (31 << 0)));
268 switch (val)
269 {
270 case 0 : /* fall through */
271 case 1 : /* fall through */
272 case 2 : /* fall through */
273 case 3 : /* fall through */
274 case 4 : /* fall through */
275 case 5 : /* fall through */
276 case 6 : /* fall through */
277 case 7 : /* fall through */
278 case 8 : /* fall through */
279 case 9 : /* fall through */
280 case 10 : /* fall through */
281 case 11 : /* fall through */
282 case 12 : /* fall through */
283 case 13 : /* fall through */
284 case 14 : /* fall through */
285 case 15 : /* fall through */
286 case 16 : /* fall through */
287 case 17 : /* fall through */
288 case 18 : /* fall through */
289 case 19 : /* fall through */
290 case 20 : /* fall through */
291 case 21 : /* fall through */
292 case 22 : /* fall through */
293 case 23 : /* fall through */
294 case 24 : /* fall through */
295 case 25 : /* fall through */
296 case 26 : /* fall through */
297 case 27 : /* fall through */
298 case 28 : /* fall through */
299 case 29 : /* fall through */
300 case 30 : /* fall through */
301 case 31 : itype = OR1K32BF_INSN_L_J; goto extract_sfmt_l_j;
302 case 32 : /* fall through */
303 case 33 : /* fall through */
304 case 34 : /* fall through */
305 case 35 : /* fall through */
306 case 36 : /* fall through */
307 case 37 : /* fall through */
308 case 38 : /* fall through */
309 case 39 : /* fall through */
310 case 40 : /* fall through */
311 case 41 : /* fall through */
312 case 42 : /* fall through */
313 case 43 : /* fall through */
314 case 44 : /* fall through */
315 case 45 : /* fall through */
316 case 46 : /* fall through */
317 case 47 : /* fall through */
318 case 48 : /* fall through */
319 case 49 : /* fall through */
320 case 50 : /* fall through */
321 case 51 : /* fall through */
322 case 52 : /* fall through */
323 case 53 : /* fall through */
324 case 54 : /* fall through */
325 case 55 : /* fall through */
326 case 56 : /* fall through */
327 case 57 : /* fall through */
328 case 58 : /* fall through */
329 case 59 : /* fall through */
330 case 60 : /* fall through */
331 case 61 : /* fall through */
332 case 62 : /* fall through */
333 case 63 : itype = OR1K32BF_INSN_L_JAL; goto extract_sfmt_l_jal;
334 case 64 : /* fall through */
335 case 65 : /* fall through */
336 case 66 : /* fall through */
337 case 67 : /* fall through */
338 case 68 : /* fall through */
339 case 69 : /* fall through */
340 case 70 : /* fall through */
341 case 71 : /* fall through */
342 case 72 : /* fall through */
343 case 73 : /* fall through */
344 case 74 : /* fall through */
345 case 75 : /* fall through */
346 case 76 : /* fall through */
347 case 77 : /* fall through */
348 case 78 : /* fall through */
349 case 79 : /* fall through */
350 case 80 : /* fall through */
351 case 81 : /* fall through */
352 case 82 : /* fall through */
353 case 83 : /* fall through */
354 case 84 : /* fall through */
355 case 85 : /* fall through */
356 case 86 : /* fall through */
357 case 87 : /* fall through */
358 case 88 : /* fall through */
359 case 89 : /* fall through */
360 case 90 : /* fall through */
361 case 91 : /* fall through */
362 case 92 : /* fall through */
363 case 93 : /* fall through */
364 case 94 : /* fall through */
365 case 95 : itype = OR1K32BF_INSN_L_ADRP; goto extract_sfmt_l_adrp;
366 case 96 : /* fall through */
367 case 97 : /* fall through */
368 case 98 : /* fall through */
369 case 99 : /* fall through */
370 case 100 : /* fall through */
371 case 101 : /* fall through */
372 case 102 : /* fall through */
373 case 103 : /* fall through */
374 case 104 : /* fall through */
375 case 105 : /* fall through */
376 case 106 : /* fall through */
377 case 107 : /* fall through */
378 case 108 : /* fall through */
379 case 109 : /* fall through */
380 case 110 : /* fall through */
381 case 111 : /* fall through */
382 case 112 : /* fall through */
383 case 113 : /* fall through */
384 case 114 : /* fall through */
385 case 115 : /* fall through */
386 case 116 : /* fall through */
387 case 117 : /* fall through */
388 case 118 : /* fall through */
389 case 119 : /* fall through */
390 case 120 : /* fall through */
391 case 121 : /* fall through */
392 case 122 : /* fall through */
393 case 123 : /* fall through */
394 case 124 : /* fall through */
395 case 125 : /* fall through */
396 case 126 : /* fall through */
397 case 127 : itype = OR1K32BF_INSN_L_BNF; goto extract_sfmt_l_bnf;
398 case 128 : /* fall through */
399 case 129 : /* fall through */
400 case 130 : /* fall through */
401 case 131 : /* fall through */
402 case 132 : /* fall through */
403 case 133 : /* fall through */
404 case 134 : /* fall through */
405 case 135 : /* fall through */
406 case 136 : /* fall through */
407 case 137 : /* fall through */
408 case 138 : /* fall through */
409 case 139 : /* fall through */
410 case 140 : /* fall through */
411 case 141 : /* fall through */
412 case 142 : /* fall through */
413 case 143 : /* fall through */
414 case 144 : /* fall through */
415 case 145 : /* fall through */
416 case 146 : /* fall through */
417 case 147 : /* fall through */
418 case 148 : /* fall through */
419 case 149 : /* fall through */
420 case 150 : /* fall through */
421 case 151 : /* fall through */
422 case 152 : /* fall through */
423 case 153 : /* fall through */
424 case 154 : /* fall through */
425 case 155 : /* fall through */
426 case 156 : /* fall through */
427 case 157 : /* fall through */
428 case 158 : /* fall through */
429 case 159 : itype = OR1K32BF_INSN_L_BF; goto extract_sfmt_l_bnf;
430 case 160 : /* fall through */
431 case 161 : /* fall through */
432 case 162 : /* fall through */
433 case 163 : /* fall through */
434 case 164 : /* fall through */
435 case 165 : /* fall through */
436 case 166 : /* fall through */
437 case 167 : /* fall through */
438 case 168 : /* fall through */
439 case 169 : /* fall through */
440 case 170 : /* fall through */
441 case 171 : /* fall through */
442 case 172 : /* fall through */
443 case 173 : /* fall through */
444 case 174 : /* fall through */
445 case 175 : /* fall through */
446 case 176 : /* fall through */
447 case 177 : /* fall through */
448 case 178 : /* fall through */
449 case 179 : /* fall through */
450 case 180 : /* fall through */
451 case 181 : /* fall through */
452 case 182 : /* fall through */
453 case 183 : /* fall through */
454 case 184 : /* fall through */
455 case 185 : /* fall through */
456 case 186 : /* fall through */
457 case 187 : /* fall through */
458 case 188 : /* fall through */
459 case 189 : /* fall through */
460 case 190 : /* fall through */
461 case 191 :
462 if ((entire_insn & 0xffff0000) == 0x15000000)
463 { itype = OR1K32BF_INSN_L_NOP_IMM; goto extract_sfmt_l_nop_imm; }
464 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
465 case 192 :
466 {
467 unsigned int val = (((insn >> 16) & (1 << 0)));
468 switch (val)
469 {
470 case 0 :
471 if ((entire_insn & 0xfc1f0000) == 0x18000000)
472 { itype = OR1K32BF_INSN_L_MOVHI; goto extract_sfmt_l_movhi; }
473 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
474 case 1 :
475 if ((entire_insn & 0xfc1fffff) == 0x18010000)
476 { itype = OR1K32BF_INSN_L_MACRC; goto extract_sfmt_l_macrc; }
477 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
478 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
479 }
480 }
481 case 193 : /* fall through */
482 case 194 : /* fall through */
483 case 195 : /* fall through */
484 case 196 : /* fall through */
485 case 197 : /* fall through */
486 case 198 : /* fall through */
487 case 199 : /* fall through */
488 case 200 : /* fall through */
489 case 201 : /* fall through */
490 case 202 : /* fall through */
491 case 203 : /* fall through */
492 case 204 : /* fall through */
493 case 205 : /* fall through */
494 case 206 : /* fall through */
495 case 207 : /* fall through */
496 case 208 : /* fall through */
497 case 209 : /* fall through */
498 case 210 : /* fall through */
499 case 211 : /* fall through */
500 case 212 : /* fall through */
501 case 213 : /* fall through */
502 case 214 : /* fall through */
503 case 215 : /* fall through */
504 case 216 : /* fall through */
505 case 217 : /* fall through */
506 case 218 : /* fall through */
507 case 219 : /* fall through */
508 case 220 : /* fall through */
509 case 221 : /* fall through */
510 case 222 : /* fall through */
511 case 223 :
512 if ((entire_insn & 0xfc1f0000) == 0x18000000)
513 { itype = OR1K32BF_INSN_L_MOVHI; goto extract_sfmt_l_movhi; }
514 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
515 case 256 :
516 {
517 unsigned int val = (((insn >> 23) & (7 << 0)));
518 switch (val)
519 {
520 case 0 :
521 if ((entire_insn & 0xffff0000) == 0x20000000)
522 { itype = OR1K32BF_INSN_L_SYS; goto extract_sfmt_l_trap; }
523 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
524 case 2 :
525 if ((entire_insn & 0xffff0000) == 0x21000000)
526 { itype = OR1K32BF_INSN_L_TRAP; goto extract_sfmt_l_trap; }
527 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
528 case 4 :
529 if ((entire_insn & 0xffffffff) == 0x22000000)
530 { itype = OR1K32BF_INSN_L_MSYNC; goto extract_sfmt_l_msync; }
531 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
532 case 5 :
533 if ((entire_insn & 0xffffffff) == 0x22800000)
534 { itype = OR1K32BF_INSN_L_PSYNC; goto extract_sfmt_l_msync; }
535 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
536 case 6 :
537 if ((entire_insn & 0xffffffff) == 0x23000000)
538 { itype = OR1K32BF_INSN_L_CSYNC; goto extract_sfmt_l_msync; }
539 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
540 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
541 }
542 }
543 case 257 : /* fall through */
544 case 258 : /* fall through */
545 case 259 : /* fall through */
546 case 260 : /* fall through */
547 case 261 : /* fall through */
548 case 262 : /* fall through */
549 case 263 : /* fall through */
550 case 264 : /* fall through */
551 case 265 : /* fall through */
552 case 266 : /* fall through */
553 case 267 : /* fall through */
554 case 268 : /* fall through */
555 case 269 : /* fall through */
556 case 270 : /* fall through */
557 case 271 : /* fall through */
558 case 272 : /* fall through */
559 case 273 : /* fall through */
560 case 274 : /* fall through */
561 case 275 : /* fall through */
562 case 276 : /* fall through */
563 case 277 : /* fall through */
564 case 278 : /* fall through */
565 case 279 : /* fall through */
566 case 280 : /* fall through */
567 case 281 : /* fall through */
568 case 282 : /* fall through */
569 case 283 : /* fall through */
570 case 284 : /* fall through */
571 case 285 : /* fall through */
572 case 286 : /* fall through */
573 case 287 :
574 {
575 unsigned int val = (((insn >> 24) & (1 << 0)));
576 switch (val)
577 {
578 case 0 :
579 if ((entire_insn & 0xffff0000) == 0x20000000)
580 { itype = OR1K32BF_INSN_L_SYS; goto extract_sfmt_l_trap; }
581 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
582 case 1 :
583 if ((entire_insn & 0xffff0000) == 0x21000000)
584 { itype = OR1K32BF_INSN_L_TRAP; goto extract_sfmt_l_trap; }
585 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
586 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
587 }
588 }
589 case 288 :
590 if ((entire_insn & 0xffffffff) == 0x24000000)
591 { itype = OR1K32BF_INSN_L_RFE; goto extract_sfmt_l_msync; }
592 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
593 case 544 :
594 if ((entire_insn & 0xffff07ff) == 0x44000000)
595 { itype = OR1K32BF_INSN_L_JR; goto extract_sfmt_l_jr; }
596 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
597 case 576 :
598 if ((entire_insn & 0xffff07ff) == 0x48000000)
599 { itype = OR1K32BF_INSN_L_JALR; goto extract_sfmt_l_jalr; }
600 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
601 case 608 : /* fall through */
602 case 609 : /* fall through */
603 case 610 : /* fall through */
604 case 611 : /* fall through */
605 case 612 : /* fall through */
606 case 613 : /* fall through */
607 case 614 : /* fall through */
608 case 615 : /* fall through */
609 case 616 : /* fall through */
610 case 617 : /* fall through */
611 case 618 : /* fall through */
612 case 619 : /* fall through */
613 case 620 : /* fall through */
614 case 621 : /* fall through */
615 case 622 : /* fall through */
616 case 623 : /* fall through */
617 case 624 : /* fall through */
618 case 625 : /* fall through */
619 case 626 : /* fall through */
620 case 627 : /* fall through */
621 case 628 : /* fall through */
622 case 629 : /* fall through */
623 case 630 : /* fall through */
624 case 631 : /* fall through */
625 case 632 : /* fall through */
626 case 633 : /* fall through */
627 case 634 : /* fall through */
628 case 635 : /* fall through */
629 case 636 : /* fall through */
630 case 637 : /* fall through */
631 case 638 : /* fall through */
632 case 639 :
633 if ((entire_insn & 0xffe00000) == 0x4c000000)
634 { itype = OR1K32BF_INSN_L_MACI; goto extract_sfmt_l_maci; }
635 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
636 case 864 : /* fall through */
637 case 865 : /* fall through */
638 case 866 : /* fall through */
639 case 867 : /* fall through */
640 case 868 : /* fall through */
641 case 869 : /* fall through */
642 case 870 : /* fall through */
643 case 871 : /* fall through */
644 case 872 : /* fall through */
645 case 873 : /* fall through */
646 case 874 : /* fall through */
647 case 875 : /* fall through */
648 case 876 : /* fall through */
649 case 877 : /* fall through */
650 case 878 : /* fall through */
651 case 879 : /* fall through */
652 case 880 : /* fall through */
653 case 881 : /* fall through */
654 case 882 : /* fall through */
655 case 883 : /* fall through */
656 case 884 : /* fall through */
657 case 885 : /* fall through */
658 case 886 : /* fall through */
659 case 887 : /* fall through */
660 case 888 : /* fall through */
661 case 889 : /* fall through */
662 case 890 : /* fall through */
663 case 891 : /* fall through */
664 case 892 : /* fall through */
665 case 893 : /* fall through */
666 case 894 : /* fall through */
667 case 895 : itype = OR1K32BF_INSN_L_LWA; goto extract_sfmt_l_lwa;
668 case 896 :
669 if ((entire_insn & 0xffffffff) == 0x70000000)
670 { itype = OR1K32BF_INSN_L_CUST1; goto extract_sfmt_l_msync; }
671 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
672 case 928 :
673 if ((entire_insn & 0xffffffff) == 0x74000000)
674 { itype = OR1K32BF_INSN_L_CUST2; goto extract_sfmt_l_msync; }
675 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
676 case 960 :
677 if ((entire_insn & 0xffffffff) == 0x78000000)
678 { itype = OR1K32BF_INSN_L_CUST3; goto extract_sfmt_l_msync; }
679 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
680 case 992 :
681 if ((entire_insn & 0xffffffff) == 0x7c000000)
682 { itype = OR1K32BF_INSN_L_CUST4; goto extract_sfmt_l_msync; }
683 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
684 case 1056 : /* fall through */
685 case 1057 : /* fall through */
686 case 1058 : /* fall through */
687 case 1059 : /* fall through */
688 case 1060 : /* fall through */
689 case 1061 : /* fall through */
690 case 1062 : /* fall through */
691 case 1063 : /* fall through */
692 case 1064 : /* fall through */
693 case 1065 : /* fall through */
694 case 1066 : /* fall through */
695 case 1067 : /* fall through */
696 case 1068 : /* fall through */
697 case 1069 : /* fall through */
698 case 1070 : /* fall through */
699 case 1071 : /* fall through */
700 case 1072 : /* fall through */
701 case 1073 : /* fall through */
702 case 1074 : /* fall through */
703 case 1075 : /* fall through */
704 case 1076 : /* fall through */
705 case 1077 : /* fall through */
706 case 1078 : /* fall through */
707 case 1079 : /* fall through */
708 case 1080 : /* fall through */
709 case 1081 : /* fall through */
710 case 1082 : /* fall through */
711 case 1083 : /* fall through */
712 case 1084 : /* fall through */
713 case 1085 : /* fall through */
714 case 1086 : /* fall through */
715 case 1087 : itype = OR1K32BF_INSN_L_LWZ; goto extract_sfmt_l_lwz;
716 case 1088 : /* fall through */
717 case 1089 : /* fall through */
718 case 1090 : /* fall through */
719 case 1091 : /* fall through */
720 case 1092 : /* fall through */
721 case 1093 : /* fall through */
722 case 1094 : /* fall through */
723 case 1095 : /* fall through */
724 case 1096 : /* fall through */
725 case 1097 : /* fall through */
726 case 1098 : /* fall through */
727 case 1099 : /* fall through */
728 case 1100 : /* fall through */
729 case 1101 : /* fall through */
730 case 1102 : /* fall through */
731 case 1103 : /* fall through */
732 case 1104 : /* fall through */
733 case 1105 : /* fall through */
734 case 1106 : /* fall through */
735 case 1107 : /* fall through */
736 case 1108 : /* fall through */
737 case 1109 : /* fall through */
738 case 1110 : /* fall through */
739 case 1111 : /* fall through */
740 case 1112 : /* fall through */
741 case 1113 : /* fall through */
742 case 1114 : /* fall through */
743 case 1115 : /* fall through */
744 case 1116 : /* fall through */
745 case 1117 : /* fall through */
746 case 1118 : /* fall through */
747 case 1119 : itype = OR1K32BF_INSN_L_LWS; goto extract_sfmt_l_lws;
748 case 1120 : /* fall through */
749 case 1121 : /* fall through */
750 case 1122 : /* fall through */
751 case 1123 : /* fall through */
752 case 1124 : /* fall through */
753 case 1125 : /* fall through */
754 case 1126 : /* fall through */
755 case 1127 : /* fall through */
756 case 1128 : /* fall through */
757 case 1129 : /* fall through */
758 case 1130 : /* fall through */
759 case 1131 : /* fall through */
760 case 1132 : /* fall through */
761 case 1133 : /* fall through */
762 case 1134 : /* fall through */
763 case 1135 : /* fall through */
764 case 1136 : /* fall through */
765 case 1137 : /* fall through */
766 case 1138 : /* fall through */
767 case 1139 : /* fall through */
768 case 1140 : /* fall through */
769 case 1141 : /* fall through */
770 case 1142 : /* fall through */
771 case 1143 : /* fall through */
772 case 1144 : /* fall through */
773 case 1145 : /* fall through */
774 case 1146 : /* fall through */
775 case 1147 : /* fall through */
776 case 1148 : /* fall through */
777 case 1149 : /* fall through */
778 case 1150 : /* fall through */
779 case 1151 : itype = OR1K32BF_INSN_L_LBZ; goto extract_sfmt_l_lbz;
780 case 1152 : /* fall through */
781 case 1153 : /* fall through */
782 case 1154 : /* fall through */
783 case 1155 : /* fall through */
784 case 1156 : /* fall through */
785 case 1157 : /* fall through */
786 case 1158 : /* fall through */
787 case 1159 : /* fall through */
788 case 1160 : /* fall through */
789 case 1161 : /* fall through */
790 case 1162 : /* fall through */
791 case 1163 : /* fall through */
792 case 1164 : /* fall through */
793 case 1165 : /* fall through */
794 case 1166 : /* fall through */
795 case 1167 : /* fall through */
796 case 1168 : /* fall through */
797 case 1169 : /* fall through */
798 case 1170 : /* fall through */
799 case 1171 : /* fall through */
800 case 1172 : /* fall through */
801 case 1173 : /* fall through */
802 case 1174 : /* fall through */
803 case 1175 : /* fall through */
804 case 1176 : /* fall through */
805 case 1177 : /* fall through */
806 case 1178 : /* fall through */
807 case 1179 : /* fall through */
808 case 1180 : /* fall through */
809 case 1181 : /* fall through */
810 case 1182 : /* fall through */
811 case 1183 : itype = OR1K32BF_INSN_L_LBS; goto extract_sfmt_l_lbs;
812 case 1184 : /* fall through */
813 case 1185 : /* fall through */
814 case 1186 : /* fall through */
815 case 1187 : /* fall through */
816 case 1188 : /* fall through */
817 case 1189 : /* fall through */
818 case 1190 : /* fall through */
819 case 1191 : /* fall through */
820 case 1192 : /* fall through */
821 case 1193 : /* fall through */
822 case 1194 : /* fall through */
823 case 1195 : /* fall through */
824 case 1196 : /* fall through */
825 case 1197 : /* fall through */
826 case 1198 : /* fall through */
827 case 1199 : /* fall through */
828 case 1200 : /* fall through */
829 case 1201 : /* fall through */
830 case 1202 : /* fall through */
831 case 1203 : /* fall through */
832 case 1204 : /* fall through */
833 case 1205 : /* fall through */
834 case 1206 : /* fall through */
835 case 1207 : /* fall through */
836 case 1208 : /* fall through */
837 case 1209 : /* fall through */
838 case 1210 : /* fall through */
839 case 1211 : /* fall through */
840 case 1212 : /* fall through */
841 case 1213 : /* fall through */
842 case 1214 : /* fall through */
843 case 1215 : itype = OR1K32BF_INSN_L_LHZ; goto extract_sfmt_l_lhz;
844 case 1216 : /* fall through */
845 case 1217 : /* fall through */
846 case 1218 : /* fall through */
847 case 1219 : /* fall through */
848 case 1220 : /* fall through */
849 case 1221 : /* fall through */
850 case 1222 : /* fall through */
851 case 1223 : /* fall through */
852 case 1224 : /* fall through */
853 case 1225 : /* fall through */
854 case 1226 : /* fall through */
855 case 1227 : /* fall through */
856 case 1228 : /* fall through */
857 case 1229 : /* fall through */
858 case 1230 : /* fall through */
859 case 1231 : /* fall through */
860 case 1232 : /* fall through */
861 case 1233 : /* fall through */
862 case 1234 : /* fall through */
863 case 1235 : /* fall through */
864 case 1236 : /* fall through */
865 case 1237 : /* fall through */
866 case 1238 : /* fall through */
867 case 1239 : /* fall through */
868 case 1240 : /* fall through */
869 case 1241 : /* fall through */
870 case 1242 : /* fall through */
871 case 1243 : /* fall through */
872 case 1244 : /* fall through */
873 case 1245 : /* fall through */
874 case 1246 : /* fall through */
875 case 1247 : itype = OR1K32BF_INSN_L_LHS; goto extract_sfmt_l_lhs;
876 case 1248 : /* fall through */
877 case 1249 : /* fall through */
878 case 1250 : /* fall through */
879 case 1251 : /* fall through */
880 case 1252 : /* fall through */
881 case 1253 : /* fall through */
882 case 1254 : /* fall through */
883 case 1255 : /* fall through */
884 case 1256 : /* fall through */
885 case 1257 : /* fall through */
886 case 1258 : /* fall through */
887 case 1259 : /* fall through */
888 case 1260 : /* fall through */
889 case 1261 : /* fall through */
890 case 1262 : /* fall through */
891 case 1263 : /* fall through */
892 case 1264 : /* fall through */
893 case 1265 : /* fall through */
894 case 1266 : /* fall through */
895 case 1267 : /* fall through */
896 case 1268 : /* fall through */
897 case 1269 : /* fall through */
898 case 1270 : /* fall through */
899 case 1271 : /* fall through */
900 case 1272 : /* fall through */
901 case 1273 : /* fall through */
902 case 1274 : /* fall through */
903 case 1275 : /* fall through */
904 case 1276 : /* fall through */
905 case 1277 : /* fall through */
906 case 1278 : /* fall through */
907 case 1279 : itype = OR1K32BF_INSN_L_ADDI; goto extract_sfmt_l_addi;
908 case 1280 : /* fall through */
909 case 1281 : /* fall through */
910 case 1282 : /* fall through */
911 case 1283 : /* fall through */
912 case 1284 : /* fall through */
913 case 1285 : /* fall through */
914 case 1286 : /* fall through */
915 case 1287 : /* fall through */
916 case 1288 : /* fall through */
917 case 1289 : /* fall through */
918 case 1290 : /* fall through */
919 case 1291 : /* fall through */
920 case 1292 : /* fall through */
921 case 1293 : /* fall through */
922 case 1294 : /* fall through */
923 case 1295 : /* fall through */
924 case 1296 : /* fall through */
925 case 1297 : /* fall through */
926 case 1298 : /* fall through */
927 case 1299 : /* fall through */
928 case 1300 : /* fall through */
929 case 1301 : /* fall through */
930 case 1302 : /* fall through */
931 case 1303 : /* fall through */
932 case 1304 : /* fall through */
933 case 1305 : /* fall through */
934 case 1306 : /* fall through */
935 case 1307 : /* fall through */
936 case 1308 : /* fall through */
937 case 1309 : /* fall through */
938 case 1310 : /* fall through */
939 case 1311 : itype = OR1K32BF_INSN_L_ADDIC; goto extract_sfmt_l_addic;
940 case 1312 : /* fall through */
941 case 1313 : /* fall through */
942 case 1314 : /* fall through */
943 case 1315 : /* fall through */
944 case 1316 : /* fall through */
945 case 1317 : /* fall through */
946 case 1318 : /* fall through */
947 case 1319 : /* fall through */
948 case 1320 : /* fall through */
949 case 1321 : /* fall through */
950 case 1322 : /* fall through */
951 case 1323 : /* fall through */
952 case 1324 : /* fall through */
953 case 1325 : /* fall through */
954 case 1326 : /* fall through */
955 case 1327 : /* fall through */
956 case 1328 : /* fall through */
957 case 1329 : /* fall through */
958 case 1330 : /* fall through */
959 case 1331 : /* fall through */
960 case 1332 : /* fall through */
961 case 1333 : /* fall through */
962 case 1334 : /* fall through */
963 case 1335 : /* fall through */
964 case 1336 : /* fall through */
965 case 1337 : /* fall through */
966 case 1338 : /* fall through */
967 case 1339 : /* fall through */
968 case 1340 : /* fall through */
969 case 1341 : /* fall through */
970 case 1342 : /* fall through */
971 case 1343 : itype = OR1K32BF_INSN_L_ANDI; goto extract_sfmt_l_mfspr;
972 case 1344 : /* fall through */
973 case 1345 : /* fall through */
974 case 1346 : /* fall through */
975 case 1347 : /* fall through */
976 case 1348 : /* fall through */
977 case 1349 : /* fall through */
978 case 1350 : /* fall through */
979 case 1351 : /* fall through */
980 case 1352 : /* fall through */
981 case 1353 : /* fall through */
982 case 1354 : /* fall through */
983 case 1355 : /* fall through */
984 case 1356 : /* fall through */
985 case 1357 : /* fall through */
986 case 1358 : /* fall through */
987 case 1359 : /* fall through */
988 case 1360 : /* fall through */
989 case 1361 : /* fall through */
990 case 1362 : /* fall through */
991 case 1363 : /* fall through */
992 case 1364 : /* fall through */
993 case 1365 : /* fall through */
994 case 1366 : /* fall through */
995 case 1367 : /* fall through */
996 case 1368 : /* fall through */
997 case 1369 : /* fall through */
998 case 1370 : /* fall through */
999 case 1371 : /* fall through */
1000 case 1372 : /* fall through */
1001 case 1373 : /* fall through */
1002 case 1374 : /* fall through */
1003 case 1375 : itype = OR1K32BF_INSN_L_ORI; goto extract_sfmt_l_mfspr;
1004 case 1376 : /* fall through */
1005 case 1377 : /* fall through */
1006 case 1378 : /* fall through */
1007 case 1379 : /* fall through */
1008 case 1380 : /* fall through */
1009 case 1381 : /* fall through */
1010 case 1382 : /* fall through */
1011 case 1383 : /* fall through */
1012 case 1384 : /* fall through */
1013 case 1385 : /* fall through */
1014 case 1386 : /* fall through */
1015 case 1387 : /* fall through */
1016 case 1388 : /* fall through */
1017 case 1389 : /* fall through */
1018 case 1390 : /* fall through */
1019 case 1391 : /* fall through */
1020 case 1392 : /* fall through */
1021 case 1393 : /* fall through */
1022 case 1394 : /* fall through */
1023 case 1395 : /* fall through */
1024 case 1396 : /* fall through */
1025 case 1397 : /* fall through */
1026 case 1398 : /* fall through */
1027 case 1399 : /* fall through */
1028 case 1400 : /* fall through */
1029 case 1401 : /* fall through */
1030 case 1402 : /* fall through */
1031 case 1403 : /* fall through */
1032 case 1404 : /* fall through */
1033 case 1405 : /* fall through */
1034 case 1406 : /* fall through */
1035 case 1407 : itype = OR1K32BF_INSN_L_XORI; goto extract_sfmt_l_xori;
1036 case 1408 : /* fall through */
1037 case 1409 : /* fall through */
1038 case 1410 : /* fall through */
1039 case 1411 : /* fall through */
1040 case 1412 : /* fall through */
1041 case 1413 : /* fall through */
1042 case 1414 : /* fall through */
1043 case 1415 : /* fall through */
1044 case 1416 : /* fall through */
1045 case 1417 : /* fall through */
1046 case 1418 : /* fall through */
1047 case 1419 : /* fall through */
1048 case 1420 : /* fall through */
1049 case 1421 : /* fall through */
1050 case 1422 : /* fall through */
1051 case 1423 : /* fall through */
1052 case 1424 : /* fall through */
1053 case 1425 : /* fall through */
1054 case 1426 : /* fall through */
1055 case 1427 : /* fall through */
1056 case 1428 : /* fall through */
1057 case 1429 : /* fall through */
1058 case 1430 : /* fall through */
1059 case 1431 : /* fall through */
1060 case 1432 : /* fall through */
1061 case 1433 : /* fall through */
1062 case 1434 : /* fall through */
1063 case 1435 : /* fall through */
1064 case 1436 : /* fall through */
1065 case 1437 : /* fall through */
1066 case 1438 : /* fall through */
1067 case 1439 : itype = OR1K32BF_INSN_L_MULI; goto extract_sfmt_l_muli;
1068 case 1440 : /* fall through */
1069 case 1441 : /* fall through */
1070 case 1442 : /* fall through */
1071 case 1443 : /* fall through */
1072 case 1444 : /* fall through */
1073 case 1445 : /* fall through */
1074 case 1446 : /* fall through */
1075 case 1447 : /* fall through */
1076 case 1448 : /* fall through */
1077 case 1449 : /* fall through */
1078 case 1450 : /* fall through */
1079 case 1451 : /* fall through */
1080 case 1452 : /* fall through */
1081 case 1453 : /* fall through */
1082 case 1454 : /* fall through */
1083 case 1455 : /* fall through */
1084 case 1456 : /* fall through */
1085 case 1457 : /* fall through */
1086 case 1458 : /* fall through */
1087 case 1459 : /* fall through */
1088 case 1460 : /* fall through */
1089 case 1461 : /* fall through */
1090 case 1462 : /* fall through */
1091 case 1463 : /* fall through */
1092 case 1464 : /* fall through */
1093 case 1465 : /* fall through */
1094 case 1466 : /* fall through */
1095 case 1467 : /* fall through */
1096 case 1468 : /* fall through */
1097 case 1469 : /* fall through */
1098 case 1470 : /* fall through */
1099 case 1471 : itype = OR1K32BF_INSN_L_MFSPR; goto extract_sfmt_l_mfspr;
1100 case 1472 : /* fall through */
1101 case 1473 : /* fall through */
1102 case 1474 : /* fall through */
1103 case 1475 : /* fall through */
1104 case 1476 : /* fall through */
1105 case 1477 : /* fall through */
1106 case 1478 : /* fall through */
1107 case 1479 : /* fall through */
1108 case 1480 : /* fall through */
1109 case 1481 : /* fall through */
1110 case 1482 : /* fall through */
1111 case 1483 : /* fall through */
1112 case 1484 : /* fall through */
1113 case 1485 : /* fall through */
1114 case 1486 : /* fall through */
1115 case 1487 : /* fall through */
1116 case 1488 : /* fall through */
1117 case 1489 : /* fall through */
1118 case 1490 : /* fall through */
1119 case 1491 : /* fall through */
1120 case 1492 : /* fall through */
1121 case 1493 : /* fall through */
1122 case 1494 : /* fall through */
1123 case 1495 : /* fall through */
1124 case 1496 : /* fall through */
1125 case 1497 : /* fall through */
1126 case 1498 : /* fall through */
1127 case 1499 : /* fall through */
1128 case 1500 : /* fall through */
1129 case 1501 : /* fall through */
1130 case 1502 : /* fall through */
1131 case 1503 :
1132 {
1133 unsigned int val = (((insn >> 6) & (3 << 0)));
1134 switch (val)
1135 {
1136 case 0 :
1137 if ((entire_insn & 0xfc00ffc0) == 0xb8000000)
1138 { itype = OR1K32BF_INSN_L_SLLI; goto extract_sfmt_l_slli; }
1139 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1140 case 1 :
1141 if ((entire_insn & 0xfc00ffc0) == 0xb8000040)
1142 { itype = OR1K32BF_INSN_L_SRLI; goto extract_sfmt_l_slli; }
1143 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1144 case 2 :
1145 if ((entire_insn & 0xfc00ffc0) == 0xb8000080)
1146 { itype = OR1K32BF_INSN_L_SRAI; goto extract_sfmt_l_slli; }
1147 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1148 case 3 :
1149 if ((entire_insn & 0xfc00ffc0) == 0xb80000c0)
1150 { itype = OR1K32BF_INSN_L_RORI; goto extract_sfmt_l_slli; }
1151 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1152 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1153 }
1154 }
1155 case 1504 : /* fall through */
1156 case 1505 : /* fall through */
1157 case 1506 : /* fall through */
1158 case 1507 : /* fall through */
1159 case 1508 : /* fall through */
1160 case 1509 : /* fall through */
1161 case 1510 : /* fall through */
1162 case 1511 : /* fall through */
1163 case 1512 : /* fall through */
1164 case 1513 : /* fall through */
1165 case 1514 : /* fall through */
1166 case 1515 : /* fall through */
1167 case 1516 : /* fall through */
1168 case 1517 : /* fall through */
1169 case 1518 : /* fall through */
1170 case 1519 : /* fall through */
1171 case 1520 : /* fall through */
1172 case 1521 : /* fall through */
1173 case 1522 : /* fall through */
1174 case 1523 : /* fall through */
1175 case 1524 : /* fall through */
1176 case 1525 : /* fall through */
1177 case 1526 : /* fall through */
1178 case 1527 : /* fall through */
1179 case 1528 : /* fall through */
1180 case 1529 : /* fall through */
1181 case 1530 : /* fall through */
1182 case 1531 : /* fall through */
1183 case 1532 : /* fall through */
1184 case 1533 : /* fall through */
1185 case 1534 : /* fall through */
1186 case 1535 :
1187 {
1188 unsigned int val = (((insn >> 21) & (15 << 0)));
1189 switch (val)
1190 {
1191 case 0 :
1192 if ((entire_insn & 0xffe00000) == 0xbc000000)
1193 { itype = OR1K32BF_INSN_L_SFEQI; goto extract_sfmt_l_sfgtsi; }
1194 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1195 case 1 :
1196 if ((entire_insn & 0xffe00000) == 0xbc200000)
1197 { itype = OR1K32BF_INSN_L_SFNEI; goto extract_sfmt_l_sfgtsi; }
1198 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1199 case 2 :
1200 if ((entire_insn & 0xffe00000) == 0xbc400000)
1201 { itype = OR1K32BF_INSN_L_SFGTUI; goto extract_sfmt_l_sfgtsi; }
1202 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1203 case 3 :
1204 if ((entire_insn & 0xffe00000) == 0xbc600000)
1205 { itype = OR1K32BF_INSN_L_SFGEUI; goto extract_sfmt_l_sfgtsi; }
1206 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1207 case 4 :
1208 if ((entire_insn & 0xffe00000) == 0xbc800000)
1209 { itype = OR1K32BF_INSN_L_SFLTUI; goto extract_sfmt_l_sfgtsi; }
1210 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1211 case 5 :
1212 if ((entire_insn & 0xffe00000) == 0xbca00000)
1213 { itype = OR1K32BF_INSN_L_SFLEUI; goto extract_sfmt_l_sfgtsi; }
1214 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1215 case 10 :
1216 if ((entire_insn & 0xffe00000) == 0xbd400000)
1217 { itype = OR1K32BF_INSN_L_SFGTSI; goto extract_sfmt_l_sfgtsi; }
1218 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1219 case 11 :
1220 if ((entire_insn & 0xffe00000) == 0xbd600000)
1221 { itype = OR1K32BF_INSN_L_SFGESI; goto extract_sfmt_l_sfgtsi; }
1222 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1223 case 12 :
1224 if ((entire_insn & 0xffe00000) == 0xbd800000)
1225 { itype = OR1K32BF_INSN_L_SFLTSI; goto extract_sfmt_l_sfgtsi; }
1226 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1227 case 13 :
1228 if ((entire_insn & 0xffe00000) == 0xbda00000)
1229 { itype = OR1K32BF_INSN_L_SFLESI; goto extract_sfmt_l_sfgtsi; }
1230 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1231 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1232 }
1233 }
1234 case 1536 : /* fall through */
1235 case 1537 : /* fall through */
1236 case 1538 : /* fall through */
1237 case 1539 : /* fall through */
1238 case 1540 : /* fall through */
1239 case 1541 : /* fall through */
1240 case 1542 : /* fall through */
1241 case 1543 : /* fall through */
1242 case 1544 : /* fall through */
1243 case 1545 : /* fall through */
1244 case 1546 : /* fall through */
1245 case 1547 : /* fall through */
1246 case 1548 : /* fall through */
1247 case 1549 : /* fall through */
1248 case 1550 : /* fall through */
1249 case 1551 : /* fall through */
1250 case 1552 : /* fall through */
1251 case 1553 : /* fall through */
1252 case 1554 : /* fall through */
1253 case 1555 : /* fall through */
1254 case 1556 : /* fall through */
1255 case 1557 : /* fall through */
1256 case 1558 : /* fall through */
1257 case 1559 : /* fall through */
1258 case 1560 : /* fall through */
1259 case 1561 : /* fall through */
1260 case 1562 : /* fall through */
1261 case 1563 : /* fall through */
1262 case 1564 : /* fall through */
1263 case 1565 : /* fall through */
1264 case 1566 : /* fall through */
1265 case 1567 : itype = OR1K32BF_INSN_L_MTSPR; goto extract_sfmt_l_mtspr;
1266 case 1569 :
1267 if ((entire_insn & 0xffe007ff) == 0xc4000001)
1268 { itype = OR1K32BF_INSN_L_MAC; goto extract_sfmt_l_mac; }
1269 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1270 case 1570 :
1271 if ((entire_insn & 0xffe007ff) == 0xc4000002)
1272 { itype = OR1K32BF_INSN_L_MSB; goto extract_sfmt_l_mac; }
1273 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1274 case 1571 :
1275 if ((entire_insn & 0xffe007ff) == 0xc4000003)
1276 { itype = OR1K32BF_INSN_L_MACU; goto extract_sfmt_l_macu; }
1277 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1278 case 1572 :
1279 if ((entire_insn & 0xffe007ff) == 0xc4000004)
1280 { itype = OR1K32BF_INSN_L_MSBU; goto extract_sfmt_l_macu; }
1281 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1282 case 1600 :
1283 {
1284 unsigned int val = (((insn >> 5) & (7 << 0)));
1285 switch (val)
1286 {
1287 case 0 :
1288 if ((entire_insn & 0xfc0007ff) == 0xc8000000)
1289 { itype = OR1K32BF_INSN_LF_ADD_S; goto extract_sfmt_lf_add_s; }
1290 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1291 case 7 :
1292 if ((entire_insn & 0xffe004ff) == 0xc80000e0)
1293 { itype = OR1K32BF_INSN_LF_CUST1_D32; goto extract_sfmt_l_msync; }
1294 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1295 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1296 }
1297 }
1298 case 1601 :
1299 if ((entire_insn & 0xfc0007ff) == 0xc8000001)
1300 { itype = OR1K32BF_INSN_LF_SUB_S; goto extract_sfmt_lf_add_s; }
1301 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1302 case 1602 :
1303 if ((entire_insn & 0xfc0007ff) == 0xc8000002)
1304 { itype = OR1K32BF_INSN_LF_MUL_S; goto extract_sfmt_lf_add_s; }
1305 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1306 case 1603 :
1307 if ((entire_insn & 0xfc0007ff) == 0xc8000003)
1308 { itype = OR1K32BF_INSN_LF_DIV_S; goto extract_sfmt_lf_add_s; }
1309 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1310 case 1604 :
1311 if ((entire_insn & 0xfc00ffff) == 0xc8000004)
1312 { itype = OR1K32BF_INSN_LF_ITOF_S; goto extract_sfmt_lf_itof_s; }
1313 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1314 case 1605 :
1315 if ((entire_insn & 0xfc00ffff) == 0xc8000005)
1316 { itype = OR1K32BF_INSN_LF_FTOI_S; goto extract_sfmt_lf_ftoi_s; }
1317 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1318 case 1606 :
1319 if ((entire_insn & 0xfc0007ff) == 0xc8000006)
1320 { itype = OR1K32BF_INSN_LF_REM_S; goto extract_sfmt_lf_add_s; }
1321 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1322 case 1607 :
1323 if ((entire_insn & 0xfc0007ff) == 0xc8000007)
1324 { itype = OR1K32BF_INSN_LF_MADD_S; goto extract_sfmt_lf_madd_s; }
1325 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1326 case 1608 :
1327 {
1328 unsigned int val = (((insn >> 5) & (1 << 0)));
1329 switch (val)
1330 {
1331 case 0 :
1332 if ((entire_insn & 0xffe007ff) == 0xc8000008)
1333 { itype = OR1K32BF_INSN_LF_SFEQ_S; goto extract_sfmt_lf_sfeq_s; }
1334 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1335 case 1 :
1336 if ((entire_insn & 0xffe007ff) == 0xc8000028)
1337 { itype = OR1K32BF_INSN_LF_SFUEQ_S; goto extract_sfmt_lf_sfeq_s; }
1338 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1339 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1340 }
1341 }
1342 case 1609 :
1343 {
1344 unsigned int val = (((insn >> 5) & (1 << 0)));
1345 switch (val)
1346 {
1347 case 0 :
1348 if ((entire_insn & 0xffe007ff) == 0xc8000009)
1349 { itype = OR1K32BF_INSN_LF_SFNE_S; goto extract_sfmt_lf_sfeq_s; }
1350 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1351 case 1 :
1352 if ((entire_insn & 0xffe007ff) == 0xc8000029)
1353 { itype = OR1K32BF_INSN_LF_SFUNE_S; goto extract_sfmt_lf_sfeq_s; }
1354 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1355 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1356 }
1357 }
1358 case 1610 :
1359 {
1360 unsigned int val = (((insn >> 5) & (1 << 0)));
1361 switch (val)
1362 {
1363 case 0 :
1364 if ((entire_insn & 0xffe007ff) == 0xc800000a)
1365 { itype = OR1K32BF_INSN_LF_SFGT_S; goto extract_sfmt_lf_sfeq_s; }
1366 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1367 case 1 :
1368 if ((entire_insn & 0xffe007ff) == 0xc800002a)
1369 { itype = OR1K32BF_INSN_LF_SFUGT_S; goto extract_sfmt_lf_sfeq_s; }
1370 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1371 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1372 }
1373 }
1374 case 1611 :
1375 {
1376 unsigned int val = (((insn >> 5) & (1 << 0)));
1377 switch (val)
1378 {
1379 case 0 :
1380 if ((entire_insn & 0xffe007ff) == 0xc800000b)
1381 { itype = OR1K32BF_INSN_LF_SFGE_S; goto extract_sfmt_lf_sfeq_s; }
1382 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1383 case 1 :
1384 if ((entire_insn & 0xffe007ff) == 0xc800002b)
1385 { itype = OR1K32BF_INSN_LF_SFUGE_S; goto extract_sfmt_lf_sfeq_s; }
1386 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1387 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1388 }
1389 }
1390 case 1612 :
1391 {
1392 unsigned int val = (((insn >> 5) & (1 << 0)));
1393 switch (val)
1394 {
1395 case 0 :
1396 if ((entire_insn & 0xffe007ff) == 0xc800000c)
1397 { itype = OR1K32BF_INSN_LF_SFLT_S; goto extract_sfmt_lf_sfeq_s; }
1398 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1399 case 1 :
1400 if ((entire_insn & 0xffe007ff) == 0xc800002c)
1401 { itype = OR1K32BF_INSN_LF_SFULT_S; goto extract_sfmt_lf_sfeq_s; }
1402 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1403 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1404 }
1405 }
1406 case 1613 :
1407 {
1408 unsigned int val = (((insn >> 5) & (1 << 0)));
1409 switch (val)
1410 {
1411 case 0 :
1412 if ((entire_insn & 0xffe007ff) == 0xc800000d)
1413 { itype = OR1K32BF_INSN_LF_SFLE_S; goto extract_sfmt_lf_sfeq_s; }
1414 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1415 case 1 :
1416 if ((entire_insn & 0xffe007ff) == 0xc800002d)
1417 { itype = OR1K32BF_INSN_LF_SFULE_S; goto extract_sfmt_lf_sfeq_s; }
1418 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1419 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1420 }
1421 }
1422 case 1614 :
1423 if ((entire_insn & 0xffe007ff) == 0xc800002e)
1424 { itype = OR1K32BF_INSN_LF_SFUN_S; goto extract_sfmt_lf_sfeq_s; }
1425 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1426 case 1616 :
1427 {
1428 unsigned int val = (((insn >> 6) & (3 << 0)));
1429 switch (val)
1430 {
1431 case 0 :
1432 if ((entire_insn & 0xfc0000ff) == 0xc8000010)
1433 { itype = OR1K32BF_INSN_LF_ADD_D32; goto extract_sfmt_lf_add_d32; }
1434 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1435 case 3 :
1436 if ((entire_insn & 0xffe007ff) == 0xc80000d0)
1437 { itype = OR1K32BF_INSN_LF_CUST1_S; goto extract_sfmt_l_msync; }
1438 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1439 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1440 }
1441 }
1442 case 1617 :
1443 if ((entire_insn & 0xfc0000ff) == 0xc8000011)
1444 { itype = OR1K32BF_INSN_LF_SUB_D32; goto extract_sfmt_lf_add_d32; }
1445 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1446 case 1618 :
1447 if ((entire_insn & 0xfc0000ff) == 0xc8000012)
1448 { itype = OR1K32BF_INSN_LF_MUL_D32; goto extract_sfmt_lf_add_d32; }
1449 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1450 case 1619 :
1451 if ((entire_insn & 0xfc0000ff) == 0xc8000013)
1452 { itype = OR1K32BF_INSN_LF_DIV_D32; goto extract_sfmt_lf_add_d32; }
1453 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1454 case 1620 :
1455 if ((entire_insn & 0xfc00f9ff) == 0xc8000014)
1456 { itype = OR1K32BF_INSN_LF_ITOF_D32; goto extract_sfmt_lf_itof_d32; }
1457 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1458 case 1621 :
1459 if ((entire_insn & 0xfc00f9ff) == 0xc8000015)
1460 { itype = OR1K32BF_INSN_LF_FTOI_D32; goto extract_sfmt_lf_ftoi_d32; }
1461 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1462 case 1622 :
1463 if ((entire_insn & 0xfc0000ff) == 0xc8000016)
1464 { itype = OR1K32BF_INSN_LF_REM_D32; goto extract_sfmt_lf_add_d32; }
1465 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1466 case 1623 :
1467 if ((entire_insn & 0xfc0000ff) == 0xc8000017)
1468 { itype = OR1K32BF_INSN_LF_MADD_D32; goto extract_sfmt_lf_madd_d32; }
1469 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1470 case 1624 :
1471 {
1472 unsigned int val = (((insn >> 5) & (1 << 0)));
1473 switch (val)
1474 {
1475 case 0 :
1476 if ((entire_insn & 0xffe004ff) == 0xc8000018)
1477 { itype = OR1K32BF_INSN_LF_SFEQ_D32; goto extract_sfmt_lf_sfeq_d32; }
1478 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1479 case 1 :
1480 if ((entire_insn & 0xffe004ff) == 0xc8000038)
1481 { itype = OR1K32BF_INSN_LF_SFUEQ_D32; goto extract_sfmt_lf_sfeq_d32; }
1482 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1483 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1484 }
1485 }
1486 case 1625 :
1487 {
1488 unsigned int val = (((insn >> 5) & (1 << 0)));
1489 switch (val)
1490 {
1491 case 0 :
1492 if ((entire_insn & 0xffe004ff) == 0xc8000019)
1493 { itype = OR1K32BF_INSN_LF_SFNE_D32; goto extract_sfmt_lf_sfeq_d32; }
1494 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1495 case 1 :
1496 if ((entire_insn & 0xffe004ff) == 0xc8000039)
1497 { itype = OR1K32BF_INSN_LF_SFUNE_D32; goto extract_sfmt_lf_sfeq_d32; }
1498 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1499 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1500 }
1501 }
1502 case 1626 :
1503 {
1504 unsigned int val = (((insn >> 5) & (1 << 0)));
1505 switch (val)
1506 {
1507 case 0 :
1508 if ((entire_insn & 0xffe004ff) == 0xc800001a)
1509 { itype = OR1K32BF_INSN_LF_SFGT_D32; goto extract_sfmt_lf_sfeq_d32; }
1510 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1511 case 1 :
1512 if ((entire_insn & 0xffe004ff) == 0xc800003a)
1513 { itype = OR1K32BF_INSN_LF_SFUGT_D32; goto extract_sfmt_lf_sfeq_d32; }
1514 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1515 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1516 }
1517 }
1518 case 1627 :
1519 {
1520 unsigned int val = (((insn >> 5) & (1 << 0)));
1521 switch (val)
1522 {
1523 case 0 :
1524 if ((entire_insn & 0xffe004ff) == 0xc800001b)
1525 { itype = OR1K32BF_INSN_LF_SFGE_D32; goto extract_sfmt_lf_sfeq_d32; }
1526 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1527 case 1 :
1528 if ((entire_insn & 0xffe004ff) == 0xc800003b)
1529 { itype = OR1K32BF_INSN_LF_SFUGE_D32; goto extract_sfmt_lf_sfeq_d32; }
1530 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1531 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1532 }
1533 }
1534 case 1628 :
1535 {
1536 unsigned int val = (((insn >> 5) & (1 << 0)));
1537 switch (val)
1538 {
1539 case 0 :
1540 if ((entire_insn & 0xffe004ff) == 0xc800001c)
1541 { itype = OR1K32BF_INSN_LF_SFLT_D32; goto extract_sfmt_lf_sfeq_d32; }
1542 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1543 case 1 :
1544 if ((entire_insn & 0xffe004ff) == 0xc800003c)
1545 { itype = OR1K32BF_INSN_LF_SFULT_D32; goto extract_sfmt_lf_sfeq_d32; }
1546 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1547 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1548 }
1549 }
1550 case 1629 :
1551 {
1552 unsigned int val = (((insn >> 5) & (1 << 0)));
1553 switch (val)
1554 {
1555 case 0 :
1556 if ((entire_insn & 0xffe004ff) == 0xc800001d)
1557 { itype = OR1K32BF_INSN_LF_SFLE_D32; goto extract_sfmt_lf_sfeq_d32; }
1558 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1559 case 1 :
1560 if ((entire_insn & 0xffe004ff) == 0xc800003d)
1561 { itype = OR1K32BF_INSN_LF_SFULE_D32; goto extract_sfmt_lf_sfeq_d32; }
1562 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1563 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1564 }
1565 }
1566 case 1630 :
1567 if ((entire_insn & 0xffe004ff) == 0xc800003e)
1568 { itype = OR1K32BF_INSN_LF_SFUN_D32; goto extract_sfmt_lf_sfeq_d32; }
1569 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1570 case 1632 : /* fall through */
1571 case 1633 : /* fall through */
1572 case 1634 : /* fall through */
1573 case 1635 : /* fall through */
1574 case 1636 : /* fall through */
1575 case 1637 : /* fall through */
1576 case 1638 : /* fall through */
1577 case 1639 : /* fall through */
1578 case 1640 : /* fall through */
1579 case 1641 : /* fall through */
1580 case 1642 : /* fall through */
1581 case 1643 : /* fall through */
1582 case 1644 : /* fall through */
1583 case 1645 : /* fall through */
1584 case 1646 : /* fall through */
1585 case 1647 : /* fall through */
1586 case 1648 : /* fall through */
1587 case 1649 : /* fall through */
1588 case 1650 : /* fall through */
1589 case 1651 : /* fall through */
1590 case 1652 : /* fall through */
1591 case 1653 : /* fall through */
1592 case 1654 : /* fall through */
1593 case 1655 : /* fall through */
1594 case 1656 : /* fall through */
1595 case 1657 : /* fall through */
1596 case 1658 : /* fall through */
1597 case 1659 : /* fall through */
1598 case 1660 : /* fall through */
1599 case 1661 : /* fall through */
1600 case 1662 : /* fall through */
1601 case 1663 : itype = OR1K32BF_INSN_L_SWA; goto extract_sfmt_l_swa;
1602 case 1696 : /* fall through */
1603 case 1697 : /* fall through */
1604 case 1698 : /* fall through */
1605 case 1699 : /* fall through */
1606 case 1700 : /* fall through */
1607 case 1701 : /* fall through */
1608 case 1702 : /* fall through */
1609 case 1703 : /* fall through */
1610 case 1704 : /* fall through */
1611 case 1705 : /* fall through */
1612 case 1706 : /* fall through */
1613 case 1707 : /* fall through */
1614 case 1708 : /* fall through */
1615 case 1709 : /* fall through */
1616 case 1710 : /* fall through */
1617 case 1711 : /* fall through */
1618 case 1712 : /* fall through */
1619 case 1713 : /* fall through */
1620 case 1714 : /* fall through */
1621 case 1715 : /* fall through */
1622 case 1716 : /* fall through */
1623 case 1717 : /* fall through */
1624 case 1718 : /* fall through */
1625 case 1719 : /* fall through */
1626 case 1720 : /* fall through */
1627 case 1721 : /* fall through */
1628 case 1722 : /* fall through */
1629 case 1723 : /* fall through */
1630 case 1724 : /* fall through */
1631 case 1725 : /* fall through */
1632 case 1726 : /* fall through */
1633 case 1727 : itype = OR1K32BF_INSN_L_SW; goto extract_sfmt_l_sw;
1634 case 1728 : /* fall through */
1635 case 1729 : /* fall through */
1636 case 1730 : /* fall through */
1637 case 1731 : /* fall through */
1638 case 1732 : /* fall through */
1639 case 1733 : /* fall through */
1640 case 1734 : /* fall through */
1641 case 1735 : /* fall through */
1642 case 1736 : /* fall through */
1643 case 1737 : /* fall through */
1644 case 1738 : /* fall through */
1645 case 1739 : /* fall through */
1646 case 1740 : /* fall through */
1647 case 1741 : /* fall through */
1648 case 1742 : /* fall through */
1649 case 1743 : /* fall through */
1650 case 1744 : /* fall through */
1651 case 1745 : /* fall through */
1652 case 1746 : /* fall through */
1653 case 1747 : /* fall through */
1654 case 1748 : /* fall through */
1655 case 1749 : /* fall through */
1656 case 1750 : /* fall through */
1657 case 1751 : /* fall through */
1658 case 1752 : /* fall through */
1659 case 1753 : /* fall through */
1660 case 1754 : /* fall through */
1661 case 1755 : /* fall through */
1662 case 1756 : /* fall through */
1663 case 1757 : /* fall through */
1664 case 1758 : /* fall through */
1665 case 1759 : itype = OR1K32BF_INSN_L_SB; goto extract_sfmt_l_sb;
1666 case 1760 : /* fall through */
1667 case 1761 : /* fall through */
1668 case 1762 : /* fall through */
1669 case 1763 : /* fall through */
1670 case 1764 : /* fall through */
1671 case 1765 : /* fall through */
1672 case 1766 : /* fall through */
1673 case 1767 : /* fall through */
1674 case 1768 : /* fall through */
1675 case 1769 : /* fall through */
1676 case 1770 : /* fall through */
1677 case 1771 : /* fall through */
1678 case 1772 : /* fall through */
1679 case 1773 : /* fall through */
1680 case 1774 : /* fall through */
1681 case 1775 : /* fall through */
1682 case 1776 : /* fall through */
1683 case 1777 : /* fall through */
1684 case 1778 : /* fall through */
1685 case 1779 : /* fall through */
1686 case 1780 : /* fall through */
1687 case 1781 : /* fall through */
1688 case 1782 : /* fall through */
1689 case 1783 : /* fall through */
1690 case 1784 : /* fall through */
1691 case 1785 : /* fall through */
1692 case 1786 : /* fall through */
1693 case 1787 : /* fall through */
1694 case 1788 : /* fall through */
1695 case 1789 : /* fall through */
1696 case 1790 : /* fall through */
1697 case 1791 : itype = OR1K32BF_INSN_L_SH; goto extract_sfmt_l_sh;
1698 case 1792 :
1699 if ((entire_insn & 0xfc0007ff) == 0xe0000000)
1700 { itype = OR1K32BF_INSN_L_ADD; goto extract_sfmt_l_add; }
1701 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1702 case 1793 :
1703 if ((entire_insn & 0xfc0007ff) == 0xe0000001)
1704 { itype = OR1K32BF_INSN_L_ADDC; goto extract_sfmt_l_addc; }
1705 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1706 case 1794 :
1707 if ((entire_insn & 0xfc0007ff) == 0xe0000002)
1708 { itype = OR1K32BF_INSN_L_SUB; goto extract_sfmt_l_add; }
1709 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1710 case 1795 :
1711 if ((entire_insn & 0xfc0007ff) == 0xe0000003)
1712 { itype = OR1K32BF_INSN_L_AND; goto extract_sfmt_l_and; }
1713 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1714 case 1796 :
1715 if ((entire_insn & 0xfc0007ff) == 0xe0000004)
1716 { itype = OR1K32BF_INSN_L_OR; goto extract_sfmt_l_and; }
1717 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1718 case 1797 :
1719 if ((entire_insn & 0xfc0007ff) == 0xe0000005)
1720 { itype = OR1K32BF_INSN_L_XOR; goto extract_sfmt_l_and; }
1721 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1722 case 1798 :
1723 if ((entire_insn & 0xfc0007ff) == 0xe0000306)
1724 { itype = OR1K32BF_INSN_L_MUL; goto extract_sfmt_l_mul; }
1725 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1726 case 1799 :
1727 if ((entire_insn & 0xffe007ff) == 0xe0000307)
1728 { itype = OR1K32BF_INSN_L_MULD; goto extract_sfmt_l_muld; }
1729 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1730 case 1800 :
1731 {
1732 unsigned int val = (((insn >> 6) & (3 << 0)));
1733 switch (val)
1734 {
1735 case 0 :
1736 if ((entire_insn & 0xfc0007ff) == 0xe0000008)
1737 { itype = OR1K32BF_INSN_L_SLL; goto extract_sfmt_l_sll; }
1738 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1739 case 1 :
1740 if ((entire_insn & 0xfc0007ff) == 0xe0000048)
1741 { itype = OR1K32BF_INSN_L_SRL; goto extract_sfmt_l_sll; }
1742 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1743 case 2 :
1744 if ((entire_insn & 0xfc0007ff) == 0xe0000088)
1745 { itype = OR1K32BF_INSN_L_SRA; goto extract_sfmt_l_sll; }
1746 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1747 case 3 :
1748 if ((entire_insn & 0xfc0007ff) == 0xe00000c8)
1749 { itype = OR1K32BF_INSN_L_ROR; goto extract_sfmt_l_sll; }
1750 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1751 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1752 }
1753 }
1754 case 1801 :
1755 if ((entire_insn & 0xfc0007ff) == 0xe0000309)
1756 { itype = OR1K32BF_INSN_L_DIV; goto extract_sfmt_l_div; }
1757 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1758 case 1802 :
1759 if ((entire_insn & 0xfc0007ff) == 0xe000030a)
1760 { itype = OR1K32BF_INSN_L_DIVU; goto extract_sfmt_l_divu; }
1761 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1762 case 1803 :
1763 if ((entire_insn & 0xfc0007ff) == 0xe000030b)
1764 { itype = OR1K32BF_INSN_L_MULU; goto extract_sfmt_l_mulu; }
1765 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1766 case 1804 :
1767 {
1768 unsigned int val = (((insn >> 6) & (3 << 0)));
1769 switch (val)
1770 {
1771 case 0 :
1772 if ((entire_insn & 0xfc00ffff) == 0xe000000c)
1773 { itype = OR1K32BF_INSN_L_EXTHS; goto extract_sfmt_l_exths; }
1774 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1775 case 1 :
1776 if ((entire_insn & 0xfc00ffff) == 0xe000004c)
1777 { itype = OR1K32BF_INSN_L_EXTBS; goto extract_sfmt_l_exths; }
1778 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1779 case 2 :
1780 if ((entire_insn & 0xfc00ffff) == 0xe000008c)
1781 { itype = OR1K32BF_INSN_L_EXTHZ; goto extract_sfmt_l_exths; }
1782 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1783 case 3 :
1784 if ((entire_insn & 0xfc00ffff) == 0xe00000cc)
1785 { itype = OR1K32BF_INSN_L_EXTBZ; goto extract_sfmt_l_exths; }
1786 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1787 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1788 }
1789 }
1790 case 1805 :
1791 {
1792 unsigned int val = (((insn >> 7) & (3 << 1)) | ((insn >> 6) & (1 << 0)));
1793 switch (val)
1794 {
1795 case 0 :
1796 if ((entire_insn & 0xfc00ffff) == 0xe000000d)
1797 { itype = OR1K32BF_INSN_L_EXTWS; goto extract_sfmt_l_exths; }
1798 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1799 case 1 :
1800 if ((entire_insn & 0xfc00ffff) == 0xe000004d)
1801 { itype = OR1K32BF_INSN_L_EXTWZ; goto extract_sfmt_l_exths; }
1802 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1803 case 6 :
1804 if ((entire_insn & 0xffe007ff) == 0xe000030d)
1805 { itype = OR1K32BF_INSN_L_MULDU; goto extract_sfmt_l_muld; }
1806 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1807 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1808 }
1809 }
1810 case 1806 :
1811 if ((entire_insn & 0xfc0007ff) == 0xe000000e)
1812 { itype = OR1K32BF_INSN_L_CMOV; goto extract_sfmt_l_cmov; }
1813 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1814 case 1807 :
1815 {
1816 unsigned int val = (((insn >> 8) & (1 << 0)));
1817 switch (val)
1818 {
1819 case 0 :
1820 if ((entire_insn & 0xfc0007ff) == 0xe000000f)
1821 { itype = OR1K32BF_INSN_L_FF1; goto extract_sfmt_l_ff1; }
1822 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1823 case 1 :
1824 if ((entire_insn & 0xfc0007ff) == 0xe000010f)
1825 { itype = OR1K32BF_INSN_L_FL1; goto extract_sfmt_l_ff1; }
1826 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1827 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1828 }
1829 }
1830 case 1824 :
1831 {
1832 unsigned int val = (((insn >> 21) & (15 << 0)));
1833 switch (val)
1834 {
1835 case 0 :
1836 if ((entire_insn & 0xffe007ff) == 0xe4000000)
1837 { itype = OR1K32BF_INSN_L_SFEQ; goto extract_sfmt_l_sfgts; }
1838 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1839 case 1 :
1840 if ((entire_insn & 0xffe007ff) == 0xe4200000)
1841 { itype = OR1K32BF_INSN_L_SFNE; goto extract_sfmt_l_sfgts; }
1842 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1843 case 2 :
1844 if ((entire_insn & 0xffe007ff) == 0xe4400000)
1845 { itype = OR1K32BF_INSN_L_SFGTU; goto extract_sfmt_l_sfgts; }
1846 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1847 case 3 :
1848 if ((entire_insn & 0xffe007ff) == 0xe4600000)
1849 { itype = OR1K32BF_INSN_L_SFGEU; goto extract_sfmt_l_sfgts; }
1850 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1851 case 4 :
1852 if ((entire_insn & 0xffe007ff) == 0xe4800000)
1853 { itype = OR1K32BF_INSN_L_SFLTU; goto extract_sfmt_l_sfgts; }
1854 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1855 case 5 :
1856 if ((entire_insn & 0xffe007ff) == 0xe4a00000)
1857 { itype = OR1K32BF_INSN_L_SFLEU; goto extract_sfmt_l_sfgts; }
1858 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1859 case 10 :
1860 if ((entire_insn & 0xffe007ff) == 0xe5400000)
1861 { itype = OR1K32BF_INSN_L_SFGTS; goto extract_sfmt_l_sfgts; }
1862 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1863 case 11 :
1864 if ((entire_insn & 0xffe007ff) == 0xe5600000)
1865 { itype = OR1K32BF_INSN_L_SFGES; goto extract_sfmt_l_sfgts; }
1866 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1867 case 12 :
1868 if ((entire_insn & 0xffe007ff) == 0xe5800000)
1869 { itype = OR1K32BF_INSN_L_SFLTS; goto extract_sfmt_l_sfgts; }
1870 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1871 case 13 :
1872 if ((entire_insn & 0xffe007ff) == 0xe5a00000)
1873 { itype = OR1K32BF_INSN_L_SFLES; goto extract_sfmt_l_sfgts; }
1874 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1875 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1876 }
1877 }
1878 case 1920 :
1879 if ((entire_insn & 0xffffffff) == 0xf0000000)
1880 { itype = OR1K32BF_INSN_L_CUST5; goto extract_sfmt_l_msync; }
1881 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1882 case 1952 :
1883 if ((entire_insn & 0xffffffff) == 0xf4000000)
1884 { itype = OR1K32BF_INSN_L_CUST6; goto extract_sfmt_l_msync; }
1885 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1886 case 1984 :
1887 if ((entire_insn & 0xffffffff) == 0xf8000000)
1888 { itype = OR1K32BF_INSN_L_CUST7; goto extract_sfmt_l_msync; }
1889 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1890 case 2016 :
1891 if ((entire_insn & 0xffffffff) == 0xfc000000)
1892 { itype = OR1K32BF_INSN_L_CUST8; goto extract_sfmt_l_msync; }
1893 itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1894 default : itype = OR1K32BF_INSN_X_INVALID; goto extract_sfmt_empty;
1895 }
1896 }
1897 }
1898
1899 /* The instruction has been decoded, now extract the fields. */
1900
1901 extract_sfmt_empty:
1902 {
1903 const IDESC *idesc = &or1k32bf_insn_data[itype];
1904 #define FLD(f) abuf->fields.sfmt_empty.f
1905
1906
1907 /* Record the fields for the semantic handler. */
1908 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
1909
1910 #undef FLD
1911 return idesc;
1912 }
1913
1914 extract_sfmt_l_j:
1915 {
1916 const IDESC *idesc = &or1k32bf_insn_data[itype];
1917 CGEN_INSN_WORD insn = entire_insn;
1918 #define FLD(f) abuf->fields.sfmt_l_j.f
1919 USI f_disp26;
1920
1921 f_disp26 = ((((EXTRACT_LSB0_SINT (insn, 32, 25, 26)) << (2))) + (pc));
1922
1923 /* Record the fields for the semantic handler. */
1924 FLD (i_disp26) = f_disp26;
1925 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_j", "disp26 0x%x", 'x', f_disp26, (char *) 0));
1926
1927 #undef FLD
1928 return idesc;
1929 }
1930
1931 extract_sfmt_l_adrp:
1932 {
1933 const IDESC *idesc = &or1k32bf_insn_data[itype];
1934 CGEN_INSN_WORD insn = entire_insn;
1935 #define FLD(f) abuf->fields.sfmt_l_adrp.f
1936 UINT f_r1;
1937 USI f_disp21;
1938
1939 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
1940 f_disp21 = ((((EXTRACT_LSB0_SINT (insn, 32, 20, 21)) + (((SI) (pc) >> (13))))) << (13));
1941
1942 /* Record the fields for the semantic handler. */
1943 FLD (f_r1) = f_r1;
1944 FLD (i_disp21) = f_disp21;
1945 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_adrp", "f_r1 0x%x", 'x', f_r1, "disp21 0x%x", 'x', f_disp21, (char *) 0));
1946
1947 #undef FLD
1948 return idesc;
1949 }
1950
1951 extract_sfmt_l_jal:
1952 {
1953 const IDESC *idesc = &or1k32bf_insn_data[itype];
1954 CGEN_INSN_WORD insn = entire_insn;
1955 #define FLD(f) abuf->fields.sfmt_l_j.f
1956 USI f_disp26;
1957
1958 f_disp26 = ((((EXTRACT_LSB0_SINT (insn, 32, 25, 26)) << (2))) + (pc));
1959
1960 /* Record the fields for the semantic handler. */
1961 FLD (i_disp26) = f_disp26;
1962 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_jal", "disp26 0x%x", 'x', f_disp26, (char *) 0));
1963
1964 #undef FLD
1965 return idesc;
1966 }
1967
1968 extract_sfmt_l_jr:
1969 {
1970 const IDESC *idesc = &or1k32bf_insn_data[itype];
1971 CGEN_INSN_WORD insn = entire_insn;
1972 #define FLD(f) abuf->fields.sfmt_l_sll.f
1973 UINT f_r3;
1974
1975 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
1976
1977 /* Record the fields for the semantic handler. */
1978 FLD (f_r3) = f_r3;
1979 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_jr", "f_r3 0x%x", 'x', f_r3, (char *) 0));
1980
1981 #undef FLD
1982 return idesc;
1983 }
1984
1985 extract_sfmt_l_jalr:
1986 {
1987 const IDESC *idesc = &or1k32bf_insn_data[itype];
1988 CGEN_INSN_WORD insn = entire_insn;
1989 #define FLD(f) abuf->fields.sfmt_l_sll.f
1990 UINT f_r3;
1991
1992 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
1993
1994 /* Record the fields for the semantic handler. */
1995 FLD (f_r3) = f_r3;
1996 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_jalr", "f_r3 0x%x", 'x', f_r3, (char *) 0));
1997
1998 #undef FLD
1999 return idesc;
2000 }
2001
2002 extract_sfmt_l_bnf:
2003 {
2004 const IDESC *idesc = &or1k32bf_insn_data[itype];
2005 CGEN_INSN_WORD insn = entire_insn;
2006 #define FLD(f) abuf->fields.sfmt_l_j.f
2007 USI f_disp26;
2008
2009 f_disp26 = ((((EXTRACT_LSB0_SINT (insn, 32, 25, 26)) << (2))) + (pc));
2010
2011 /* Record the fields for the semantic handler. */
2012 FLD (i_disp26) = f_disp26;
2013 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_bnf", "disp26 0x%x", 'x', f_disp26, (char *) 0));
2014
2015 #undef FLD
2016 return idesc;
2017 }
2018
2019 extract_sfmt_l_trap:
2020 {
2021 const IDESC *idesc = &or1k32bf_insn_data[itype];
2022 #define FLD(f) abuf->fields.sfmt_empty.f
2023
2024
2025 /* Record the fields for the semantic handler. */
2026 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_trap", (char *) 0));
2027
2028 #undef FLD
2029 return idesc;
2030 }
2031
2032 extract_sfmt_l_msync:
2033 {
2034 const IDESC *idesc = &or1k32bf_insn_data[itype];
2035 #define FLD(f) abuf->fields.sfmt_empty.f
2036
2037
2038 /* Record the fields for the semantic handler. */
2039 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_msync", (char *) 0));
2040
2041 #undef FLD
2042 return idesc;
2043 }
2044
2045 extract_sfmt_l_nop_imm:
2046 {
2047 const IDESC *idesc = &or1k32bf_insn_data[itype];
2048 CGEN_INSN_WORD insn = entire_insn;
2049 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
2050 UINT f_uimm16;
2051
2052 f_uimm16 = EXTRACT_LSB0_UINT (insn, 32, 15, 16);
2053
2054 /* Record the fields for the semantic handler. */
2055 FLD (f_uimm16) = f_uimm16;
2056 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_nop_imm", "f_uimm16 0x%x", 'x', f_uimm16, (char *) 0));
2057
2058 #undef FLD
2059 return idesc;
2060 }
2061
2062 extract_sfmt_l_movhi:
2063 {
2064 const IDESC *idesc = &or1k32bf_insn_data[itype];
2065 CGEN_INSN_WORD insn = entire_insn;
2066 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
2067 UINT f_r1;
2068 UINT f_uimm16;
2069
2070 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2071 f_uimm16 = EXTRACT_LSB0_UINT (insn, 32, 15, 16);
2072
2073 /* Record the fields for the semantic handler. */
2074 FLD (f_uimm16) = f_uimm16;
2075 FLD (f_r1) = f_r1;
2076 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_movhi", "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2077
2078 #undef FLD
2079 return idesc;
2080 }
2081
2082 extract_sfmt_l_macrc:
2083 {
2084 const IDESC *idesc = &or1k32bf_insn_data[itype];
2085 CGEN_INSN_WORD insn = entire_insn;
2086 #define FLD(f) abuf->fields.sfmt_l_adrp.f
2087 UINT f_r1;
2088
2089 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2090
2091 /* Record the fields for the semantic handler. */
2092 FLD (f_r1) = f_r1;
2093 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_macrc", "f_r1 0x%x", 'x', f_r1, (char *) 0));
2094
2095 #undef FLD
2096 return idesc;
2097 }
2098
2099 extract_sfmt_l_mfspr:
2100 {
2101 const IDESC *idesc = &or1k32bf_insn_data[itype];
2102 CGEN_INSN_WORD insn = entire_insn;
2103 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
2104 UINT f_r1;
2105 UINT f_r2;
2106 UINT f_uimm16;
2107
2108 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2109 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2110 f_uimm16 = EXTRACT_LSB0_UINT (insn, 32, 15, 16);
2111
2112 /* Record the fields for the semantic handler. */
2113 FLD (f_r2) = f_r2;
2114 FLD (f_uimm16) = f_uimm16;
2115 FLD (f_r1) = f_r1;
2116 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mfspr", "f_r2 0x%x", 'x', f_r2, "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2117
2118 #undef FLD
2119 return idesc;
2120 }
2121
2122 extract_sfmt_l_mtspr:
2123 {
2124 const IDESC *idesc = &or1k32bf_insn_data[itype];
2125 CGEN_INSN_WORD insn = entire_insn;
2126 #define FLD(f) abuf->fields.sfmt_l_mtspr.f
2127 UINT f_imm16_25_5;
2128 UINT f_r2;
2129 UINT f_r3;
2130 UINT f_imm16_10_11;
2131 UINT f_uimm16_split;
2132
2133 f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2134 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2135 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2136 f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11);
2137 f_uimm16_split = ((UHI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11))));
2138
2139 /* Record the fields for the semantic handler. */
2140 FLD (f_r2) = f_r2;
2141 FLD (f_r3) = f_r3;
2142 FLD (f_uimm16_split) = f_uimm16_split;
2143 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mtspr", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_uimm16_split 0x%x", 'x', f_uimm16_split, (char *) 0));
2144
2145 #undef FLD
2146 return idesc;
2147 }
2148
2149 extract_sfmt_l_lwz:
2150 {
2151 const IDESC *idesc = &or1k32bf_insn_data[itype];
2152 CGEN_INSN_WORD insn = entire_insn;
2153 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2154 UINT f_r1;
2155 UINT f_r2;
2156 INT f_simm16;
2157
2158 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2159 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2160 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2161
2162 /* Record the fields for the semantic handler. */
2163 FLD (f_r2) = f_r2;
2164 FLD (f_simm16) = f_simm16;
2165 FLD (f_r1) = f_r1;
2166 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lwz", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2167
2168 #undef FLD
2169 return idesc;
2170 }
2171
2172 extract_sfmt_l_lws:
2173 {
2174 const IDESC *idesc = &or1k32bf_insn_data[itype];
2175 CGEN_INSN_WORD insn = entire_insn;
2176 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2177 UINT f_r1;
2178 UINT f_r2;
2179 INT f_simm16;
2180
2181 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2182 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2183 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2184
2185 /* Record the fields for the semantic handler. */
2186 FLD (f_r2) = f_r2;
2187 FLD (f_simm16) = f_simm16;
2188 FLD (f_r1) = f_r1;
2189 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lws", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2190
2191 #undef FLD
2192 return idesc;
2193 }
2194
2195 extract_sfmt_l_lwa:
2196 {
2197 const IDESC *idesc = &or1k32bf_insn_data[itype];
2198 CGEN_INSN_WORD insn = entire_insn;
2199 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2200 UINT f_r1;
2201 UINT f_r2;
2202 INT f_simm16;
2203
2204 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2205 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2206 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2207
2208 /* Record the fields for the semantic handler. */
2209 FLD (f_r2) = f_r2;
2210 FLD (f_simm16) = f_simm16;
2211 FLD (f_r1) = f_r1;
2212 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lwa", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2213
2214 #undef FLD
2215 return idesc;
2216 }
2217
2218 extract_sfmt_l_lbz:
2219 {
2220 const IDESC *idesc = &or1k32bf_insn_data[itype];
2221 CGEN_INSN_WORD insn = entire_insn;
2222 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2223 UINT f_r1;
2224 UINT f_r2;
2225 INT f_simm16;
2226
2227 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2228 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2229 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2230
2231 /* Record the fields for the semantic handler. */
2232 FLD (f_r2) = f_r2;
2233 FLD (f_simm16) = f_simm16;
2234 FLD (f_r1) = f_r1;
2235 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lbz", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2236
2237 #undef FLD
2238 return idesc;
2239 }
2240
2241 extract_sfmt_l_lbs:
2242 {
2243 const IDESC *idesc = &or1k32bf_insn_data[itype];
2244 CGEN_INSN_WORD insn = entire_insn;
2245 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2246 UINT f_r1;
2247 UINT f_r2;
2248 INT f_simm16;
2249
2250 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2251 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2252 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2253
2254 /* Record the fields for the semantic handler. */
2255 FLD (f_r2) = f_r2;
2256 FLD (f_simm16) = f_simm16;
2257 FLD (f_r1) = f_r1;
2258 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lbs", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2259
2260 #undef FLD
2261 return idesc;
2262 }
2263
2264 extract_sfmt_l_lhz:
2265 {
2266 const IDESC *idesc = &or1k32bf_insn_data[itype];
2267 CGEN_INSN_WORD insn = entire_insn;
2268 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2269 UINT f_r1;
2270 UINT f_r2;
2271 INT f_simm16;
2272
2273 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2274 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2275 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2276
2277 /* Record the fields for the semantic handler. */
2278 FLD (f_r2) = f_r2;
2279 FLD (f_simm16) = f_simm16;
2280 FLD (f_r1) = f_r1;
2281 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lhz", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2282
2283 #undef FLD
2284 return idesc;
2285 }
2286
2287 extract_sfmt_l_lhs:
2288 {
2289 const IDESC *idesc = &or1k32bf_insn_data[itype];
2290 CGEN_INSN_WORD insn = entire_insn;
2291 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2292 UINT f_r1;
2293 UINT f_r2;
2294 INT f_simm16;
2295
2296 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2297 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2298 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2299
2300 /* Record the fields for the semantic handler. */
2301 FLD (f_r2) = f_r2;
2302 FLD (f_simm16) = f_simm16;
2303 FLD (f_r1) = f_r1;
2304 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_lhs", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2305
2306 #undef FLD
2307 return idesc;
2308 }
2309
2310 extract_sfmt_l_sw:
2311 {
2312 const IDESC *idesc = &or1k32bf_insn_data[itype];
2313 CGEN_INSN_WORD insn = entire_insn;
2314 #define FLD(f) abuf->fields.sfmt_l_sw.f
2315 UINT f_imm16_25_5;
2316 UINT f_r2;
2317 UINT f_r3;
2318 UINT f_imm16_10_11;
2319 INT f_simm16_split;
2320
2321 f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2322 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2323 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2324 f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11);
2325 f_simm16_split = ((HI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11))));
2326
2327 /* Record the fields for the semantic handler. */
2328 FLD (f_r2) = f_r2;
2329 FLD (f_r3) = f_r3;
2330 FLD (f_simm16_split) = f_simm16_split;
2331 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sw", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_simm16_split 0x%x", 'x', f_simm16_split, (char *) 0));
2332
2333 #undef FLD
2334 return idesc;
2335 }
2336
2337 extract_sfmt_l_sb:
2338 {
2339 const IDESC *idesc = &or1k32bf_insn_data[itype];
2340 CGEN_INSN_WORD insn = entire_insn;
2341 #define FLD(f) abuf->fields.sfmt_l_sw.f
2342 UINT f_imm16_25_5;
2343 UINT f_r2;
2344 UINT f_r3;
2345 UINT f_imm16_10_11;
2346 INT f_simm16_split;
2347
2348 f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2349 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2350 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2351 f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11);
2352 f_simm16_split = ((HI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11))));
2353
2354 /* Record the fields for the semantic handler. */
2355 FLD (f_r2) = f_r2;
2356 FLD (f_r3) = f_r3;
2357 FLD (f_simm16_split) = f_simm16_split;
2358 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sb", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_simm16_split 0x%x", 'x', f_simm16_split, (char *) 0));
2359
2360 #undef FLD
2361 return idesc;
2362 }
2363
2364 extract_sfmt_l_sh:
2365 {
2366 const IDESC *idesc = &or1k32bf_insn_data[itype];
2367 CGEN_INSN_WORD insn = entire_insn;
2368 #define FLD(f) abuf->fields.sfmt_l_sw.f
2369 UINT f_imm16_25_5;
2370 UINT f_r2;
2371 UINT f_r3;
2372 UINT f_imm16_10_11;
2373 INT f_simm16_split;
2374
2375 f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2376 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2377 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2378 f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11);
2379 f_simm16_split = ((HI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11))));
2380
2381 /* Record the fields for the semantic handler. */
2382 FLD (f_r2) = f_r2;
2383 FLD (f_r3) = f_r3;
2384 FLD (f_simm16_split) = f_simm16_split;
2385 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sh", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_simm16_split 0x%x", 'x', f_simm16_split, (char *) 0));
2386
2387 #undef FLD
2388 return idesc;
2389 }
2390
2391 extract_sfmt_l_swa:
2392 {
2393 const IDESC *idesc = &or1k32bf_insn_data[itype];
2394 CGEN_INSN_WORD insn = entire_insn;
2395 #define FLD(f) abuf->fields.sfmt_l_sw.f
2396 UINT f_imm16_25_5;
2397 UINT f_r2;
2398 UINT f_r3;
2399 UINT f_imm16_10_11;
2400 INT f_simm16_split;
2401
2402 f_imm16_25_5 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2403 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2404 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2405 f_imm16_10_11 = EXTRACT_LSB0_UINT (insn, 32, 10, 11);
2406 f_simm16_split = ((HI) (UINT) (((((f_imm16_25_5) << (11))) | (f_imm16_10_11))));
2407
2408 /* Record the fields for the semantic handler. */
2409 FLD (f_r2) = f_r2;
2410 FLD (f_r3) = f_r3;
2411 FLD (f_simm16_split) = f_simm16_split;
2412 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_swa", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_simm16_split 0x%x", 'x', f_simm16_split, (char *) 0));
2413
2414 #undef FLD
2415 return idesc;
2416 }
2417
2418 extract_sfmt_l_sll:
2419 {
2420 const IDESC *idesc = &or1k32bf_insn_data[itype];
2421 CGEN_INSN_WORD insn = entire_insn;
2422 #define FLD(f) abuf->fields.sfmt_l_sll.f
2423 UINT f_r1;
2424 UINT f_r2;
2425 UINT f_r3;
2426
2427 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2428 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2429 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2430
2431 /* Record the fields for the semantic handler. */
2432 FLD (f_r2) = f_r2;
2433 FLD (f_r3) = f_r3;
2434 FLD (f_r1) = f_r1;
2435 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sll", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2436
2437 #undef FLD
2438 return idesc;
2439 }
2440
2441 extract_sfmt_l_slli:
2442 {
2443 const IDESC *idesc = &or1k32bf_insn_data[itype];
2444 CGEN_INSN_WORD insn = entire_insn;
2445 #define FLD(f) abuf->fields.sfmt_l_slli.f
2446 UINT f_r1;
2447 UINT f_r2;
2448 UINT f_uimm6;
2449
2450 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2451 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2452 f_uimm6 = EXTRACT_LSB0_UINT (insn, 32, 5, 6);
2453
2454 /* Record the fields for the semantic handler. */
2455 FLD (f_r2) = f_r2;
2456 FLD (f_uimm6) = f_uimm6;
2457 FLD (f_r1) = f_r1;
2458 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_slli", "f_r2 0x%x", 'x', f_r2, "f_uimm6 0x%x", 'x', f_uimm6, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2459
2460 #undef FLD
2461 return idesc;
2462 }
2463
2464 extract_sfmt_l_and:
2465 {
2466 const IDESC *idesc = &or1k32bf_insn_data[itype];
2467 CGEN_INSN_WORD insn = entire_insn;
2468 #define FLD(f) abuf->fields.sfmt_l_sll.f
2469 UINT f_r1;
2470 UINT f_r2;
2471 UINT f_r3;
2472
2473 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2474 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2475 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2476
2477 /* Record the fields for the semantic handler. */
2478 FLD (f_r2) = f_r2;
2479 FLD (f_r3) = f_r3;
2480 FLD (f_r1) = f_r1;
2481 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_and", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2482
2483 #undef FLD
2484 return idesc;
2485 }
2486
2487 extract_sfmt_l_add:
2488 {
2489 const IDESC *idesc = &or1k32bf_insn_data[itype];
2490 CGEN_INSN_WORD insn = entire_insn;
2491 #define FLD(f) abuf->fields.sfmt_l_sll.f
2492 UINT f_r1;
2493 UINT f_r2;
2494 UINT f_r3;
2495
2496 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2497 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2498 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2499
2500 /* Record the fields for the semantic handler. */
2501 FLD (f_r2) = f_r2;
2502 FLD (f_r3) = f_r3;
2503 FLD (f_r1) = f_r1;
2504 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_add", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2505
2506 #undef FLD
2507 return idesc;
2508 }
2509
2510 extract_sfmt_l_addc:
2511 {
2512 const IDESC *idesc = &or1k32bf_insn_data[itype];
2513 CGEN_INSN_WORD insn = entire_insn;
2514 #define FLD(f) abuf->fields.sfmt_l_sll.f
2515 UINT f_r1;
2516 UINT f_r2;
2517 UINT f_r3;
2518
2519 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2520 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2521 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2522
2523 /* Record the fields for the semantic handler. */
2524 FLD (f_r2) = f_r2;
2525 FLD (f_r3) = f_r3;
2526 FLD (f_r1) = f_r1;
2527 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_addc", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2528
2529 #undef FLD
2530 return idesc;
2531 }
2532
2533 extract_sfmt_l_mul:
2534 {
2535 const IDESC *idesc = &or1k32bf_insn_data[itype];
2536 CGEN_INSN_WORD insn = entire_insn;
2537 #define FLD(f) abuf->fields.sfmt_l_sll.f
2538 UINT f_r1;
2539 UINT f_r2;
2540 UINT f_r3;
2541
2542 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2543 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2544 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2545
2546 /* Record the fields for the semantic handler. */
2547 FLD (f_r2) = f_r2;
2548 FLD (f_r3) = f_r3;
2549 FLD (f_r1) = f_r1;
2550 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mul", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2551
2552 #undef FLD
2553 return idesc;
2554 }
2555
2556 extract_sfmt_l_muld:
2557 {
2558 const IDESC *idesc = &or1k32bf_insn_data[itype];
2559 CGEN_INSN_WORD insn = entire_insn;
2560 #define FLD(f) abuf->fields.sfmt_l_sll.f
2561 UINT f_r2;
2562 UINT f_r3;
2563
2564 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2565 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2566
2567 /* Record the fields for the semantic handler. */
2568 FLD (f_r2) = f_r2;
2569 FLD (f_r3) = f_r3;
2570 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_muld", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0));
2571
2572 #undef FLD
2573 return idesc;
2574 }
2575
2576 extract_sfmt_l_mulu:
2577 {
2578 const IDESC *idesc = &or1k32bf_insn_data[itype];
2579 CGEN_INSN_WORD insn = entire_insn;
2580 #define FLD(f) abuf->fields.sfmt_l_sll.f
2581 UINT f_r1;
2582 UINT f_r2;
2583 UINT f_r3;
2584
2585 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2586 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2587 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2588
2589 /* Record the fields for the semantic handler. */
2590 FLD (f_r2) = f_r2;
2591 FLD (f_r3) = f_r3;
2592 FLD (f_r1) = f_r1;
2593 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mulu", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2594
2595 #undef FLD
2596 return idesc;
2597 }
2598
2599 extract_sfmt_l_div:
2600 {
2601 const IDESC *idesc = &or1k32bf_insn_data[itype];
2602 CGEN_INSN_WORD insn = entire_insn;
2603 #define FLD(f) abuf->fields.sfmt_l_sll.f
2604 UINT f_r1;
2605 UINT f_r2;
2606 UINT f_r3;
2607
2608 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2609 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2610 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2611
2612 /* Record the fields for the semantic handler. */
2613 FLD (f_r2) = f_r2;
2614 FLD (f_r3) = f_r3;
2615 FLD (f_r1) = f_r1;
2616 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_div", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2617
2618 #undef FLD
2619 return idesc;
2620 }
2621
2622 extract_sfmt_l_divu:
2623 {
2624 const IDESC *idesc = &or1k32bf_insn_data[itype];
2625 CGEN_INSN_WORD insn = entire_insn;
2626 #define FLD(f) abuf->fields.sfmt_l_sll.f
2627 UINT f_r1;
2628 UINT f_r2;
2629 UINT f_r3;
2630
2631 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2632 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2633 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2634
2635 /* Record the fields for the semantic handler. */
2636 FLD (f_r2) = f_r2;
2637 FLD (f_r3) = f_r3;
2638 FLD (f_r1) = f_r1;
2639 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_divu", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2640
2641 #undef FLD
2642 return idesc;
2643 }
2644
2645 extract_sfmt_l_ff1:
2646 {
2647 const IDESC *idesc = &or1k32bf_insn_data[itype];
2648 CGEN_INSN_WORD insn = entire_insn;
2649 #define FLD(f) abuf->fields.sfmt_l_slli.f
2650 UINT f_r1;
2651 UINT f_r2;
2652
2653 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2654 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2655
2656 /* Record the fields for the semantic handler. */
2657 FLD (f_r2) = f_r2;
2658 FLD (f_r1) = f_r1;
2659 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_ff1", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2660
2661 #undef FLD
2662 return idesc;
2663 }
2664
2665 extract_sfmt_l_xori:
2666 {
2667 const IDESC *idesc = &or1k32bf_insn_data[itype];
2668 CGEN_INSN_WORD insn = entire_insn;
2669 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2670 UINT f_r1;
2671 UINT f_r2;
2672 INT f_simm16;
2673
2674 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2675 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2676 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2677
2678 /* Record the fields for the semantic handler. */
2679 FLD (f_r2) = f_r2;
2680 FLD (f_simm16) = f_simm16;
2681 FLD (f_r1) = f_r1;
2682 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_xori", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2683
2684 #undef FLD
2685 return idesc;
2686 }
2687
2688 extract_sfmt_l_addi:
2689 {
2690 const IDESC *idesc = &or1k32bf_insn_data[itype];
2691 CGEN_INSN_WORD insn = entire_insn;
2692 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2693 UINT f_r1;
2694 UINT f_r2;
2695 INT f_simm16;
2696
2697 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2698 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2699 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2700
2701 /* Record the fields for the semantic handler. */
2702 FLD (f_r2) = f_r2;
2703 FLD (f_simm16) = f_simm16;
2704 FLD (f_r1) = f_r1;
2705 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_addi", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2706
2707 #undef FLD
2708 return idesc;
2709 }
2710
2711 extract_sfmt_l_addic:
2712 {
2713 const IDESC *idesc = &or1k32bf_insn_data[itype];
2714 CGEN_INSN_WORD insn = entire_insn;
2715 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2716 UINT f_r1;
2717 UINT f_r2;
2718 INT f_simm16;
2719
2720 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2721 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2722 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2723
2724 /* Record the fields for the semantic handler. */
2725 FLD (f_r2) = f_r2;
2726 FLD (f_simm16) = f_simm16;
2727 FLD (f_r1) = f_r1;
2728 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_addic", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2729
2730 #undef FLD
2731 return idesc;
2732 }
2733
2734 extract_sfmt_l_muli:
2735 {
2736 const IDESC *idesc = &or1k32bf_insn_data[itype];
2737 CGEN_INSN_WORD insn = entire_insn;
2738 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2739 UINT f_r1;
2740 UINT f_r2;
2741 INT f_simm16;
2742
2743 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2744 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2745 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2746
2747 /* Record the fields for the semantic handler. */
2748 FLD (f_r2) = f_r2;
2749 FLD (f_simm16) = f_simm16;
2750 FLD (f_r1) = f_r1;
2751 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_muli", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2752
2753 #undef FLD
2754 return idesc;
2755 }
2756
2757 extract_sfmt_l_exths:
2758 {
2759 const IDESC *idesc = &or1k32bf_insn_data[itype];
2760 CGEN_INSN_WORD insn = entire_insn;
2761 #define FLD(f) abuf->fields.sfmt_l_slli.f
2762 UINT f_r1;
2763 UINT f_r2;
2764
2765 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2766 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2767
2768 /* Record the fields for the semantic handler. */
2769 FLD (f_r2) = f_r2;
2770 FLD (f_r1) = f_r1;
2771 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_exths", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2772
2773 #undef FLD
2774 return idesc;
2775 }
2776
2777 extract_sfmt_l_cmov:
2778 {
2779 const IDESC *idesc = &or1k32bf_insn_data[itype];
2780 CGEN_INSN_WORD insn = entire_insn;
2781 #define FLD(f) abuf->fields.sfmt_l_sll.f
2782 UINT f_r1;
2783 UINT f_r2;
2784 UINT f_r3;
2785
2786 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2787 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2788 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2789
2790 /* Record the fields for the semantic handler. */
2791 FLD (f_r2) = f_r2;
2792 FLD (f_r3) = f_r3;
2793 FLD (f_r1) = f_r1;
2794 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_cmov", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2795
2796 #undef FLD
2797 return idesc;
2798 }
2799
2800 extract_sfmt_l_sfgts:
2801 {
2802 const IDESC *idesc = &or1k32bf_insn_data[itype];
2803 CGEN_INSN_WORD insn = entire_insn;
2804 #define FLD(f) abuf->fields.sfmt_l_sll.f
2805 UINT f_r2;
2806 UINT f_r3;
2807
2808 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2809 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2810
2811 /* Record the fields for the semantic handler. */
2812 FLD (f_r2) = f_r2;
2813 FLD (f_r3) = f_r3;
2814 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sfgts", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0));
2815
2816 #undef FLD
2817 return idesc;
2818 }
2819
2820 extract_sfmt_l_sfgtsi:
2821 {
2822 const IDESC *idesc = &or1k32bf_insn_data[itype];
2823 CGEN_INSN_WORD insn = entire_insn;
2824 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2825 UINT f_r2;
2826 INT f_simm16;
2827
2828 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2829 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2830
2831 /* Record the fields for the semantic handler. */
2832 FLD (f_r2) = f_r2;
2833 FLD (f_simm16) = f_simm16;
2834 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_sfgtsi", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, (char *) 0));
2835
2836 #undef FLD
2837 return idesc;
2838 }
2839
2840 extract_sfmt_l_mac:
2841 {
2842 const IDESC *idesc = &or1k32bf_insn_data[itype];
2843 CGEN_INSN_WORD insn = entire_insn;
2844 #define FLD(f) abuf->fields.sfmt_l_sll.f
2845 UINT f_r2;
2846 UINT f_r3;
2847
2848 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2849 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2850
2851 /* Record the fields for the semantic handler. */
2852 FLD (f_r2) = f_r2;
2853 FLD (f_r3) = f_r3;
2854 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_mac", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0));
2855
2856 #undef FLD
2857 return idesc;
2858 }
2859
2860 extract_sfmt_l_maci:
2861 {
2862 const IDESC *idesc = &or1k32bf_insn_data[itype];
2863 CGEN_INSN_WORD insn = entire_insn;
2864 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2865 UINT f_r2;
2866 INT f_simm16;
2867
2868 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2869 f_simm16 = EXTRACT_LSB0_SINT (insn, 32, 15, 16);
2870
2871 /* Record the fields for the semantic handler. */
2872 FLD (f_r2) = f_r2;
2873 FLD (f_simm16) = f_simm16;
2874 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_maci", "f_r2 0x%x", 'x', f_r2, "f_simm16 0x%x", 'x', f_simm16, (char *) 0));
2875
2876 #undef FLD
2877 return idesc;
2878 }
2879
2880 extract_sfmt_l_macu:
2881 {
2882 const IDESC *idesc = &or1k32bf_insn_data[itype];
2883 CGEN_INSN_WORD insn = entire_insn;
2884 #define FLD(f) abuf->fields.sfmt_l_sll.f
2885 UINT f_r2;
2886 UINT f_r3;
2887
2888 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2889 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2890
2891 /* Record the fields for the semantic handler. */
2892 FLD (f_r2) = f_r2;
2893 FLD (f_r3) = f_r3;
2894 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_l_macu", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0));
2895
2896 #undef FLD
2897 return idesc;
2898 }
2899
2900 extract_sfmt_lf_add_s:
2901 {
2902 const IDESC *idesc = &or1k32bf_insn_data[itype];
2903 CGEN_INSN_WORD insn = entire_insn;
2904 #define FLD(f) abuf->fields.sfmt_l_sll.f
2905 UINT f_r1;
2906 UINT f_r2;
2907 UINT f_r3;
2908
2909 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2910 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2911 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2912
2913 /* Record the fields for the semantic handler. */
2914 FLD (f_r2) = f_r2;
2915 FLD (f_r3) = f_r3;
2916 FLD (f_r1) = f_r1;
2917 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_add_s", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2918
2919 #undef FLD
2920 return idesc;
2921 }
2922
2923 extract_sfmt_lf_add_d32:
2924 {
2925 const IDESC *idesc = &or1k32bf_insn_data[itype];
2926 CGEN_INSN_WORD insn = entire_insn;
2927 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2928 UINT f_r1;
2929 UINT f_r2;
2930 UINT f_r3;
2931 UINT f_rdoff_10_1;
2932 UINT f_raoff_9_1;
2933 UINT f_rboff_8_1;
2934 SI f_rdd32;
2935 SI f_rad32;
2936 SI f_rbd32;
2937
2938 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2939 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2940 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
2941 f_rdoff_10_1 = EXTRACT_LSB0_UINT (insn, 32, 10, 1);
2942 f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1);
2943 f_rboff_8_1 = EXTRACT_LSB0_UINT (insn, 32, 8, 1);
2944 f_rdd32 = ((f_r1) | (((f_rdoff_10_1) << (5))));
2945 f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5))));
2946 f_rbd32 = ((f_r3) | (((f_rboff_8_1) << (5))));
2947
2948 /* Record the fields for the semantic handler. */
2949 FLD (f_rad32) = f_rad32;
2950 FLD (f_rbd32) = f_rbd32;
2951 FLD (f_rdd32) = f_rdd32;
2952 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_add_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rbd32 0x%x", 'x', f_rbd32, "f_rdd32 0x%x", 'x', f_rdd32, (char *) 0));
2953
2954 #undef FLD
2955 return idesc;
2956 }
2957
2958 extract_sfmt_lf_itof_s:
2959 {
2960 const IDESC *idesc = &or1k32bf_insn_data[itype];
2961 CGEN_INSN_WORD insn = entire_insn;
2962 #define FLD(f) abuf->fields.sfmt_l_slli.f
2963 UINT f_r1;
2964 UINT f_r2;
2965
2966 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2967 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2968
2969 /* Record the fields for the semantic handler. */
2970 FLD (f_r2) = f_r2;
2971 FLD (f_r1) = f_r1;
2972 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_itof_s", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, (char *) 0));
2973
2974 #undef FLD
2975 return idesc;
2976 }
2977
2978 extract_sfmt_lf_itof_d32:
2979 {
2980 const IDESC *idesc = &or1k32bf_insn_data[itype];
2981 CGEN_INSN_WORD insn = entire_insn;
2982 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2983 UINT f_r1;
2984 UINT f_r2;
2985 UINT f_rdoff_10_1;
2986 UINT f_raoff_9_1;
2987 SI f_rdd32;
2988 SI f_rad32;
2989
2990 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
2991 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
2992 f_rdoff_10_1 = EXTRACT_LSB0_UINT (insn, 32, 10, 1);
2993 f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1);
2994 f_rdd32 = ((f_r1) | (((f_rdoff_10_1) << (5))));
2995 f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5))));
2996
2997 /* Record the fields for the semantic handler. */
2998 FLD (f_rad32) = f_rad32;
2999 FLD (f_rdd32) = f_rdd32;
3000 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_itof_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rdd32 0x%x", 'x', f_rdd32, (char *) 0));
3001
3002 #undef FLD
3003 return idesc;
3004 }
3005
3006 extract_sfmt_lf_ftoi_s:
3007 {
3008 const IDESC *idesc = &or1k32bf_insn_data[itype];
3009 CGEN_INSN_WORD insn = entire_insn;
3010 #define FLD(f) abuf->fields.sfmt_l_slli.f
3011 UINT f_r1;
3012 UINT f_r2;
3013
3014 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
3015 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
3016
3017 /* Record the fields for the semantic handler. */
3018 FLD (f_r2) = f_r2;
3019 FLD (f_r1) = f_r1;
3020 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_ftoi_s", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, (char *) 0));
3021
3022 #undef FLD
3023 return idesc;
3024 }
3025
3026 extract_sfmt_lf_ftoi_d32:
3027 {
3028 const IDESC *idesc = &or1k32bf_insn_data[itype];
3029 CGEN_INSN_WORD insn = entire_insn;
3030 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3031 UINT f_r1;
3032 UINT f_r2;
3033 UINT f_rdoff_10_1;
3034 UINT f_raoff_9_1;
3035 SI f_rdd32;
3036 SI f_rad32;
3037
3038 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
3039 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
3040 f_rdoff_10_1 = EXTRACT_LSB0_UINT (insn, 32, 10, 1);
3041 f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1);
3042 f_rdd32 = ((f_r1) | (((f_rdoff_10_1) << (5))));
3043 f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5))));
3044
3045 /* Record the fields for the semantic handler. */
3046 FLD (f_rad32) = f_rad32;
3047 FLD (f_rdd32) = f_rdd32;
3048 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_ftoi_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rdd32 0x%x", 'x', f_rdd32, (char *) 0));
3049
3050 #undef FLD
3051 return idesc;
3052 }
3053
3054 extract_sfmt_lf_sfeq_s:
3055 {
3056 const IDESC *idesc = &or1k32bf_insn_data[itype];
3057 CGEN_INSN_WORD insn = entire_insn;
3058 #define FLD(f) abuf->fields.sfmt_l_sll.f
3059 UINT f_r2;
3060 UINT f_r3;
3061
3062 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
3063 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
3064
3065 /* Record the fields for the semantic handler. */
3066 FLD (f_r2) = f_r2;
3067 FLD (f_r3) = f_r3;
3068 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_sfeq_s", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, (char *) 0));
3069
3070 #undef FLD
3071 return idesc;
3072 }
3073
3074 extract_sfmt_lf_sfeq_d32:
3075 {
3076 const IDESC *idesc = &or1k32bf_insn_data[itype];
3077 CGEN_INSN_WORD insn = entire_insn;
3078 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3079 UINT f_r2;
3080 UINT f_r3;
3081 UINT f_raoff_9_1;
3082 UINT f_rboff_8_1;
3083 SI f_rad32;
3084 SI f_rbd32;
3085
3086 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
3087 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
3088 f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1);
3089 f_rboff_8_1 = EXTRACT_LSB0_UINT (insn, 32, 8, 1);
3090 f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5))));
3091 f_rbd32 = ((f_r3) | (((f_rboff_8_1) << (5))));
3092
3093 /* Record the fields for the semantic handler. */
3094 FLD (f_rad32) = f_rad32;
3095 FLD (f_rbd32) = f_rbd32;
3096 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_sfeq_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rbd32 0x%x", 'x', f_rbd32, (char *) 0));
3097
3098 #undef FLD
3099 return idesc;
3100 }
3101
3102 extract_sfmt_lf_madd_s:
3103 {
3104 const IDESC *idesc = &or1k32bf_insn_data[itype];
3105 CGEN_INSN_WORD insn = entire_insn;
3106 #define FLD(f) abuf->fields.sfmt_l_sll.f
3107 UINT f_r1;
3108 UINT f_r2;
3109 UINT f_r3;
3110
3111 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
3112 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
3113 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
3114
3115 /* Record the fields for the semantic handler. */
3116 FLD (f_r2) = f_r2;
3117 FLD (f_r3) = f_r3;
3118 FLD (f_r1) = f_r1;
3119 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_madd_s", "f_r2 0x%x", 'x', f_r2, "f_r3 0x%x", 'x', f_r3, "f_r1 0x%x", 'x', f_r1, (char *) 0));
3120
3121 #undef FLD
3122 return idesc;
3123 }
3124
3125 extract_sfmt_lf_madd_d32:
3126 {
3127 const IDESC *idesc = &or1k32bf_insn_data[itype];
3128 CGEN_INSN_WORD insn = entire_insn;
3129 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3130 UINT f_r1;
3131 UINT f_r2;
3132 UINT f_r3;
3133 UINT f_rdoff_10_1;
3134 UINT f_raoff_9_1;
3135 UINT f_rboff_8_1;
3136 SI f_rdd32;
3137 SI f_rad32;
3138 SI f_rbd32;
3139
3140 f_r1 = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
3141 f_r2 = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
3142 f_r3 = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
3143 f_rdoff_10_1 = EXTRACT_LSB0_UINT (insn, 32, 10, 1);
3144 f_raoff_9_1 = EXTRACT_LSB0_UINT (insn, 32, 9, 1);
3145 f_rboff_8_1 = EXTRACT_LSB0_UINT (insn, 32, 8, 1);
3146 f_rdd32 = ((f_r1) | (((f_rdoff_10_1) << (5))));
3147 f_rad32 = ((f_r2) | (((f_raoff_9_1) << (5))));
3148 f_rbd32 = ((f_r3) | (((f_rboff_8_1) << (5))));
3149
3150 /* Record the fields for the semantic handler. */
3151 FLD (f_rad32) = f_rad32;
3152 FLD (f_rbd32) = f_rbd32;
3153 FLD (f_rdd32) = f_rdd32;
3154 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lf_madd_d32", "f_rad32 0x%x", 'x', f_rad32, "f_rbd32 0x%x", 'x', f_rbd32, "f_rdd32 0x%x", 'x', f_rdd32, (char *) 0));
3155
3156 #undef FLD
3157 return idesc;
3158 }
3159
3160 }
This page took 0.119611 seconds and 4 git commands to generate.