or1k-opinst.c revision 1.8 1 1.6 christos /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */
2 1.1 christos /* Semantic operand instances for or1k.
3 1.1 christos
4 1.1 christos THIS FILE IS MACHINE GENERATED WITH CGEN.
5 1.1 christos
6 1.8 christos Copyright (C) 1996-2022 Free Software Foundation, Inc.
7 1.1 christos
8 1.1 christos This file is part of the GNU Binutils and/or GDB, the GNU debugger.
9 1.1 christos
10 1.1 christos This file is free software; you can redistribute it and/or modify
11 1.1 christos it under the terms of the GNU General Public License as published by
12 1.1 christos the Free Software Foundation; either version 3, or (at your option)
13 1.1 christos any later version.
14 1.1 christos
15 1.1 christos It is distributed in the hope that it will be useful, but WITHOUT
16 1.1 christos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17 1.1 christos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
18 1.1 christos License for more details.
19 1.1 christos
20 1.1 christos You should have received a copy of the GNU General Public License along
21 1.1 christos with this program; if not, write to the Free Software Foundation, Inc.,
22 1.1 christos 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
23 1.1 christos
24 1.1 christos */
25 1.1 christos
26 1.1 christos #include "sysdep.h"
27 1.1 christos #include "ansidecl.h"
28 1.1 christos #include "bfd.h"
29 1.1 christos #include "symcat.h"
30 1.1 christos #include "or1k-desc.h"
31 1.1 christos #include "or1k-opc.h"
32 1.1 christos
33 1.1 christos /* Operand references. */
34 1.1 christos
35 1.1 christos #define OP_ENT(op) OR1K_OPERAND_##op
36 1.1 christos #define INPUT CGEN_OPINST_INPUT
37 1.1 christos #define OUTPUT CGEN_OPINST_OUTPUT
38 1.1 christos #define END CGEN_OPINST_END
39 1.1 christos #define COND_REF CGEN_OPINST_COND_REF
40 1.1 christos
41 1.1 christos static const CGEN_OPINST sfmt_empty_ops[] ATTRIBUTE_UNUSED = {
42 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
43 1.1 christos };
44 1.1 christos
45 1.1 christos static const CGEN_OPINST sfmt_l_j_ops[] ATTRIBUTE_UNUSED = {
46 1.8 christos { INPUT, "disp26", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP26), 0, 0 },
47 1.8 christos { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
48 1.8 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
49 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
50 1.1 christos };
51 1.1 christos
52 1.7 christos static const CGEN_OPINST sfmt_l_adrp_ops[] ATTRIBUTE_UNUSED = {
53 1.8 christos { INPUT, "disp21", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP21), 0, 0 },
54 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
55 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
56 1.7 christos };
57 1.7 christos
58 1.1 christos static const CGEN_OPINST sfmt_l_jal_ops[] ATTRIBUTE_UNUSED = {
59 1.8 christos { INPUT, "disp26", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP26), 0, 0 },
60 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
61 1.8 christos { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
62 1.8 christos { OUTPUT, "h_gpr_USI_9", HW_H_GPR, CGEN_MODE_USI, 0, 9, 0 },
63 1.8 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
64 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
65 1.1 christos };
66 1.1 christos
67 1.1 christos static const CGEN_OPINST sfmt_l_jr_ops[] ATTRIBUTE_UNUSED = {
68 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
69 1.8 christos { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
70 1.8 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
71 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
72 1.1 christos };
73 1.1 christos
74 1.1 christos static const CGEN_OPINST sfmt_l_jalr_ops[] ATTRIBUTE_UNUSED = {
75 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
76 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
77 1.8 christos { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
78 1.8 christos { OUTPUT, "h_gpr_USI_9", HW_H_GPR, CGEN_MODE_USI, 0, 9, 0 },
79 1.8 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
80 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
81 1.1 christos };
82 1.1 christos
83 1.1 christos static const CGEN_OPINST sfmt_l_bnf_ops[] ATTRIBUTE_UNUSED = {
84 1.8 christos { INPUT, "disp26", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP26), 0, COND_REF },
85 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
86 1.8 christos { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, COND_REF },
87 1.8 christos { INPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
88 1.8 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
89 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
90 1.1 christos };
91 1.1 christos
92 1.1 christos static const CGEN_OPINST sfmt_l_trap_ops[] ATTRIBUTE_UNUSED = {
93 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
94 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
95 1.1 christos };
96 1.1 christos
97 1.1 christos static const CGEN_OPINST sfmt_l_msync_ops[] ATTRIBUTE_UNUSED = {
98 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
99 1.1 christos };
100 1.1 christos
101 1.1 christos static const CGEN_OPINST sfmt_l_nop_imm_ops[] ATTRIBUTE_UNUSED = {
102 1.1 christos { INPUT, "uimm16", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
103 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
104 1.1 christos };
105 1.1 christos
106 1.1 christos static const CGEN_OPINST sfmt_l_movhi_ops[] ATTRIBUTE_UNUSED = {
107 1.1 christos { INPUT, "uimm16", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
108 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
109 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
110 1.1 christos };
111 1.1 christos
112 1.1 christos static const CGEN_OPINST sfmt_l_macrc_ops[] ATTRIBUTE_UNUSED = {
113 1.8 christos { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
114 1.8 christos { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
115 1.8 christos { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
116 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
117 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
118 1.1 christos };
119 1.1 christos
120 1.1 christos static const CGEN_OPINST sfmt_l_mfspr_ops[] ATTRIBUTE_UNUSED = {
121 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
122 1.1 christos { INPUT, "uimm16", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
123 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
124 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
125 1.1 christos };
126 1.1 christos
127 1.1 christos static const CGEN_OPINST sfmt_l_mtspr_ops[] ATTRIBUTE_UNUSED = {
128 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
129 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
130 1.1 christos { INPUT, "uimm16_split", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16_SPLIT), 0, 0 },
131 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
132 1.1 christos };
133 1.1 christos
134 1.1 christos static const CGEN_OPINST sfmt_l_lwz_ops[] ATTRIBUTE_UNUSED = {
135 1.1 christos { INPUT, "h_memory_USI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_4", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, 0 },
136 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
137 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
138 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
139 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
140 1.1 christos };
141 1.1 christos
142 1.1 christos static const CGEN_OPINST sfmt_l_lws_ops[] ATTRIBUTE_UNUSED = {
143 1.1 christos { INPUT, "h_memory_SI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_4", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
144 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
145 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
146 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
147 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
148 1.1 christos };
149 1.1 christos
150 1.1 christos static const CGEN_OPINST sfmt_l_lwa_ops[] ATTRIBUTE_UNUSED = {
151 1.1 christos { INPUT, "h_memory_USI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_4", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, 0 },
152 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
153 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
154 1.1 christos { OUTPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
155 1.1 christos { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, 0 },
156 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
157 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
158 1.1 christos };
159 1.1 christos
160 1.1 christos static const CGEN_OPINST sfmt_l_lbz_ops[] ATTRIBUTE_UNUSED = {
161 1.1 christos { INPUT, "h_memory_UQI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_1", HW_H_MEMORY, CGEN_MODE_UQI, 0, 0, 0 },
162 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
163 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
164 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
165 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
166 1.1 christos };
167 1.1 christos
168 1.1 christos static const CGEN_OPINST sfmt_l_lbs_ops[] ATTRIBUTE_UNUSED = {
169 1.1 christos { INPUT, "h_memory_QI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_1", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
170 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
171 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
172 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
173 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
174 1.1 christos };
175 1.1 christos
176 1.1 christos static const CGEN_OPINST sfmt_l_lhz_ops[] ATTRIBUTE_UNUSED = {
177 1.1 christos { INPUT, "h_memory_UHI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_2", HW_H_MEMORY, CGEN_MODE_UHI, 0, 0, 0 },
178 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
179 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
180 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
181 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
182 1.1 christos };
183 1.1 christos
184 1.1 christos static const CGEN_OPINST sfmt_l_lhs_ops[] ATTRIBUTE_UNUSED = {
185 1.1 christos { INPUT, "h_memory_HI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
186 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
187 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
188 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
189 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
190 1.1 christos };
191 1.1 christos
192 1.1 christos static const CGEN_OPINST sfmt_l_sw_ops[] ATTRIBUTE_UNUSED = {
193 1.1 christos { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
194 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
195 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
196 1.1 christos { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
197 1.1 christos { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, COND_REF },
198 1.1 christos { OUTPUT, "h_memory_USI_addr", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, 0 },
199 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
200 1.1 christos };
201 1.1 christos
202 1.1 christos static const CGEN_OPINST sfmt_l_sb_ops[] ATTRIBUTE_UNUSED = {
203 1.1 christos { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
204 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
205 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
206 1.1 christos { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
207 1.1 christos { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, COND_REF },
208 1.1 christos { OUTPUT, "h_memory_UQI_addr", HW_H_MEMORY, CGEN_MODE_UQI, 0, 0, 0 },
209 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
210 1.1 christos };
211 1.1 christos
212 1.1 christos static const CGEN_OPINST sfmt_l_sh_ops[] ATTRIBUTE_UNUSED = {
213 1.1 christos { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
214 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
215 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
216 1.1 christos { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
217 1.1 christos { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, COND_REF },
218 1.1 christos { OUTPUT, "h_memory_UHI_addr", HW_H_MEMORY, CGEN_MODE_UHI, 0, 0, 0 },
219 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
220 1.1 christos };
221 1.1 christos
222 1.1 christos static const CGEN_OPINST sfmt_l_swa_ops[] ATTRIBUTE_UNUSED = {
223 1.1 christos { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
224 1.1 christos { INPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, 0 },
225 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
226 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, COND_REF },
227 1.1 christos { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
228 1.8 christos { INPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
229 1.1 christos { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, 0 },
230 1.1 christos { OUTPUT, "h_memory_USI_addr", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, COND_REF },
231 1.8 christos { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
232 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
233 1.1 christos };
234 1.1 christos
235 1.1 christos static const CGEN_OPINST sfmt_l_sll_ops[] ATTRIBUTE_UNUSED = {
236 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
237 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
238 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
239 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
240 1.1 christos };
241 1.1 christos
242 1.1 christos static const CGEN_OPINST sfmt_l_slli_ops[] ATTRIBUTE_UNUSED = {
243 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
244 1.1 christos { INPUT, "uimm6", HW_H_UIMM6, CGEN_MODE_UINT, OP_ENT (UIMM6), 0, 0 },
245 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
246 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
247 1.1 christos };
248 1.1 christos
249 1.1 christos static const CGEN_OPINST sfmt_l_and_ops[] ATTRIBUTE_UNUSED = {
250 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
251 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
252 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
253 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
254 1.1 christos };
255 1.1 christos
256 1.1 christos static const CGEN_OPINST sfmt_l_add_ops[] ATTRIBUTE_UNUSED = {
257 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
258 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
259 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
260 1.8 christos { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
261 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
262 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
263 1.8 christos { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
264 1.8 christos { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
265 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
266 1.1 christos };
267 1.1 christos
268 1.1 christos static const CGEN_OPINST sfmt_l_addc_ops[] ATTRIBUTE_UNUSED = {
269 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
270 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
271 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
272 1.8 christos { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
273 1.8 christos { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
274 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
275 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
276 1.8 christos { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
277 1.8 christos { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
278 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
279 1.1 christos };
280 1.1 christos
281 1.7 christos static const CGEN_OPINST sfmt_l_mul_ops[] ATTRIBUTE_UNUSED = {
282 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
283 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
284 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
285 1.8 christos { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
286 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
287 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
288 1.8 christos { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
289 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
290 1.7 christos };
291 1.7 christos
292 1.7 christos static const CGEN_OPINST sfmt_l_muld_ops[] ATTRIBUTE_UNUSED = {
293 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
294 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
295 1.8 christos { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
296 1.8 christos { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
297 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
298 1.7 christos };
299 1.7 christos
300 1.7 christos static const CGEN_OPINST sfmt_l_mulu_ops[] ATTRIBUTE_UNUSED = {
301 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
302 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
303 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
304 1.8 christos { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
305 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
306 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
307 1.8 christos { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
308 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
309 1.7 christos };
310 1.7 christos
311 1.1 christos static const CGEN_OPINST sfmt_l_div_ops[] ATTRIBUTE_UNUSED = {
312 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
313 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, COND_REF },
314 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
315 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, COND_REF },
316 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, COND_REF },
317 1.8 christos { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, COND_REF },
318 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
319 1.7 christos };
320 1.7 christos
321 1.7 christos static const CGEN_OPINST sfmt_l_divu_ops[] ATTRIBUTE_UNUSED = {
322 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
323 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, COND_REF },
324 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
325 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, COND_REF },
326 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, COND_REF },
327 1.8 christos { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, COND_REF },
328 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
329 1.1 christos };
330 1.1 christos
331 1.1 christos static const CGEN_OPINST sfmt_l_ff1_ops[] ATTRIBUTE_UNUSED = {
332 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
333 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
334 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
335 1.1 christos };
336 1.1 christos
337 1.1 christos static const CGEN_OPINST sfmt_l_xori_ops[] ATTRIBUTE_UNUSED = {
338 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
339 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
340 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
341 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
342 1.1 christos };
343 1.1 christos
344 1.1 christos static const CGEN_OPINST sfmt_l_addi_ops[] ATTRIBUTE_UNUSED = {
345 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
346 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
347 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
348 1.8 christos { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
349 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
350 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
351 1.8 christos { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
352 1.8 christos { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
353 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
354 1.1 christos };
355 1.1 christos
356 1.1 christos static const CGEN_OPINST sfmt_l_addic_ops[] ATTRIBUTE_UNUSED = {
357 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
358 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
359 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
360 1.8 christos { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
361 1.8 christos { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
362 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
363 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
364 1.8 christos { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
365 1.8 christos { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
366 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
367 1.1 christos };
368 1.1 christos
369 1.7 christos static const CGEN_OPINST sfmt_l_muli_ops[] ATTRIBUTE_UNUSED = {
370 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
371 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
372 1.7 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
373 1.8 christos { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
374 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
375 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
376 1.8 christos { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
377 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
378 1.7 christos };
379 1.7 christos
380 1.1 christos static const CGEN_OPINST sfmt_l_exths_ops[] ATTRIBUTE_UNUSED = {
381 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
382 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
383 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
384 1.1 christos };
385 1.1 christos
386 1.1 christos static const CGEN_OPINST sfmt_l_cmov_ops[] ATTRIBUTE_UNUSED = {
387 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, COND_REF },
388 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, COND_REF },
389 1.8 christos { INPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
390 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, COND_REF },
391 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
392 1.1 christos };
393 1.1 christos
394 1.1 christos static const CGEN_OPINST sfmt_l_sfgts_ops[] ATTRIBUTE_UNUSED = {
395 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
396 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
397 1.8 christos { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
398 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
399 1.1 christos };
400 1.1 christos
401 1.1 christos static const CGEN_OPINST sfmt_l_sfgtsi_ops[] ATTRIBUTE_UNUSED = {
402 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
403 1.1 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
404 1.8 christos { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
405 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
406 1.1 christos };
407 1.1 christos
408 1.1 christos static const CGEN_OPINST sfmt_l_mac_ops[] ATTRIBUTE_UNUSED = {
409 1.8 christos { INPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
410 1.8 christos { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
411 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
412 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
413 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
414 1.8 christos { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
415 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
416 1.8 christos { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
417 1.8 christos { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
418 1.8 christos { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
419 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
420 1.1 christos };
421 1.1 christos
422 1.1 christos static const CGEN_OPINST sfmt_l_maci_ops[] ATTRIBUTE_UNUSED = {
423 1.8 christos { INPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
424 1.8 christos { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
425 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
426 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
427 1.8 christos { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
428 1.8 christos { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
429 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
430 1.8 christos { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
431 1.8 christos { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
432 1.8 christos { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
433 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
434 1.7 christos };
435 1.7 christos
436 1.7 christos static const CGEN_OPINST sfmt_l_macu_ops[] ATTRIBUTE_UNUSED = {
437 1.8 christos { INPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
438 1.8 christos { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
439 1.8 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
440 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
441 1.8 christos { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
442 1.8 christos { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
443 1.8 christos { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
444 1.8 christos { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
445 1.8 christos { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
446 1.8 christos { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
447 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
448 1.1 christos };
449 1.1 christos
450 1.1 christos static const CGEN_OPINST sfmt_lf_add_s_ops[] ATTRIBUTE_UNUSED = {
451 1.1 christos { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
452 1.1 christos { INPUT, "rBSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RBSF), 0, 0 },
453 1.1 christos { OUTPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
454 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
455 1.1 christos };
456 1.1 christos
457 1.7 christos static const CGEN_OPINST sfmt_lf_add_d32_ops[] ATTRIBUTE_UNUSED = {
458 1.7 christos { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
459 1.7 christos { INPUT, "rBD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RBD32F), 0, 0 },
460 1.7 christos { OUTPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
461 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
462 1.7 christos };
463 1.7 christos
464 1.1 christos static const CGEN_OPINST sfmt_lf_itof_s_ops[] ATTRIBUTE_UNUSED = {
465 1.8 christos { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
466 1.8 christos { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
467 1.1 christos { OUTPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
468 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
469 1.1 christos };
470 1.1 christos
471 1.7 christos static const CGEN_OPINST sfmt_lf_itof_d32_ops[] ATTRIBUTE_UNUSED = {
472 1.7 christos { INPUT, "rADI", HW_H_I64R, CGEN_MODE_DI, OP_ENT (RADI), 0, 0 },
473 1.8 christos { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
474 1.7 christos { OUTPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
475 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
476 1.7 christos };
477 1.7 christos
478 1.1 christos static const CGEN_OPINST sfmt_lf_ftoi_s_ops[] ATTRIBUTE_UNUSED = {
479 1.1 christos { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
480 1.8 christos { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
481 1.8 christos { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
482 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
483 1.1 christos };
484 1.1 christos
485 1.7 christos static const CGEN_OPINST sfmt_lf_ftoi_d32_ops[] ATTRIBUTE_UNUSED = {
486 1.7 christos { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
487 1.8 christos { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
488 1.7 christos { OUTPUT, "rDDI", HW_H_I64R, CGEN_MODE_DI, OP_ENT (RDDI), 0, 0 },
489 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
490 1.7 christos };
491 1.7 christos
492 1.7 christos static const CGEN_OPINST sfmt_lf_sfeq_s_ops[] ATTRIBUTE_UNUSED = {
493 1.1 christos { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
494 1.1 christos { INPUT, "rBSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RBSF), 0, 0 },
495 1.8 christos { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
496 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
497 1.1 christos };
498 1.1 christos
499 1.7 christos static const CGEN_OPINST sfmt_lf_sfeq_d32_ops[] ATTRIBUTE_UNUSED = {
500 1.7 christos { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
501 1.7 christos { INPUT, "rBD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RBD32F), 0, 0 },
502 1.8 christos { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
503 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
504 1.7 christos };
505 1.7 christos
506 1.1 christos static const CGEN_OPINST sfmt_lf_madd_s_ops[] ATTRIBUTE_UNUSED = {
507 1.1 christos { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
508 1.1 christos { INPUT, "rBSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RBSF), 0, 0 },
509 1.1 christos { INPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
510 1.1 christos { OUTPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
511 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
512 1.1 christos };
513 1.1 christos
514 1.7 christos static const CGEN_OPINST sfmt_lf_madd_d32_ops[] ATTRIBUTE_UNUSED = {
515 1.7 christos { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
516 1.7 christos { INPUT, "rBD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RBD32F), 0, 0 },
517 1.7 christos { INPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
518 1.7 christos { OUTPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
519 1.7 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
520 1.7 christos };
521 1.7 christos
522 1.1 christos #undef OP_ENT
523 1.1 christos #undef INPUT
524 1.1 christos #undef OUTPUT
525 1.1 christos #undef END
526 1.1 christos #undef COND_REF
527 1.1 christos
528 1.1 christos /* Operand instance lookup table. */
529 1.1 christos
530 1.1 christos static const CGEN_OPINST *or1k_cgen_opinst_table[MAX_INSNS] = {
531 1.1 christos 0,
532 1.1 christos & sfmt_l_j_ops[0],
533 1.7 christos & sfmt_l_adrp_ops[0],
534 1.1 christos & sfmt_l_jal_ops[0],
535 1.1 christos & sfmt_l_jr_ops[0],
536 1.1 christos & sfmt_l_jalr_ops[0],
537 1.1 christos & sfmt_l_bnf_ops[0],
538 1.1 christos & sfmt_l_bnf_ops[0],
539 1.1 christos & sfmt_l_trap_ops[0],
540 1.1 christos & sfmt_l_trap_ops[0],
541 1.1 christos & sfmt_l_msync_ops[0],
542 1.1 christos & sfmt_l_msync_ops[0],
543 1.1 christos & sfmt_l_msync_ops[0],
544 1.1 christos & sfmt_l_msync_ops[0],
545 1.1 christos & sfmt_l_nop_imm_ops[0],
546 1.1 christos & sfmt_l_msync_ops[0],
547 1.1 christos & sfmt_l_movhi_ops[0],
548 1.1 christos & sfmt_l_macrc_ops[0],
549 1.1 christos & sfmt_l_mfspr_ops[0],
550 1.1 christos & sfmt_l_mtspr_ops[0],
551 1.1 christos & sfmt_l_lwz_ops[0],
552 1.1 christos & sfmt_l_lws_ops[0],
553 1.1 christos & sfmt_l_lwa_ops[0],
554 1.1 christos & sfmt_l_lbz_ops[0],
555 1.1 christos & sfmt_l_lbs_ops[0],
556 1.1 christos & sfmt_l_lhz_ops[0],
557 1.1 christos & sfmt_l_lhs_ops[0],
558 1.1 christos & sfmt_l_sw_ops[0],
559 1.1 christos & sfmt_l_sb_ops[0],
560 1.1 christos & sfmt_l_sh_ops[0],
561 1.1 christos & sfmt_l_swa_ops[0],
562 1.1 christos & sfmt_l_sll_ops[0],
563 1.1 christos & sfmt_l_slli_ops[0],
564 1.1 christos & sfmt_l_sll_ops[0],
565 1.1 christos & sfmt_l_slli_ops[0],
566 1.1 christos & sfmt_l_sll_ops[0],
567 1.1 christos & sfmt_l_slli_ops[0],
568 1.1 christos & sfmt_l_sll_ops[0],
569 1.1 christos & sfmt_l_slli_ops[0],
570 1.1 christos & sfmt_l_and_ops[0],
571 1.1 christos & sfmt_l_and_ops[0],
572 1.1 christos & sfmt_l_and_ops[0],
573 1.1 christos & sfmt_l_add_ops[0],
574 1.1 christos & sfmt_l_add_ops[0],
575 1.1 christos & sfmt_l_addc_ops[0],
576 1.7 christos & sfmt_l_mul_ops[0],
577 1.7 christos & sfmt_l_muld_ops[0],
578 1.7 christos & sfmt_l_mulu_ops[0],
579 1.7 christos & sfmt_l_muld_ops[0],
580 1.1 christos & sfmt_l_div_ops[0],
581 1.7 christos & sfmt_l_divu_ops[0],
582 1.1 christos & sfmt_l_ff1_ops[0],
583 1.1 christos & sfmt_l_ff1_ops[0],
584 1.1 christos & sfmt_l_mfspr_ops[0],
585 1.1 christos & sfmt_l_mfspr_ops[0],
586 1.1 christos & sfmt_l_xori_ops[0],
587 1.1 christos & sfmt_l_addi_ops[0],
588 1.1 christos & sfmt_l_addic_ops[0],
589 1.7 christos & sfmt_l_muli_ops[0],
590 1.1 christos & sfmt_l_exths_ops[0],
591 1.1 christos & sfmt_l_exths_ops[0],
592 1.1 christos & sfmt_l_exths_ops[0],
593 1.1 christos & sfmt_l_exths_ops[0],
594 1.1 christos & sfmt_l_exths_ops[0],
595 1.1 christos & sfmt_l_exths_ops[0],
596 1.1 christos & sfmt_l_cmov_ops[0],
597 1.1 christos & sfmt_l_sfgts_ops[0],
598 1.1 christos & sfmt_l_sfgtsi_ops[0],
599 1.1 christos & sfmt_l_sfgts_ops[0],
600 1.1 christos & sfmt_l_sfgtsi_ops[0],
601 1.1 christos & sfmt_l_sfgts_ops[0],
602 1.1 christos & sfmt_l_sfgtsi_ops[0],
603 1.1 christos & sfmt_l_sfgts_ops[0],
604 1.1 christos & sfmt_l_sfgtsi_ops[0],
605 1.1 christos & sfmt_l_sfgts_ops[0],
606 1.1 christos & sfmt_l_sfgtsi_ops[0],
607 1.1 christos & sfmt_l_sfgts_ops[0],
608 1.1 christos & sfmt_l_sfgtsi_ops[0],
609 1.1 christos & sfmt_l_sfgts_ops[0],
610 1.1 christos & sfmt_l_sfgtsi_ops[0],
611 1.1 christos & sfmt_l_sfgts_ops[0],
612 1.1 christos & sfmt_l_sfgtsi_ops[0],
613 1.1 christos & sfmt_l_sfgts_ops[0],
614 1.1 christos & sfmt_l_sfgtsi_ops[0],
615 1.1 christos & sfmt_l_sfgts_ops[0],
616 1.1 christos & sfmt_l_sfgtsi_ops[0],
617 1.1 christos & sfmt_l_mac_ops[0],
618 1.7 christos & sfmt_l_maci_ops[0],
619 1.7 christos & sfmt_l_macu_ops[0],
620 1.1 christos & sfmt_l_mac_ops[0],
621 1.7 christos & sfmt_l_macu_ops[0],
622 1.1 christos & sfmt_l_msync_ops[0],
623 1.1 christos & sfmt_l_msync_ops[0],
624 1.1 christos & sfmt_l_msync_ops[0],
625 1.1 christos & sfmt_l_msync_ops[0],
626 1.1 christos & sfmt_l_msync_ops[0],
627 1.1 christos & sfmt_l_msync_ops[0],
628 1.1 christos & sfmt_l_msync_ops[0],
629 1.1 christos & sfmt_l_msync_ops[0],
630 1.1 christos & sfmt_lf_add_s_ops[0],
631 1.7 christos & sfmt_lf_add_d32_ops[0],
632 1.1 christos & sfmt_lf_add_s_ops[0],
633 1.7 christos & sfmt_lf_add_d32_ops[0],
634 1.1 christos & sfmt_lf_add_s_ops[0],
635 1.7 christos & sfmt_lf_add_d32_ops[0],
636 1.1 christos & sfmt_lf_add_s_ops[0],
637 1.7 christos & sfmt_lf_add_d32_ops[0],
638 1.1 christos & sfmt_lf_add_s_ops[0],
639 1.7 christos & sfmt_lf_add_d32_ops[0],
640 1.1 christos & sfmt_lf_itof_s_ops[0],
641 1.7 christos & sfmt_lf_itof_d32_ops[0],
642 1.1 christos & sfmt_lf_ftoi_s_ops[0],
643 1.7 christos & sfmt_lf_ftoi_d32_ops[0],
644 1.7 christos & sfmt_lf_sfeq_s_ops[0],
645 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
646 1.7 christos & sfmt_lf_sfeq_s_ops[0],
647 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
648 1.7 christos & sfmt_lf_sfeq_s_ops[0],
649 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
650 1.7 christos & sfmt_lf_sfeq_s_ops[0],
651 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
652 1.7 christos & sfmt_lf_sfeq_s_ops[0],
653 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
654 1.7 christos & sfmt_lf_sfeq_s_ops[0],
655 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
656 1.7 christos & sfmt_lf_sfeq_s_ops[0],
657 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
658 1.7 christos & sfmt_lf_sfeq_s_ops[0],
659 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
660 1.7 christos & sfmt_lf_sfeq_s_ops[0],
661 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
662 1.7 christos & sfmt_lf_sfeq_s_ops[0],
663 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
664 1.7 christos & sfmt_lf_sfeq_s_ops[0],
665 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
666 1.7 christos & sfmt_lf_sfeq_s_ops[0],
667 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
668 1.7 christos & sfmt_lf_sfeq_s_ops[0],
669 1.7 christos & sfmt_lf_sfeq_d32_ops[0],
670 1.1 christos & sfmt_lf_madd_s_ops[0],
671 1.7 christos & sfmt_lf_madd_d32_ops[0],
672 1.7 christos & sfmt_l_msync_ops[0],
673 1.1 christos & sfmt_l_msync_ops[0],
674 1.1 christos };
675 1.1 christos
676 1.1 christos /* Function to call before using the operand instance table. */
677 1.1 christos
678 1.1 christos void
679 1.5 christos or1k_cgen_init_opinst_table (CGEN_CPU_DESC cd)
680 1.1 christos {
681 1.1 christos int i;
682 1.1 christos const CGEN_OPINST **oi = & or1k_cgen_opinst_table[0];
683 1.1 christos CGEN_INSN *insns = (CGEN_INSN *) cd->insn_table.init_entries;
684 1.1 christos for (i = 0; i < MAX_INSNS; ++i)
685 1.1 christos insns[i].opinst = oi[i];
686 1.1 christos }
687