• Keith Randall's avatar
    cmd/compile: inline atomics from runtime/internal/atomic on amd64 · 320ddcf8
    Keith Randall authored
    Inline atomic reads and writes on amd64.  There's no reason
    to pay the overhead of a call for these.
    
    To keep atomic loads from being reordered, we make them
    return a <value,memory> tuple.
    
    Change the meaning of resultInArg0 for tuple-generating ops
    to mean the first part of the result tuple, not the second.
    This means we can always put the store part of the tuple last,
    matching how arguments are laid out.  This requires reordering
    the outputs of add32carry and sub32carry and their descendents
    in various architectures.
    
    benchmark                    old ns/op     new ns/op     delta
    BenchmarkAtomicLoad64-8      2.09          0.26          -87.56%
    BenchmarkAtomicStore64-8     7.54          5.72          -24.14%
    
    TBD (in a different CL): Cas, Or8, ...
    
    Change-Id: I713ea88e7da3026c44ea5bdb56ed094b20bc5207
    Reviewed-on: https://go-review.googlesource.com/27641Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
    320ddcf8
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...
context 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 Loading commit data...
io 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...
vendor/golang_org/x/net 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...
bootstrap.bash Loading commit data...
buildall.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
cmp.bash Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
naclmake.bash 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...