diff options
author | Joe Tsai <joetsai@digital-static.net> | 2016-08-31 20:44:42 +0000 |
---|---|---|
committer | Joe Tsai <thebrokentoaster@gmail.com> | 2016-08-31 21:07:35 +0000 |
commit | 6fb4b15f98bba7ef3966c5edc6b8fe2cc99c6beb (patch) | |
tree | 113c3762033fd7957b36cfc6b876a959ae3e925c /src/runtime/memmove_test.go | |
parent | cc0248aea53b252ec5c0e1c57e32edb102bc36fe (diff) | |
download | go-6fb4b15f98bba7ef3966c5edc6b8fe2cc99c6beb.tar.gz go-6fb4b15f98bba7ef3966c5edc6b8fe2cc99c6beb.zip |
Revert "runtime: improve memmove for amd64"
This reverts commit 3607c5f4f18ad4d423e40996ebf7f46b2f79ce02.
This was causing failures on amd64 machines without AVX.
Fixes #16939
Change-Id: I70080fbb4e7ae791857334f2bffd847d08cb25fa
Reviewed-on: https://go-review.googlesource.com/28274
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/runtime/memmove_test.go')
-rw-r--r--[-rwxr-xr-x] | src/runtime/memmove_test.go | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/src/runtime/memmove_test.go b/src/runtime/memmove_test.go index 080ca28667..2124cb9d49 100755..100644 --- a/src/runtime/memmove_test.go +++ b/src/runtime/memmove_test.go @@ -5,9 +5,7 @@ package runtime_test import ( - "crypto/rand" "fmt" - "internal/race" . "runtime" "testing" ) @@ -84,108 +82,6 @@ func TestMemmoveAlias(t *testing.T) { } } -func TestMemmoveLarge0x180000(t *testing.T) { - if race.Enabled { - t.Skip("skipping large memmove test under race detector") - } - testSize(t, 0x180000) -} - -func TestMemmoveOverlapLarge0x120000(t *testing.T) { - if race.Enabled { - t.Skip("skipping large memmove test under race detector") - } - testOverlap(t, 0x120000) -} - -func testSize(t *testing.T, size int) { - src := make([]byte, size) - dst := make([]byte, size) - _, _ = rand.Read(src) - _, _ = rand.Read(dst) - - ref := make([]byte, size) - copyref(ref, dst) - - for n := size - 50; n > 1; n >>= 1 { - for x := 0; x <= size-n; x = x*7 + 1 { // offset in src - for y := 0; y <= size-n; y = y*9 + 1 { // offset in dst - copy(dst[y:y+n], src[x:x+n]) - copyref(ref[y:y+n], src[x:x+n]) - p := cmpb(dst, ref) - if p >= 0 { - t.Fatalf("Copy failed, copying from src[%d:%d] to dst[%d:%d].\nOffset %d is different, %v != %v", x, x+n, y, y+n, p, dst[p], ref[p]) - } - } - } - } -} - -func testOverlap(t *testing.T, size int) { - src := make([]byte, size) - test := make([]byte, size) - ref := make([]byte, size) - _, _ = rand.Read(src) - - for n := size - 50; n > 1; n >>= 1 { - for x := 0; x <= size-n; x = x*7 + 1 { // offset in src - for y := 0; y <= size-n; y = y*9 + 1 { // offset in dst - // Reset input - copyref(test, src) - copyref(ref, src) - copy(test[y:y+n], test[x:x+n]) - if y <= x { - copyref(ref[y:y+n], ref[x:x+n]) - } else { - copybw(ref[y:y+n], ref[x:x+n]) - } - p := cmpb(test, ref) - if p >= 0 { - t.Fatalf("Copy failed, copying from src[%d:%d] to dst[%d:%d].\nOffset %d is different, %v != %v", x, x+n, y, y+n, p, test[p], ref[p]) - } - } - } - } - -} - -// Forward copy. -func copyref(dst, src []byte) { - for i, v := range src { - dst[i] = v - } -} - -// Backwards copy -func copybw(dst, src []byte) { - if len(src) == 0 { - return - } - for i := len(src) - 1; i >= 0; i-- { - dst[i] = src[i] - } -} - -// Returns offset of difference -func matchLen(a, b []byte, max int) int { - a = a[:max] - b = b[:max] - for i, av := range a { - if b[i] != av { - return i - } - } - return max -} - -func cmpb(a, b []byte) int { - l := matchLen(a, b, len(a)) - if l == len(a) { - return -1 - } - return l -} - func benchmarkSizes(b *testing.B, sizes []int, fn func(b *testing.B, n int)) { for _, n := range sizes { b.Run(fmt.Sprint(n), func(b *testing.B) { |