Bug 785 - Implement gfb* instructions for GF(2^n) instructions
Summary: Implement gfb* instructions for GF(2^n) instructions
Status: CONFIRMED
Alias: None
Product: Libre-SOC's second ASIC
Classification: Unclassified
Component: source code (show other bugs)
Version: unspecified
Hardware: PC Linux
: --- enhancement
Assignee: Jacob Lifshay
URL:
Depends on: 784 787
Blocks: 782
  Show dependency treegraph
 
Reported: 2022-03-21 03:02 GMT by Jacob Lifshay
Modified: 2022-03-21 04:50 GMT (History)
2 users (show)

See Also:
NLnet milestone: NLnet.2021.02A.052.CryptoRouter
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: 782
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 2022-03-21 03:02:40 GMT
Instructions:
* gfbredpoly # sets reducing polynomial SPR `GFBREDPOLY`
    unless this is an immediate op, mtspr is completely sufficient.
* gfbmul RT, RA, RB
* gfbmadd RT, RA, RB, RC
* gfbtmadd twin for fft
* gfbinv rt, ra
    input 0 gives result 0 even though that is division by zero,
    that's what's needed for AES.

Steps (edit as needed):
* TODO: Instruction Encodings
* TODO: MSR bit to be reserved to indicate Poly SPR in use
  (avoids need to save Poly SPR on contextswitch)
* basic adaptable modules (probably in nmigen-gf)
  * TODO: module in nmigen-gf
  * TODO: unit test
  * TODO: formal
* TODO: add encoding of gfb* to SVP64Asm class (as a 32bit op)
* TODO: add gfb* to TBD pipe(s)
* TODO: fu unit tests
* TODO: fu formal