go/src/cmd/internal
Michael Munday a524616860 cmd/{asm,internal/obj/s390x}, math: remove emulated float instructions
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>
2017-02-10 16:11:25 +00:00
..
bio cmd/internal/obj: remove use of package bio 2016-04-14 17:58:33 +00:00
browser cmd/internal/browser: add chromium to the list of browsers 2016-11-12 00:29:12 +00:00
dwarf cmd/internal/dwarf: use []*Var instead of linked lists 2017-02-07 20:17:24 +00:00
gcprog cmd/{asm,compile/internal}: delete dead code 2016-08-25 12:20:29 +00:00
goobj cmd/link, etc: introduce SymKind type 2016-09-09 16:56:03 +00:00
obj cmd/{asm,internal/obj/s390x}, math: remove emulated float instructions 2017-02-10 16:11:25 +00:00
objfile cmd/objdump: copy gosym.PCValue into internal package 2016-12-01 18:20:04 +00:00
src [dev.inline] cmd/internal/src: introduce compact source position representation 2017-01-09 22:43:22 +00:00
sys cmd/internal/sys, runtime/internal/sys: gofmt 2016-11-07 22:13:18 +00:00