Skip to content

Merge, saturated add and sub, integer comparison instructions added, bugs with masks fixed - #132

Draft
igor-sachok wants to merge 1 commit into
pulp-platform:mainfrom
igor-sachok:spatz-masks
Draft

Merge, saturated add and sub, integer comparison instructions added, bugs with masks fixed#132
igor-sachok wants to merge 1 commit into
pulp-platform:mainfrom
igor-sachok:spatz-masks

Conversation

@igor-sachok

Copy link
Copy Markdown
Contributor
  • Add support for the MERGE instruction (vmerge).

  • Add support for integer comparison instructions from RVV (vmseq, vmsne, vmslt[u], vmsle[u], vmsgt[u]).

  • Add the corresponding fields to the VFU instruction tag (is_cmp, vl, vm, merge).

  • Add support for saturating integer instructions from RVV: vsadd, vsaddu, vssub, vssubu.

  • Mask-logical instructions (vmand, vmor, vmxor, vmnand, vmnor, vmxnor, vmandnot, vmornot): vl is recomputed so the datapath processes exactly ceil(vl_elements / 8) bytes of mask - one bit per element - instead of a full SEW-width element per mask bit.

  • Fix several places where the result must be computed from result_tag rather than from spatz_req. Because the request can relate to a new instruction already. Using spatz_req there could apply the wrong instruction's attributes to an earlier result.

  • v0_t_read_done signal now goes low after reading the last input. Dependence of vfu_rsp_valid_o triggered a bug in case of sequential masked instructions; the second instruction could not start to read v0 because it was still high.

TODO: fix writing the result mask for FP and INT comparison instructions. (Now it is writing one word, which doesn't allow writing the full max for vector in case of m8)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant