• Matthew Dempsky's avatar
    runtime: simplify cpuprof hash calculation · 481ce36e
    Matthew Dempsky authored
    "x*41" computes the same value as "x*31 + x*7 + x*3" and (when
    compiled by gc) requires just one multiply instruction instead of
    three.
    
    Alternatively, the expression could be written as "(x<<2+x)<<3 + x" to
    use shifts instead of multiplies (which is how GCC optimizes "x*41").
    But gc currently emits suboptimal instructions for this expression
    anyway (e.g., separate SHL+ADD instructions rather than LEA on
    386/amd64). Also, if such an optimization was worthwhile, it would
    seem better to implement it as part of gc's strength reduction logic.
    
    Change-Id: I7156b793229d723bbc9a52aa9ed6111291335277
    Reviewed-on: https://go-review.googlesource.com/1830Reviewed-by: 's avatarMinux Ma <minux@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    481ce36e
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal/syscall Loading commit data...
io Loading commit data...
lib9 Loading commit data...
libbio Loading commit data...
liblink Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...
sudo.bash Loading commit data...