ppc/svp64: support svm mode
authorDmitry Selyutin <ghostmansd@gmail.com>
Mon, 25 Jul 2022 19:17:12 +0000 (22:17 +0300)
committerDmitry Selyutin <ghostmansd@gmail.com>
Fri, 23 Sep 2022 17:11:54 +0000 (20:11 +0300)
gas/config/tc-ppc-svp64.c

index 5436ab203a789197e8d257d55e479a6abda94bb1..f0427976c24e40b24e42e79c7df87ee76df69c5e 100644 (file)
@@ -45,6 +45,7 @@ struct svp64_ctx {
   unsigned int mr : 1;
   unsigned int rg : 1;
   unsigned int crm : 1;
+  unsigned int svm : 1;
 };
 
 #define SVP64_RC1_ACTIVE (1U << 3U)
@@ -512,6 +513,20 @@ svp64_decode_crm (char *str, struct svp64_ctx *svp64)
   return str;
 }
 
+static char *
+svp64_decode_svm (char *str, struct svp64_ctx *svp64)
+{
+  str += (sizeof ("svm") - 1);
+  if ( ! ISSPACE (*str) && *str != SVP64_SEP && *str != '\0')
+    return NULL;
+
+  svp64->svm = 1;
+
+  *str++ = '\0';
+
+  return str;
+}
+
 static char *
 svp64_decode_mode (char *str, struct svp64_ctx *svp64)
 {
@@ -536,6 +551,7 @@ svp64_decode_mode (char *str, struct svp64_ctx *svp64)
     SVP64_DECODER ("mr"  , svp64_decode_mr),
     SVP64_DECODER ("mrr" , svp64_decode_mrr),
     SVP64_DECODER ("crm" , svp64_decode_crm),
+    SVP64_DECODER ("svm" , svp64_decode_svm),
   };
 
   for (i = 0; i < sizeof (table) / sizeof (table[0]); ++i)