]> Cypherpunks repositories - gostls13.git/commit
cmd/internal/obj/x86: take over i386 duty, clean up PINSRQ, CMPSD
authorRuss Cox <rsc@golang.org>
Wed, 4 Mar 2015 20:46:52 +0000 (15:46 -0500)
committerRuss Cox <rsc@golang.org>
Thu, 5 Mar 2015 04:13:43 +0000 (04:13 +0000)
commit0bf79b2de8bf75093629b1861a49efca1dbc0356
treecfbaa19a9f603de9193247b666780777200f855c
parent383e6b2ce2833e93fcf80de2f6d9afc450acd864
cmd/internal/obj/x86: take over i386 duty, clean up PINSRQ, CMPSD

Make cmd/internal/obj/x86 support 32-bit mode and use
instead of cmd/internal/obj/i386. Delete cmd/internal/obj/i386.

Clean up encoding of PINSRQ, CMPSD to use explicit third arg
instead of jamming it into an unused slot of a different arg.

Also fix bug in old6a, which declared the wrong grammar.
The accepted (and encoded) arguments to CMPSD etc are mem,reg not reg,mem.
Code that did try to use mem,reg before would be rejected by liblink,
so only reg,reg ever worked, so existing code is not affected.
After this change, code can use mem,reg successfully.

The real bug here is that the encoding tables inverted the argument
order, making the comparisons all backward from what they say on the page.
It's too late to swap them, though: people have already written code that
expects the inverted comparisons (like in package math, and likely externally).
The best we can do is make the argument that should and can take a
memory operand accept it.

Bit-for-bit compatibility checked against tree without this CL.

Change-Id: Ife5685bc98c95001f64407f35066b34b4dae11c1
Reviewed-on: https://go-review.googlesource.com/6810
Reviewed-by: Rob Pike <r@golang.org>
24 files changed:
src/cmd/8g/cgen.go
src/cmd/8g/cgen64.go
src/cmd/8g/galign.go
src/cmd/8g/gg.go
src/cmd/8g/ggen.go
src/cmd/8g/gsubr.go
src/cmd/8g/peep.go
src/cmd/8g/prog.go
src/cmd/8g/reg.go
src/cmd/asm/internal/arch/arch.go
src/cmd/asm/internal/asm/endtoend_test.go
src/cmd/dist/buildtool.go
src/cmd/internal/obj/link.go
src/cmd/internal/obj/x86/6.out.go
src/cmd/internal/obj/x86/anames6.go
src/cmd/internal/obj/x86/asm6.go
src/cmd/internal/obj/x86/list6.go
src/cmd/internal/obj/x86/obj6.go
src/cmd/old6a/a.y
src/cmd/old6a/lex.go
src/cmd/old6a/y.go
src/cmd/old8a/a.y
src/cmd/old8a/lex.go
src/cmd/old8a/y.go