Multiply-Accumulate right shift notation incorrect
Created by: DavidM-EMUS
In the document at the link below: https://core-v-docs-verif-strat.readthedocs.io/projects/cv32e40p_um/en/latest/instruction_set_extensions.html#multiply-accumulate
In section Pulp Instruction Set Extensions > Multiply-Accumulate: For all unsigned instructions that also included a right shift, documentation specifies logical right shift, but uses three arrows instead of two. This is rather confusing and/or poorly worded as it could cause confusion as the mathematical equation denotes arithmetic right shifting. I know this is nitpicking, but the notes for instructions may be ignored by some users. Testing results show that RTL performs logical right shifting for these instructions. Example below was copied (with minor formatting for readability) from documentation at the link above:
p.muluN rD, rs1, rs2, Is3 rD[31:0] = (Zext(rs1[15:0]) * Zext(rs2[15:0])) >>> Is3 Note: Logical shift right
the second line of which could be simplified to: rD[31:0] = (Zext(rs1[15:0]) * Zext(rs2[15:0])) >> ls3
Please note this effects a total of 8 instructions: p.muluN p.mulhhuN p.muluRN p.mulhhuRN p.macuN p.machhuN p.macuRN p.machhuRN