pass relevant predicate mask bits through to Decoders (PowerDecoderSubset)
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 6 May 2021 17:52:24 +0000 (18:52 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 6 May 2021 17:52:24 +0000 (18:52 +0100)
at the right time

src/soc/simple/issuer.py

index 44bf3b6823484ad34a91de09e4cb584b17da086f..0305624c3fd620b4c70906991beebe2907df4f4f 100644 (file)
@@ -723,6 +723,11 @@ class TestIssuerInternal(Elaboratable):
                             # proceed to Decode
                             m.next = "DECODE_SV"
 
+                    # pass predicate mask bits through to satellite decoders
+                    # TODO: for SIMD this will be *multiple* bits
+                    sync += core.sv_pred_sm.eq(self.srcmask[0])
+                    sync += core.sv_pred_dm.eq(self.dstmask[0])
+
             # after src/dst step have been updated, we are ready
             # to decode the instruction
             with m.State("DECODE_SV"):
@@ -735,10 +740,6 @@ class TestIssuerInternal(Elaboratable):
                     sync += core.sv_rm.eq(pdecode2.sv_rm)
                     # set RA_OR_ZERO detection in satellite decoders
                     sync += core.sv_a_nz.eq(pdecode2.sv_a_nz)
-                    # pass predicate mask bits through to satellite decoders
-                    # TODO: for SIMD this will be *multiple* bits
-                    sync += core.sv_pred_sm.eq(self.srcmask[0])
-                    sync += core.sv_pred_dm.eq(self.dstmask[0])
 
                 m.next = "INSN_EXECUTE"  # move to "execute"