1 1.8 christos /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */ 2 1.1 christos /* Semantic operand instances for lm32. 3 1.1 christos 4 1.1 christos THIS FILE IS MACHINE GENERATED WITH CGEN. 5 1.1 christos 6 1.11 christos Copyright (C) 1996-2024 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 "lm32-desc.h" 31 1.1 christos #include "lm32-opc.h" 32 1.1 christos 33 1.1 christos /* Operand references. */ 34 1.1 christos 35 1.1 christos #define OP_ENT(op) LM32_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_add_ops[] ATTRIBUTE_UNUSED = { 46 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 47 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 48 1.1 christos { OUTPUT, "r2", HW_H_GR, CGEN_MODE_SI, OP_ENT (R2), 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.1 christos static const CGEN_OPINST sfmt_addi_ops[] ATTRIBUTE_UNUSED = { 53 1.1 christos { INPUT, "imm", HW_H_SINT, CGEN_MODE_INT, OP_ENT (IMM), 0, 0 }, 54 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 55 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 56 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 57 1.1 christos }; 58 1.1 christos 59 1.1 christos static const CGEN_OPINST sfmt_andi_ops[] ATTRIBUTE_UNUSED = { 60 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 61 1.1 christos { INPUT, "uimm", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM), 0, 0 }, 62 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 63 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 64 1.1 christos }; 65 1.1 christos 66 1.1 christos static const CGEN_OPINST sfmt_andhii_ops[] ATTRIBUTE_UNUSED = { 67 1.1 christos { INPUT, "hi16", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (HI16), 0, 0 }, 68 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 69 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 70 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 71 1.1 christos }; 72 1.1 christos 73 1.1 christos static const CGEN_OPINST sfmt_b_ops[] ATTRIBUTE_UNUSED = { 74 1.1 christos { INPUT, "f_r0", HW_H_UINT, CGEN_MODE_UINT, 0, 0, 0 }, 75 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 76 1.1 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 77 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 78 1.1 christos }; 79 1.1 christos 80 1.1 christos static const CGEN_OPINST sfmt_bi_ops[] ATTRIBUTE_UNUSED = { 81 1.1 christos { INPUT, "call", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (CALL), 0, 0 }, 82 1.1 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 83 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 84 1.1 christos }; 85 1.1 christos 86 1.1 christos static const CGEN_OPINST sfmt_be_ops[] ATTRIBUTE_UNUSED = { 87 1.1 christos { INPUT, "branch", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (BRANCH), 0, COND_REF }, 88 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 89 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 90 1.1 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 91 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 92 1.1 christos }; 93 1.1 christos 94 1.1 christos static const CGEN_OPINST sfmt_call_ops[] ATTRIBUTE_UNUSED = { 95 1.1 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 96 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 97 1.1 christos { OUTPUT, "h_gr_SI_29", HW_H_GR, CGEN_MODE_SI, 0, 29, 0 }, 98 1.1 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 99 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 100 1.1 christos }; 101 1.1 christos 102 1.1 christos static const CGEN_OPINST sfmt_calli_ops[] ATTRIBUTE_UNUSED = { 103 1.1 christos { INPUT, "call", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (CALL), 0, 0 }, 104 1.1 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 105 1.1 christos { OUTPUT, "h_gr_SI_29", HW_H_GR, CGEN_MODE_SI, 0, 29, 0 }, 106 1.1 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 107 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 108 1.1 christos }; 109 1.1 christos 110 1.1 christos static const CGEN_OPINST sfmt_divu_ops[] ATTRIBUTE_UNUSED = { 111 1.1 christos { INPUT, "f_r0", HW_H_UINT, CGEN_MODE_UINT, 0, 0, 0 }, 112 1.1 christos { INPUT, "f_r1", HW_H_UINT, CGEN_MODE_UINT, 0, 0, 0 }, 113 1.1 christos { INPUT, "f_r2", HW_H_UINT, CGEN_MODE_UINT, 0, 0, 0 }, 114 1.1 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 115 1.1 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 116 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 117 1.1 christos }; 118 1.1 christos 119 1.1 christos static const CGEN_OPINST sfmt_lb_ops[] ATTRIBUTE_UNUSED = { 120 1.1 christos { INPUT, "h_memory_QI_add__SI_r0_ext__SI_trunc__HI_imm", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 121 1.1 christos { INPUT, "imm", HW_H_SINT, CGEN_MODE_INT, OP_ENT (IMM), 0, 0 }, 122 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 123 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 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_lh_ops[] ATTRIBUTE_UNUSED = { 128 1.1 christos { INPUT, "h_memory_HI_add__SI_r0_ext__SI_trunc__HI_imm", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 129 1.1 christos { INPUT, "imm", HW_H_SINT, CGEN_MODE_INT, OP_ENT (IMM), 0, 0 }, 130 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 131 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 132 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 133 1.1 christos }; 134 1.1 christos 135 1.1 christos static const CGEN_OPINST sfmt_lw_ops[] ATTRIBUTE_UNUSED = { 136 1.1 christos { INPUT, "h_memory_SI_add__SI_r0_ext__SI_trunc__HI_imm", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 137 1.1 christos { INPUT, "imm", HW_H_SINT, CGEN_MODE_INT, OP_ENT (IMM), 0, 0 }, 138 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 139 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 140 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 141 1.1 christos }; 142 1.1 christos 143 1.1 christos static const CGEN_OPINST sfmt_ori_ops[] ATTRIBUTE_UNUSED = { 144 1.1 christos { INPUT, "lo16", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (LO16), 0, 0 }, 145 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 146 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 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_rcsr_ops[] ATTRIBUTE_UNUSED = { 151 1.1 christos { INPUT, "csr", HW_H_CSR, CGEN_MODE_SI, OP_ENT (CSR), 0, 0 }, 152 1.1 christos { OUTPUT, "r2", HW_H_GR, CGEN_MODE_SI, OP_ENT (R2), 0, 0 }, 153 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 154 1.1 christos }; 155 1.1 christos 156 1.1 christos static const CGEN_OPINST sfmt_sb_ops[] ATTRIBUTE_UNUSED = { 157 1.1 christos { INPUT, "imm", HW_H_SINT, CGEN_MODE_INT, OP_ENT (IMM), 0, 0 }, 158 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 159 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 160 1.1 christos { OUTPUT, "h_memory_QI_add__SI_r0_ext__SI_trunc__HI_imm", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 161 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 162 1.1 christos }; 163 1.1 christos 164 1.1 christos static const CGEN_OPINST sfmt_sextb_ops[] ATTRIBUTE_UNUSED = { 165 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 166 1.1 christos { OUTPUT, "r2", HW_H_GR, CGEN_MODE_SI, OP_ENT (R2), 0, 0 }, 167 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 168 1.1 christos }; 169 1.1 christos 170 1.1 christos static const CGEN_OPINST sfmt_sh_ops[] ATTRIBUTE_UNUSED = { 171 1.1 christos { INPUT, "imm", HW_H_SINT, CGEN_MODE_INT, OP_ENT (IMM), 0, 0 }, 172 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 173 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 174 1.1 christos { OUTPUT, "h_memory_HI_add__SI_r0_ext__SI_trunc__HI_imm", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 175 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 176 1.1 christos }; 177 1.1 christos 178 1.1 christos static const CGEN_OPINST sfmt_sw_ops[] ATTRIBUTE_UNUSED = { 179 1.1 christos { INPUT, "imm", HW_H_SINT, CGEN_MODE_INT, OP_ENT (IMM), 0, 0 }, 180 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 181 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 182 1.1 christos { OUTPUT, "h_memory_SI_add__SI_r0_ext__SI_trunc__HI_imm", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 183 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 184 1.1 christos }; 185 1.1 christos 186 1.1 christos static const CGEN_OPINST sfmt_user_ops[] ATTRIBUTE_UNUSED = { 187 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 188 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 189 1.1 christos { INPUT, "user", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (USER), 0, 0 }, 190 1.1 christos { OUTPUT, "r2", HW_H_GR, CGEN_MODE_SI, OP_ENT (R2), 0, 0 }, 191 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 192 1.1 christos }; 193 1.1 christos 194 1.1 christos static const CGEN_OPINST sfmt_wcsr_ops[] ATTRIBUTE_UNUSED = { 195 1.1 christos { INPUT, "f_csr", HW_H_UINT, CGEN_MODE_UINT, 0, 0, 0 }, 196 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 197 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 198 1.1 christos }; 199 1.1 christos 200 1.1 christos static const CGEN_OPINST sfmt_break_ops[] ATTRIBUTE_UNUSED = { 201 1.1 christos { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 202 1.1 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 203 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 204 1.1 christos }; 205 1.1 christos 206 1.1 christos static const CGEN_OPINST sfmt_bret_ops[] ATTRIBUTE_UNUSED = { 207 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 208 1.1 christos { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 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_mvi_ops[] ATTRIBUTE_UNUSED = { 213 1.1 christos { INPUT, "imm", HW_H_SINT, CGEN_MODE_INT, OP_ENT (IMM), 0, 0 }, 214 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 215 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 216 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 217 1.1 christos }; 218 1.1 christos 219 1.1 christos static const CGEN_OPINST sfmt_mvui_ops[] ATTRIBUTE_UNUSED = { 220 1.1 christos { INPUT, "lo16", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (LO16), 0, 0 }, 221 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 222 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 223 1.1 christos }; 224 1.1 christos 225 1.1 christos static const CGEN_OPINST sfmt_mvhi_ops[] ATTRIBUTE_UNUSED = { 226 1.1 christos { INPUT, "hi16", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (HI16), 0, 0 }, 227 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 228 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 229 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 230 1.1 christos }; 231 1.1 christos 232 1.1 christos static const CGEN_OPINST sfmt_mva_ops[] ATTRIBUTE_UNUSED = { 233 1.1 christos { INPUT, "gp16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GP16), 0, 0 }, 234 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 235 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 236 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 237 1.1 christos }; 238 1.1 christos 239 1.1 christos static const CGEN_OPINST sfmt_nop_ops[] ATTRIBUTE_UNUSED = { 240 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 241 1.1 christos { OUTPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 242 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 243 1.1 christos }; 244 1.1 christos 245 1.1 christos static const CGEN_OPINST sfmt_lbgprel_ops[] ATTRIBUTE_UNUSED = { 246 1.1 christos { INPUT, "gp16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GP16), 0, 0 }, 247 1.1 christos { INPUT, "h_memory_QI_add__SI_r0_ext__SI_trunc__HI_gp16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 248 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 249 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 250 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 251 1.1 christos }; 252 1.1 christos 253 1.1 christos static const CGEN_OPINST sfmt_lhgprel_ops[] ATTRIBUTE_UNUSED = { 254 1.1 christos { INPUT, "gp16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GP16), 0, 0 }, 255 1.1 christos { INPUT, "h_memory_HI_add__SI_r0_ext__SI_trunc__HI_gp16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 256 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 257 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 258 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 259 1.1 christos }; 260 1.1 christos 261 1.1 christos static const CGEN_OPINST sfmt_lwgprel_ops[] ATTRIBUTE_UNUSED = { 262 1.1 christos { INPUT, "gp16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GP16), 0, 0 }, 263 1.1 christos { INPUT, "h_memory_SI_add__SI_r0_ext__SI_trunc__HI_gp16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 264 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 265 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 266 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 267 1.1 christos }; 268 1.1 christos 269 1.1 christos static const CGEN_OPINST sfmt_sbgprel_ops[] ATTRIBUTE_UNUSED = { 270 1.1 christos { INPUT, "gp16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GP16), 0, 0 }, 271 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 272 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 273 1.1 christos { OUTPUT, "h_memory_QI_add__SI_r0_ext__SI_trunc__HI_gp16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 274 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 275 1.1 christos }; 276 1.1 christos 277 1.1 christos static const CGEN_OPINST sfmt_shgprel_ops[] ATTRIBUTE_UNUSED = { 278 1.1 christos { INPUT, "gp16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GP16), 0, 0 }, 279 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 280 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 281 1.1 christos { OUTPUT, "h_memory_HI_add__SI_r0_ext__SI_trunc__HI_gp16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 282 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 283 1.1 christos }; 284 1.1 christos 285 1.1 christos static const CGEN_OPINST sfmt_swgprel_ops[] ATTRIBUTE_UNUSED = { 286 1.1 christos { INPUT, "gp16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GP16), 0, 0 }, 287 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 288 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 289 1.1 christos { OUTPUT, "h_memory_SI_add__SI_r0_ext__SI_trunc__HI_gp16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 290 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 291 1.1 christos }; 292 1.1 christos 293 1.1 christos static const CGEN_OPINST sfmt_lwgotrel_ops[] ATTRIBUTE_UNUSED = { 294 1.1 christos { INPUT, "got16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GOT16), 0, 0 }, 295 1.1 christos { INPUT, "h_memory_SI_add__SI_r0_ext__SI_trunc__HI_got16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 296 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 297 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 298 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 299 1.1 christos }; 300 1.1 christos 301 1.1 christos static const CGEN_OPINST sfmt_orhigotoffi_ops[] ATTRIBUTE_UNUSED = { 302 1.1 christos { INPUT, "gotoffhi16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GOTOFFHI16), 0, 0 }, 303 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 304 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 305 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 306 1.1 christos }; 307 1.1 christos 308 1.1 christos static const CGEN_OPINST sfmt_addgotoff_ops[] ATTRIBUTE_UNUSED = { 309 1.1 christos { INPUT, "gotofflo16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GOTOFFLO16), 0, 0 }, 310 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 311 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 312 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 313 1.1 christos }; 314 1.1 christos 315 1.1 christos static const CGEN_OPINST sfmt_swgotoff_ops[] ATTRIBUTE_UNUSED = { 316 1.1 christos { INPUT, "gotofflo16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GOTOFFLO16), 0, 0 }, 317 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 318 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 319 1.1 christos { OUTPUT, "h_memory_SI_add__SI_r0_ext__SI_trunc__HI_gotofflo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 320 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 321 1.1 christos }; 322 1.1 christos 323 1.1 christos static const CGEN_OPINST sfmt_lwgotoff_ops[] ATTRIBUTE_UNUSED = { 324 1.1 christos { INPUT, "gotofflo16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GOTOFFLO16), 0, 0 }, 325 1.1 christos { INPUT, "h_memory_SI_add__SI_r0_ext__SI_trunc__HI_gotofflo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 326 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 327 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 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_shgotoff_ops[] ATTRIBUTE_UNUSED = { 332 1.1 christos { INPUT, "gotofflo16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GOTOFFLO16), 0, 0 }, 333 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 334 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 335 1.1 christos { OUTPUT, "h_memory_HI_add__SI_r0_ext__SI_trunc__HI_gotofflo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 336 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 337 1.1 christos }; 338 1.1 christos 339 1.1 christos static const CGEN_OPINST sfmt_lhgotoff_ops[] ATTRIBUTE_UNUSED = { 340 1.1 christos { INPUT, "gotofflo16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GOTOFFLO16), 0, 0 }, 341 1.1 christos { INPUT, "h_memory_HI_add__SI_r0_ext__SI_trunc__HI_gotofflo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 342 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 343 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 344 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 345 1.1 christos }; 346 1.1 christos 347 1.1 christos static const CGEN_OPINST sfmt_sbgotoff_ops[] ATTRIBUTE_UNUSED = { 348 1.1 christos { INPUT, "gotofflo16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GOTOFFLO16), 0, 0 }, 349 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 350 1.1 christos { INPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 351 1.1 christos { OUTPUT, "h_memory_QI_add__SI_r0_ext__SI_trunc__HI_gotofflo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 352 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 353 1.1 christos }; 354 1.1 christos 355 1.1 christos static const CGEN_OPINST sfmt_lbgotoff_ops[] ATTRIBUTE_UNUSED = { 356 1.1 christos { INPUT, "gotofflo16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (GOTOFFLO16), 0, 0 }, 357 1.1 christos { INPUT, "h_memory_QI_add__SI_r0_ext__SI_trunc__HI_gotofflo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 358 1.1 christos { INPUT, "r0", HW_H_GR, CGEN_MODE_SI, OP_ENT (R0), 0, 0 }, 359 1.1 christos { OUTPUT, "r1", HW_H_GR, CGEN_MODE_SI, OP_ENT (R1), 0, 0 }, 360 1.1 christos { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 361 1.1 christos }; 362 1.1 christos 363 1.1 christos #undef OP_ENT 364 1.1 christos #undef INPUT 365 1.1 christos #undef OUTPUT 366 1.1 christos #undef END 367 1.1 christos #undef COND_REF 368 1.1 christos 369 1.1 christos /* Operand instance lookup table. */ 370 1.1 christos 371 1.1 christos static const CGEN_OPINST *lm32_cgen_opinst_table[MAX_INSNS] = { 372 1.1 christos 0, 373 1.1 christos & sfmt_add_ops[0], 374 1.1 christos & sfmt_addi_ops[0], 375 1.1 christos & sfmt_add_ops[0], 376 1.1 christos & sfmt_andi_ops[0], 377 1.1 christos & sfmt_andhii_ops[0], 378 1.1 christos & sfmt_b_ops[0], 379 1.1 christos & sfmt_bi_ops[0], 380 1.1 christos & sfmt_be_ops[0], 381 1.1 christos & sfmt_be_ops[0], 382 1.1 christos & sfmt_be_ops[0], 383 1.1 christos & sfmt_be_ops[0], 384 1.1 christos & sfmt_be_ops[0], 385 1.1 christos & sfmt_be_ops[0], 386 1.1 christos & sfmt_call_ops[0], 387 1.1 christos & sfmt_calli_ops[0], 388 1.1 christos & sfmt_add_ops[0], 389 1.1 christos & sfmt_addi_ops[0], 390 1.1 christos & sfmt_add_ops[0], 391 1.1 christos & sfmt_addi_ops[0], 392 1.1 christos & sfmt_add_ops[0], 393 1.1 christos & sfmt_addi_ops[0], 394 1.1 christos & sfmt_add_ops[0], 395 1.1 christos & sfmt_andi_ops[0], 396 1.1 christos & sfmt_add_ops[0], 397 1.1 christos & sfmt_andi_ops[0], 398 1.1 christos & sfmt_add_ops[0], 399 1.1 christos & sfmt_addi_ops[0], 400 1.1 christos & sfmt_divu_ops[0], 401 1.1 christos & sfmt_lb_ops[0], 402 1.1 christos & sfmt_lb_ops[0], 403 1.1 christos & sfmt_lh_ops[0], 404 1.1 christos & sfmt_lh_ops[0], 405 1.1 christos & sfmt_lw_ops[0], 406 1.1 christos & sfmt_divu_ops[0], 407 1.1 christos & sfmt_add_ops[0], 408 1.1 christos & sfmt_addi_ops[0], 409 1.1 christos & sfmt_add_ops[0], 410 1.1 christos & sfmt_andi_ops[0], 411 1.1 christos & sfmt_add_ops[0], 412 1.1 christos & sfmt_ori_ops[0], 413 1.1 christos & sfmt_andhii_ops[0], 414 1.1 christos & sfmt_rcsr_ops[0], 415 1.1 christos & sfmt_sb_ops[0], 416 1.1 christos & sfmt_sextb_ops[0], 417 1.1 christos & sfmt_sextb_ops[0], 418 1.1 christos & sfmt_sh_ops[0], 419 1.1 christos & sfmt_add_ops[0], 420 1.1 christos & sfmt_addi_ops[0], 421 1.1 christos & sfmt_add_ops[0], 422 1.1 christos & sfmt_addi_ops[0], 423 1.1 christos & sfmt_add_ops[0], 424 1.1 christos & sfmt_addi_ops[0], 425 1.1 christos & sfmt_add_ops[0], 426 1.1 christos & sfmt_sw_ops[0], 427 1.1 christos & sfmt_user_ops[0], 428 1.1 christos & sfmt_wcsr_ops[0], 429 1.1 christos & sfmt_add_ops[0], 430 1.1 christos & sfmt_andi_ops[0], 431 1.1 christos & sfmt_add_ops[0], 432 1.1 christos & sfmt_andi_ops[0], 433 1.1 christos & sfmt_break_ops[0], 434 1.1 christos & sfmt_break_ops[0], 435 1.1 christos & sfmt_bret_ops[0], 436 1.1 christos & sfmt_bret_ops[0], 437 1.1 christos & sfmt_bret_ops[0], 438 1.1 christos & sfmt_sextb_ops[0], 439 1.1 christos & sfmt_mvi_ops[0], 440 1.1 christos & sfmt_mvui_ops[0], 441 1.1 christos & sfmt_mvhi_ops[0], 442 1.1 christos & sfmt_mva_ops[0], 443 1.1 christos & sfmt_sextb_ops[0], 444 1.1 christos & sfmt_nop_ops[0], 445 1.1 christos & sfmt_lbgprel_ops[0], 446 1.1 christos & sfmt_lbgprel_ops[0], 447 1.1 christos & sfmt_lhgprel_ops[0], 448 1.1 christos & sfmt_lhgprel_ops[0], 449 1.1 christos & sfmt_lwgprel_ops[0], 450 1.1 christos & sfmt_sbgprel_ops[0], 451 1.1 christos & sfmt_shgprel_ops[0], 452 1.1 christos & sfmt_swgprel_ops[0], 453 1.1 christos & sfmt_lwgotrel_ops[0], 454 1.1 christos & sfmt_orhigotoffi_ops[0], 455 1.1 christos & sfmt_addgotoff_ops[0], 456 1.1 christos & sfmt_swgotoff_ops[0], 457 1.1 christos & sfmt_lwgotoff_ops[0], 458 1.1 christos & sfmt_shgotoff_ops[0], 459 1.1 christos & sfmt_lhgotoff_ops[0], 460 1.1 christos & sfmt_lhgotoff_ops[0], 461 1.1 christos & sfmt_sbgotoff_ops[0], 462 1.1 christos & sfmt_lbgotoff_ops[0], 463 1.1 christos & sfmt_lbgotoff_ops[0], 464 1.1 christos }; 465 1.1 christos 466 1.1 christos /* Function to call before using the operand instance table. */ 467 1.1 christos 468 1.1 christos void 469 1.6 christos lm32_cgen_init_opinst_table (CGEN_CPU_DESC cd) 470 1.1 christos { 471 1.1 christos int i; 472 1.1 christos const CGEN_OPINST **oi = & lm32_cgen_opinst_table[0]; 473 1.1 christos CGEN_INSN *insns = (CGEN_INSN *) cd->insn_table.init_entries; 474 1.1 christos for (i = 0; i < MAX_INSNS; ++i) 475 1.1 christos insns[i].opinst = oi[i]; 476 1.1 christos } 477