mirror of https://github.com/golang/go.git
The s390x port was based on the ppc64 port and, because of the way the port was done, inherited some instructions from it. ppc64 supports 3-operand (4-operand for FMADD etc.) floating point instructions but s390x doesn't (the destination register is always an input) and so these were emulated. There is a bug in the emulation of FMADD whereby if the destination register is also a source for the multiplication it will be clobbered. This doesn't break any assembly code in the std lib but could affect future work. To fix this I have gone through the floating point instructions and removed all unnecessary 3-/4-operand emulation. The compiler doesn't need it and assembly writers don't need it, it's just a source of bugs. I've also deleted the FNMADD family of emulated instructions. They aren't used anywhere. Change-Id: Ic07cedcf141a6a3b43a0c84895460f6cfbf56c04 Reviewed-on: https://go-review.googlesource.com/33350 Run-TryBot: Michael Munday <munday@ca.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> |
||
|---|---|---|
| .. | ||
| addr2line | ||
| api | ||
| asm | ||
| cgo | ||
| compile | ||
| cover | ||
| dist | ||
| doc | ||
| fix | ||
| go | ||
| gofmt | ||
| internal | ||
| link | ||
| nm | ||
| objdump | ||
| pack | ||
| pprof | ||
| trace | ||
| vendor | ||
| vet | ||