mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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>
This commit is contained in:
parent
383e6b2ce2
commit
0bf79b2de8
24 changed files with 910 additions and 537 deletions
|
|
@ -76,6 +76,7 @@ type Prog struct {
|
|||
Optab uint16
|
||||
Back uint8
|
||||
Ft uint8
|
||||
F3t uint8
|
||||
Tt uint8
|
||||
Isize uint8
|
||||
Printed uint8
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue