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