ppc/svp64: support optional operands disassembly
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:36 +0000 (22:53 +0300)
opcodes/ppc-svp64-opc.c

index 8c64d95dc39fba9189db72986d6db5d75d1476d3..1c9392913f735dd089c997bf2d70105e1ce96e51 100644 (file)
@@ -42,8 +42,29 @@ svp64_extra_desc (const struct svp64_desc *desc, ppc_opindex_t opindex)
     {svp64_desc_cr_in2_opindex, desc->extra_idx_cr_in2},
     {svp64_desc_cr_out_opindex, desc->extra_idx_cr_out},
   };
+  static const struct {
+    int origin;
+    int target;
+  } aliases[] = {
+    {OBF, BF},
+    {PRA0, RA0},
+    {PRAQ, RA},
+    {RAOPT, RA},
+    {RBOPT, RB},
+    {RSO, RS},
+    {TBR, SPR},
+  };
+
+  for (i = 0; i < ARRAY_SIZE (aliases); ++i)
+    {
+      if (opindex == aliases[i].origin)
+       {
+         opindex = aliases[i].target;
+         break;
+       }
+    }
 
-  for (i = 0; i < (sizeof (table) / sizeof (table[0])); ++i)
+  for (i = 0; i < ARRAY_SIZE (table); ++i)
     {
       enum svp64_extra extra = table[i].extra;