1
0
mirror of https://github.com/golang/go synced 2024-10-05 12:21:22 -06:00
go/src/cmd
Dave Cheney 7b36acc4ac cmd/5g: avoid temporary during constant binary op
This CL is an attempt to backport the abop code generation from 6g. This improves the generation of the range offset if the increment can be encoded directly via Operand2 shift encoding.

0023 (/home/dfc/src/range.go:7) BGE     ,29(APC)
0024 (/home/dfc/src/range.go:7) MOVW    0(R3),R5
0025 (/home/dfc/src/range.go:7) MOVW    $4,R1
0026 (/home/dfc/src/range.go:7) ADD     R1,R3,R3
0027 (/home/dfc/src/range.go:8) ADD     R5,R4,R4
0028 (/home/dfc/src/range.go:7) B       ,17(APC)

becomes

0023 (/home/dfc/src/range.go:7) BGE     ,28(APC)
0024 (/home/dfc/src/range.go:7) MOVW    0(R3),R0
0025 (/home/dfc/src/range.go:7) ADD     $4,R3,R3
0026 (/home/dfc/src/range.go:8) ADD     R0,R4,R4
0027 (/home/dfc/src/range.go:7) B       ,17(APC)

Benchmarks are unimpressive

dfc@qnap:~/go/test/bench/go1$ ~/go/misc/benchcmp {old,new}.txt
benchmark                 old ns/op    new ns/op    delta
BenchmarkBinaryTree17    2147483647   2147483647   +0.93%
BenchmarkFannkuch11      2147483647   2147483647   -2.52%
BenchmarkGobDecode        196135200    195842000   -0.15%
BenchmarkGobEncode         78581650     76734450   -2.35%
BenchmarkGzip            2147483647   2147483647   -0.47%
BenchmarkGunzip          1087243000   1070254000   -1.56%
BenchmarkJSONEncode      1107558000   1146077000   +3.48%
BenchmarkJSONDecode      2147483647   2147483647   -0.07%
BenchmarkMandelbrot200   2147483647   2147483647   -0.77%
BenchmarkParse             74328550     71653400   -3.60%
BenchmarkRevcomp          111123900    109325950   -1.62%
BenchmarkTemplate        2147483647   2147483647   -0.82%

benchmark                  old MB/s     new MB/s  speedup
BenchmarkGobDecode             3.91         3.92    1.00x
BenchmarkGobEncode             9.77        10.00    1.02x
BenchmarkGzip                  3.65         3.66    1.00x
BenchmarkGunzip               17.85        18.13    1.02x
BenchmarkJSONEncode            1.75         1.69    0.97x
BenchmarkJSONDecode            0.83         0.83    1.00x
BenchmarkParse                 0.78         0.81    1.04x
BenchmarkRevcomp              22.87        23.25    1.02x
BenchmarkTemplate              0.84         0.85    1.01x

R=remyoudompheng, minux.ma, rsc
CC=golang-dev
https://golang.org/cl/6564067
2012-10-02 08:12:39 +10:00
..
5a 5a, 5l, math: Add support for ABSD, ABSF floating point instructions. 2012-08-03 16:15:11 -04:00
5c cmd/5c: fix dataflag annotation 2012-09-25 14:42:44 +08:00
5g cmd/5g: avoid temporary during constant binary op 2012-10-02 08:12:39 +10:00
5l cmd/ld: prepare for 64-bit ints 2012-09-24 14:59:09 -04:00
6a cmd/6a, cmd/6l: add support for AES-NI instrutions and PSHUFD 2012-09-27 01:53:08 +08:00
6c cmd/{5g,6g,8g,6c}: remove unused macro, use %E to print etype. 2012-09-24 23:44:00 +02:00
6g cmd/[568]g: header cleanup. 2012-09-27 08:34:00 +02:00
6l cmd/6a, cmd/6l: add support for AES-NI instrutions and PSHUFD 2012-09-27 01:53:08 +08:00
8a cmd/6l, cmd/8l, cmd/5l: add AUNDEF instruction 2012-05-30 16:47:56 -04:00
8c cmd/8c: better fix for 64-bit register smash 2012-05-24 23:36:26 -04:00
8g cmd/[568]g: header cleanup. 2012-09-27 08:34:00 +02:00
8l cmd/ld: prepare for 64-bit ints 2012-09-24 14:59:09 -04:00
addr2line runtime/pprof: support OS X CPU profiling 2012-02-28 16:18:24 -05:00
api cmd/api: delete redundant text from deletion message 2012-09-27 15:39:56 +10:00
cc cmd/cc: allow to call nested packages from within C code 2012-08-04 16:11:53 +04:00
cgo build: make int 64 bits on amd64 2012-09-24 20:57:01 -04:00
cov cmd: update formatting of usage messages 2012-03-05 14:23:00 +11:00
dist cmd/dist: new version for string for development branch 2012-09-24 21:35:20 -04:00
fix cmd/fix: add rules for net/http -> net/http/httputil renames 2012-03-12 13:25:48 -07:00
gc cmd/gc: Missing break in esc switch. 2012-10-01 16:33:06 +02:00
go cmd/go/build: Add magic data for Plan 9 binaries. 2012-10-01 15:04:52 -04:00
godoc cmd/godoc: clearer comments in FormatSelections 2012-10-01 14:17:25 -07:00
gofmt gofmt: added testcase for files containing \r\n line endings 2012-09-19 14:14:21 -07:00
ld cmd/go, cmd/ld: fix libgcc order and add __image_base__ symbol for windows 2012-09-26 22:34:25 +08:00
nm cmd/pack: rename __.SYMDEF to __.GOSYMDEF 2012-09-13 10:26:21 -04:00
objdump runtime/pprof: support OS X CPU profiling 2012-02-28 16:18:24 -05:00
pack cmd/pack: rename __.SYMDEF to __.GOSYMDEF 2012-09-13 10:26:21 -04:00
prof cmd/prof: don't build on Plan 9 for now. 2012-04-16 17:36:36 -07:00
vet vet: fix rangeloop. 2012-09-20 08:12:47 +10:00
yacc cmd/yacc: allow utf-8 token values 2012-09-13 13:59:00 -07:00