1. 13 Sep, 2017 1 commit
  2. 12 Sep, 2017 12 commits
    • Ilya Tocar's avatar
      unicode: speed-up is16/is32 · bc8bb5b2
      Ilya Tocar authored
      Avoid division in common case. There are 5438 ranges in unicode/tables.go
      4110 of them have stride 1.
      Stride 1 case got significantly faster. Other stride is a bit slower.
      Measured by
      
      import (
      	"testing"
      	"unicode"
      )
      
      func BenchmarkDiv1(b *testing.B) {
      	rtb := &unicode.RangeTable{
      		R16: []unicode.Range16{
      			{0xa800, 0xdfff, 1}, // or 3
      		},
      	}
      	for i := 0; i < b.N; i++ {
      		unicode.Is(rtb, rune(0xc700))
      	}
      }
      
      Div1-6  15.6ns ± 1%   9.9ns ± 1%  -36.54%  (p=0.000 n=10+10)
      Div3-6  15.5ns ± 1%  16.1ns ± 1%   +3.67%  (p=0.000 n=10+10)
      
      Helps a bit with xml parsing from issue #21823
      
      XMLsax-6   30.9s ± 0%   29.6s ± 0%  -4.15%  (p=0.000 n=10+9)
      
      Change-Id: Ibac1a91d7b9474d0c134b0add83e56caa62daa20
      Reviewed-on: https://go-review.googlesource.com/63390
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      bc8bb5b2
    • Ilya Tocar's avatar
      unicode/utf8: make FullRune inlinable · 6237ab2c
      Ilya Tocar authored
      This has same readability and allows to inline FullRune for massive
      performance gain:
      
      FullASCIIRune-6                      4.36ns ± 0%  1.25ns ± 0%  -71.33%  (p=0.000 n=8+10)
      FullJapaneseRune-6                   4.70ns ± 0%  1.42ns ± 1%  -69.68%  (p=0.000 n=9+10)
      
      Change-Id: I95edd6292417a28aac244e40afb713596a087d93
      Reviewed-on: https://go-review.googlesource.com/63332
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDaniel Martí <mvdan@mvdan.cc>
      6237ab2c
    • Daniel Martí's avatar
      cmd/compile: remove redundant switch label · 6d33df1d
      Daniel Martí authored
      This label was added automatically by grind to remove gotos. As of
      today, it's completely useless, as none of its uses need a label to
      begin with.
      
      While at it, remove all the redundant breaks too. Leave those that are
      the single statement in a case clause body, as that's the style used
      throughout std and cmd to clarify when cases are empty.
      
      Change-Id: I3e20068b66b759614e903beab1cc9b2709b31063
      Reviewed-on: https://go-review.googlesource.com/62950
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      6d33df1d
    • tbunyk's avatar
      encoding/json: update documentation for MarshalIndent · b86fae04
      tbunyk authored
      Make arguments semantics clear without the need to look for
      json.Indent documentation.
      
      Change-Id: If9adfe9f477a30d426ae83790b0f2578c0a809b7
      Reviewed-on: https://go-review.googlesource.com/61670
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      b86fae04
    • Ilya Tocar's avatar
      crypto: simplify amd64 asm for sha{1,256,512} a bit · 80b2ae58
      Ilya Tocar authored
      Use constants directly, instead of loading address to e. g. AX
      and using (AX). Shouldn't affect performance, but makes code a bit
      nicer.
      
      Change-Id: Ifa138e54d3d2b2f4ad71e4ef4b9368ea79eb30f4
      Reviewed-on: https://go-review.googlesource.com/62010Reviewed-by: 's avatarAdam Langley <agl@golang.org>
      80b2ae58
    • Tobias Klauser's avatar
      doc: unify colons and spacing in diagnostics guide · 1a706bbf
      Tobias Klauser authored
      Unify colons (outside of <strong></strong>) and add a missing space in
      the list of groups of diagnostics solutions.
      
      Change-Id: Icbcd94427d4905dd88c4ea82aaa5dbf064c00990
      Reviewed-on: https://go-review.googlesource.com/63111Reviewed-by: 's avatarJBD <jbd@google.com>
      1a706bbf
    • Aliaksandr Valialkin's avatar
      runtime: optimize siftupTimer and siftdownTimer a bit · 6a7c63a0
      Aliaksandr Valialkin authored
      Write the moving timer only once, since it is overwritten
      by swapped timers on all the iterations except the last one.
      
      Additionally, explicitly pass timers heap into siftupTimer
      and siftdownTimer in order to make the code more clear.
      
      Relevant benchmark results on linux/amd64:
      
      Stop                      700µs ± 7%   608µs ± 1%  -13.13%  (p=0.000 n=10+10)
      Stop-2                    440µs ± 4%   376µs ± 4%  -14.48%  (p=0.000 n=10+10)
      Stop-4                    339µs ± 2%   330µs ± 3%   -2.66%  (p=0.015 n=10+10)
      SimultaneousAfterFunc     702µs ± 9%   709µs ± 1%     ~     (p=0.436 n=9+9)
      SimultaneousAfterFunc-2   573µs ± 2%   546µs ± 2%   -4.71%  (p=0.000 n=10+10)
      SimultaneousAfterFunc-4   387µs ± 1%   368µs ± 1%   -4.89%  (p=0.000 n=8+10)
      StartStop                 268µs ± 0%   270µs ± 0%   +0.91%  (p=0.000 n=9+9)
      StartStop-2               155µs ± 6%   145µs ± 6%   -6.70%  (p=0.000 n=10+10)
      StartStop-4               125µs ± 1%   124µs ± 1%     ~     (p=0.065 n=10+9)
      
      Change-Id: I3685835b5e3e82844e2e5e73ee03a1e22100bf0e
      Reviewed-on: https://go-review.googlesource.com/63110Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6a7c63a0
    • Michael Matloob's avatar
      runtime: in cpuProfile.addExtra, set p.lostExtra to 0 after flush · 96b1eff0
      Michael Matloob authored
      After the number of lost extra events are written to the the cpuprof log,
      the number of lost extra events should be set to zero, or else, the next
      time time addExtra is logged, lostExtra will be overcounted. This change
      resets lostExtra after its value is written to the log.
      
      Fixes #21836
      
      Change-Id: I8a6ac9c61e579e7a5ca7bdb0f3463f8ae8b9f863
      Reviewed-on: https://go-review.googlesource.com/63270Reviewed-by: 's avatarAustin Clements <austin@google.com>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      96b1eff0
    • Aliaksandr Valialkin's avatar
      runtime: improve timers scalability on multi-CPU systems · 76f4fd8a
      Aliaksandr Valialkin authored
      Use per-P timers, so each P may work with its own timers.
      
      This CL improves performance on multi-CPU systems
      in the following cases:
      
      - When serving high number of concurrent connections
        with read/write deadlines set (for instance, highly loaded
        net/http server).
      
      - When using high number of concurrent timers. These timers
        may be implicitly created via context.WithDeadline
        or context.WithTimeout.
      
      Production servers should usually set timeout on connections
      and external requests in order to prevent from resource leakage.
      See https://blog.cloudflare.com/the-complete-guide-to-golang-net-http-timeouts/
      
      Below are relevant benchmark results for various GOMAXPROCS values
      on linux/amd64:
      
      context package:
      
      name                                     old time/op  new time/op  delta
      WithTimeout/concurrency=40      4.92µs ± 0%  5.17µs ± 1%  +5.07%  (p=0.000 n=9+9)
      WithTimeout/concurrency=4000    6.03µs ± 1%  6.49µs ± 0%  +7.63%  (p=0.000 n=8+10)
      WithTimeout/concurrency=400000  8.58µs ± 7%  9.02µs ± 4%  +5.02%  (p=0.019 n=10+10)
      
      name                                     old time/op  new time/op  delta
      WithTimeout/concurrency=40-2      3.70µs ± 1%  2.78µs ± 4%  -24.90%  (p=0.000 n=8+9)
      WithTimeout/concurrency=4000-2    4.49µs ± 4%  3.67µs ± 5%  -18.26%  (p=0.000 n=10+10)
      WithTimeout/concurrency=400000-2  6.16µs ±10%  5.15µs ±13%  -16.30%  (p=0.000 n=10+10)
      
      name                                     old time/op  new time/op  delta
      WithTimeout/concurrency=40-4      3.58µs ± 1%  2.64µs ± 2%  -26.13%  (p=0.000 n=9+10)
      WithTimeout/concurrency=4000-4    4.17µs ± 0%  3.32µs ± 1%  -20.36%  (p=0.000 n=10+10)
      WithTimeout/concurrency=400000-4  5.57µs ± 9%  4.83µs ±10%  -13.27%  (p=0.001 n=10+10)
      
      time package:
      
      name                     old time/op  new time/op  delta
      AfterFunc                6.15ms ± 3%  6.07ms ± 2%     ~     (p=0.133 n=10+9)
      AfterFunc-2              3.43ms ± 1%  3.56ms ± 1%   +3.91%  (p=0.000 n=10+9)
      AfterFunc-4              5.04ms ± 2%  2.36ms ± 0%  -53.20%  (p=0.000 n=10+9)
      After                    6.54ms ± 2%  6.49ms ± 3%     ~     (p=0.393 n=10+10)
      After-2                  3.68ms ± 1%  3.87ms ± 0%   +5.14%  (p=0.000 n=9+9)
      After-4                  6.66ms ± 1%  2.87ms ± 1%  -56.89%  (p=0.000 n=10+10)
      Stop                      698µs ± 2%   689µs ± 1%   -1.26%  (p=0.011 n=10+10)
      Stop-2                    729µs ± 2%   434µs ± 3%  -40.49%  (p=0.000 n=10+10)
      Stop-4                    837µs ± 3%   333µs ± 2%  -60.20%  (p=0.000 n=10+10)
      SimultaneousAfterFunc     694µs ± 1%   692µs ± 7%     ~     (p=0.481 n=10+10)
      SimultaneousAfterFunc-2   714µs ± 3%   569µs ± 2%  -20.33%  (p=0.000 n=10+10)
      SimultaneousAfterFunc-4   782µs ± 2%   386µs ± 2%  -50.67%  (p=0.000 n=10+10)
      StartStop                 267µs ± 3%   274µs ± 0%   +2.64%  (p=0.000 n=8+9)
      StartStop-2               238µs ± 2%   140µs ± 3%  -40.95%  (p=0.000 n=10+8)
      StartStop-4               320µs ± 1%   125µs ± 1%  -61.02%  (p=0.000 n=9+9)
      Reset                    75.0µs ± 1%  77.5µs ± 2%   +3.38%  (p=0.000 n=10+10)
      Reset-2                   150µs ± 2%    40µs ± 5%  -73.09%  (p=0.000 n=10+9)
      Reset-4                   226µs ± 1%    33µs ± 1%  -85.42%  (p=0.000 n=10+10)
      Sleep                     857µs ± 6%   878µs ± 9%     ~     (p=0.079 n=10+9)
      Sleep-2                   617µs ± 4%   585µs ± 2%   -5.21%  (p=0.000 n=10+10)
      Sleep-4                   689µs ± 3%   465µs ± 4%  -32.53%  (p=0.000 n=10+10)
      Ticker                   55.9ms ± 2%  55.9ms ± 2%     ~     (p=0.971 n=10+10)
      Ticker-2                 28.7ms ± 2%  28.1ms ± 1%   -2.06%  (p=0.000 n=10+10)
      Ticker-4                 14.6ms ± 0%  13.6ms ± 1%   -6.80%  (p=0.000 n=9+10)
      
      Fixes #15133
      
      Change-Id: I6f4b09d2db8c5bec93146db6501b44dbfe5c0ac4
      Reviewed-on: https://go-review.googlesource.com/34784Reviewed-by: 's avatarAustin Clements <austin@google.com>
      76f4fd8a
    • Daniel Martí's avatar
      go/*: use sort.Slice to simplify some code · 7377d0c7
      Daniel Martí authored
      Skip the ones that have multiple uses for now. Also had to rename the
      importComment variable as it shadowed the top-level func by the same
      name.
      
      Change-Id: I796285aa7b4fdf2c39e652666390427d37b063ee
      Reviewed-on: https://go-review.googlesource.com/63150
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      7377d0c7
    • Daniel Martí's avatar
      all: remove strings.Contains check around Replace · eb2dc3d3
      Daniel Martí authored
      It doesn't change the outcome. It might have been useful at some point
      to avoid Replace from doing work or allocating. However, nowadays the
      func returns early without doing any work if Count returns 0.
      
      Change-Id: Id69dc74042a6e39672b405016484db8b50f43d58
      Reviewed-on: https://go-review.googlesource.com/62991
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDave Cheney <dave@cheney.net>
      eb2dc3d3
    • Martin Möhrmann's avatar
      cmd/compile: improve single blank variable handling in walkrange · 137e4a6c
      Martin Möhrmann authored
      Refactor walkrange to treat "for _ = range a" as "for range a".
      
      This avoids generating some later discarded nodes in the compiler.
      
      Passes toolstash -cmp.
      
      Change-Id: Ifb2e1ca3b8519cbb67e8ad5aad514af9d18f1ec4
      Reviewed-on: https://go-review.googlesource.com/61017
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      137e4a6c
  3. 11 Sep, 2017 22 commits
    • Luan Santos's avatar
      net/http: allow reuse of http.Request objects · 78c4dc37
      Luan Santos authored
      Calling response.Body.Close() early would generarate a race before this.
      Since closing would return early before the main code path had a chance
      to reset the request canceler. Having a non-nil request canceler at the
      start of the next request would cause a "request canceled" error.
      
      Here we simply wait for the eofc channel to be closed before returning
      from earlyCloseFn, ensuring that the caller won't be re-using that
      Request object before we have a chance to reset the request canceler to
      nil.
      
      Fixes #21838
      
      Change-Id: I641815526c6ac63d1816c9b6ad49d73715f7a5cb
      Reviewed-on: https://go-review.googlesource.com/62891
      Run-TryBot: Tom Bergan <tombergan@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarTom Bergan <tombergan@google.com>
      78c4dc37
    • Bryan C. Mills's avatar
      expvar: make (*Map).Init clear existing keys · cf872fae
      Bryan C. Mills authored
      fixes #21619
      
      Change-Id: I5bb513dfc8cac875b06a262eec40b5863ae23a4c
      Reviewed-on: https://go-review.googlesource.com/62370Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      cf872fae
    • Lynn Boger's avatar
      cmd/link: enable -buildmode=plugin for ppc64le · e9cbabb3
      Lynn Boger authored
      This enables support for the buildmode plugin on
      ppc64le.
      
      Fixes #20756
      
      Change-Id: I83241ff63f9b5c366fe0496cf46a3f67d75d08ac
      Reviewed-on: https://go-review.googlesource.com/55850
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
      e9cbabb3
    • Ilya Tocar's avatar
      crypto/sha1: speed up sha1 for very small blocks · dc3b8a19
      Ilya Tocar authored
      For very small blocks significant time is spent in checkSum function,
      adding necessary padding. Instead of writing it byte by byte, copy
      encoding/binary PutUint functions, which are compiled into single mov.
      
      name            old time/op    new time/op    delta
      Hash8Bytes-6       344ns ± 0%     310ns ± 0%   -9.78%  (p=0.000 n=10+9)
      Hash320Bytes-6    1.28µs ± 0%    1.25µs ± 0%   -2.58%  (p=0.000 n=10+10)
      Hash1K-6          2.51µs ± 0%    2.47µs ± 0%   -1.67%  (p=0.000 n=10+10)
      Hash8K-6          15.8µs ± 0%    15.7µs ± 1%   -0.21%  (p=0.023 n=10+10)
      
      name            old speed      new speed      delta
      Hash8Bytes-6    23.2MB/s ± 0%  25.7MB/s ± 0%  +10.77%  (p=0.000 n=10+9)
      Hash320Bytes-6   249MB/s ± 0%   256MB/s ± 0%   +2.65%  (p=0.000 n=10+10)
      Hash1K-6         408MB/s ± 0%   414MB/s ± 0%   +1.70%  (p=0.000 n=10+10)
      
      Change-Id: I3975ee929465c7dd137d0ca757ad3792a004e1a3
      Reviewed-on: https://go-review.googlesource.com/54391
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarGiovanni Bajo <rasky@develer.com>
      Reviewed-by: 's avatarFilippo Valsorda <hi@filippo.io>
      dc3b8a19
    • Daniel Martí's avatar
      cmd/compile: simplify a few early var declarations · 27a70ea5
      Daniel Martí authored
      These were likely written in C or added by an automated tool. Either
      way, they're unnecessary now. Clean up the code.
      
      Change-Id: I56de2c7bb60ebab8c500803a8b6586bdf4bf75c7
      Reviewed-on: https://go-review.googlesource.com/62951
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      Reviewed-by: 's avatarDave Cheney <dave@cheney.net>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      27a70ea5
    • Lynn Boger's avatar
      cmd/compile, math/bits: add rotate rules to PPC64.rules · fa3fe2e3
      Lynn Boger authored
      This adds rules to match the code in math/bits RotateLeft,
      RotateLeft32, and RotateLef64 to allow them to be inlined.
      
      The rules are complicated because the code in these function
      use different types, and the non-const version of these
      shifts generate Mask and Carry instructions that become
      subexpressions during the match process.
      
      Also adds a testcase to asm_test.go.
      
      Improvement in math/bits:
      
      BenchmarkRotateLeft-16       1.57     1.32      -15.92%
      BenchmarkRotateLeft32-16     1.60     1.37      -14.37%
      BenchmarkRotateLeft64-16     1.57     1.32      -15.92%
      
      Updates #21390
      
      Change-Id: Ib6f17669ecc9cab54f18d690be27e2225ca654a4
      Reviewed-on: https://go-review.googlesource.com/59932
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      fa3fe2e3
    • Joe Tsai's avatar
      cmd/go: fix regexp · 4768408e
      Joe Tsai authored
      The regular expression "A-za-z" is most likely a typo and
      the intent seems to be "A-Za-z" instead.
      
      Using "A-z" matches certain characters like: [\]^_`
      
      Updates #10010
      
      Change-Id: If2d064c56ef613f2e46285d8d4e5998e83aed43a
      Reviewed-on: https://go-review.googlesource.com/62910Reviewed-by: 's avatarMatt Layher <mdlayher@gmail.com>
      Run-TryBot: Matt Layher <mdlayher@gmail.com>
      4768408e
    • Adam Langley's avatar
      crypto/elliptic: fix incomplete addition used in CombinedMult. · 2d69e9e2
      Adam Langley authored
      The optimised P-256 includes a CombinedMult function, which doesn't do
      dual-scalar multiplication, but does avoid an affine conversion for
      ECDSA verification.
      
      However, it currently uses an assembly point addition function that
      doesn't handle exceptional cases.
      
      Fixes #20215.
      
      Change-Id: I4ba2ca1a546d883364a9bb6bf0bdbc7f7b44c94a
      Reviewed-on: https://go-review.googlesource.com/42611
      Run-TryBot: Adam Langley <agl@golang.org>
      Reviewed-by: 's avatarAdam Langley <agl@golang.org>
      2d69e9e2
    • Alan Donovan's avatar
      cmd/vet: print: permit '#' flag in %e, %f, and %g · 7159ab48
      Alan Donovan authored
      + Test
      
      Change-Id: I7b42ff70f26a58e1cf58cbbc53d02a65623456ae
      Reviewed-on: https://go-review.googlesource.com/62371
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      7159ab48
    • Lynn Boger's avatar
      cmd/compile: request r12 for indirect calls on ppc64le · b74b43de
      Lynn Boger authored
      On ppc64le, functions compiled with -shared expect r12 to
      hold the function's address for indirect calls. Previously
      this was enforced by generating a move instruction if the
      address wasn't already in r12. This change avoids that extra
      move by requesting r12 in the CALL ops that do indirect calls.
      
      As a result of adding support for plugins on ppc64le, it was
      discovered that there would be more cases where this extra
      move was needed, so this seemed like a better solution.
      
      Updates #20756
      
      Change-Id: I6770885a46990f78c6d2902a715dcdaa822192a1
      Reviewed-on: https://go-review.googlesource.com/62890
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      b74b43de
    • Michael Munday's avatar
      crypto/elliptic: temporarily disable s390x assembly · 81835302
      Michael Munday authored
      This disables the s390x assembly. It will be re-enabled when #20215
      is resolved on s390x.
      
      Change-Id: I789eca2dd478004956107359fae98ed012f04abb
      Reviewed-on: https://go-review.googlesource.com/62292
      Run-TryBot: Michael Munday <mike.munday@ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      81835302
    • Andrew Bonventre's avatar
      doc: hide content blocked by GFW when served in CN · 98603e7a
      Andrew Bonventre authored
      Change-Id: Ia3d0fa0517d96f0672d3c5ce7e7b7bb8bd0ce093
      Reviewed-on: https://go-review.googlesource.com/60070Reviewed-by: 's avatarChris Broadfoot <cbro@golang.org>
      98603e7a
    • Ben Shi's avatar
      cmd/internal/obj/arm: support more ARM VFP instructions · f727fa79
      Ben Shi authored
      Add support of more ARM VFP instructions in the assembler.
      They were introduced in ARM VFPv4.
      
      "FMULAF/FMULAD   Fm, Fn, Fd": Fd = Fd + Fn*Fm
      "FNMULAF/FNMULAD Fm, Fn, Fd": Fd = -(Fd + Fn*Fm)
      "FMULSF/FMULSD   Fm, Fn, Fd": Fd = Fd - Fn*Fm
      "FNMULSF/FNMULSD Fm, Fn, Fd": Fd = -(Fd - Fn*Fm)
      
      The multiplication results are not rounded.
      
      Change-Id: Id9cc52fd8e1b9a708103cd1e514c85a9e1cb3f47
      Reviewed-on: https://go-review.googlesource.com/62550Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f727fa79
    • Ben Shi's avatar
      cmd/compile: optimize ARM code with NMULF/NMULD · 2899c3e8
      Ben Shi authored
      NMULF and NMULD are efficient FP instructions, and the go compiler can
      use them to generate better code.
      
      The benchmark tests of my patch did not show general change, but big
      improvement in special cases.
      
      1.A special test case improved 12.6%.
      https://github.com/benshi001/ugo1/blob/master/fpmul_test.go
      name                     old time/op    new time/op    delta
      FPMul-4                     398µs ± 1%     348µs ± 1%  -12.64%  (p=0.000 n=40+40)
      
      2. the compilecmp test showed little change.
      name        old time/op       new time/op       delta
      Template          2.30s ± 1%        2.31s ± 1%    ~     (p=0.754 n=17+19)
      Unicode           1.31s ± 3%        1.32s ± 5%    ~     (p=0.265 n=20+20)
      GoTypes           7.73s ± 2%        7.73s ± 1%    ~     (p=0.925 n=20+20)
      Compiler          37.0s ± 1%        37.3s ± 2%  +0.79%  (p=0.002 n=19+20)
      SSA               83.8s ± 4%        83.5s ± 2%    ~     (p=0.964 n=20+17)
      Flate             1.43s ± 2%        1.44s ± 1%    ~     (p=0.602 n=20+20)
      GoParser          1.82s ± 2%        1.81s ± 2%    ~     (p=0.141 n=19+20)
      Reflect           5.08s ± 2%        5.08s ± 3%    ~     (p=0.835 n=20+19)
      Tar               2.36s ± 1%        2.35s ± 1%    ~     (p=0.195 n=18+17)
      XML               2.57s ± 2%        2.56s ± 1%    ~     (p=0.283 n=20+17)
      [Geo mean]        4.74s             4.75s       +0.05%
      
      name        old user-time/op  new user-time/op  delta
      Template          2.75s ± 2%        2.75s ± 0%    ~     (p=0.620 n=20+15)
      Unicode           1.59s ± 4%        1.60s ± 4%    ~     (p=0.479 n=20+19)
      GoTypes           9.48s ± 1%        9.47s ± 1%    ~     (p=0.743 n=20+20)
      Compiler          45.7s ± 1%        45.7s ± 1%    ~     (p=0.482 n=19+20)
      SSA                109s ± 1%         109s ± 2%    ~     (p=0.800 n=18+20)
      Flate             1.67s ± 3%        1.67s ± 3%    ~     (p=0.598 n=19+18)
      GoParser          2.15s ± 4%        2.13s ± 3%    ~     (p=0.153 n=20+20)
      Reflect           5.95s ± 2%        5.95s ± 2%    ~     (p=0.961 n=19+20)
      Tar               2.93s ± 2%        2.92s ± 3%    ~     (p=0.242 n=20+19)
      XML               3.02s ± 3%        3.04s ± 3%    ~     (p=0.233 n=19+18)
      [Geo mean]        5.74s             5.74s       -0.04%
      
      name        old text-bytes    new text-bytes    delta
      HelloSize         588kB ± 0%        588kB ± 0%    ~     (all equal)
      
      name        old data-bytes    new data-bytes    delta
      HelloSize        5.46kB ± 0%       5.46kB ± 0%    ~     (all equal)
      
      name        old bss-bytes     new bss-bytes     delta
      HelloSize        72.9kB ± 0%       72.9kB ± 0%    ~     (all equal)
      
      name        old exe-bytes     new exe-bytes     delta
      HelloSize        1.03MB ± 0%       1.03MB ± 0%    ~     (all equal)
      
      3. The go1 benchmark showed little change in total.
      name                     old time/op    new time/op    delta
      BinaryTree17-4              41.8s ± 1%     41.8s ± 1%    ~     (p=0.388 n=40+39)
      Fannkuch11-4                24.1s ± 1%     24.1s ± 1%    ~     (p=0.077 n=40+40)
      FmtFprintfEmpty-4           834ns ± 1%     831ns ± 1%  -0.31%  (p=0.002 n=40+37)
      FmtFprintfString-4         1.34µs ± 1%    1.34µs ± 0%    ~     (p=0.387 n=40+40)
      FmtFprintfInt-4            1.44µs ± 1%    1.44µs ± 1%    ~     (p=0.421 n=40+40)
      FmtFprintfIntInt-4         2.09µs ± 0%    2.09µs ± 1%    ~     (p=0.589 n=40+39)
      FmtFprintfPrefixedInt-4    2.32µs ± 1%    2.33µs ± 1%  +0.15%  (p=0.001 n=40+40)
      FmtFprintfFloat-4          4.51µs ± 0%    4.44µs ± 1%  -1.50%  (p=0.000 n=40+40)
      FmtManyArgs-4              7.94µs ± 0%    7.97µs ± 0%  +0.36%  (p=0.001 n=32+40)
      GobDecode-4                 104ms ± 1%     102ms ± 2%  -1.27%  (p=0.000 n=39+37)
      GobEncode-4                90.5ms ± 1%    90.9ms ± 2%  +0.40%  (p=0.006 n=37+40)
      Gzip-4                      4.10s ± 2%     4.08s ± 1%  -0.30%  (p=0.004 n=40+40)
      Gunzip-4                    603ms ± 0%     602ms ± 1%    ~     (p=0.303 n=37+40)
      HTTPClientServer-4          672µs ± 3%     658µs ± 2%  -2.08%  (p=0.000 n=39+37)
      JSONEncode-4                238ms ± 1%     239ms ± 0%  +0.26%  (p=0.001 n=40+25)
      JSONDecode-4                884ms ± 1%     885ms ± 1%  +0.16%  (p=0.012 n=40+40)
      Mandelbrot200-4            49.3ms ± 0%    49.3ms ± 0%    ~     (p=0.588 n=40+38)
      GoParse-4                  46.3ms ± 1%    46.4ms ± 2%    ~     (p=0.487 n=40+40)
      RegexpMatchEasy0_32-4      1.28µs ± 1%    1.28µs ± 0%  +0.12%  (p=0.003 n=40+40)
      RegexpMatchEasy0_1K-4      7.78µs ± 5%    7.78µs ± 4%    ~     (p=0.825 n=40+40)
      RegexpMatchEasy1_32-4      1.29µs ± 1%    1.29µs ± 0%    ~     (p=0.659 n=40+40)
      RegexpMatchEasy1_1K-4      10.3µs ± 3%    10.4µs ± 2%    ~     (p=0.266 n=40+40)
      RegexpMatchMedium_32-4     2.05µs ± 1%    2.05µs ± 0%  -0.18%  (p=0.002 n=40+28)
      RegexpMatchMedium_1K-4      533µs ± 1%     534µs ± 1%    ~     (p=0.397 n=37+40)
      RegexpMatchHard_32-4       28.9µs ± 1%    28.9µs ± 1%  -0.22%  (p=0.002 n=40+40)
      RegexpMatchHard_1K-4        868µs ± 1%     870µs ± 1%  +0.21%  (p=0.015 n=40+40)
      Revcomp-4                  67.3ms ± 1%    67.2ms ± 2%    ~     (p=0.262 n=38+39)
      Template-4                  1.07s ± 1%     1.07s ± 1%    ~     (p=0.276 n=40+40)
      TimeParse-4                7.16µs ± 1%    7.16µs ± 1%    ~     (p=0.610 n=39+40)
      TimeFormat-4               13.3µs ± 1%    13.3µs ± 1%    ~     (p=0.617 n=38+40)
      [Geo mean]                  720µs          719µs       -0.13%
      
      name                     old speed      new speed      delta
      GobDecode-4              7.39MB/s ± 1%  7.49MB/s ± 2%  +1.25%  (p=0.000 n=39+38)
      GobEncode-4              8.48MB/s ± 1%  8.45MB/s ± 2%  -0.40%  (p=0.005 n=37+40)
      Gzip-4                   4.74MB/s ± 2%  4.75MB/s ± 1%  +0.30%  (p=0.018 n=40+40)
      Gunzip-4                 32.2MB/s ± 0%  32.2MB/s ± 1%    ~     (p=0.272 n=36+40)
      JSONEncode-4             8.15MB/s ± 1%  8.13MB/s ± 0%  -0.26%  (p=0.003 n=40+25)
      JSONDecode-4             2.19MB/s ± 1%  2.19MB/s ± 1%    ~     (p=0.676 n=40+40)
      GoParse-4                1.25MB/s ± 2%  1.25MB/s ± 2%    ~     (p=0.823 n=40+40)
      RegexpMatchEasy0_32-4    25.1MB/s ± 1%  25.1MB/s ± 0%  -0.12%  (p=0.006 n=40+40)
      RegexpMatchEasy0_1K-4     132MB/s ± 5%   132MB/s ± 5%    ~     (p=0.821 n=40+40)
      RegexpMatchEasy1_32-4    24.7MB/s ± 1%  24.7MB/s ± 0%    ~     (p=0.630 n=40+40)
      RegexpMatchEasy1_1K-4    99.1MB/s ± 3%  98.8MB/s ± 2%    ~     (p=0.268 n=40+40)
      RegexpMatchMedium_32-4    487kB/s ± 2%   490kB/s ± 0%  +0.51%  (p=0.001 n=40+40)
      RegexpMatchMedium_1K-4   1.92MB/s ± 1%  1.92MB/s ± 1%    ~     (p=0.208 n=39+40)
      RegexpMatchHard_32-4     1.11MB/s ± 1%  1.11MB/s ± 0%  +0.36%  (p=0.000 n=40+33)
      RegexpMatchHard_1K-4     1.18MB/s ± 1%  1.18MB/s ± 1%    ~     (p=0.207 n=40+37)
      Revcomp-4                37.8MB/s ± 1%  37.8MB/s ± 2%    ~     (p=0.276 n=38+39)
      Template-4               1.82MB/s ± 1%  1.81MB/s ± 1%    ~     (p=0.122 n=38+40)
      [Geo mean]               6.81MB/s       6.81MB/s       +0.06%
      
      fixes #19843
      
      Change-Id: Ief3a0c2b15f59d40c7b40f2784eeb71196685b59
      Reviewed-on: https://go-review.googlesource.com/61150Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      2899c3e8
    • Alex Brainman's avatar
      misc/cgo/testcshared: actually run test executable on android · 538b4bab
      Alex Brainman authored
      CL 62593 broken TestExportedSymbols and TestUnexportedSymbols
      because it started executing android test binary on host.
      Make them run on android.
      
      Hopefully fixes android build.
      
      Change-Id: Ic0bb9f0cbbefca23828574282caa33a03ef72431
      Reviewed-on: https://go-review.googlesource.com/62830
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarElias Naur <elias.naur@gmail.com>
      538b4bab
    • Jaana Burcu Dogan's avatar
      doc: fix typo in the diagnostics guide · e9163928
      Jaana Burcu Dogan authored
      Change-Id: Ib1b93e55788168b574badeb84d0e6c4f3795055e
      Reviewed-on: https://go-review.googlesource.com/62510Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      e9163928
    • Alex Brainman's avatar
      misc/cgo/testcshared: simlpify cshared_test.go · 40a7de7b
      Alex Brainman authored
      Change-Id: Ib35bb7fc9c5b4ccc9b8e1bd16443e0b307be9406
      Reviewed-on: https://go-review.googlesource.com/62593Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      40a7de7b
    • Anthony Sottile's avatar
      cmd/cgo: treat simple C typedefs as go aliases · 57fa1c7c
      Anthony Sottile authored
      Fixes #21809
      
      Change-Id: Ic43077c6bea3c7cdc9611e74abf07b6deab70433
      Reviewed-on: https://go-review.googlesource.com/62670
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      57fa1c7c
    • Ian Lance Taylor's avatar
      test: add test case that gccgo crashed on · c6d019aa
      Ian Lance Taylor authored
      Change-Id: I4d5d40e1ed3f58b2cdecd6248cb25c8ae9a1b9a1
      Reviewed-on: https://go-review.googlesource.com/62531Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
      c6d019aa
    • Martin Möhrmann's avatar
      cmd/compile: preserve escape information for map literals · 09812610
      Martin Möhrmann authored
      While some map literals were marked non-escaping that information
      was lost when creating the corresponding OMAKE node which made map
      literals always heap allocated.
      
      Copying the escape information to the corresponding OMAKE node allows
      stack allocation of hmap and a map bucket for non escaping map literals.
      
      Fixes #21830
      
      Change-Id: Ife0b020fffbc513f1ac009352f2ecb110d6889c9
      Reviewed-on: https://go-review.googlesource.com/62790
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      Reviewed-by: 's avatarDaniel Martí <mvdan@mvdan.cc>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      09812610
    • Martin Möhrmann's avatar
      internal/cpu: add support for x86 FMA cpu feature detection · 1a3230f2
      Martin Möhrmann authored
      Change-Id: I88ea39de01b07e6afa1c187c0df6a258da4aa8e4
      Reviewed-on: https://go-review.googlesource.com/62650
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      1a3230f2
    • Hiroshi Ioka's avatar
      cmd/link: don't generate runtime.text twice for buildmode=plugin on darwin · f797e485
      Hiroshi Ioka authored
      https://golang.org/cl/29394 changed to include runtime.text and
      runtime.etext in ctxt.Textp as a work around.
      But it seems that the CL forgot to change genasmsym.
      As a result, we are generating runtime.text and runtime.etext twice.
      
      Change-Id: If7f8faf496c1c489ffa4804da712f91a3d3f4be4
      Reviewed-on: https://go-review.googlesource.com/62810Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f797e485
  4. 10 Sep, 2017 5 commits