From: Jacob Lifshay Date: Tue, 15 Mar 2022 05:24:12 +0000 (-0700) Subject: move pack/unpack_poly to separate file X-Git-Tag: opf_rfc_ls005_v1~3056 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7178a60fc9b8079c2e85976547f3739c62dc7ae5;p=libreriscv.git move pack/unpack_poly to separate file --- diff --git a/openpower/sv/bitmanip.mdwn b/openpower/sv/bitmanip.mdwn index 75703e79e..6ce42a991 100644 --- a/openpower/sv/bitmanip.mdwn +++ b/openpower/sv/bitmanip.mdwn @@ -533,23 +533,7 @@ instruction is not provided since the `xor[i]` instruction can be used instead. These are operations on polynomials with coefficients in `GF(2)`, with the polynomial's coefficients packed into integers with the following algorithm: -```python -def pack_poly(poly): - """`poly` is a list where `poly[i]` is the coefficient for `x ** i`""" - retval = 0 - for i, v in enumerate(poly): - retval |= v << i - return retval - -def unpack_poly(v): - """returns a list `poly`, where `poly[i]` is the coefficient for `x ** i`. - """ - poly = [] - while v != 0: - poly.append(v & 1) - v >>= 1 - return poly -``` +[[!inline pagenames="openpower/sv/bitmanip/pack_poly.py" raw="true" feeds="no" actions="yes"]] ## Carry-less Multiply Instructions diff --git a/openpower/sv/bitmanip/pack_poly.py b/openpower/sv/bitmanip/pack_poly.py new file mode 100644 index 000000000..f5ab64467 --- /dev/null +++ b/openpower/sv/bitmanip/pack_poly.py @@ -0,0 +1,19 @@ +"""Polynomials with GF(2) coefficients.""" + + +def pack_poly(poly): + """`poly` is a list where `poly[i]` is the coefficient for `x ** i`""" + retval = 0 + for i, v in enumerate(poly): + retval |= v << i + return retval + + +def unpack_poly(v): + """returns a list `poly`, where `poly[i]` is the coefficient for `x ** i`. + """ + poly = [] + while v != 0: + poly.append(v & 1) + v >>= 1 + return poly