Bug 134 - implement carry-less multiply
Summary: implement carry-less multiply
Status: RESOLVED DUPLICATE of bug 784
Alias: None
Product: Libre-SOC's first SoC
Classification: Unclassified
Component: ALU (including IEEE754 16/32/64-bit FPU) (show other bugs)
Version: unspecified
Hardware: Other Linux
: --- enhancement
Assignee: Luke Kenneth Casson Leighton
URL:
Depends on:
Blocks:
 
Reported: 2019-08-21 15:07 BST by Jacob Lifshay
Modified: 2022-05-02 10:18 BST (History)
2 users (show)

See Also:
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:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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 ***