-
Russ Cox authored
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/6810Reviewed-by: Rob Pike <r@golang.org>
0bf79b2d