]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: get rid of most byte and word insns for amd64
authorKeith Randall <khr@golang.org>
Fri, 22 Apr 2016 20:09:18 +0000 (13:09 -0700)
committerKeith Randall <khr@golang.org>
Sat, 23 Apr 2016 16:30:27 +0000 (16:30 +0000)
commit9e3c68f1e02021a845c452ae347d06332e4ed79d
treea20c587275a2dc5c900a913d8aefc4a6e318d89c
parent217c284995400bb761e5718782c8a90748c75aef
cmd/compile: get rid of most byte and word insns for amd64

Now that we're using 32-bit ops for 8/16-bit logical operations
(to avoid partial register stalls), there's really no need to
keep track of the 8/16-bit ops at all.  Convert everything we
can to 32-bit ops.

This CL is the obvious stuff.  I might think a bit more about
whether we can get rid of weirder stuff like HMULWU.

The only downside to this CL is that we lose some information
about constants.  If we had source like:
  var a byte = ...
  a += 128
  a += 128
We will convert that to a += 256, when we could get rid of the
add altogether.  This seems like a fairly unusual scenario and
I'm happy with forgoing that optimization.

Change-Id: Ia7c1e5203d0d110807da69ed646535194a3efba1
Reviewed-on: https://go-review.googlesource.com/22382
Reviewed-by: Todd Neal <todd@tneal.org>
src/cmd/compile/internal/amd64/ssa.go
src/cmd/compile/internal/ssa/gen/AMD64.rules
src/cmd/compile/internal/ssa/gen/AMD64Ops.go
src/cmd/compile/internal/ssa/opGen.go
src/cmd/compile/internal/ssa/regalloc_test.go
src/cmd/compile/internal/ssa/rewriteAMD64.go