[libre-riscv-dev] [OpenPOWER-HDL-Cores] Power ISA v3.1 bug - parityw
Paul Mackerras
paulus at ozlabs.org
Tue May 26 06:44:30 BST 2020
On Fri, May 15, 2020 at 11:07:12AM -0400, Michael Nolan wrote:
> Hello! I'm with the Libre-SOC team, and was working on testing our
> implementation of the parityw and parityd instructions when I came across
> the following bug in the specification. The specification describes prtyd as
> follows:
>
> s <- 0
>
> do i = 0 to 7
>
> s <- s (XOR) RS[i%8 + 7]
>
> RA <- 63'b0 || s
>
> The least significant bit in each byte of the contents of register RS is
> examined. If there is an odd number of one bits the value 1 is placed into
> register RA; otherwise the value 0 is placed into register RA.
>
>
>
> The description of "least significant bit in each byte" leads me to believe
> that RS[i%8 + 7] should really be RS[i*8+7]. This is also how it is
> implemented in microwatt
Right, and microwatt matches POWER9, so POWER9 implements "*" as well.
I have asked the IBM architects for confirmation, and I'll let you
know what they say. For now I think it's pretty safe to go ahead with
"*", since "*" is clearly what existing software expects.
Paul.
More information about the libre-riscv-dev
mailing list