ppc/svp64: share SVP64 context via libopcodes
authorDmitry Selyutin <ghostmansd@gmail.com>
Sun, 28 May 2023 22:04:57 +0000 (01:04 +0300)
committerDmitry Selyutin <ghostmansd@gmail.com>
Tue, 14 Nov 2023 19:53:35 +0000 (22:53 +0300)
gas/config/tc-ppc-svp64.c
include/opcode/ppc-svp64.h
opcodes/ppc-svp64-dis.c

index 6065204bf689537e283ecc932a81232907179fa7..e91da81dba95c739ae1e8159517f0e03122dff7e 100644 (file)
 
 #include <setjmp.h>
 
-struct svp64_ctx {
-  const char *name;
-  const struct svp64_desc *desc;
-  struct svp64_insn insn;
-  unsigned int sv_mode_explicit : 1;
-  unsigned int sv_mode : 2;
-  unsigned int mode : 5;
-  unsigned int pmmode : 1;
-  unsigned int pmask : 3;
-  unsigned int smmode : 1;
-  unsigned int smask : 3;
-  unsigned int mmode : 1;
-  unsigned int has_pmask : 1;
-  unsigned int has_smask : 1;
-  unsigned int mask_m_specified : 1;
-  unsigned int subvl : 2;
-  unsigned int destwid : 2;
-  unsigned int srcwid : 2;
-  unsigned int els : 1;
-  unsigned int sea : 1;
-  unsigned int sat : 1;
-  unsigned int dz : 1;
-  unsigned int sz : 1;
-  unsigned int ff : 3 + 2; /* 3-bit plus RC1 */
-  unsigned int mr : 1;
-  unsigned int RG : 1;
-  unsigned int crm : 1;
-  unsigned int bc_all : 1;
-  unsigned int bc_lru : 1;
-  unsigned int bc_brc : 1;
-  unsigned int bc_svstep : 1;
-  unsigned int bc_vsb : 1;
-  unsigned int bc_vlset : 1;
-  unsigned int bc_vli : 1;
-  unsigned int bc_snz : 1;
-};
-
-#define SVP64_RC1_ACTIVE (1U << 3U)
-#define SVP64_RC1_INVERT (SVP64_RC1_ACTIVE | (1U << 4U))
-
 enum svp64_predicate {
   /* Integer */
   SVP64_PREDICATE_1BIT_R3,
index 87cac813436f25989835226f0be6ce41d66ef02d..e90d38bfbf6b6869475fb21ee7288a9b7ca9bc99 100644 (file)
@@ -37,6 +37,46 @@ struct svp64_extra_desc {
 const struct svp64_extra_desc *
 svp64_extra_desc (const struct svp64_desc *desc, ppc_opindex_t opindex);
 
+struct svp64_ctx {
+  const char *name;
+  const struct svp64_desc *desc;
+  struct svp64_insn insn;
+  unsigned int sv_mode_explicit : 1;
+  unsigned int sv_mode : 2;
+  unsigned int mode : 5;
+  unsigned int pmmode : 1;
+  unsigned int pmask : 3;
+  unsigned int smmode : 1;
+  unsigned int smask : 3;
+  unsigned int mmode : 1;
+  unsigned int has_pmask : 1;
+  unsigned int has_smask : 1;
+  unsigned int mask_m_specified : 1;
+  unsigned int subvl : 2;
+  unsigned int destwid : 2;
+  unsigned int srcwid : 2;
+  unsigned int els : 1;
+  unsigned int sea : 1;
+  unsigned int sat : 1;
+  unsigned int dz : 1;
+  unsigned int sz : 1;
+  unsigned int ff : 3 + 2; /* 3-bit plus RC1 */
+  unsigned int mr : 1;
+  unsigned int RG : 1;
+  unsigned int crm : 1;
+  unsigned int bc_all : 1;
+  unsigned int bc_lru : 1;
+  unsigned int bc_brc : 1;
+  unsigned int bc_svstep : 1;
+  unsigned int bc_vsb : 1;
+  unsigned int bc_vlset : 1;
+  unsigned int bc_vli : 1;
+  unsigned int bc_snz : 1;
+};
+
+#define SVP64_RC1_ACTIVE (1U << 3U)
+#define SVP64_RC1_INVERT (SVP64_RC1_ACTIVE | (1U << 4U))
+
 #ifdef __cplusplus
 }
 #endif
index 0d50997b1d900c6e79fb0153b07f149ca1b22255..c6bda0a84b380b075396199b760421f0421e4441 100644 (file)
@@ -94,7 +94,7 @@ svp64_lookup (uint64_t insn, ppc_cpu_t dialect)
   const struct svp64_record *record_end;
   struct svp64_insn svp64_insn = {insn};
 
-  if ((svp64_insn_get_prefix_po (&svp64_insn) != 0x1) ||
+  if ((svp64_insn_get_prefix_PO (&svp64_insn) != 0x1) ||
       (svp64_insn_get_prefix_id (&svp64_insn) != 0x3))
     return NULL;