From f04b32f23b861f30c005bb12a957911cce546c44 Mon Sep 17 00:00:00 2001 From: lkcl Date: Tue, 22 Mar 2022 13:09:31 +0000 Subject: [PATCH] --- openpower/sv/bitmanip.mdwn | 54 +++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/openpower/sv/bitmanip.mdwn b/openpower/sv/bitmanip.mdwn index 22b5ded27..8a9f75b4c 100644 --- a/openpower/sv/bitmanip.mdwn +++ b/openpower/sv/bitmanip.mdwn @@ -559,36 +559,30 @@ is followed by more accurate descriptions: further detailed and more precise explanations are provided below -## Polynomials with coefficients in `GF(2)` - -(aka. Carry-less arithmetic -- the `cl*` instructions). - -This isn't actually a Galois Field, but its coefficients are. This is -basically binary integer addition, subtraction, and multiplication like -usual, except that carries aren't propagated at all, effectively turning -both addition and subtraction into the bitwise xor operation. Division and -remainder are defined to match how addition and multiplication works. - -## Galois Fields with a prime size - -aka. `GF(p)` or Prime Galois Fields (the `gfp*` instructions). -This is basically just the integers mod `p`. - -## Galois Fields with a power-of-a-prime size - -aka. `GF(p^n)` or `GF(q)` where `q == p^n` for prime `p` and integer `n > 0`. - -We only implement these for `p == 2`, called Binary Galois Fields -(`GF(2^n)` -- the `gfb*` instructions). -For any prime `p`, `GF(p^n)` is implemented as polynomials with -coefficients in `GF(p)` and degree `< n`, where the polynomials are the -remainders of dividing by a specificly chosen polynomial in `GF(p)` called -the Reducing Polynomial (we will denote that by `red_poly`). The Reducing -Polynomial must be an irreducable polynomial (like primes, but for -polynomials), as well as have degree `n`. All `GF(p^n)` for the same `p` -and `n` are isomorphic to each other -- the choice of `red_poly` doesn't -affect `GF(p^n)`'s mathematical shape, all that changes is the specific -polynomials used to implement `GF(p^n)`. +* **Polynomials with coefficients in `GF(2)`** + (aka. Carry-less arithmetic -- the `cl*` instructions). + This isn't actually a Galois Field, but its coefficients are. This is + basically binary integer addition, subtraction, and multiplication like + usual, except that carries aren't propagated at all, effectively turning + both addition and subtraction into the bitwise xor operation. Division and + remainder are defined to match how addition and multiplication works. +* **Galois Fields with a prime size** + (aka. `GF(p)` or Prime Galois Fields -- the `gfp*` instructions). + This is basically just the integers mod `p`. +* **Galois Fields with a power-of-a-prime size** + (aka. `GF(p^n)` or `GF(q)` where `q == p^n` for prime `p` and + integer `n > 0`). + We only implement these for `p == 2`, called Binary Galois Fields + (`GF(2^n)` -- the `gfb*` instructions). + For any prime `p`, `GF(p^n)` is implemented as polynomials with + coefficients in `GF(p)` and degree `< n`, where the polynomials are the + remainders of dividing by a specificly chosen polynomial in `GF(p)` called + the Reducing Polynomial (we will denote that by `red_poly`). The Reducing + Polynomial must be an irreducable polynomial (like primes, but for + polynomials), as well as have degree `n`. All `GF(p^n)` for the same `p` + and `n` are isomorphic to each other -- the choice of `red_poly` doesn't + affect `GF(p^n)`'s mathematical shape, all that changes is the specific + polynomials used to implement `GF(p^n)`. # Instructions for Carry-less Operations -- 2.30.2