You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have found that some mask instructions violate the tail-agnostic policy. Namely: vmandn.mm, vmand.mm, vmxnor.mm, vmxor.mm, vmnand.mm , vmnor.mm. As you mentioned (and as it is written in the specs), mask instructions are always handled in a tail-agnostic way.
It is important to mention that there are only tail-policy violations for these instructions, the calculation of the new mask is done correctly.
Below you can see an exemplary warning (and error) that is thrown by the UVM environment for each of these instructions.
You can reproduce these errors by running the cvxif_test_direct_issue_79 test in the UVM environment.
Side note
Spike handles mask instructions with tail-undisturbed policy (at least for all the test programs of the cvxif_test_direct_issue_79 test). Which means that in the UVM_WARNINGs, the ref.vproc_register can be seen as the tail-undisturbed golden-reference, so the result of the dut should be equal or larger than the reference in order to be compliant with the tail-agnostic policy.
Also, the ref.vl in the UVM_WARNING shows the vector length that was used in the reference model for this instruction.
The text was updated successfully, but these errors were encountered:
moimfeld
changed the title
Tail-agnostic policy violation for masked instruction
Tail-agnostic policy violation for mask instruction
Jun 9, 2022
thanks for reporting this. Indeed, these instructions are currently executed in the same fashion as the regular vand, vor, etc., with the EMUL always set to 1. Therefore, the instructions apply the operation to the entire vector register (or at least to the first VL bytes, rather than the first VL bits only), which is why the result should be correct but the tail policy is not respected.
Hi @michael-platzer,
Issue
I have found that some mask instructions violate the tail-agnostic policy. Namely:
vmandn.mm
,vmand.mm
,vmxnor.mm
,vmxor.mm
,vmnand.mm
,vmnor.mm
. As you mentioned (and as it is written in the specs), mask instructions are always handled in a tail-agnostic way.It is important to mention that there are only tail-policy violations for these instructions, the calculation of the new mask is done correctly.
Below you can see an exemplary warning (and error) that is thrown by the UVM environment for each of these instructions.
How to reproduce
You can reproduce these errors by running the
cvxif_test_direct_issue_79
test in the UVM environment.Side note
Spike handles mask instructions with tail-undisturbed policy (at least for all the test programs of the
cvxif_test_direct_issue_79
test). Which means that in the UVM_WARNINGs, theref.vproc_register
can be seen as the tail-undisturbed golden-reference, so the result of the dut should be equal or larger than the reference in order to be compliant with the tail-agnostic policy.Also, the
ref.vl
in the UVM_WARNING shows the vector length that was used in the reference model for this instruction.The text was updated successfully, but these errors were encountered: