• Russ Cox's avatar
    math/big: write t*10 to multiply t by 10 · ab441477
    Russ Cox authored
    The compiler has caught up.
    In fact the compiler is ahead; it knows about a magic multiply-by-5 instruction:
    
    	// compute '0' + byte(r - t*10) in AX
    	MOVQ	t, AX
    	LEAQ	(AX)(AX*4), AX
    	SHLQ	$1, AX
    	MOVQ	r, CX
    	SUBQ	AX, CX
    	LEAL	48(CX), AX
    
    For comparison, the shifty version compiles to:
    
    	// compute '0' + byte(r - t*10) in AX
    	MOVQ	t, AX
    	MOVQ	AX, CX
    	SHLQ	$3, AX
    	MOVQ	r, DX
    	SUBQ	AX, DX
    	SUBQ	CX, DX
    	SUBQ	CX, DX
    	LEAL	48(DX), AX
    
    Fixes #2671.
    
    Change-Id: Ifbf23dbfeb19c0bb020fa44eb2f025943969fb6b
    Reviewed-on: https://go-review.googlesource.com/23372
    Run-TryBot: Russ Cox <rsc@golang.org>
    Reviewed-by: 's avatarAndrew Gerrand <adg@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    ab441477
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...