Correct powerpc spe opcode lookup
authorAlan Modra <amodra@gmail.com>
Mon, 7 May 2018 02:05:22 +0000 (11:35 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 8 May 2018 12:58:44 +0000 (22:28 +0930)
Defining SPE2_OPCD_SEGS as 13 discounts the possibility that we'd
ever look up spe2_opcd_indices[14..16], which I think is possible.
Extend that array to size 16+1, using the macros we use to index the
array.  Similarly use the index macros for PPC_OPCD_SEGS and
VLE_OPCD_SEGS.

* ppc-dis.c (PPC_OPCD_SEGS): Define using PPC_OP.
(VLE_OPCD_SEGS, SPE2_OPCD_SEGS): Similarly, using macros used to
partition opcode space for index lookup.

opcodes/ChangeLog
opcodes/ppc-dis.c

index 0c6994e90df581690febee292e85e896ce99f4b9..a6000cebbc8ef6bf353fed20d2cebf65c0b3a83c 100644 (file)
@@ -1,3 +1,9 @@
+2018-05-08  Alan Modra  <amodra@gmail.com>
+
+       * ppc-dis.c (PPC_OPCD_SEGS): Define using PPC_OP.
+       (VLE_OPCD_SEGS, SPE2_OPCD_SEGS): Similarly, using macros used to
+       partition opcode space for index lookup.
+
 2018-05-07  Peter Bergner  <bergner@vnet.ibm.com.com>
 
        * ppc-dis.c (print_insn_powerpc) <insn_is_short>: Replace this...
index 0f7d7bacfb342afa5f45791e922a043b66809e90..412aae000def9b73f3784445fc42d593224fbe1d 100644 (file)
@@ -367,12 +367,12 @@ powerpc_init_dialect (struct disassemble_info *info)
   POWERPC_DIALECT(info) = dialect;
 }
 
-#define PPC_OPCD_SEGS 64
-static unsigned short powerpc_opcd_indices[PPC_OPCD_SEGS+1];
-#define VLE_OPCD_SEGS 32
-static unsigned short vle_opcd_indices[VLE_OPCD_SEGS+1];
-#define SPE2_OPCD_SEGS 13
-static unsigned short spe2_opcd_indices[SPE2_OPCD_SEGS+1];
+#define PPC_OPCD_SEGS (1 + PPC_OP (-1))
+static unsigned short powerpc_opcd_indices[PPC_OPCD_SEGS + 1];
+#define VLE_OPCD_SEGS (1 + VLE_OP_TO_SEG (VLE_OP (-1, 0xffff)))
+static unsigned short vle_opcd_indices[VLE_OPCD_SEGS + 1];
+#define SPE2_OPCD_SEGS (1 + SPE2_XOP_TO_SEG (SPE2_XOP (-1)))
+static unsigned short spe2_opcd_indices[SPE2_OPCD_SEGS + 1];
 
 /* Calculate opcode table indices to speed up disassembly,
    and init dialect.  */