184865Sobrien/* ia64.h -- Header file for ia64 opcode table 2218822Sdim Copyright (C) 1998, 1999, 2000, 2002, 2005, 2006 3218822Sdim Free Software Foundation, Inc. 4218822Sdim Contributed by David Mosberger-Tang <davidm@hpl.hp.com> */ 584865Sobrien 684865Sobrien#ifndef opcode_ia64_h 784865Sobrien#define opcode_ia64_h 884865Sobrien 984865Sobrien#include <sys/types.h> 1084865Sobrien 11104834Sobrien#include "bfd.h" 1284865Sobrien 1384865Sobrien 1484865Sobrientypedef BFD_HOST_U_64_BIT ia64_insn; 1584865Sobrien 1684865Sobrienenum ia64_insn_type 1784865Sobrien { 1884865Sobrien IA64_TYPE_NIL = 0, /* illegal type */ 1984865Sobrien IA64_TYPE_A, /* integer alu (I- or M-unit) */ 2084865Sobrien IA64_TYPE_I, /* non-alu integer (I-unit) */ 2184865Sobrien IA64_TYPE_M, /* memory (M-unit) */ 2284865Sobrien IA64_TYPE_B, /* branch (B-unit) */ 2384865Sobrien IA64_TYPE_F, /* floating-point (F-unit) */ 2484865Sobrien IA64_TYPE_X, /* long encoding (X-unit) */ 2584865Sobrien IA64_TYPE_DYN, /* Dynamic opcode */ 2684865Sobrien IA64_NUM_TYPES 2784865Sobrien }; 2884865Sobrien 2984865Sobrienenum ia64_unit 3084865Sobrien { 3184865Sobrien IA64_UNIT_NIL = 0, /* illegal unit */ 3284865Sobrien IA64_UNIT_I, /* integer unit */ 3384865Sobrien IA64_UNIT_M, /* memory unit */ 3484865Sobrien IA64_UNIT_B, /* branching unit */ 3584865Sobrien IA64_UNIT_F, /* floating-point unit */ 3684865Sobrien IA64_UNIT_L, /* long "unit" */ 3784865Sobrien IA64_UNIT_X, /* may be integer or branch unit */ 3884865Sobrien IA64_NUM_UNITS 3984865Sobrien }; 4084865Sobrien 4184865Sobrien/* Changes to this enumeration must be propagated to the operand table in 42130561Sobrien bfd/cpu-ia64-opc.c 43130561Sobrien */ 4484865Sobrienenum ia64_opnd 4584865Sobrien { 4684865Sobrien IA64_OPND_NIL, /* no operand---MUST BE FIRST!*/ 4784865Sobrien 4884865Sobrien /* constants */ 49130561Sobrien IA64_OPND_AR_CSD, /* application register csd (ar.csd) */ 5084865Sobrien IA64_OPND_AR_CCV, /* application register ccv (ar.ccv) */ 5184865Sobrien IA64_OPND_AR_PFS, /* application register pfs (ar.pfs) */ 5284865Sobrien IA64_OPND_C1, /* the constant 1 */ 5384865Sobrien IA64_OPND_C8, /* the constant 8 */ 5484865Sobrien IA64_OPND_C16, /* the constant 16 */ 5584865Sobrien IA64_OPND_GR0, /* gr0 */ 5684865Sobrien IA64_OPND_IP, /* instruction pointer (ip) */ 5784865Sobrien IA64_OPND_PR, /* predicate register (pr) */ 5884865Sobrien IA64_OPND_PR_ROT, /* rotating predicate register (pr.rot) */ 5984865Sobrien IA64_OPND_PSR, /* processor status register (psr) */ 6084865Sobrien IA64_OPND_PSR_L, /* processor status register L (psr.l) */ 6184865Sobrien IA64_OPND_PSR_UM, /* processor status register UM (psr.um) */ 6284865Sobrien 6384865Sobrien /* register operands: */ 6484865Sobrien IA64_OPND_AR3, /* third application register # (bits 20-26) */ 6584865Sobrien IA64_OPND_B1, /* branch register # (bits 6-8) */ 6684865Sobrien IA64_OPND_B2, /* branch register # (bits 13-15) */ 6784865Sobrien IA64_OPND_CR3, /* third control register # (bits 20-26) */ 6884865Sobrien IA64_OPND_F1, /* first floating-point register # */ 6984865Sobrien IA64_OPND_F2, /* second floating-point register # */ 7084865Sobrien IA64_OPND_F3, /* third floating-point register # */ 7184865Sobrien IA64_OPND_F4, /* fourth floating-point register # */ 7284865Sobrien IA64_OPND_P1, /* first predicate # */ 7384865Sobrien IA64_OPND_P2, /* second predicate # */ 7484865Sobrien IA64_OPND_R1, /* first register # */ 7584865Sobrien IA64_OPND_R2, /* second register # */ 7684865Sobrien IA64_OPND_R3, /* third register # */ 7784865Sobrien IA64_OPND_R3_2, /* third register # (limited to gr0-gr3) */ 7884865Sobrien 79218822Sdim /* memory operands: */ 80218822Sdim IA64_OPND_MR3, /* memory at addr of third register # */ 81218822Sdim 8284865Sobrien /* indirect operands: */ 8384865Sobrien IA64_OPND_CPUID_R3, /* cpuid[reg] */ 8484865Sobrien IA64_OPND_DBR_R3, /* dbr[reg] */ 8584865Sobrien IA64_OPND_DTR_R3, /* dtr[reg] */ 8684865Sobrien IA64_OPND_ITR_R3, /* itr[reg] */ 8784865Sobrien IA64_OPND_IBR_R3, /* ibr[reg] */ 8884865Sobrien IA64_OPND_MSR_R3, /* msr[reg] */ 8984865Sobrien IA64_OPND_PKR_R3, /* pkr[reg] */ 9084865Sobrien IA64_OPND_PMC_R3, /* pmc[reg] */ 9184865Sobrien IA64_OPND_PMD_R3, /* pmd[reg] */ 9284865Sobrien IA64_OPND_RR_R3, /* rr[reg] */ 9384865Sobrien 9484865Sobrien /* immediate operands: */ 9584865Sobrien IA64_OPND_CCNT5, /* 5-bit count (31 - bits 20-24) */ 9684865Sobrien IA64_OPND_CNT2a, /* 2-bit count (1 + bits 27-28) */ 9784865Sobrien IA64_OPND_CNT2b, /* 2-bit count (bits 27-28): 1, 2, 3 */ 9884865Sobrien IA64_OPND_CNT2c, /* 2-bit count (bits 30-31): 0, 7, 15, or 16 */ 9984865Sobrien IA64_OPND_CNT5, /* 5-bit count (bits 14-18) */ 10084865Sobrien IA64_OPND_CNT6, /* 6-bit count (bits 27-32) */ 10184865Sobrien IA64_OPND_CPOS6a, /* 6-bit count (63 - bits 20-25) */ 10284865Sobrien IA64_OPND_CPOS6b, /* 6-bit count (63 - bits 14-19) */ 10384865Sobrien IA64_OPND_CPOS6c, /* 6-bit count (63 - bits 31-36) */ 10484865Sobrien IA64_OPND_IMM1, /* signed 1-bit immediate (bit 36) */ 10584865Sobrien IA64_OPND_IMMU2, /* unsigned 2-bit immediate (bits 13-14) */ 106218822Sdim IA64_OPND_IMMU5b, /* unsigned 5-bit immediate (32 + bits 14-18) */ 10784865Sobrien IA64_OPND_IMMU7a, /* unsigned 7-bit immediate (bits 13-19) */ 10884865Sobrien IA64_OPND_IMMU7b, /* unsigned 7-bit immediate (bits 20-26) */ 10984865Sobrien IA64_OPND_SOF, /* 8-bit stack frame size */ 11084865Sobrien IA64_OPND_SOL, /* 8-bit size of locals */ 11184865Sobrien IA64_OPND_SOR, /* 6-bit number of rotating registers (scaled by 8) */ 11284865Sobrien IA64_OPND_IMM8, /* signed 8-bit immediate (bits 13-19 & 36) */ 11384865Sobrien IA64_OPND_IMM8U4, /* cmp4*u signed 8-bit immediate (bits 13-19 & 36) */ 11484865Sobrien IA64_OPND_IMM8M1, /* signed 8-bit immediate -1 (bits 13-19 & 36) */ 11584865Sobrien IA64_OPND_IMM8M1U4, /* cmp4*u signed 8-bit immediate -1 (bits 13-19 & 36)*/ 11684865Sobrien IA64_OPND_IMM8M1U8, /* cmp*u signed 8-bit immediate -1 (bits 13-19 & 36) */ 11784865Sobrien IA64_OPND_IMMU9, /* unsigned 9-bit immediate (bits 33-34, 20-26) */ 11884865Sobrien IA64_OPND_IMM9a, /* signed 9-bit immediate (bits 6-12, 27, 36) */ 11984865Sobrien IA64_OPND_IMM9b, /* signed 9-bit immediate (bits 13-19, 27, 36) */ 12084865Sobrien IA64_OPND_IMM14, /* signed 14-bit immediate (bits 13-19, 27-32, 36) */ 12184865Sobrien IA64_OPND_IMM17, /* signed 17-bit immediate (2*bits 6-12, 24-31, 36) */ 12284865Sobrien IA64_OPND_IMMU21, /* unsigned 21-bit immediate (bits 6-25, 36) */ 12384865Sobrien IA64_OPND_IMM22, /* signed 22-bit immediate (bits 13-19, 22-36) */ 12484865Sobrien IA64_OPND_IMMU24, /* unsigned 24-bit immediate (bits 6-26, 31-32, 36) */ 12584865Sobrien IA64_OPND_IMM44, /* signed 44-bit immediate (2^16*bits 6-32, 36) */ 12684865Sobrien IA64_OPND_IMMU62, /* unsigned 62-bit immediate */ 12784865Sobrien IA64_OPND_IMMU64, /* unsigned 64-bit immediate (lotsa bits...) */ 12884865Sobrien IA64_OPND_INC3, /* signed 3-bit (bits 13-15): +/-1, 4, 8, 16 */ 12984865Sobrien IA64_OPND_LEN4, /* 4-bit count (bits 27-30 + 1) */ 13084865Sobrien IA64_OPND_LEN6, /* 6-bit count (bits 27-32 + 1) */ 13184865Sobrien IA64_OPND_MBTYPE4, /* 4-bit mux type (bits 20-23) */ 13284865Sobrien IA64_OPND_MHTYPE8, /* 8-bit mux type (bits 20-27) */ 13384865Sobrien IA64_OPND_POS6, /* 6-bit count (bits 14-19) */ 13484865Sobrien IA64_OPND_TAG13, /* signed 13-bit tag (ip + 16*bits 6-12, 33-34) */ 13584865Sobrien IA64_OPND_TAG13b, /* signed 13-bit tag (ip + 16*bits 24-32) */ 13684865Sobrien IA64_OPND_TGT25, /* signed 25-bit (ip + 16*bits 6-25, 36) */ 13784865Sobrien IA64_OPND_TGT25b, /* signed 25-bit (ip + 16*bits 6-12, 20-32, 36) */ 13884865Sobrien IA64_OPND_TGT25c, /* signed 25-bit (ip + 16*bits 13-32, 36) */ 13984865Sobrien IA64_OPND_TGT64, /* 64-bit (ip + 16*bits 13-32, 36, 2-40(L)) */ 140130561Sobrien IA64_OPND_LDXMOV, /* any symbol, generates R_IA64_LDXMOV. */ 14184865Sobrien 14284865Sobrien IA64_OPND_COUNT /* # of operand types (MUST BE LAST!) */ 14384865Sobrien }; 14484865Sobrien 14584865Sobrienenum ia64_dependency_mode 14684865Sobrien{ 14784865Sobrien IA64_DV_RAW, 14884865Sobrien IA64_DV_WAW, 14984865Sobrien IA64_DV_WAR, 15084865Sobrien}; 15184865Sobrien 15284865Sobrienenum ia64_dependency_semantics 15384865Sobrien{ 15484865Sobrien IA64_DVS_NONE, 15584865Sobrien IA64_DVS_IMPLIED, 15684865Sobrien IA64_DVS_IMPLIEDF, 15784865Sobrien IA64_DVS_DATA, 15884865Sobrien IA64_DVS_INSTR, 15984865Sobrien IA64_DVS_SPECIFIC, 16084865Sobrien IA64_DVS_STOP, 16184865Sobrien IA64_DVS_OTHER, 16284865Sobrien}; 16384865Sobrien 16484865Sobrienenum ia64_resource_specifier 16584865Sobrien{ 16684865Sobrien IA64_RS_ANY, 16784865Sobrien IA64_RS_AR_K, 16884865Sobrien IA64_RS_AR_UNAT, 16984865Sobrien IA64_RS_AR, /* 8-15, 20, 22-23, 31, 33-35, 37-39, 41-43, 45-47, 67-111 */ 17084865Sobrien IA64_RS_ARb, /* 48-63, 112-127 */ 17184865Sobrien IA64_RS_BR, 17284865Sobrien IA64_RS_CFM, 17384865Sobrien IA64_RS_CPUID, 17484865Sobrien IA64_RS_CR_IRR, 17584865Sobrien IA64_RS_CR_LRR, 17684865Sobrien IA64_RS_CR, /* 3-7,10-15,18,26-63,75-79,82-127 */ 17784865Sobrien IA64_RS_DBR, 17884865Sobrien IA64_RS_FR, 17984865Sobrien IA64_RS_FRb, 18084865Sobrien IA64_RS_GR0, 18184865Sobrien IA64_RS_GR, 18284865Sobrien IA64_RS_IBR, 18384865Sobrien IA64_RS_INSERVICE, /* CR[EOI] or CR[IVR] */ 18484865Sobrien IA64_RS_MSR, 18584865Sobrien IA64_RS_PKR, 18684865Sobrien IA64_RS_PMC, 18784865Sobrien IA64_RS_PMD, 18884865Sobrien IA64_RS_PR, /* non-rotating, 1-15 */ 18984865Sobrien IA64_RS_PRr, /* rotating, 16-62 */ 19084865Sobrien IA64_RS_PR63, 19184865Sobrien IA64_RS_RR, 19284865Sobrien 19384865Sobrien IA64_RS_ARX, /* ARs not in RS_AR or RS_ARb */ 19484865Sobrien IA64_RS_CRX, /* CRs not in RS_CR */ 19584865Sobrien IA64_RS_PSR, /* PSR bits */ 19684865Sobrien IA64_RS_RSE, /* implementation-specific RSE resources */ 19784865Sobrien IA64_RS_AR_FPSR, 19884865Sobrien}; 19984865Sobrien 20084865Sobrienenum ia64_rse_resource 20184865Sobrien{ 20284865Sobrien IA64_RSE_N_STACKED_PHYS, 20384865Sobrien IA64_RSE_BOF, 20484865Sobrien IA64_RSE_STORE_REG, 20584865Sobrien IA64_RSE_LOAD_REG, 20684865Sobrien IA64_RSE_BSPLOAD, 20784865Sobrien IA64_RSE_RNATBITINDEX, 20884865Sobrien IA64_RSE_CFLE, 20984865Sobrien IA64_RSE_NDIRTY, 21084865Sobrien}; 21184865Sobrien 21284865Sobrien/* Information about a given resource dependency */ 21384865Sobrienstruct ia64_dependency 21484865Sobrien{ 21584865Sobrien /* Name of the resource */ 21684865Sobrien const char *name; 21784865Sobrien /* Does this dependency need further specification? */ 21884865Sobrien enum ia64_resource_specifier specifier; 21984865Sobrien /* Mode of dependency */ 22084865Sobrien enum ia64_dependency_mode mode; 22184865Sobrien /* Dependency semantics */ 22284865Sobrien enum ia64_dependency_semantics semantics; 22384865Sobrien /* Register index, if applicable (distinguishes AR, CR, and PSR deps) */ 22484865Sobrien#define REG_NONE (-1) 22584865Sobrien int regindex; 22684865Sobrien /* Special info on semantics */ 22784865Sobrien const char *info; 22884865Sobrien}; 22984865Sobrien 23084865Sobrien/* Two arrays of indexes into the ia64_dependency table. 23184865Sobrien chks are dependencies to check for conflicts when an opcode is 23284865Sobrien encountered; regs are dependencies to register (mark as used) when an 23384865Sobrien opcode is used. chks correspond to readers (RAW) or writers (WAW or 23484865Sobrien WAR) of a resource, while regs correspond to writers (RAW or WAW) and 23584865Sobrien readers (WAR) of a resource. */ 23684865Sobrienstruct ia64_opcode_dependency 23784865Sobrien{ 23884865Sobrien int nchks; 23984865Sobrien const unsigned short *chks; 24084865Sobrien int nregs; 24184865Sobrien const unsigned short *regs; 24284865Sobrien}; 24384865Sobrien 24484865Sobrien/* encode/extract the note/index for a dependency */ 24584865Sobrien#define RDEP(N,X) (((N)<<11)|(X)) 24684865Sobrien#define NOTE(X) (((X)>>11)&0x1F) 24784865Sobrien#define DEP(X) ((X)&0x7FF) 24884865Sobrien 24984865Sobrien/* A template descriptor describes the execution units that are active 25084865Sobrien for each of the three slots. It also specifies the location of 25184865Sobrien instruction group boundaries that may be present between two slots. */ 25284865Sobrienstruct ia64_templ_desc 25384865Sobrien { 25484865Sobrien int group_boundary; /* 0=no boundary, 1=between slot 0 & 1, etc. */ 25584865Sobrien enum ia64_unit exec_unit[3]; 25684865Sobrien const char *name; 25784865Sobrien }; 25884865Sobrien 25984865Sobrien/* The opcode table is an array of struct ia64_opcode. */ 26084865Sobrien 26184865Sobrienstruct ia64_opcode 26284865Sobrien { 26384865Sobrien /* The opcode name. */ 26484865Sobrien const char *name; 26584865Sobrien 26684865Sobrien /* The type of the instruction: */ 26784865Sobrien enum ia64_insn_type type; 26884865Sobrien 26984865Sobrien /* Number of output operands: */ 27084865Sobrien int num_outputs; 27184865Sobrien 27284865Sobrien /* The opcode itself. Those bits which will be filled in with 27384865Sobrien operands are zeroes. */ 27484865Sobrien ia64_insn opcode; 27584865Sobrien 27684865Sobrien /* The opcode mask. This is used by the disassembler. This is a 27784865Sobrien mask containing ones indicating those bits which must match the 27884865Sobrien opcode field, and zeroes indicating those bits which need not 27984865Sobrien match (and are presumably filled in by operands). */ 28084865Sobrien ia64_insn mask; 28184865Sobrien 28284865Sobrien /* An array of operand codes. Each code is an index into the 28384865Sobrien operand table. They appear in the order which the operands must 28484865Sobrien appear in assembly code, and are terminated by a zero. */ 28584865Sobrien enum ia64_opnd operands[5]; 28684865Sobrien 28784865Sobrien /* One bit flags for the opcode. These are primarily used to 28884865Sobrien indicate specific processors and environments support the 28984865Sobrien instructions. The defined values are listed below. */ 29084865Sobrien unsigned int flags; 29184865Sobrien 29284865Sobrien /* Used by ia64_find_next_opcode (). */ 29384865Sobrien short ent_index; 29484865Sobrien 295130561Sobrien /* Opcode dependencies. */ 29684865Sobrien const struct ia64_opcode_dependency *dependencies; 29784865Sobrien }; 29884865Sobrien 29984865Sobrien/* Values defined for the flags field of a struct ia64_opcode. */ 30084865Sobrien 30184865Sobrien#define IA64_OPCODE_FIRST (1<<0) /* must be first in an insn group */ 30284865Sobrien#define IA64_OPCODE_X_IN_MLX (1<<1) /* insn is allowed in X slot of MLX */ 30384865Sobrien#define IA64_OPCODE_LAST (1<<2) /* must be last in an insn group */ 30484865Sobrien#define IA64_OPCODE_PRIV (1<<3) /* privileged instruct */ 30584865Sobrien#define IA64_OPCODE_SLOT2 (1<<4) /* insn allowed in slot 2 only */ 30684865Sobrien#define IA64_OPCODE_NO_PRED (1<<5) /* insn cannot be predicated */ 30784865Sobrien#define IA64_OPCODE_PSEUDO (1<<6) /* insn is a pseudo-op */ 30884865Sobrien#define IA64_OPCODE_F2_EQ_F3 (1<<7) /* constraint: F2 == F3 */ 30984865Sobrien#define IA64_OPCODE_LEN_EQ_64MCNT (1<<8) /* constraint: LEN == 64-CNT */ 31084865Sobrien#define IA64_OPCODE_MOD_RRBS (1<<9) /* modifies all rrbs in CFM */ 31184865Sobrien#define IA64_OPCODE_POSTINC (1<<10) /* postincrement MR3 operand */ 31284865Sobrien 31384865Sobrien/* A macro to extract the major opcode from an instruction. */ 31484865Sobrien#define IA64_OP(i) (((i) >> 37) & 0xf) 31584865Sobrien 31684865Sobrienenum ia64_operand_class 31784865Sobrien { 31884865Sobrien IA64_OPND_CLASS_CST, /* constant */ 31984865Sobrien IA64_OPND_CLASS_REG, /* register */ 32084865Sobrien IA64_OPND_CLASS_IND, /* indirect register */ 32184865Sobrien IA64_OPND_CLASS_ABS, /* absolute value */ 32284865Sobrien IA64_OPND_CLASS_REL, /* IP-relative value */ 32384865Sobrien }; 32484865Sobrien 32584865Sobrien/* The operands table is an array of struct ia64_operand. */ 32684865Sobrien 32784865Sobrienstruct ia64_operand 32884865Sobrien{ 32984865Sobrien enum ia64_operand_class class; 33084865Sobrien 33184865Sobrien /* Set VALUE as the operand bits for the operand of type SELF in the 33284865Sobrien instruction pointed to by CODE. If an error occurs, *CODE is not 33384865Sobrien modified and the returned string describes the cause of the 33484865Sobrien error. If no error occurs, NULL is returned. */ 33584865Sobrien const char *(*insert) (const struct ia64_operand *self, ia64_insn value, 33684865Sobrien ia64_insn *code); 33784865Sobrien 33884865Sobrien /* Extract the operand bits for an operand of type SELF from 33984865Sobrien instruction CODE store them in *VALUE. If an error occurs, the 34084865Sobrien cause of the error is described by the string returned. If no 34184865Sobrien error occurs, NULL is returned. */ 34284865Sobrien const char *(*extract) (const struct ia64_operand *self, ia64_insn code, 34384865Sobrien ia64_insn *value); 34484865Sobrien 34584865Sobrien /* A string whose meaning depends on the operand class. */ 34684865Sobrien 34784865Sobrien const char *str; 34884865Sobrien 34984865Sobrien struct bit_field 35084865Sobrien { 35184865Sobrien /* The number of bits in the operand. */ 35284865Sobrien int bits; 35384865Sobrien 35484865Sobrien /* How far the operand is left shifted in the instruction. */ 35584865Sobrien int shift; 35684865Sobrien } 35784865Sobrien field[4]; /* no operand has more than this many bit-fields */ 35884865Sobrien 35984865Sobrien unsigned int flags; 36084865Sobrien 36184865Sobrien const char *desc; /* brief description */ 36284865Sobrien}; 36384865Sobrien 36484865Sobrien/* Values defined for the flags field of a struct ia64_operand. */ 36584865Sobrien 36684865Sobrien/* Disassemble as signed decimal (instead of hex): */ 36784865Sobrien#define IA64_OPND_FLAG_DECIMAL_SIGNED (1<<0) 36884865Sobrien/* Disassemble as unsigned decimal (instead of hex): */ 36984865Sobrien#define IA64_OPND_FLAG_DECIMAL_UNSIGNED (1<<1) 37084865Sobrien 37184865Sobrienextern const struct ia64_templ_desc ia64_templ_desc[16]; 37284865Sobrien 37384865Sobrien/* The tables are sorted by major opcode number and are otherwise in 37484865Sobrien the order in which the disassembler should consider instructions. */ 37584865Sobrienextern struct ia64_opcode ia64_opcodes_a[]; 37684865Sobrienextern struct ia64_opcode ia64_opcodes_i[]; 37784865Sobrienextern struct ia64_opcode ia64_opcodes_m[]; 37884865Sobrienextern struct ia64_opcode ia64_opcodes_b[]; 37984865Sobrienextern struct ia64_opcode ia64_opcodes_f[]; 38084865Sobrienextern struct ia64_opcode ia64_opcodes_d[]; 38184865Sobrien 38284865Sobrien 38384865Sobrienextern struct ia64_opcode *ia64_find_opcode (const char *name); 38484865Sobrienextern struct ia64_opcode *ia64_find_next_opcode (struct ia64_opcode *ent); 38584865Sobrien 38684865Sobrienextern struct ia64_opcode *ia64_dis_opcode (ia64_insn insn, 38784865Sobrien enum ia64_insn_type type); 38884865Sobrien 38984865Sobrienextern void ia64_free_opcode (struct ia64_opcode *ent); 39084865Sobrienextern const struct ia64_dependency *ia64_find_dependency (int index); 39184865Sobrien 39284865Sobrien/* To avoid circular library dependencies, this array is implemented 39384865Sobrien in bfd/cpu-ia64-opc.c: */ 39484865Sobrienextern const struct ia64_operand elf64_ia64_operands[IA64_OPND_COUNT]; 39584865Sobrien 39684865Sobrien#endif /* opcode_ia64_h */ 397