fix PowerDecoder2 to properly decode scalar EXTRA2
authorJacob Lifshay <programmerjake@gmail.com>
Fri, 15 Sep 2023 21:21:00 +0000 (14:21 -0700)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 22 Dec 2023 19:26:20 +0000 (19:26 +0000)
https://bugs.libre-soc.org/show_bug.cgi?id=1161

src/openpower/decoder/power_svp64_extra.py

index c956eb99c2bee9c1bbb98d00fda15a353ce0a25a..620f0660c4b7113327f8b0a04bb3c6aacfbf6741 100644 (file)
@@ -105,8 +105,11 @@ class SVP64RegExtra(SVP64ExtraSpec):
         with m.If(self.isvec):
             # Vector: shifted up, extra in LSBs (RA << 2) | spec[1:2]
             comb += self.reg_out.eq(Cat(spec_aug, self.reg_in))
-        with m.Else():
-            # Scalar: not shifted up, extra in MSBs RA | (spec[1:2] << 5)
+        with m.Elif(self.etype == SVEType.EXTRA2):
+            # Scalar EXTRA2: not shifted up, extra in MSBs RA | (spec[1] << 5)
+            comb += self.reg_out.eq(Cat(self.reg_in, spec_aug[1]))
+        with m.Elif(self.etype == SVEType.EXTRA3):
+            # Scalar EXTRA3: not shifted up, extra in MSBs RA | (spec[1:2] << 5)
             comb += self.reg_out.eq(Cat(self.reg_in, spec_aug))
 
         return m