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.10 christos Copyright (C) 1996-2025 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