diff options
author | Doug Evans <dje@google.com> | 1998-01-27 17:56:06 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 1998-01-27 17:56:06 +0000 |
commit | 764c48f8ab8802f4c67167596f64242c62da880b (patch) | |
tree | 88c85ace388b9b409fbc91eff7e07409a62c9fe3 | |
parent | a3e62cc05b3eae7e27fc0f7b53b481c08dd67a4f (diff) | |
download | gdb-764c48f8ab8802f4c67167596f64242c62da880b.zip gdb-764c48f8ab8802f4c67167596f64242c62da880b.tar.gz gdb-764c48f8ab8802f4c67167596f64242c62da880b.tar.bz2 |
fix ior encoding
-rw-r--r-- | gas/testsuite/gas/txvu/lower-1.d | 2 | ||||
-rw-r--r-- | opcodes/txvu-opc.c | 12 |
2 files changed, 10 insertions, 4 deletions
diff --git a/gas/testsuite/gas/txvu/lower-1.d b/gas/testsuite/gas/txvu/lower-1.d index 798315c..f653607 100644 --- a/gas/testsuite/gas/txvu/lower-1.d +++ b/gas/testsuite/gas/txvu/lower-1.d @@ -89,7 +89,7 @@ Disassembly of section .text: 13c: ff 02 00 00 140: fe 23 23 80[ ]*nop[ ]*ilwr.w vi03,\(vi04\)w 144: ff 02 00 00 - 148: 74 21 03 80[ ]*nop[ ]*ior vi05,vi04,vi03 + 148: 75 21 03 80[ ]*nop[ ]*ior vi05,vi04,vi03 14c: ff 02 00 00 150: 71 21 03 80[ ]*nop[ ]*isub vi05,vi04,vi03 154: ff 02 00 00 diff --git a/opcodes/txvu-opc.c b/opcodes/txvu-opc.c index 1893c1f..0f6deee 100644 --- a/opcodes/txvu-opc.c +++ b/opcodes/txvu-opc.c @@ -47,7 +47,7 @@ static char *scan_symbol PARAMS ((char *)); #define SKIP_BLANKS(var) while (isspace (*(var))) ++(var) -/* ??? One can argue it's preferable to have the PARSE_FN support in tc-vxvu.c +/* ??? One can argue it's preferable to have the PARSE_FN support in tc-txvu.c and the PRINT_FN support in txvu-dis.c. For this project I like having them all in one place. */ @@ -478,7 +478,7 @@ struct txvu_opcode txvu_lower_opcodes[] = { "ibne", { SP, LITREG, C, LISREG, C, LPCREL11 }, MLOP7 + MDEST, VLOP7 (0x29) }, { "ilw", { LDOTDEST1, SP, LITREG, C, LIMM11, '(', LISREG, ')', LDEST1 }, MLOP7, VLOP7 (0x04) }, { "ilwr", { LDOTDEST1, SP, LITREG, C, '(', LISREG, ')', LDEST1 }, MLOP7 + MLIMM11, VLOP7 (0x40) + VLIMM11 (0x3fe) }, - { "ior", { SP, LIDREG, C, LISREG, C, LITREG }, MLOP7 + MDEST + MLOP6, VLOP7 (0x40) + VLOP6 (0x34) }, + { "ior", { SP, LIDREG, C, LISREG, C, LITREG }, MLOP7 + MDEST + MLOP6, VLOP7 (0x40) + VLOP6 (0x35) }, { "isub", { SP, LIDREG, C, LISREG, C, LITREG }, MLOP7 + MDEST + MLOP6, VLOP7 (0x40) + VLOP6 (0x31) }, { "isubiu", { SP, LITREG, C, LISREG, C, LUIMM15 }, MLOP7, VLOP7 (0x09) }, { "isw", { LDOTDEST1, SP, LITREG, C, LIMM11, '(', LISREG, ')', LDEST1 }, MLOP7, VLOP7 (0x05) }, @@ -1883,7 +1883,13 @@ struct txvu_opcode gpuif_opcodes[] = { /* Some of these may take optional arguments. The way this is handled is to have multiple table entries, those with and - those without the optional arguments. */ + those without the optional arguments. + !!! The order here is important. The code that scans this table assumes + that if it reaches the end of a syntax string there is nothing more to + parse. This means that longer versions of instructions must appear before + shorter ones. Otherwise the text at the "end" of a longer one may be + interpreted as junk when the parser is using a shorter version of the + syntax string. */ { "gpuifpacked", { SP, GPUIF_PRIM, C, GPUIF_REGS, C, GPUIF_NLOOP, C, GPUIF_EOP }, 0, 1 }, { "gpuifpacked", { SP, GPUIF_REGS, C, GPUIF_NLOOP, C, GPUIF_EOP }, 0, 1 }, |