checkpoint

This commit is contained in:
Doug Evans 1998-01-26 06:24:59 +00:00
parent 629cfff05f
commit b5d20cf65d
3 changed files with 763 additions and 11 deletions

View file

@ -36,6 +36,12 @@ const char line_comment_chars[] = "#";
const char line_separator_chars[] = "!";
const char EXP_CHARS[] = "eE";
const char FLT_CHARS[] = "dD";
/* Non-zero if in vu-mode. */
static int vu_mode_p;
/* Non-zero if packing pke instructions with dma tags. */
static int dma_pack_pke_p;
const char *md_shortopts = "";
@ -68,10 +74,29 @@ md_show_usage (stream)
static subsegT prev_subseg;
static segT prev_seg;
static void s_dmadata PARAMS ((int));
static void s_dmapackpke PARAMS ((int));
static void s_enddirect PARAMS ((int));
static void s_enddmadata PARAMS ((int));
static void s_endgpuif PARAMS ((int));
static void s_endmpg PARAMS ((int));
static void s_endunpack PARAMS ((int));
static void s_vu PARAMS ((int));
/* The target specific pseudo-ops which we support. */
const pseudo_typeS md_pseudo_table[] =
{
{ "word", cons, 4 },
{ "dmadata", s_dmadata, 0 },
{ "dmapackpke", s_dmapackpke, 0 },
{ "enddirect", s_enddirect, 0 },
{ "enddmadata", s_enddmadata, 0 },
{ "endgpuif", s_endgpuif, 0 },
{ "endmpg", s_endmpg, 0 },
{ "endunpack", s_endunpack, 0 },
/* .vu,.endvu added to simplify debugging */
{ "vu", s_vu, 1 },
{ "endvu", s_vu, 0 },
{ NULL, NULL, 0 }
};
@ -92,6 +117,9 @@ md_begin ()
/* Initialize the opcode tables.
This involves computing the hash chains. */
txvu_opcode_init_tables (0);
vu_mode_p = 0;
dma_pack_pke_p = 0;
}
/* We need to keep a list of fixups. We can't simply generate them as
@ -107,11 +135,58 @@ struct txvu_fixup
#define MAX_FIXUPS 5
static char * assemble_insn PARAMS ((char *, int, char *));
static void assemble_dma PARAMS ((char *));
static void assemble_gpuif PARAMS ((char *));
static void assemble_pke PARAMS ((char *));
static void assemble_vu PARAMS ((char *));
static char * assemble_vu_insn PARAMS ((char *, int, char *));
void
md_assemble (str)
char *str;
{
if (! vu_mode_p)
{
if (strncasecmp (str, "dma", 3) == 0)
assemble_dma (str);
else if (strncasecmp (str, "gpuif", 5) == 0)
assemble_gpuif (str);
else
assemble_pke (str);
}
else
assemble_vu (str);
}
/* Subroutine of assemble_dpg to assemble DMA instructions. */
static void
assemble_dma (str)
char *str;
{
}
/* Subroutine of assemble_dpg to assemble GPUIF instructions. */
static void
assemble_gpuif (str)
char *str;
{
}
/* Subroutine of assemble_dpg to assemble PKE instructions. */
static void
assemble_pke (str)
char *str;
{
}
/* Subroutine of md_assemble to assemble VU instructions. */
static void
assemble_vu (str)
char *str;
{
/* The lower instruction has the lower address.
Handle this by grabbing 8 bytes now, and then filling each word
@ -128,14 +203,14 @@ md_assemble (str)
}
*p = 0;
assemble_insn (str, 0, f + 4);
assemble_vu_insn (str, 0, f + 4);
*p = '|';
assemble_insn (p + 1, 1, f);
assemble_vu_insn (p + 1, 1, f);
#else
str = assemble_insn (str, 0, f + 4);
str = assemble_vu_insn (str, 0, f + 4);
/* Don't assemble next one if we couldn't assemble the first. */
if (str)
assemble_insn (str, 1, f);
assemble_vu_insn (str, 1, f);
#endif
}
@ -147,14 +222,13 @@ md_assemble (str)
parse the lower insn. */
static char *
assemble_insn (str, lower_p, buf)
assemble_vu_insn (str, lower_p, buf)
char *str;
int lower_p;
char *buf;
{
const struct txvu_opcode *opcode;
char *start;
TXVU_INSN insn_buf[2];
TXVU_INSN insn;
/* Skip leading white space. */
@ -780,3 +854,56 @@ txvu_insert_operand (insn, operand, mods, val, file, line)
return insn;
}
static void
s_dmadata (int ignore)
{
}
static void
s_dmapackpke (int ignore)
{
/* Syntax: .dmapackpke 0|1 */
if (*input_line_pointer == '0')
dma_pack_pke_p = 0;
else if (*input_line_pointer == '1')
dma_pack_pke_p = 1;
else
as_bad ("illegal argument to `.dmapackpke'");
input_line_pointer++;
demand_empty_rest_of_line ();
}
static void
s_enddirect (int ignore)
{
}
static void
s_enddmadata (int ignore)
{
}
static void
s_endgpuif (int ignore)
{
}
static void
s_endmpg (int ignore)
{
vu_mode_p = 0;
}
static void
s_endunpack (int ignore)
{
vu_mode_p = 0;
}
static void
s_vu (int enable_p)
{
vu_mode_p = enable_p;
}

View file

@ -226,3 +226,24 @@ const struct txvu_opcode *txvu_upper_opcode_lookup_asm PARAMS ((const char *));
const struct txvu_opcode *txvu_lower_opcode_lookup_asm PARAMS ((const char *));
const struct txvu_opcode *txvu_upper_opcode_lookup_dis PARAMS ((unsigned int));
const struct txvu_opcode *txvu_lower_opcode_lookup_dis PARAMS ((unsigned int));
/* PKE support. */
/* PKE instruction flags.
The usage here is a bit wasteful of bits, but there's enough bits
and we can always make better usage later. */
/* 2 word instruction */
#define PKE_OPCODE_LEN2 1
/* 5 word instruction */
#define PKE_OPCODE_LEN5 2
/* variable length instruction */
#define PKE_OPCODE_LENVAR 4
/* the mpg instruction */
#define PKE_OPCODE_MPG 8
/* the direct instruction */
#define PKE_OPCODE_DIRECT 16
/* the directhl instruction */
#define PKE_OPCODE_DIRECTHL 32
/* the unpack instruction */
#define PKE_OPCODE_UNPACK 64

View file

@ -311,8 +311,8 @@ const struct txvu_operand txvu_operands[] =
computed at run-time. We could split this into two, as that would put the
constant stuff into a readonly section. */
struct txvu_opcode txvu_upper_opcodes[] = {
struct txvu_opcode txvu_upper_opcodes[] =
{
/* Macros appear first, so the disassembler will try them first. */
/* ??? Any aliases? */
/* ??? When close to being finished, clean up by aligning fields. */
@ -413,8 +413,8 @@ const int txvu_upper_opcodes_count = sizeof (txvu_upper_opcodes) / sizeof (txvu_
#define MLUIMM12UNUSED V (7, 3, 22)
#define MLUIMM15TOP MDEST
struct txvu_opcode txvu_lower_opcodes[] = {
struct txvu_opcode txvu_lower_opcodes[] =
{
/* Macros appear first, so the disassembler will try them first. */
/* ??? Any aliases? */
/* ??? There isn't an explicit nop. Apparently it's "move vf0,vf0". */
@ -1332,3 +1332,607 @@ extract_luimm15 (insn, operand, mods, pinvalid)
{
return (((insn & MLUIMM15TOP) >> 21) << 11) | VLIMM11 (insn);
}
/* PKE support. */
PARSE_FN (pke_ibit);
PRINT_FN (pke_ibit);
PARSE_FN (pke_mode);
PRINT_FN (pke_mode);
PARSE_FN (pke_ability);
PRINT_FN (pke_ability);
PARSE_FN (pke_mpgaddr);
PARSE_FN (pke_varlendata);
PARSE_FN (pke_imrbits);
PRINT_FN (pke_imrbits);
PARSE_FN (pke_unpacktype);
PRINT_FN (pke_unpacktype);
PARSE_FN (pke_unpackaddr);
const struct txvu_operand txvu_pke_operands[] =
{
/* place holder (??? not sure if needed) */
#define PKE_UNUSED 128
{ 0 },
/* The I bit. */
#define PKE_IBIT (PKE_UNUSED + 1)
{ 1, 31, TXVU_OPERAND_SUFFIX, parse_pke_ibit, 0, 0, print_pke_ibit },
/* An 8 bit unsigned immediate, stored in upper 8 bits of immed field. */
#define PKE_UIMM8UP (PKE_IBIT + 1)
{ 8, 8, 0, 0, 0, 0, 0 },
/* An 8 bit unsigned immediate, stored in lower 8 bits of immed field. */
#define PKE_UIMM8LO (PKE_UIMM8UP + 1)
{ 8, 0, 0, 0, 0, 0, 0 },
/* An 16 bit unsigned immediate, stored in lower 8 bits of immed field. */
#define PKE_UIMM16 (PKE_UIMM8LO + 1)
{ 16, 0, 0, 0, 0, 0, 0 },
/* The mode operand of `stmod'. */
#define PKE_MODE (PKE_UIMM16 + 1)
{ 2, 0, 0, parse_pke_mode, 0, 0, print_pke_mode },
/* The ability operand of `mskpath3'. */
#define PKE_ABILITY (PKE_MODE + 1)
{ 1, 15, 0, parse_pke_ability, 0, 0, print_pke_ability },
/* A VU address. */
#define PKE_VUADDR (PKE_ABILITY + 1)
{ 16, 0, 0, 0, 0, 0, 0 },
/* A 32 bit immediate, appearing in 2nd,3rd,4th,5th words. */
#define PKE_UIMM32 (PKE_VUADDR + 1)
{ 32, 0, 0, 0, 0, 0, 0 },
/* VU address used by mpg insn. */
#define PKE_MPGADDR (PKE_UIMM32 + 1)
{ 16, 0, TXVU_OPERAND_ADDRESS, parse_pke_mpgaddr, 0, 0, 0 },
/* A variable length data specifier.
Any of: file name, number, or '*'. */
#define PKE_VARLENDATA (PKE_MPGADDR + 1)
{ 0, 0, 0, parse_pke_varlendata, 0, 0, 0 },
/* The IMR bits of the unpack insn. */
#define PKE_IMRBITS (PKE_VARLENDATA + 1)
{ 0, 0, 0, parse_pke_imrbits, 0, 0, print_pke_imrbits },
/* The type of the unpack insn. */
#define PKE_UNPACKTYPE (PKE_IMRBITS + 1)
{ 4, 24, 0, parse_pke_unpacktype, 0, 0, print_pke_unpacktype },
/* VU address used by unpack insn. */
#define PKE_UNPACKADDR (PKE_UIMM32 + 1)
{ 16, 0, TXVU_OPERAND_ADDRESS, parse_pke_unpackaddr, 0, 0, 0 },
/* end of list place holder */
{ 0 }
};
/* Field mask values. */
#define MPKECMD 0x7f000000
#define MPKEUNPACK 0x60000000
/* Field values. */
#define VPKECMD(x) V ((x), 7, 24)
#define VPKEUNPACK V (0x60, 8, 24)
struct txvu_opcode txvu_pke_opcodes[] =
{
{ "pkenop", { PKE_IBIT }, 0x7fffffff, 0 },
{ "stcycle", { PKE_IBIT, SP, PKE_UIMM8UP, C, PKE_UIMM8LO }, MPKECMD, VPKECMD (1) },
{ "offset", { PKE_IBIT, SP, PKE_UIMM16 }, MPKECMD, VPKECMD (2) },
{ "base", { PKE_IBIT, SP, PKE_UIMM16 }, MPKECMD, VPKECMD (3) },
{ "itop", { PKE_IBIT, SP, PKE_UIMM16 }, MPKECMD, VPKECMD (4) },
{ "stmod", { PKE_IBIT, SP, PKE_MODE }, MPKECMD + V (~0, 14, 2), VPKECMD (5) },
{ "mskpath3", { PKE_IBIT, SP, PKE_ABILITY }, MPKECMD + V (~0, 15, 0), VPKECMD (6) },
{ "pkemark", { PKE_IBIT, SP, PKE_UIMM16 }, MPKECMD, VPKECMD (7) },
{ "flushe", { PKE_IBIT }, MPKECMD, VPKECMD (16) },
{ "flush", { PKE_IBIT }, MPKECMD, VPKECMD (17) },
{ "flusha", { PKE_IBIT }, MPKECMD, VPKECMD (19) },
{ "pkemscal", { PKE_IBIT, SP, PKE_VUADDR }, MPKECMD, VPKECMD (20) },
{ "pkemscnt", { PKE_IBIT }, MPKECMD, VPKECMD (23) },
{ "pkemscalf", { PKE_IBIT, SP, PKE_VUADDR }, MPKECMD, VPKECMD (21) },
/* 2 word instructions */
{ "stmask", { PKE_IBIT, SP, PKE_UIMM32 }, MPKECMD, VPKECMD (32), PKE_OPCODE_LEN2 },
/* 5 word instructions */
{ "strow", { PKE_IBIT, SP, PKE_UIMM32, PKE_UIMM32, PKE_UIMM32, PKE_UIMM32 }, MPKECMD, VPKECMD (48), PKE_OPCODE_LEN5 },
{ "stcol", { PKE_IBIT, SP, PKE_UIMM32, PKE_UIMM32, PKE_UIMM32, PKE_UIMM32 }, MPKECMD, VPKECMD (49), PKE_OPCODE_LEN5 },
/* variable length instructions */
{ "mpg", { PKE_IBIT, SP, PKE_MPGADDR, PKE_VARLENDATA }, MPKECMD, VPKECMD (0x4a), PKE_OPCODE_LENVAR + PKE_OPCODE_MPG },
{ "direct", { PKE_IBIT, SP, PKE_VARLENDATA }, MPKECMD, VPKECMD (0x50), PKE_OPCODE_LENVAR + PKE_OPCODE_DIRECT },
{ "directhl", { PKE_IBIT, SP, PKE_VARLENDATA }, MPKECMD, VPKECMD (0x51), PKE_OPCODE_LENVAR + PKE_OPCODE_DIRECT },
{ "unpack", { PKE_IMRBITS, SP, PKE_UNPACKTYPE, C, PKE_UNPACKADDR, C, PKE_VARLENDATA }, MPKEUNPACK, VPKEUNPACK, PKE_OPCODE_LENVAR + PKE_OPCODE_UNPACK },
};
const int txvu_pke_opcodes_count = sizeof (txvu_pke_opcodes) / sizeof (txvu_pke_opcodes[0]);
/* PKE parse,insert,extract,print helper fns. */
static long
parse_pke_ibit (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static void
print_pke_ibit (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_pke_mode (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static void
print_pke_mode (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_pke_ability (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static void
print_pke_ability (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_pke_mpgaddr (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static long
parse_pke_varlendata (pstr, errmsg)
char **pstr;
const char **errmsg;
{
/* The result here is either the length specified,
or PKE_VARLENDATA_FILE or PKE_VARLENDATA_UNKNOWN. */
}
static long
parse_pke_imrbits (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static void
print_pke_imrbits (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_pke_unpacktype (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static void
print_pke_unpacktype (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_pke_unpackaddr (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
/* DMA support. */
PARSE_FN (dma_flags);
INSERT_FN (dma_flags);
EXTRACT_FN (dma_flags);
PRINT_FN (dma_flags);
PARSE_FN (dma_data);
INSERT_FN (dma_data);
EXTRACT_FN (dma_data);
PRINT_FN (dma_data);
PARSE_FN (dma_next);
INSERT_FN (dma_next);
EXTRACT_FN (dma_next);
PRINT_FN (dma_next);
const struct txvu_operand txvu_dma_operands[] =
{
/* place holder (??? not sure if needed) */
#define DMA_UNUSED 128
{ 0 },
/* dma tag flag bits */
#define DMA_FLAGS (DMA_UNUSED + 1)
{ 0, 0, TXVU_OPERAND_SUFFIX,
parse_dma_flags, insert_dma_flags, extract_dma_flags, print_dma_flags },
/* dma tag flag bits */
#define DMA_DATA (DMA_FLAGS + 1)
{ 0, 0, 0,
parse_dma_data, insert_dma_data, extract_dma_data, print_dma_data },
/* dma tag flag bits */
#define DMA_NEXT (DMA_DATA + 1)
{ 0, 0, 0,
parse_dma_next, insert_dma_next, extract_dma_next, print_dma_next },
/* end of list place holder */
{ 0 }
};
struct txvu_opcode txvu_dma_opcodes[] =
{
{ "dmacnt", { DMA_FLAGS, SP, DMA_DATA, C, DMA_NEXT }, 0, 1 },
{ "dmanext", { DMA_FLAGS, SP, DMA_DATA, C, DMA_NEXT }, 0, 2 },
{ "dmaref", { DMA_FLAGS, SP, DMA_DATA, C, DMA_NEXT }, 0, 3 },
{ "dmarefs", { DMA_FLAGS, SP, DMA_DATA, C, DMA_NEXT }, 0, 4 },
{ "dmacall", { DMA_FLAGS, SP, DMA_DATA, C, DMA_NEXT }, 0, 5 },
{ "dmareg", { DMA_FLAGS, SP, DMA_DATA, C, DMA_NEXT }, 0, 6 },
{ "dmaend", { DMA_FLAGS, SP, DMA_DATA, C, DMA_NEXT }, 0, 7 }
};
const int txvu_dma_opcodes_count = sizeof (txvu_dma_opcodes) / sizeof (txvu_dma_opcodes[0]);
/* DMA parse,insert,extract,print helper fns. */
static long
parse_dma_flags (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static TXVU_INSN
insert_dma_flags (insn, operand, mods, value, errmsg)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
long value;
const char **errmsg;
{
return 0;
}
static long
extract_dma_flags (insn, operand, mods, pinvalid)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
int *pinvalid;
{
return 0;
}
static void
print_dma_flags (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_dma_data (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static TXVU_INSN
insert_dma_data (insn, operand, mods, value, errmsg)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
long value;
const char **errmsg;
{
return 0;
}
static long
extract_dma_data (insn, operand, mods, pinvalid)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
int *pinvalid;
{
return 0;
}
static void
print_dma_data (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_dma_next (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static TXVU_INSN
insert_dma_next (insn, operand, mods, value, errmsg)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
long value;
const char **errmsg;
{
return 0;
}
static long
extract_dma_next (insn, operand, mods, pinvalid)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
int *pinvalid;
{
return 0;
}
static void
print_dma_next (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
/* GPUIF support. */
PARSE_FN (gpuif_prim);
INSERT_FN (gpuif_prim);
EXTRACT_FN (gpuif_prim);
PRINT_FN (gpuif_prim);
PARSE_FN (gpuif_regs);
INSERT_FN (gpuif_regs);
EXTRACT_FN (gpuif_regs);
PRINT_FN (gpuif_regs);
PARSE_FN (gpuif_nloop);
INSERT_FN (gpuif_nloop);
EXTRACT_FN (gpuif_nloop);
PRINT_FN (gpuif_nloop);
PARSE_FN (gpuif_eop);
INSERT_FN (gpuif_eop);
EXTRACT_FN (gpuif_eop);
PRINT_FN (gpuif_eop);
const struct txvu_operand txvu_gpuif_operands[] =
{
/* place holder (??? not sure if needed) */
#define GPUIF_UNUSED 128
{ 0 },
/* PRIM=foo operand */
#define GPUIF_PRIM (GPUIF_UNUSED + 1)
{ 0, 0, 0, parse_gpuif_prim, insert_gpuif_prim, extract_gpuif_prim, print_gpuif_prim },
/* REGS=foo operand */
#define GPUIF_REGS (GPUIF_PRIM + 1)
{ 0, 0, 0, parse_gpuif_regs, insert_gpuif_regs, extract_gpuif_regs, print_gpuif_regs },
/* NLOOP=foo operand */
#define GPUIF_NLOOP (GPUIF_REGS + 1)
{ 0, 0, 0, parse_gpuif_nloop, insert_gpuif_nloop, extract_gpuif_nloop, print_gpuif_nloop },
/* EOP operand */
#define GPUIF_EOP (GPUIF_NLOOP + 1)
{ 0, 0, 0, parse_gpuif_eop, insert_gpuif_eop, extract_gpuif_eop, print_gpuif_eop },
/* end of list place holder */
{ 0 }
};
struct txvu_opcode txvu_gpuif_opcodes[] =
{
{ "gpuifpacked", { SP, GPUIF_PRIM, C, GPUIF_REGS, C, GPUIF_NLOOP, C, GPUIF_EOP }, 0, 1 },
{ "gpuifreglist", { SP, GPUIF_REGS, C, GPUIF_NLOOP, C, GPUIF_EOP }, 0, 2 },
{ "gpuifimage", { SP, GPUIF_NLOOP }, 0, 3 },
};
const int txvu_gpuif_opcodes_count = sizeof (txvu_gpuif_opcodes) / sizeof (txvu_gpuif_opcodes[0]);
/* GPUIF parse,insert,extract,print helper fns. */
static long
parse_gpuif_prim (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static TXVU_INSN
insert_gpuif_prim (insn, operand, mods, value, errmsg)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
long value;
const char **errmsg;
{
return 0;
}
static long
extract_gpuif_prim (insn, operand, mods, pinvalid)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
int *pinvalid;
{
return 0;
}
static void
print_gpuif_prim (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_gpuif_regs (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static TXVU_INSN
insert_gpuif_regs (insn, operand, mods, value, errmsg)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
long value;
const char **errmsg;
{
return 0;
}
static long
extract_gpuif_regs (insn, operand, mods, pinvalid)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
int *pinvalid;
{
return 0;
}
static void
print_gpuif_regs (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_gpuif_nloop (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static TXVU_INSN
insert_gpuif_nloop (insn, operand, mods, value, errmsg)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
long value;
const char **errmsg;
{
return 0;
}
static long
extract_gpuif_nloop (insn, operand, mods, pinvalid)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
int *pinvalid;
{
return 0;
}
static void
print_gpuif_nloop (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}
static long
parse_gpuif_eop (pstr, errmsg)
char **pstr;
const char **errmsg;
{
}
static TXVU_INSN
insert_gpuif_eop (insn, operand, mods, value, errmsg)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
long value;
const char **errmsg;
{
return 0;
}
static long
extract_gpuif_eop (insn, operand, mods, pinvalid)
TXVU_INSN insn;
const struct txvu_operand *operand;
int mods;
int *pinvalid;
{
return 0;
}
static void
print_gpuif_eop (info, insn, value)
disassemble_info *info;
TXVU_INSN insn;
long value;
{
(*info->fprintf_func) (info->stream, "???");
}