if svp64_en:
self.sv_rm = SVP64Rec(name="dec_svp64") # SVP64 RM field
self.rm_dec = SVP64RMModeDecode("svp64_rm_dec")
+ # set these to the predicate mask bits needed for the ALU
+ self.pred_sm = Signal() # TODO expand to SIMD mask width
+ self.pred_dm = Signal() # TODO expand to SIMD mask width
self.sv_a_nz = Signal(1)
self.final = final
self.opkls = opkls
# TODO, really do we have to do these explicitly?? sigh
#for (field, _) in sv_input_record_layout:
# comb += self.do_copy(field, self.rm_dec.op_get(field))
- comb += self.do_copy("sv_pred_sz", self.rm_dec.pred_sz)
- comb += self.do_copy("sv_pred_dz", self.rm_dec.pred_dz)
comb += self.do_copy("sv_saturate", self.rm_dec.saturate)
comb += self.do_copy("sv_Ptype", self.rm_dec.ptype_in)
+ # these get set up based on incoming mask bits. TODO:
+ # pass in multiple bits (later, when SIMD backends are enabled)
+ with m.If(self.rm_dec.pred_sz):
+ comb += self.do_copy("sv_pred_sz", ~self.pred_sm)
+ with m.If(self.rm_dec.pred_dz):
+ comb += self.do_copy("sv_pred_dz", ~self.pred_dm)
+
return m