xref: /netbsd-src/external/gpl3/binutils/dist/opcodes/or1k-opinst.c (revision dd7241df2fae9da4ea2bd20a68f001fa86ecf909)
16f226886Schristos /* DO NOT EDIT!  -*- buffer-read-only: t -*- vi:set ro:  */
2a45653d1Smatt /* Semantic operand instances for or1k.
3a45653d1Smatt 
4a45653d1Smatt THIS FILE IS MACHINE GENERATED WITH CGEN.
5a45653d1Smatt 
6*dd7241dfSchristos Copyright (C) 1996-2024 Free Software Foundation, Inc.
7a45653d1Smatt 
8a45653d1Smatt This file is part of the GNU Binutils and/or GDB, the GNU debugger.
9a45653d1Smatt 
10a45653d1Smatt    This file is free software; you can redistribute it and/or modify
11a45653d1Smatt    it under the terms of the GNU General Public License as published by
12a45653d1Smatt    the Free Software Foundation; either version 3, or (at your option)
13a45653d1Smatt    any later version.
14a45653d1Smatt 
15a45653d1Smatt    It is distributed in the hope that it will be useful, but WITHOUT
16a45653d1Smatt    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17a45653d1Smatt    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
18a45653d1Smatt    License for more details.
19a45653d1Smatt 
20a45653d1Smatt    You should have received a copy of the GNU General Public License along
21a45653d1Smatt    with this program; if not, write to the Free Software Foundation, Inc.,
22a45653d1Smatt    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
23a45653d1Smatt 
24a45653d1Smatt */
25a45653d1Smatt 
26a45653d1Smatt #include "sysdep.h"
27a45653d1Smatt #include "ansidecl.h"
28a45653d1Smatt #include "bfd.h"
29a45653d1Smatt #include "symcat.h"
30a45653d1Smatt #include "or1k-desc.h"
31a45653d1Smatt #include "or1k-opc.h"
32a45653d1Smatt 
33a45653d1Smatt /* Operand references.  */
34a45653d1Smatt 
35a45653d1Smatt #define OP_ENT(op) OR1K_OPERAND_##op
36a45653d1Smatt #define INPUT CGEN_OPINST_INPUT
37a45653d1Smatt #define OUTPUT CGEN_OPINST_OUTPUT
38a45653d1Smatt #define END CGEN_OPINST_END
39a45653d1Smatt #define COND_REF CGEN_OPINST_COND_REF
40a45653d1Smatt 
41a45653d1Smatt static const CGEN_OPINST sfmt_empty_ops[] ATTRIBUTE_UNUSED = {
42a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
43a45653d1Smatt };
44a45653d1Smatt 
45a45653d1Smatt static const CGEN_OPINST sfmt_l_j_ops[] ATTRIBUTE_UNUSED = {
4603f5171aSchristos   { INPUT, "disp26", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP26), 0, 0 },
4703f5171aSchristos   { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
4803f5171aSchristos   { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
49a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
50a45653d1Smatt };
51a45653d1Smatt 
52106c59e5Schristos static const CGEN_OPINST sfmt_l_adrp_ops[] ATTRIBUTE_UNUSED = {
5303f5171aSchristos   { INPUT, "disp21", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP21), 0, 0 },
5403f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
55106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
56106c59e5Schristos };
57106c59e5Schristos 
58a45653d1Smatt static const CGEN_OPINST sfmt_l_jal_ops[] ATTRIBUTE_UNUSED = {
5903f5171aSchristos   { INPUT, "disp26", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP26), 0, 0 },
6003f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
6103f5171aSchristos   { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
6203f5171aSchristos   { OUTPUT, "h_gpr_USI_9", HW_H_GPR, CGEN_MODE_USI, 0, 9, 0 },
6303f5171aSchristos   { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
64a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
65a45653d1Smatt };
66a45653d1Smatt 
67a45653d1Smatt static const CGEN_OPINST sfmt_l_jr_ops[] ATTRIBUTE_UNUSED = {
6803f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
6903f5171aSchristos   { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
7003f5171aSchristos   { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
71a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
72a45653d1Smatt };
73a45653d1Smatt 
74a45653d1Smatt static const CGEN_OPINST sfmt_l_jalr_ops[] ATTRIBUTE_UNUSED = {
7503f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
7603f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
7703f5171aSchristos   { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
7803f5171aSchristos   { OUTPUT, "h_gpr_USI_9", HW_H_GPR, CGEN_MODE_USI, 0, 9, 0 },
7903f5171aSchristos   { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
80a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
81a45653d1Smatt };
82a45653d1Smatt 
83a45653d1Smatt static const CGEN_OPINST sfmt_l_bnf_ops[] ATTRIBUTE_UNUSED = {
8403f5171aSchristos   { INPUT, "disp26", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP26), 0, COND_REF },
8503f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
8603f5171aSchristos   { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, COND_REF },
8703f5171aSchristos   { INPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
8803f5171aSchristos   { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
89a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
90a45653d1Smatt };
91a45653d1Smatt 
92a45653d1Smatt static const CGEN_OPINST sfmt_l_trap_ops[] ATTRIBUTE_UNUSED = {
9303f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
94a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
95a45653d1Smatt };
96a45653d1Smatt 
97a45653d1Smatt static const CGEN_OPINST sfmt_l_msync_ops[] ATTRIBUTE_UNUSED = {
98a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
99a45653d1Smatt };
100a45653d1Smatt 
101a45653d1Smatt static const CGEN_OPINST sfmt_l_nop_imm_ops[] ATTRIBUTE_UNUSED = {
102a45653d1Smatt   { INPUT, "uimm16", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
103a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
104a45653d1Smatt };
105a45653d1Smatt 
106a45653d1Smatt static const CGEN_OPINST sfmt_l_movhi_ops[] ATTRIBUTE_UNUSED = {
107a45653d1Smatt   { INPUT, "uimm16", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
10803f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
109a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
110a45653d1Smatt };
111a45653d1Smatt 
112a45653d1Smatt static const CGEN_OPINST sfmt_l_macrc_ops[] ATTRIBUTE_UNUSED = {
11303f5171aSchristos   { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
11403f5171aSchristos   { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
11503f5171aSchristos   { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
11603f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
117a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
118a45653d1Smatt };
119a45653d1Smatt 
120a45653d1Smatt static const CGEN_OPINST sfmt_l_mfspr_ops[] ATTRIBUTE_UNUSED = {
12103f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
122a45653d1Smatt   { INPUT, "uimm16", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
12303f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
124a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
125a45653d1Smatt };
126a45653d1Smatt 
127a45653d1Smatt static const CGEN_OPINST sfmt_l_mtspr_ops[] ATTRIBUTE_UNUSED = {
12803f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
12903f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
130a45653d1Smatt   { INPUT, "uimm16_split", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16_SPLIT), 0, 0 },
131a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
132a45653d1Smatt };
133a45653d1Smatt 
134a45653d1Smatt static const CGEN_OPINST sfmt_l_lwz_ops[] ATTRIBUTE_UNUSED = {
135a45653d1Smatt   { 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 },
13603f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
137a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
13803f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
139a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
140a45653d1Smatt };
141a45653d1Smatt 
142a45653d1Smatt static const CGEN_OPINST sfmt_l_lws_ops[] ATTRIBUTE_UNUSED = {
143a45653d1Smatt   { 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 },
14403f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
145a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
14603f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
147a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
148a45653d1Smatt };
149a45653d1Smatt 
150a45653d1Smatt static const CGEN_OPINST sfmt_l_lwa_ops[] ATTRIBUTE_UNUSED = {
151a45653d1Smatt   { 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 },
15203f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
153a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
154a45653d1Smatt   { OUTPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
155a45653d1Smatt   { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, 0 },
15603f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
157a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
158a45653d1Smatt };
159a45653d1Smatt 
160a45653d1Smatt static const CGEN_OPINST sfmt_l_lbz_ops[] ATTRIBUTE_UNUSED = {
161a45653d1Smatt   { 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 },
16203f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
163a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
16403f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
165a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
166a45653d1Smatt };
167a45653d1Smatt 
168a45653d1Smatt static const CGEN_OPINST sfmt_l_lbs_ops[] ATTRIBUTE_UNUSED = {
169a45653d1Smatt   { 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 },
17003f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
171a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
17203f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
173a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
174a45653d1Smatt };
175a45653d1Smatt 
176a45653d1Smatt static const CGEN_OPINST sfmt_l_lhz_ops[] ATTRIBUTE_UNUSED = {
177a45653d1Smatt   { 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 },
17803f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
179a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
18003f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
181a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
182a45653d1Smatt };
183a45653d1Smatt 
184a45653d1Smatt static const CGEN_OPINST sfmt_l_lhs_ops[] ATTRIBUTE_UNUSED = {
185a45653d1Smatt   { 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 },
18603f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
187a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
18803f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
189a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
190a45653d1Smatt };
191a45653d1Smatt 
192a45653d1Smatt static const CGEN_OPINST sfmt_l_sw_ops[] ATTRIBUTE_UNUSED = {
193a45653d1Smatt   { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
19403f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
19503f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
196a45653d1Smatt   { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
197a45653d1Smatt   { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, COND_REF },
198a45653d1Smatt   { OUTPUT, "h_memory_USI_addr", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, 0 },
199a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
200a45653d1Smatt };
201a45653d1Smatt 
202a45653d1Smatt static const CGEN_OPINST sfmt_l_sb_ops[] ATTRIBUTE_UNUSED = {
203a45653d1Smatt   { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
20403f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
20503f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
206a45653d1Smatt   { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
207a45653d1Smatt   { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, COND_REF },
208a45653d1Smatt   { OUTPUT, "h_memory_UQI_addr", HW_H_MEMORY, CGEN_MODE_UQI, 0, 0, 0 },
209a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
210a45653d1Smatt };
211a45653d1Smatt 
212a45653d1Smatt static const CGEN_OPINST sfmt_l_sh_ops[] ATTRIBUTE_UNUSED = {
213a45653d1Smatt   { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
21403f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
21503f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
216a45653d1Smatt   { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
217a45653d1Smatt   { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, COND_REF },
218a45653d1Smatt   { OUTPUT, "h_memory_UHI_addr", HW_H_MEMORY, CGEN_MODE_UHI, 0, 0, 0 },
219a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
220a45653d1Smatt };
221a45653d1Smatt 
222a45653d1Smatt static const CGEN_OPINST sfmt_l_swa_ops[] ATTRIBUTE_UNUSED = {
223a45653d1Smatt   { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
224a45653d1Smatt   { INPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, 0 },
22503f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
22603f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, COND_REF },
227a45653d1Smatt   { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
22803f5171aSchristos   { INPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
229a45653d1Smatt   { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, 0 },
230a45653d1Smatt   { OUTPUT, "h_memory_USI_addr", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, COND_REF },
23103f5171aSchristos   { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
232a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
233a45653d1Smatt };
234a45653d1Smatt 
235a45653d1Smatt static const CGEN_OPINST sfmt_l_sll_ops[] ATTRIBUTE_UNUSED = {
23603f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
23703f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
23803f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
239a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
240a45653d1Smatt };
241a45653d1Smatt 
242a45653d1Smatt static const CGEN_OPINST sfmt_l_slli_ops[] ATTRIBUTE_UNUSED = {
24303f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
244a45653d1Smatt   { INPUT, "uimm6", HW_H_UIMM6, CGEN_MODE_UINT, OP_ENT (UIMM6), 0, 0 },
24503f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
246a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
247a45653d1Smatt };
248a45653d1Smatt 
249a45653d1Smatt static const CGEN_OPINST sfmt_l_and_ops[] ATTRIBUTE_UNUSED = {
25003f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
25103f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
25203f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
253a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
254a45653d1Smatt };
255a45653d1Smatt 
256a45653d1Smatt static const CGEN_OPINST sfmt_l_add_ops[] ATTRIBUTE_UNUSED = {
25703f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
25803f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
25903f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
26003f5171aSchristos   { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
26103f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
26203f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
26303f5171aSchristos   { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
26403f5171aSchristos   { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
265a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
266a45653d1Smatt };
267a45653d1Smatt 
268a45653d1Smatt static const CGEN_OPINST sfmt_l_addc_ops[] ATTRIBUTE_UNUSED = {
26903f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
27003f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
27103f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
27203f5171aSchristos   { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
27303f5171aSchristos   { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
27403f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
27503f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
27603f5171aSchristos   { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
27703f5171aSchristos   { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
278a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
279a45653d1Smatt };
280a45653d1Smatt 
281106c59e5Schristos static const CGEN_OPINST sfmt_l_mul_ops[] ATTRIBUTE_UNUSED = {
28203f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
28303f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
28403f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
28503f5171aSchristos   { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
28603f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
28703f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
28803f5171aSchristos   { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
289106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
290106c59e5Schristos };
291106c59e5Schristos 
292106c59e5Schristos static const CGEN_OPINST sfmt_l_muld_ops[] ATTRIBUTE_UNUSED = {
29303f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
29403f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
29503f5171aSchristos   { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
29603f5171aSchristos   { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
297106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
298106c59e5Schristos };
299106c59e5Schristos 
300106c59e5Schristos static const CGEN_OPINST sfmt_l_mulu_ops[] ATTRIBUTE_UNUSED = {
30103f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
30203f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
30303f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
30403f5171aSchristos   { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
30503f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
30603f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
30703f5171aSchristos   { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
308106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
309106c59e5Schristos };
310106c59e5Schristos 
311a45653d1Smatt static const CGEN_OPINST sfmt_l_div_ops[] ATTRIBUTE_UNUSED = {
31203f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
31303f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, COND_REF },
31403f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
31503f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, COND_REF },
31603f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, COND_REF },
31703f5171aSchristos   { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, COND_REF },
318106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
319106c59e5Schristos };
320106c59e5Schristos 
321106c59e5Schristos static const CGEN_OPINST sfmt_l_divu_ops[] ATTRIBUTE_UNUSED = {
32203f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
32303f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, COND_REF },
32403f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
32503f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, COND_REF },
32603f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, COND_REF },
32703f5171aSchristos   { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, COND_REF },
328a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
329a45653d1Smatt };
330a45653d1Smatt 
331a45653d1Smatt static const CGEN_OPINST sfmt_l_ff1_ops[] ATTRIBUTE_UNUSED = {
33203f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
33303f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
334a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
335a45653d1Smatt };
336a45653d1Smatt 
337a45653d1Smatt static const CGEN_OPINST sfmt_l_xori_ops[] ATTRIBUTE_UNUSED = {
33803f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
339a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
34003f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
341a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
342a45653d1Smatt };
343a45653d1Smatt 
344a45653d1Smatt static const CGEN_OPINST sfmt_l_addi_ops[] ATTRIBUTE_UNUSED = {
34503f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
34603f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
347a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
34803f5171aSchristos   { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
34903f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
35003f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
35103f5171aSchristos   { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
35203f5171aSchristos   { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
353a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
354a45653d1Smatt };
355a45653d1Smatt 
356a45653d1Smatt static const CGEN_OPINST sfmt_l_addic_ops[] ATTRIBUTE_UNUSED = {
35703f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
35803f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
359a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
36003f5171aSchristos   { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
36103f5171aSchristos   { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
36203f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
36303f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
36403f5171aSchristos   { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
36503f5171aSchristos   { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
366a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
367a45653d1Smatt };
368a45653d1Smatt 
369106c59e5Schristos static const CGEN_OPINST sfmt_l_muli_ops[] ATTRIBUTE_UNUSED = {
37003f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
37103f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
372106c59e5Schristos   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
37303f5171aSchristos   { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
37403f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
37503f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
37603f5171aSchristos   { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
377106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
378106c59e5Schristos };
379106c59e5Schristos 
380a45653d1Smatt static const CGEN_OPINST sfmt_l_exths_ops[] ATTRIBUTE_UNUSED = {
38103f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
38203f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
383a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
384a45653d1Smatt };
385a45653d1Smatt 
386a45653d1Smatt static const CGEN_OPINST sfmt_l_cmov_ops[] ATTRIBUTE_UNUSED = {
38703f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, COND_REF },
38803f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, COND_REF },
38903f5171aSchristos   { INPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
39003f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, COND_REF },
391a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
392a45653d1Smatt };
393a45653d1Smatt 
394a45653d1Smatt static const CGEN_OPINST sfmt_l_sfgts_ops[] ATTRIBUTE_UNUSED = {
39503f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
39603f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
39703f5171aSchristos   { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
398a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
399a45653d1Smatt };
400a45653d1Smatt 
401a45653d1Smatt static const CGEN_OPINST sfmt_l_sfgtsi_ops[] ATTRIBUTE_UNUSED = {
40203f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
403a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
40403f5171aSchristos   { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
405a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
406a45653d1Smatt };
407a45653d1Smatt 
408a45653d1Smatt static const CGEN_OPINST sfmt_l_mac_ops[] ATTRIBUTE_UNUSED = {
40903f5171aSchristos   { INPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
41003f5171aSchristos   { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
41103f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
41203f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
41303f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
41403f5171aSchristos   { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
41503f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
41603f5171aSchristos   { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
41703f5171aSchristos   { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
41803f5171aSchristos   { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
419a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
420a45653d1Smatt };
421a45653d1Smatt 
422a45653d1Smatt static const CGEN_OPINST sfmt_l_maci_ops[] ATTRIBUTE_UNUSED = {
42303f5171aSchristos   { INPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
42403f5171aSchristos   { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
42503f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
42603f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
427a45653d1Smatt   { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
42803f5171aSchristos   { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
42903f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
43003f5171aSchristos   { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
43103f5171aSchristos   { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
43203f5171aSchristos   { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
433106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
434106c59e5Schristos };
435106c59e5Schristos 
436106c59e5Schristos static const CGEN_OPINST sfmt_l_macu_ops[] ATTRIBUTE_UNUSED = {
43703f5171aSchristos   { INPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
43803f5171aSchristos   { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
43903f5171aSchristos   { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
44003f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
44103f5171aSchristos   { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
44203f5171aSchristos   { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
44303f5171aSchristos   { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
44403f5171aSchristos   { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
44503f5171aSchristos   { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
44603f5171aSchristos   { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
447a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
448a45653d1Smatt };
449a45653d1Smatt 
450a45653d1Smatt static const CGEN_OPINST sfmt_lf_add_s_ops[] ATTRIBUTE_UNUSED = {
451a45653d1Smatt   { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
452a45653d1Smatt   { INPUT, "rBSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RBSF), 0, 0 },
453a45653d1Smatt   { OUTPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
454a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
455a45653d1Smatt };
456a45653d1Smatt 
457106c59e5Schristos static const CGEN_OPINST sfmt_lf_add_d32_ops[] ATTRIBUTE_UNUSED = {
458106c59e5Schristos   { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
459106c59e5Schristos   { INPUT, "rBD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RBD32F), 0, 0 },
460106c59e5Schristos   { OUTPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
461106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
462106c59e5Schristos };
463106c59e5Schristos 
464a45653d1Smatt static const CGEN_OPINST sfmt_lf_itof_s_ops[] ATTRIBUTE_UNUSED = {
46503f5171aSchristos   { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
46603f5171aSchristos   { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
467a45653d1Smatt   { OUTPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
468a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
469a45653d1Smatt };
470a45653d1Smatt 
471106c59e5Schristos static const CGEN_OPINST sfmt_lf_itof_d32_ops[] ATTRIBUTE_UNUSED = {
472106c59e5Schristos   { INPUT, "rADI", HW_H_I64R, CGEN_MODE_DI, OP_ENT (RADI), 0, 0 },
47303f5171aSchristos   { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
474106c59e5Schristos   { OUTPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
475106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
476106c59e5Schristos };
477106c59e5Schristos 
478a45653d1Smatt static const CGEN_OPINST sfmt_lf_ftoi_s_ops[] ATTRIBUTE_UNUSED = {
479a45653d1Smatt   { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
48003f5171aSchristos   { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
48103f5171aSchristos   { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
482a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
483a45653d1Smatt };
484a45653d1Smatt 
485106c59e5Schristos static const CGEN_OPINST sfmt_lf_ftoi_d32_ops[] ATTRIBUTE_UNUSED = {
486106c59e5Schristos   { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
48703f5171aSchristos   { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
488106c59e5Schristos   { OUTPUT, "rDDI", HW_H_I64R, CGEN_MODE_DI, OP_ENT (RDDI), 0, 0 },
489106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
490106c59e5Schristos };
491106c59e5Schristos 
492106c59e5Schristos static const CGEN_OPINST sfmt_lf_sfeq_s_ops[] ATTRIBUTE_UNUSED = {
493a45653d1Smatt   { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
494a45653d1Smatt   { INPUT, "rBSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RBSF), 0, 0 },
49503f5171aSchristos   { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
496a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
497a45653d1Smatt };
498a45653d1Smatt 
499106c59e5Schristos static const CGEN_OPINST sfmt_lf_sfeq_d32_ops[] ATTRIBUTE_UNUSED = {
500106c59e5Schristos   { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
501106c59e5Schristos   { INPUT, "rBD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RBD32F), 0, 0 },
50203f5171aSchristos   { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
503106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
504106c59e5Schristos };
505106c59e5Schristos 
506a45653d1Smatt static const CGEN_OPINST sfmt_lf_madd_s_ops[] ATTRIBUTE_UNUSED = {
507a45653d1Smatt   { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
508a45653d1Smatt   { INPUT, "rBSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RBSF), 0, 0 },
509a45653d1Smatt   { INPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
510a45653d1Smatt   { OUTPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
511a45653d1Smatt   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
512a45653d1Smatt };
513a45653d1Smatt 
514106c59e5Schristos static const CGEN_OPINST sfmt_lf_madd_d32_ops[] ATTRIBUTE_UNUSED = {
515106c59e5Schristos   { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
516106c59e5Schristos   { INPUT, "rBD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RBD32F), 0, 0 },
517106c59e5Schristos   { INPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
518106c59e5Schristos   { OUTPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
519106c59e5Schristos   { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
520106c59e5Schristos };
521106c59e5Schristos 
522a45653d1Smatt #undef OP_ENT
523a45653d1Smatt #undef INPUT
524a45653d1Smatt #undef OUTPUT
525a45653d1Smatt #undef END
526a45653d1Smatt #undef COND_REF
527a45653d1Smatt 
528a45653d1Smatt /* Operand instance lookup table.  */
529a45653d1Smatt 
530a45653d1Smatt static const CGEN_OPINST *or1k_cgen_opinst_table[MAX_INSNS] = {
531a45653d1Smatt   0,
532a45653d1Smatt   & sfmt_l_j_ops[0],
533106c59e5Schristos   & sfmt_l_adrp_ops[0],
534a45653d1Smatt   & sfmt_l_jal_ops[0],
535a45653d1Smatt   & sfmt_l_jr_ops[0],
536a45653d1Smatt   & sfmt_l_jalr_ops[0],
537a45653d1Smatt   & sfmt_l_bnf_ops[0],
538a45653d1Smatt   & sfmt_l_bnf_ops[0],
539a45653d1Smatt   & sfmt_l_trap_ops[0],
540a45653d1Smatt   & sfmt_l_trap_ops[0],
541a45653d1Smatt   & sfmt_l_msync_ops[0],
542a45653d1Smatt   & sfmt_l_msync_ops[0],
543a45653d1Smatt   & sfmt_l_msync_ops[0],
544a45653d1Smatt   & sfmt_l_msync_ops[0],
545a45653d1Smatt   & sfmt_l_nop_imm_ops[0],
546a45653d1Smatt   & sfmt_l_msync_ops[0],
547a45653d1Smatt   & sfmt_l_movhi_ops[0],
548a45653d1Smatt   & sfmt_l_macrc_ops[0],
549a45653d1Smatt   & sfmt_l_mfspr_ops[0],
550a45653d1Smatt   & sfmt_l_mtspr_ops[0],
551a45653d1Smatt   & sfmt_l_lwz_ops[0],
552a45653d1Smatt   & sfmt_l_lws_ops[0],
553a45653d1Smatt   & sfmt_l_lwa_ops[0],
554a45653d1Smatt   & sfmt_l_lbz_ops[0],
555a45653d1Smatt   & sfmt_l_lbs_ops[0],
556a45653d1Smatt   & sfmt_l_lhz_ops[0],
557a45653d1Smatt   & sfmt_l_lhs_ops[0],
558a45653d1Smatt   & sfmt_l_sw_ops[0],
559a45653d1Smatt   & sfmt_l_sb_ops[0],
560a45653d1Smatt   & sfmt_l_sh_ops[0],
561a45653d1Smatt   & sfmt_l_swa_ops[0],
562a45653d1Smatt   & sfmt_l_sll_ops[0],
563a45653d1Smatt   & sfmt_l_slli_ops[0],
564a45653d1Smatt   & sfmt_l_sll_ops[0],
565a45653d1Smatt   & sfmt_l_slli_ops[0],
566a45653d1Smatt   & sfmt_l_sll_ops[0],
567a45653d1Smatt   & sfmt_l_slli_ops[0],
568a45653d1Smatt   & sfmt_l_sll_ops[0],
569a45653d1Smatt   & sfmt_l_slli_ops[0],
570a45653d1Smatt   & sfmt_l_and_ops[0],
571a45653d1Smatt   & sfmt_l_and_ops[0],
572a45653d1Smatt   & sfmt_l_and_ops[0],
573a45653d1Smatt   & sfmt_l_add_ops[0],
574a45653d1Smatt   & sfmt_l_add_ops[0],
575a45653d1Smatt   & sfmt_l_addc_ops[0],
576106c59e5Schristos   & sfmt_l_mul_ops[0],
577106c59e5Schristos   & sfmt_l_muld_ops[0],
578106c59e5Schristos   & sfmt_l_mulu_ops[0],
579106c59e5Schristos   & sfmt_l_muld_ops[0],
580a45653d1Smatt   & sfmt_l_div_ops[0],
581106c59e5Schristos   & sfmt_l_divu_ops[0],
582a45653d1Smatt   & sfmt_l_ff1_ops[0],
583a45653d1Smatt   & sfmt_l_ff1_ops[0],
584a45653d1Smatt   & sfmt_l_mfspr_ops[0],
585a45653d1Smatt   & sfmt_l_mfspr_ops[0],
586a45653d1Smatt   & sfmt_l_xori_ops[0],
587a45653d1Smatt   & sfmt_l_addi_ops[0],
588a45653d1Smatt   & sfmt_l_addic_ops[0],
589106c59e5Schristos   & sfmt_l_muli_ops[0],
590a45653d1Smatt   & sfmt_l_exths_ops[0],
591a45653d1Smatt   & sfmt_l_exths_ops[0],
592a45653d1Smatt   & sfmt_l_exths_ops[0],
593a45653d1Smatt   & sfmt_l_exths_ops[0],
594a45653d1Smatt   & sfmt_l_exths_ops[0],
595a45653d1Smatt   & sfmt_l_exths_ops[0],
596a45653d1Smatt   & sfmt_l_cmov_ops[0],
597a45653d1Smatt   & sfmt_l_sfgts_ops[0],
598a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
599a45653d1Smatt   & sfmt_l_sfgts_ops[0],
600a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
601a45653d1Smatt   & sfmt_l_sfgts_ops[0],
602a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
603a45653d1Smatt   & sfmt_l_sfgts_ops[0],
604a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
605a45653d1Smatt   & sfmt_l_sfgts_ops[0],
606a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
607a45653d1Smatt   & sfmt_l_sfgts_ops[0],
608a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
609a45653d1Smatt   & sfmt_l_sfgts_ops[0],
610a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
611a45653d1Smatt   & sfmt_l_sfgts_ops[0],
612a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
613a45653d1Smatt   & sfmt_l_sfgts_ops[0],
614a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
615a45653d1Smatt   & sfmt_l_sfgts_ops[0],
616a45653d1Smatt   & sfmt_l_sfgtsi_ops[0],
617a45653d1Smatt   & sfmt_l_mac_ops[0],
618a45653d1Smatt   & sfmt_l_maci_ops[0],
619106c59e5Schristos   & sfmt_l_macu_ops[0],
620106c59e5Schristos   & sfmt_l_mac_ops[0],
621106c59e5Schristos   & sfmt_l_macu_ops[0],
622a45653d1Smatt   & sfmt_l_msync_ops[0],
623a45653d1Smatt   & sfmt_l_msync_ops[0],
624a45653d1Smatt   & sfmt_l_msync_ops[0],
625a45653d1Smatt   & sfmt_l_msync_ops[0],
626a45653d1Smatt   & sfmt_l_msync_ops[0],
627a45653d1Smatt   & sfmt_l_msync_ops[0],
628a45653d1Smatt   & sfmt_l_msync_ops[0],
629a45653d1Smatt   & sfmt_l_msync_ops[0],
630a45653d1Smatt   & sfmt_lf_add_s_ops[0],
631106c59e5Schristos   & sfmt_lf_add_d32_ops[0],
632a45653d1Smatt   & sfmt_lf_add_s_ops[0],
633106c59e5Schristos   & sfmt_lf_add_d32_ops[0],
634a45653d1Smatt   & sfmt_lf_add_s_ops[0],
635106c59e5Schristos   & sfmt_lf_add_d32_ops[0],
636a45653d1Smatt   & sfmt_lf_add_s_ops[0],
637106c59e5Schristos   & sfmt_lf_add_d32_ops[0],
638a45653d1Smatt   & sfmt_lf_add_s_ops[0],
639106c59e5Schristos   & sfmt_lf_add_d32_ops[0],
640a45653d1Smatt   & sfmt_lf_itof_s_ops[0],
641106c59e5Schristos   & sfmt_lf_itof_d32_ops[0],
642a45653d1Smatt   & sfmt_lf_ftoi_s_ops[0],
643106c59e5Schristos   & sfmt_lf_ftoi_d32_ops[0],
644106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
645106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
646106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
647106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
648106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
649106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
650106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
651106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
652106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
653106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
654106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
655106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
656106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
657106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
658106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
659106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
660106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
661106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
662106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
663106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
664106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
665106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
666106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
667106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
668106c59e5Schristos   & sfmt_lf_sfeq_s_ops[0],
669106c59e5Schristos   & sfmt_lf_sfeq_d32_ops[0],
670a45653d1Smatt   & sfmt_lf_madd_s_ops[0],
671106c59e5Schristos   & sfmt_lf_madd_d32_ops[0],
672106c59e5Schristos   & sfmt_l_msync_ops[0],
673a45653d1Smatt   & sfmt_l_msync_ops[0],
674a45653d1Smatt };
675a45653d1Smatt 
676a45653d1Smatt /* Function to call before using the operand instance table.  */
677a45653d1Smatt 
678a45653d1Smatt void
or1k_cgen_init_opinst_table(CGEN_CPU_DESC cd)6792f15a542Schristos or1k_cgen_init_opinst_table (CGEN_CPU_DESC cd)
680a45653d1Smatt {
681a45653d1Smatt   int i;
682a45653d1Smatt   const CGEN_OPINST **oi = & or1k_cgen_opinst_table[0];
683a45653d1Smatt   CGEN_INSN *insns = (CGEN_INSN *) cd->insn_table.init_entries;
684a45653d1Smatt   for (i = 0; i < MAX_INSNS; ++i)
685a45653d1Smatt     insns[i].opinst = oi[i];
686a45653d1Smatt }
687