First: TODO: decide if we want to implement these. TODO: decide if we want to limit ourselves to GF(p) for prime p or change these instructions to work for all modular arithmetic (modulus isn't required to be prime). If we want the instructions to work for all modular arithmetic, then they should probably be named mod* rather than gfp*. Instructions: * gfpadd, gfpsub * gfpmul * gfpinv (decide what div by 0 does -- decide what non-invertable inputs do (only happens for composite moduli)) * gcd (maybe -- other output of gfpinv's algorithm, we have the hardware, why not use it?) * gfpmadd, gfpmsub, gfpmsubr (sub reversed) * gfpmaddsubr (for fft) Steps (edit as needed): * TODO: Instruction Encodings * basic adaptable modules (probably in nmigen-gf) * TODO: module in nmigen-gf * TODO: unit test * TODO: formal * TODO: add encoding of gfp* to SVP64Asm class (as a 32bit op) * TODO: add gfp* to TBD pipe(s) * TODO: fu unit tests * TODO: fu formal