]> Cypherpunks repositories - gostls13.git/commit
[dev.power64] runtime: fix fastrand1 on power64x
authorAustin Clements <austin@google.com>
Fri, 31 Oct 2014 17:39:36 +0000 (13:39 -0400)
committerAustin Clements <austin@google.com>
Fri, 31 Oct 2014 17:39:36 +0000 (13:39 -0400)
commit40a5b3ecb1578a68b0423b8ef4eaebd5fb4c7869
tree41859800101653986208dba799e9aebfd5557383
parent6e86003651be7feb6da46360d6c411ff1c29b7f5
[dev.power64] runtime: fix fastrand1 on power64x

fastrand1 depends on testing the high bit of its uint32 state.
For efficiency, all of the architectures implement this as a
sign bit test.  However, on power64, fastrand1 was using a
64-bit sign test on the zero-extended 32-bit state.  This
always failed, causing fastrand1 to have very short periods
and often decay to 0 and get stuck.

Fix this by using a 32-bit signed compare instead of a 64-bit
compare.  This fixes various tests for the randomization of
select of map iteration.

LGTM=rsc
R=rsc, dave
CC=golang-codereviews
https://golang.org/cl/166990043
src/runtime/asm_power64x.s