1 1.1.1.5 christos /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */ 2 1.1 christos /* CPU data header for xstormy16. 3 1.1 christos 4 1.1 christos THIS FILE IS MACHINE GENERATED WITH CGEN. 5 1.1 christos 6 1.1.1.9 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 #ifndef XSTORMY16_CPU_H 27 1.1 christos #define XSTORMY16_CPU_H 28 1.1 christos 29 1.1.1.4 christos #ifdef __cplusplus 30 1.1.1.4 christos extern "C" { 31 1.1.1.4 christos #endif 32 1.1.1.4 christos 33 1.1 christos #define CGEN_ARCH xstormy16 34 1.1 christos 35 1.1 christos /* Given symbol S, return xstormy16_cgen_<S>. */ 36 1.1 christos #define CGEN_SYM(s) xstormy16##_cgen_##s 37 1.1 christos 38 1.1 christos 39 1.1 christos /* Selected cpu families. */ 40 1.1 christos #define HAVE_CPU_XSTORMY16 41 1.1 christos 42 1.1 christos #define CGEN_INSN_LSB0_P 0 43 1.1 christos 44 1.1 christos /* Minimum size of any insn (in bytes). */ 45 1.1 christos #define CGEN_MIN_INSN_SIZE 2 46 1.1 christos 47 1.1 christos /* Maximum size of any insn (in bytes). */ 48 1.1 christos #define CGEN_MAX_INSN_SIZE 4 49 1.1 christos 50 1.1 christos #define CGEN_INT_INSN_P 1 51 1.1 christos 52 1.1 christos /* Maximum number of syntax elements in an instruction. */ 53 1.1 christos #define CGEN_ACTUAL_MAX_SYNTAX_ELEMENTS 19 54 1.1 christos 55 1.1 christos /* CGEN_MNEMONIC_OPERANDS is defined if mnemonics have operands. 56 1.1 christos e.g. In "b,a foo" the ",a" is an operand. If mnemonics have operands 57 1.1 christos we can't hash on everything up to the space. */ 58 1.1 christos #define CGEN_MNEMONIC_OPERANDS 59 1.1 christos 60 1.1 christos /* Maximum number of fields in an instruction. */ 61 1.1 christos #define CGEN_ACTUAL_MAX_IFMT_OPERANDS 9 62 1.1 christos 63 1.1 christos /* Enums. */ 64 1.1 christos 65 1.1 christos /* Enum declaration for . */ 66 1.1 christos typedef enum gr_names { 67 1.1 christos H_GR_R0 = 0, H_GR_R1 = 1, H_GR_R2 = 2, H_GR_R3 = 3 68 1.1 christos , H_GR_R4 = 4, H_GR_R5 = 5, H_GR_R6 = 6, H_GR_R7 = 7 69 1.1 christos , H_GR_R8 = 8, H_GR_R9 = 9, H_GR_R10 = 10, H_GR_R11 = 11 70 1.1 christos , H_GR_R12 = 12, H_GR_R13 = 13, H_GR_R14 = 14, H_GR_R15 = 15 71 1.1 christos , H_GR_PSW = 14, H_GR_SP = 15 72 1.1 christos } GR_NAMES; 73 1.1 christos 74 1.1 christos /* Enum declaration for . */ 75 1.1 christos typedef enum gr_rb_names { 76 1.1 christos H_RBJ_R8 = 0, H_RBJ_R9 = 1, H_RBJ_R10 = 2, H_RBJ_R11 = 3 77 1.1 christos , H_RBJ_R12 = 4, H_RBJ_R13 = 5, H_RBJ_R14 = 6, H_RBJ_R15 = 7 78 1.1 christos , H_RBJ_PSW = 6, H_RBJ_SP = 7 79 1.1 christos } GR_RB_NAMES; 80 1.1 christos 81 1.1 christos /* Enum declaration for insn op enums. */ 82 1.1 christos typedef enum insn_op1 { 83 1.1 christos OP1_0, OP1_1, OP1_2, OP1_3 84 1.1 christos , OP1_4, OP1_5, OP1_6, OP1_7 85 1.1 christos , OP1_8, OP1_9, OP1_A, OP1_B 86 1.1 christos , OP1_C, OP1_D, OP1_E, OP1_F 87 1.1 christos } INSN_OP1; 88 1.1 christos 89 1.1 christos /* Enum declaration for insn op enums. */ 90 1.1 christos typedef enum insn_op2 { 91 1.1 christos OP2_0, OP2_1, OP2_2, OP2_3 92 1.1 christos , OP2_4, OP2_5, OP2_6, OP2_7 93 1.1 christos , OP2_8, OP2_9, OP2_A, OP2_B 94 1.1 christos , OP2_C, OP2_D, OP2_E, OP2_F 95 1.1 christos } INSN_OP2; 96 1.1 christos 97 1.1 christos /* Enum declaration for insn op enums. */ 98 1.1 christos typedef enum insn_op2a { 99 1.1 christos OP2A_0, OP2A_2, OP2A_4, OP2A_6 100 1.1 christos , OP2A_8, OP2A_A, OP2A_C, OP2A_E 101 1.1 christos } INSN_OP2A; 102 1.1 christos 103 1.1 christos /* Enum declaration for insn op enums. */ 104 1.1 christos typedef enum insn_op2m { 105 1.1 christos OP2M_0, OP2M_1 106 1.1 christos } INSN_OP2M; 107 1.1 christos 108 1.1 christos /* Enum declaration for insn op enums. */ 109 1.1 christos typedef enum insn_op3 { 110 1.1 christos OP3_0, OP3_1, OP3_2, OP3_3 111 1.1 christos , OP3_4, OP3_5, OP3_6, OP3_7 112 1.1 christos , OP3_8, OP3_9, OP3_A, OP3_B 113 1.1 christos , OP3_C, OP3_D, OP3_E, OP3_F 114 1.1 christos } INSN_OP3; 115 1.1 christos 116 1.1 christos /* Enum declaration for insn op enums. */ 117 1.1 christos typedef enum insn_op3a { 118 1.1 christos OP3A_0, OP3A_1, OP3A_2, OP3A_3 119 1.1 christos } INSN_OP3A; 120 1.1 christos 121 1.1 christos /* Enum declaration for insn op enums. */ 122 1.1 christos typedef enum insn_op3b { 123 1.1 christos OP3B_0, OP3B_2, OP3B_4, OP3B_6 124 1.1 christos , OP3B_8, OP3B_A, OP3B_C, OP3B_E 125 1.1 christos } INSN_OP3B; 126 1.1 christos 127 1.1 christos /* Enum declaration for insn op enums. */ 128 1.1 christos typedef enum insn_op4 { 129 1.1 christos OP4_0, OP4_1, OP4_2, OP4_3 130 1.1 christos , OP4_4, OP4_5, OP4_6, OP4_7 131 1.1 christos , OP4_8, OP4_9, OP4_A, OP4_B 132 1.1 christos , OP4_C, OP4_D, OP4_E, OP4_F 133 1.1 christos } INSN_OP4; 134 1.1 christos 135 1.1 christos /* Enum declaration for insn op enums. */ 136 1.1 christos typedef enum insn_op4m { 137 1.1 christos OP4M_0, OP4M_1 138 1.1 christos } INSN_OP4M; 139 1.1 christos 140 1.1 christos /* Enum declaration for insn op enums. */ 141 1.1 christos typedef enum insn_op4b { 142 1.1 christos OP4B_0, OP4B_1 143 1.1 christos } INSN_OP4B; 144 1.1 christos 145 1.1 christos /* Enum declaration for insn op enums. */ 146 1.1 christos typedef enum insn_op5 { 147 1.1 christos OP5_0, OP5_1, OP5_2, OP5_3 148 1.1 christos , OP5_4, OP5_5, OP5_6, OP5_7 149 1.1 christos , OP5_8, OP5_9, OP5_A, OP5_B 150 1.1 christos , OP5_C, OP5_D, OP5_E, OP5_F 151 1.1 christos } INSN_OP5; 152 1.1 christos 153 1.1 christos /* Enum declaration for insn op enums. */ 154 1.1 christos typedef enum insn_op5a { 155 1.1 christos OP5A_0, OP5A_1 156 1.1 christos } INSN_OP5A; 157 1.1 christos 158 1.1 christos /* Attributes. */ 159 1.1 christos 160 1.1 christos /* Enum declaration for machine type selection. */ 161 1.1 christos typedef enum mach_attr { 162 1.1 christos MACH_BASE, MACH_XSTORMY16, MACH_MAX 163 1.1 christos } MACH_ATTR; 164 1.1 christos 165 1.1 christos /* Enum declaration for instruction set selection. */ 166 1.1 christos typedef enum isa_attr { 167 1.1 christos ISA_XSTORMY16, ISA_MAX 168 1.1 christos } ISA_ATTR; 169 1.1 christos 170 1.1 christos /* Number of architecture variants. */ 171 1.1 christos #define MAX_ISAS 1 172 1.1 christos #define MAX_MACHS ((int) MACH_MAX) 173 1.1 christos 174 1.1 christos /* Ifield support. */ 175 1.1 christos 176 1.1 christos /* Ifield attribute indices. */ 177 1.1 christos 178 1.1 christos /* Enum declaration for cgen_ifld attrs. */ 179 1.1 christos typedef enum cgen_ifld_attr { 180 1.1 christos CGEN_IFLD_VIRTUAL, CGEN_IFLD_PCREL_ADDR, CGEN_IFLD_ABS_ADDR, CGEN_IFLD_RESERVED 181 1.1 christos , CGEN_IFLD_SIGN_OPT, CGEN_IFLD_SIGNED, CGEN_IFLD_END_BOOLS, CGEN_IFLD_START_NBOOLS = 31 182 1.1 christos , CGEN_IFLD_MACH, CGEN_IFLD_END_NBOOLS 183 1.1 christos } CGEN_IFLD_ATTR; 184 1.1 christos 185 1.1 christos /* Number of non-boolean elements in cgen_ifld_attr. */ 186 1.1 christos #define CGEN_IFLD_NBOOL_ATTRS (CGEN_IFLD_END_NBOOLS - CGEN_IFLD_START_NBOOLS - 1) 187 1.1 christos 188 1.1 christos /* cgen_ifld attribute accessor macros. */ 189 1.1 christos #define CGEN_ATTR_CGEN_IFLD_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_IFLD_MACH-CGEN_IFLD_START_NBOOLS-1].nonbitset) 190 1.1 christos #define CGEN_ATTR_CGEN_IFLD_VIRTUAL_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_VIRTUAL)) != 0) 191 1.1 christos #define CGEN_ATTR_CGEN_IFLD_PCREL_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_PCREL_ADDR)) != 0) 192 1.1 christos #define CGEN_ATTR_CGEN_IFLD_ABS_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_ABS_ADDR)) != 0) 193 1.1 christos #define CGEN_ATTR_CGEN_IFLD_RESERVED_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_RESERVED)) != 0) 194 1.1 christos #define CGEN_ATTR_CGEN_IFLD_SIGN_OPT_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_SIGN_OPT)) != 0) 195 1.1 christos #define CGEN_ATTR_CGEN_IFLD_SIGNED_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_IFLD_SIGNED)) != 0) 196 1.1 christos 197 1.1 christos /* Enum declaration for xstormy16 ifield types. */ 198 1.1 christos typedef enum ifield_type { 199 1.1 christos XSTORMY16_F_NIL, XSTORMY16_F_ANYOF, XSTORMY16_F_RD, XSTORMY16_F_RDM 200 1.1 christos , XSTORMY16_F_RM, XSTORMY16_F_RS, XSTORMY16_F_RB, XSTORMY16_F_RBJ 201 1.1 christos , XSTORMY16_F_OP1, XSTORMY16_F_OP2, XSTORMY16_F_OP2A, XSTORMY16_F_OP2M 202 1.1 christos , XSTORMY16_F_OP3, XSTORMY16_F_OP3A, XSTORMY16_F_OP3B, XSTORMY16_F_OP4 203 1.1 christos , XSTORMY16_F_OP4M, XSTORMY16_F_OP4B, XSTORMY16_F_OP5, XSTORMY16_F_OP5A 204 1.1 christos , XSTORMY16_F_OP, XSTORMY16_F_IMM2, XSTORMY16_F_IMM3, XSTORMY16_F_IMM3B 205 1.1 christos , XSTORMY16_F_IMM4, XSTORMY16_F_IMM8, XSTORMY16_F_IMM12, XSTORMY16_F_IMM16 206 1.1 christos , XSTORMY16_F_LMEM8, XSTORMY16_F_HMEM8, XSTORMY16_F_REL8_2, XSTORMY16_F_REL8_4 207 1.1 christos , XSTORMY16_F_REL12, XSTORMY16_F_REL12A, XSTORMY16_F_ABS24_1, XSTORMY16_F_ABS24_2 208 1.1 christos , XSTORMY16_F_ABS24, XSTORMY16_F_MAX 209 1.1 christos } IFIELD_TYPE; 210 1.1 christos 211 1.1 christos #define MAX_IFLD ((int) XSTORMY16_F_MAX) 212 1.1 christos 213 1.1 christos /* Hardware attribute indices. */ 214 1.1 christos 215 1.1 christos /* Enum declaration for cgen_hw attrs. */ 216 1.1 christos typedef enum cgen_hw_attr { 217 1.1 christos CGEN_HW_VIRTUAL, CGEN_HW_CACHE_ADDR, CGEN_HW_PC, CGEN_HW_PROFILE 218 1.1 christos , CGEN_HW_END_BOOLS, CGEN_HW_START_NBOOLS = 31, CGEN_HW_MACH, CGEN_HW_END_NBOOLS 219 1.1 christos } CGEN_HW_ATTR; 220 1.1 christos 221 1.1 christos /* Number of non-boolean elements in cgen_hw_attr. */ 222 1.1 christos #define CGEN_HW_NBOOL_ATTRS (CGEN_HW_END_NBOOLS - CGEN_HW_START_NBOOLS - 1) 223 1.1 christos 224 1.1 christos /* cgen_hw attribute accessor macros. */ 225 1.1 christos #define CGEN_ATTR_CGEN_HW_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_HW_MACH-CGEN_HW_START_NBOOLS-1].nonbitset) 226 1.1 christos #define CGEN_ATTR_CGEN_HW_VIRTUAL_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_HW_VIRTUAL)) != 0) 227 1.1 christos #define CGEN_ATTR_CGEN_HW_CACHE_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_HW_CACHE_ADDR)) != 0) 228 1.1 christos #define CGEN_ATTR_CGEN_HW_PC_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_HW_PC)) != 0) 229 1.1 christos #define CGEN_ATTR_CGEN_HW_PROFILE_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_HW_PROFILE)) != 0) 230 1.1 christos 231 1.1 christos /* Enum declaration for xstormy16 hardware types. */ 232 1.1 christos typedef enum cgen_hw_type { 233 1.1 christos HW_H_MEMORY, HW_H_SINT, HW_H_UINT, HW_H_ADDR 234 1.1 christos , HW_H_IADDR, HW_H_PC, HW_H_GR, HW_H_RB 235 1.1 christos , HW_H_RBJ, HW_H_RPSW, HW_H_Z8, HW_H_Z16 236 1.1 christos , HW_H_CY, HW_H_HC, HW_H_OV, HW_H_PT 237 1.1 christos , HW_H_S, HW_H_BRANCHCOND, HW_H_WORDSIZE, HW_MAX 238 1.1 christos } CGEN_HW_TYPE; 239 1.1 christos 240 1.1 christos #define MAX_HW ((int) HW_MAX) 241 1.1 christos 242 1.1 christos /* Operand attribute indices. */ 243 1.1 christos 244 1.1 christos /* Enum declaration for cgen_operand attrs. */ 245 1.1 christos typedef enum cgen_operand_attr { 246 1.1 christos CGEN_OPERAND_VIRTUAL, CGEN_OPERAND_PCREL_ADDR, CGEN_OPERAND_ABS_ADDR, CGEN_OPERAND_SIGN_OPT 247 1.1 christos , CGEN_OPERAND_SIGNED, CGEN_OPERAND_NEGATIVE, CGEN_OPERAND_RELAX, CGEN_OPERAND_SEM_ONLY 248 1.1 christos , CGEN_OPERAND_END_BOOLS, CGEN_OPERAND_START_NBOOLS = 31, CGEN_OPERAND_MACH, CGEN_OPERAND_END_NBOOLS 249 1.1 christos } CGEN_OPERAND_ATTR; 250 1.1 christos 251 1.1 christos /* Number of non-boolean elements in cgen_operand_attr. */ 252 1.1 christos #define CGEN_OPERAND_NBOOL_ATTRS (CGEN_OPERAND_END_NBOOLS - CGEN_OPERAND_START_NBOOLS - 1) 253 1.1 christos 254 1.1 christos /* cgen_operand attribute accessor macros. */ 255 1.1 christos #define CGEN_ATTR_CGEN_OPERAND_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_OPERAND_MACH-CGEN_OPERAND_START_NBOOLS-1].nonbitset) 256 1.1 christos #define CGEN_ATTR_CGEN_OPERAND_VIRTUAL_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_VIRTUAL)) != 0) 257 1.1 christos #define CGEN_ATTR_CGEN_OPERAND_PCREL_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_PCREL_ADDR)) != 0) 258 1.1 christos #define CGEN_ATTR_CGEN_OPERAND_ABS_ADDR_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_ABS_ADDR)) != 0) 259 1.1 christos #define CGEN_ATTR_CGEN_OPERAND_SIGN_OPT_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_SIGN_OPT)) != 0) 260 1.1 christos #define CGEN_ATTR_CGEN_OPERAND_SIGNED_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_SIGNED)) != 0) 261 1.1 christos #define CGEN_ATTR_CGEN_OPERAND_NEGATIVE_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_NEGATIVE)) != 0) 262 1.1 christos #define CGEN_ATTR_CGEN_OPERAND_RELAX_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_RELAX)) != 0) 263 1.1 christos #define CGEN_ATTR_CGEN_OPERAND_SEM_ONLY_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_OPERAND_SEM_ONLY)) != 0) 264 1.1 christos 265 1.1 christos /* Enum declaration for xstormy16 operand types. */ 266 1.1 christos typedef enum cgen_operand_type { 267 1.1 christos XSTORMY16_OPERAND_PC, XSTORMY16_OPERAND_PSW_Z8, XSTORMY16_OPERAND_PSW_Z16, XSTORMY16_OPERAND_PSW_CY 268 1.1 christos , XSTORMY16_OPERAND_PSW_HC, XSTORMY16_OPERAND_PSW_OV, XSTORMY16_OPERAND_PSW_PT, XSTORMY16_OPERAND_PSW_S 269 1.1 christos , XSTORMY16_OPERAND_RD, XSTORMY16_OPERAND_RDM, XSTORMY16_OPERAND_RM, XSTORMY16_OPERAND_RS 270 1.1 christos , XSTORMY16_OPERAND_RB, XSTORMY16_OPERAND_RBJ, XSTORMY16_OPERAND_BCOND2, XSTORMY16_OPERAND_WS2 271 1.1 christos , XSTORMY16_OPERAND_BCOND5, XSTORMY16_OPERAND_IMM2, XSTORMY16_OPERAND_IMM3, XSTORMY16_OPERAND_IMM3B 272 1.1 christos , XSTORMY16_OPERAND_IMM4, XSTORMY16_OPERAND_IMM8, XSTORMY16_OPERAND_IMM8SMALL, XSTORMY16_OPERAND_IMM12 273 1.1 christos , XSTORMY16_OPERAND_IMM16, XSTORMY16_OPERAND_LMEM8, XSTORMY16_OPERAND_HMEM8, XSTORMY16_OPERAND_REL8_2 274 1.1 christos , XSTORMY16_OPERAND_REL8_4, XSTORMY16_OPERAND_REL12, XSTORMY16_OPERAND_REL12A, XSTORMY16_OPERAND_ABS24 275 1.1 christos , XSTORMY16_OPERAND_PSW, XSTORMY16_OPERAND_RPSW, XSTORMY16_OPERAND_SP, XSTORMY16_OPERAND_R0 276 1.1 christos , XSTORMY16_OPERAND_R1, XSTORMY16_OPERAND_R2, XSTORMY16_OPERAND_R8, XSTORMY16_OPERAND_MAX 277 1.1 christos } CGEN_OPERAND_TYPE; 278 1.1 christos 279 1.1 christos /* Number of operands types. */ 280 1.1 christos #define MAX_OPERANDS 39 281 1.1 christos 282 1.1 christos /* Maximum number of operands referenced by any insn. */ 283 1.1 christos #define MAX_OPERAND_INSTANCES 8 284 1.1 christos 285 1.1 christos /* Insn attribute indices. */ 286 1.1 christos 287 1.1 christos /* Enum declaration for cgen_insn attrs. */ 288 1.1 christos typedef enum cgen_insn_attr { 289 1.1 christos CGEN_INSN_ALIAS, CGEN_INSN_VIRTUAL, CGEN_INSN_UNCOND_CTI, CGEN_INSN_COND_CTI 290 1.1 christos , CGEN_INSN_SKIP_CTI, CGEN_INSN_DELAY_SLOT, CGEN_INSN_RELAXABLE, CGEN_INSN_RELAXED 291 1.1 christos , CGEN_INSN_NO_DIS, CGEN_INSN_PBB, CGEN_INSN_END_BOOLS, CGEN_INSN_START_NBOOLS = 31 292 1.1 christos , CGEN_INSN_MACH, CGEN_INSN_END_NBOOLS 293 1.1 christos } CGEN_INSN_ATTR; 294 1.1 christos 295 1.1 christos /* Number of non-boolean elements in cgen_insn_attr. */ 296 1.1 christos #define CGEN_INSN_NBOOL_ATTRS (CGEN_INSN_END_NBOOLS - CGEN_INSN_START_NBOOLS - 1) 297 1.1 christos 298 1.1 christos /* cgen_insn attribute accessor macros. */ 299 1.1 christos #define CGEN_ATTR_CGEN_INSN_MACH_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_MACH-CGEN_INSN_START_NBOOLS-1].nonbitset) 300 1.1 christos #define CGEN_ATTR_CGEN_INSN_ALIAS_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_ALIAS)) != 0) 301 1.1 christos #define CGEN_ATTR_CGEN_INSN_VIRTUAL_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_VIRTUAL)) != 0) 302 1.1 christos #define CGEN_ATTR_CGEN_INSN_UNCOND_CTI_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_UNCOND_CTI)) != 0) 303 1.1 christos #define CGEN_ATTR_CGEN_INSN_COND_CTI_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_COND_CTI)) != 0) 304 1.1 christos #define CGEN_ATTR_CGEN_INSN_SKIP_CTI_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_SKIP_CTI)) != 0) 305 1.1 christos #define CGEN_ATTR_CGEN_INSN_DELAY_SLOT_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_DELAY_SLOT)) != 0) 306 1.1 christos #define CGEN_ATTR_CGEN_INSN_RELAXABLE_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_RELAXABLE)) != 0) 307 1.1 christos #define CGEN_ATTR_CGEN_INSN_RELAXED_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_RELAXED)) != 0) 308 1.1 christos #define CGEN_ATTR_CGEN_INSN_NO_DIS_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_NO_DIS)) != 0) 309 1.1 christos #define CGEN_ATTR_CGEN_INSN_PBB_VALUE(attrs) (((attrs)->bool_ & (1 << CGEN_INSN_PBB)) != 0) 310 1.1 christos 311 1.1 christos /* cgen.h uses things we just defined. */ 312 1.1 christos #include "opcode/cgen.h" 313 1.1 christos 314 1.1 christos extern const struct cgen_ifld xstormy16_cgen_ifld_table[]; 315 1.1 christos 316 1.1 christos /* Attributes. */ 317 1.1 christos extern const CGEN_ATTR_TABLE xstormy16_cgen_hardware_attr_table[]; 318 1.1 christos extern const CGEN_ATTR_TABLE xstormy16_cgen_ifield_attr_table[]; 319 1.1 christos extern const CGEN_ATTR_TABLE xstormy16_cgen_operand_attr_table[]; 320 1.1 christos extern const CGEN_ATTR_TABLE xstormy16_cgen_insn_attr_table[]; 321 1.1 christos 322 1.1 christos /* Hardware decls. */ 323 1.1 christos 324 1.1 christos extern CGEN_KEYWORD xstormy16_cgen_opval_gr_names; 325 1.1 christos extern CGEN_KEYWORD xstormy16_cgen_opval_gr_Rb_names; 326 1.1 christos extern CGEN_KEYWORD xstormy16_cgen_opval_gr_Rb_names; 327 1.1 christos extern CGEN_KEYWORD xstormy16_cgen_opval_h_branchcond; 328 1.1 christos extern CGEN_KEYWORD xstormy16_cgen_opval_h_wordsize; 329 1.1 christos 330 1.1 christos extern const CGEN_HW_ENTRY xstormy16_cgen_hw_table[]; 331 1.1 christos 332 1.1 christos 333 1.1 christos 334 1.1.1.4 christos #ifdef __cplusplus 335 1.1.1.4 christos } 336 1.1.1.4 christos #endif 337 1.1.1.4 christos 338 1.1 christos #endif /* XSTORMY16_CPU_H */ 339