Skip to content

Commit 1e6b12a

Browse files
wgobradfitz
authored andcommitted
math/big: uses SIMD for some math big functions on s390x
The following benchmarks are improved by the amounts shown (Others unaffected beyond the level of noise.) Also adds a test to confirm non-SIMD implementation still correct, even when run on SIMD-capable machine Benchmark old new BenchmarkAddVV/100-18 66148.08 MB/s 117546.19 MB/s 1.8x BenchmarkAddVV/1000-18 70168.27 MB/s 133478.96 MB/s 1.9x BenchmarkAddVV/10000-18 67489.80 MB/s 100010.79 MB/s 1.5x BenchmarkAddVV/100000-18 54329.99 MB/s 69232.45 MB/s 1.3x BenchmarkAddVW/100-18 9929.10 MB/s 14841.31 MB/s 1.5x BenchmarkAddVW/1000-18 10583.31 MB/s 18674.44 MB/s 1.76x BenchmarkAddVW/10000-18 10521.15 MB/s 17484.10 MB/s 1.66x BenchmarkAddVW/100000-18 10616.56 MB/s 18084.27 MB/s 1.7x Change-Id: Ic9234c41a43f6c5e9d0e9377de8b4deeefc428a7 Reviewed-on: https://go-review.googlesource.com/32211 Reviewed-by: Brad Fitzpatrick <[email protected]> Run-TryBot: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent 829aa67 commit 1e6b12a

File tree

3 files changed

+1019
-270
lines changed

3 files changed

+1019
-270
lines changed

src/math/big/arith_decl_s390x.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright 2016 The Go Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
// +build !math_big_pure_go
6+
7+
package big
8+
9+
func addVV_check(z, x, y []Word) (c Word)
10+
func addVV_vec(z, x, y []Word) (c Word)
11+
func addVV_novec(z, x, y []Word) (c Word)
12+
func subVV_check(z, x, y []Word) (c Word)
13+
func subVV_vec(z, x, y []Word) (c Word)
14+
func subVV_novec(z, x, y []Word) (c Word)
15+
func addVW_check(z, x []Word, y Word) (c Word)
16+
func addVW_vec(z, x []Word, y Word) (c Word)
17+
func addVW_novec(z, x []Word, y Word) (c Word)
18+
func subVW_check(z, x []Word, y Word) (c Word)
19+
func subVW_vec(z, x []Word, y Word) (c Word)
20+
func subVW_novec(z, x []Word, y Word) (c Word)
21+
func hasVectorFacility() bool
22+
23+
var hasVX = hasVectorFacility()

0 commit comments

Comments
 (0)