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