| // Copyright 2026 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build goexperiment.simd |
| |
| package testdata_test |
| |
| import ( |
| "fmt" |
| "simd" |
| "testing" |
| ) |
| |
| func fillUint8s(f func(i int) uint8) simd.Uint8s { |
| l := simd.Uint8s{}.Len() |
| x := make([]uint8, l, l) |
| for i := range l { |
| x[i] = f(i) |
| } |
| return simd.LoadUint8s(x) |
| } |
| |
| func fillFloat32s(f func(i int) float32) simd.Float32s { |
| l := simd.Float32s{}.Len() |
| x := make([]float32, l, l) |
| for i := range l { |
| x[i] = f(i) |
| } |
| return simd.LoadFloat32s(x) |
| } |
| |
| func stringFor(l int, f func(i int) int) string { |
| pfx := "{" |
| var want string |
| for i := range l { |
| want += pfx |
| pfx = "," |
| want += fmt.Sprintf("%d", f(i)) |
| } |
| want += "}" |
| return want |
| } |
| |
| func TestToString(t *testing.T) { |
| a := fillUint8s(func(i int) uint8 { return uint8(i) & 1 }) |
| b := fillUint8s(func(i int) uint8 { return uint8(i>>1) & 1 }) |
| m := a.Equal(b) |
| wantM := stringFor(a.Len(), |
| func(i int) int { |
| if i&1 == (i>>1)&1 { |
| return 1 |
| } |
| return 0 |
| }) |
| if got := m.String(); wantM != got { |
| t.Errorf("wantM=%s, got=%s", wantM, got) |
| } |
| wantA := stringFor(a.Len(), |
| func(i int) int { |
| return i & 1 |
| }) |
| if got := a.String(); wantA != got { |
| t.Errorf("wantA=%s, got=%s", wantA, got) |
| } |
| |
| f := fillFloat32s(func(i int) float32 { return float32(i) }) |
| wantF := stringFor(f.Len(), |
| func(i int) int { |
| return i |
| }) |
| if got := f.String(); wantF != got { |
| t.Errorf("wantF=%s, got=%s", wantF, got) |
| } |
| } |