• Austin Clements's avatar
    [dev.power64] runtime: fix fastrand1 on power64x · 40a5b3ec
    Austin Clements authored
    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
    40a5b3ec
asm_power64x.s 20.4 KB