• James Cowgill's avatar
    cmd/internal/obj/mips: load/store even float registers first · 42311108
    James Cowgill authored
    There is a bug in Octeon III processors where storing an odd floating
    point register after it has recently been written to by a double
    floating point operation will store the old value from before the double
    operation (there are some extra details - the operation and store
    must be a certain number of cycles apart). However, this bug does not
    occur if the even register is stored first. Currently the bug only
    happens on big endian because go always loads the even register first on
    little endian.
    
    Workaround the bug by always loading / storing the even floating point
    register first. Since this is just an instruction reordering, it should
    have no performance penalty. This follows other compilers like GCC which
    will always store the even register first (although you do have to set
    the ISA level to MIPS I to prevent it from using SDC1).
    
    Change-Id: I5e73daa4d724ca1df7bf5228aab19f53f26a4976
    Reviewed-on: https://go-review.googlesource.com/97735Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    42311108
Name
Last commit
Last update
..
a.out.go Loading commit data...
anames.go Loading commit data...
anames0.go Loading commit data...
asm0.go Loading commit data...
list0.go Loading commit data...
obj0.go Loading commit data...