• Rémy Oudompheng's avatar
    cmd/6g, cmd/8g: add OINDREG, ODOT, ODOTPTR cases to igen. · f4e76d5e
    Rémy Oudompheng authored
    Apart from reducing the number of LEAL/LEAQ instructions by about
    30%, it gives 8g easier registerization in several cases,
    for example in strconv. Performance with 6g is not affected.
    
    Before (386):
    src/pkg/strconv/decimal.go:22   TEXT  (*decimal).String+0(SB),$240-12
    src/pkg/strconv/extfloat.go:540 TEXT  (*extFloat).ShortestDecimal+0(SB),$584-20
    
    After (386):
    src/pkg/strconv/decimal.go:22   TEXT  (*decimal).String+0(SB),$196-12
    src/pkg/strconv/extfloat.go:540 TEXT  (*extFloat).ShortestDecimal+0(SB),$420-20
    
    Benchmarks with GOARCH=386 (on a Core 2).
    
    benchmark                 old ns/op    new ns/op    delta
    BenchmarkBinaryTree17    7110191000   7079644000   -0.43%
    BenchmarkFannkuch11      7769274000   7766514000   -0.04%
    BenchmarkGobDecode         33454820     34755400   +3.89%
    BenchmarkGobEncode         11675710     11007050   -5.73%
    BenchmarkGzip            2013519000   1593855000  -20.84%
    BenchmarkGunzip           253368200    242667600   -4.22%
    BenchmarkJSONEncode       152443900    120763400  -20.78%
    BenchmarkJSONDecode       304112800    247461800  -18.63%
    BenchmarkMandelbrot200     29245520     29240490   -0.02%
    BenchmarkParse              8484105      8088660   -4.66%
    BenchmarkRevcomp         2695688000   2841263000   +5.40%
    BenchmarkTemplate         363759800    277271200  -23.78%
    
    benchmark                       old ns/op    new ns/op    delta
    BenchmarkAtof64Decimal                127          129   +1.57%
    BenchmarkAtof64Float                  166          164   -1.20%
    BenchmarkAtof64FloatExp               308          300   -2.60%
    BenchmarkAtof64Big                    584          571   -2.23%
    BenchmarkAppendFloatDecimal           440          430   -2.27%
    BenchmarkAppendFloat                  995          776  -22.01%
    BenchmarkAppendFloatExp               897          746  -16.83%
    BenchmarkAppendFloatNegExp            900          752  -16.44%
    BenchmarkAppendFloatBig              1528         1228  -19.63%
    BenchmarkAppendFloat32Integer         443          453   +2.26%
    BenchmarkAppendFloat32ExactFraction   812          661  -18.60%
    BenchmarkAppendFloat32Point          1002          773  -22.85%
    BenchmarkAppendFloat32Exp             858          725  -15.50%
    BenchmarkAppendFloat32NegExp          848          728  -14.15%
    BenchmarkAppendFloat64Fixed1          447          431   -3.58%
    BenchmarkAppendFloat64Fixed2          480          462   -3.75%
    BenchmarkAppendFloat64Fixed3          461          457   -0.87%
    BenchmarkAppendFloat64Fixed4          509          484   -4.91%
    
    Update #1914.
    
    R=rsc, nigeltao
    CC=golang-dev, remy
    https://golang.org/cl/6494107
    f4e76d5e
Name
Last commit
Last update
..
Makefile Loading commit data...
align.c Loading commit data...
bisonerrors Loading commit data...
bits.c Loading commit data...
builtin.c Loading commit data...
closure.c Loading commit data...
const.c Loading commit data...
cplx.c Loading commit data...
dcl.c Loading commit data...
doc.go Loading commit data...
esc.c Loading commit data...
export.c Loading commit data...
fmt.c Loading commit data...
gen.c Loading commit data...
go.errors Loading commit data...
go.h Loading commit data...
go.y Loading commit data...
init.c Loading commit data...
inl.c Loading commit data...
lex.c Loading commit data...
md5.c Loading commit data...
md5.h Loading commit data...
mkbuiltin Loading commit data...
mkbuiltin1.c Loading commit data...
mkopnames Loading commit data...
mparith1.c Loading commit data...
mparith2.c Loading commit data...
mparith3.c Loading commit data...
obj.c Loading commit data...
order.c Loading commit data...
pgen.c Loading commit data...
range.c Loading commit data...
reflect.c Loading commit data...
runtime.go Loading commit data...
select.c Loading commit data...
sinit.c Loading commit data...
subr.c Loading commit data...
swt.c Loading commit data...
typecheck.c Loading commit data...
unsafe.c Loading commit data...
unsafe.go Loading commit data...
walk.c Loading commit data...
y.tab.c Loading commit data...
y.tab.h Loading commit data...
yerr.h Loading commit data...