ppc/svp64: introduce svp64_decode stub
authorDmitry Selyutin <ghostmansd@gmail.com>
Sun, 28 May 2023 22:04:56 +0000 (01:04 +0300)
committerDmitry Selyutin <ghostmansd@gmail.com>
Tue, 14 Nov 2023 19:53:34 +0000 (22:53 +0300)
gas/config/tc-ppc-svp64.c

index 9436c79afa678b95b74fcbdcd0ea59085737f695..89d62c218a5d0eed2669de4bcdfd2ddff7ec7ce8 100644 (file)
@@ -22,6 +22,7 @@
 #include <setjmp.h>
 
 struct svp64_ctx {
+  const char *name;
   const struct svp64_desc *desc;
 };
 
@@ -60,15 +61,31 @@ svp64_setup_records (void)
     }
 }
 
-static char *
+#define SVP64_SEP '/'
+
+static void
 svp64_decode (char *str, struct svp64_ctx *svp64)
 {
+  char *opc;
+  const struct svp64_record *record;
+
   str += (sizeof ("sv.") - 1);
-  svp64->desc = (const struct svp64_desc *) str_hash_find (svp64_hash, str);
+  if (! ISALPHA (*str))
+    svp64_raise (_("unrecognized opcode: `%s'"), str);
+
+  opc = str;
+  for (; ! ISSPACE (*str) && *str != SVP64_SEP && *str != '\0'; ++str)
+    ;
+  if (*str != '\0')
+    *str++ = '\0';
+
+  svp64->desc = (const struct svp64_desc *) str_hash_find (svp64_hash, opc);
   if (!svp64->desc)
     svp64_raise (_("unrecognized opcode: `%s'"), str);
 
-  return str;
+  record = (const void *)((unsigned char *)svp64->desc -
+    offsetof (struct svp64_record, desc));
+  svp64->name = record->name;
 }
 
 static void