Bug 134

Summary: implement carry-less multiply
Product: Libre-SOC's first SoC Reporter: Jacob Lifshay <programmerjake>
Component: ALU (including IEEE754 16/32/64-bit FPU)Assignee: Luke Kenneth Casson Leighton <lkcl>
Status: RESOLVED DUPLICATE    
Severity: enhancement CC: libre-soc-bugs, programmerjake
Priority: ---    
Version: unspecified   
Hardware: Other   
OS: Linux   
NLnet milestone: --- total budget (EUR) for completion of task and all subtasks: 0
budget (EUR) for this task, excluding subtasks' budget: 0 parent task for budget allocation:
child tasks for budget allocation: The table of payments (in EUR) for this task; TOML format:

Description Jacob Lifshay 2019-08-21 15:07:46 BST
Carry-less multiply could be implemented relatively inexpensively, sharing HW with the SIMD integer/mantissa multiplier. All that would be needed is to mask out the carry signals in the multiplier, which shouldn't have too much of an incremental cost since it'd be converting 2-input AND gates to 3-input.

carry-less multiply is commonly used for cryptography, CRC calculation (used for networking and compression/decompression), and more.

x86's version of carry-less multiply
https://en.wikipedia.org/wiki/CLMUL_instruction_set
Comment 1 Luke Kenneth Casson Leighton 2019-08-21 16:17:15 BST
nice idea.  we'll need to justify an opcode for it, however
that's no reason not to actually put it into the ALU,
as the ALU is for general-purpose use.
Comment 2 Jacob Lifshay 2022-05-02 10:18:19 BST

*** This bug has been marked as a duplicate of bug 784 ***