1
2
3
4
5
6
7 package simd_test
8
9 import (
10 "simd/archsimd"
11 "testing"
12 )
13
14 func TestReduceSum(t *testing.T) {
15 testInt8x16Reduce(t, archsimd.Int8x16.ReduceSum, func(x []int8) int8 { return reduceSlice(x, add[int8]) })
16 testInt16x8Reduce(t, archsimd.Int16x8.ReduceSum, func(x []int16) int16 { return reduceSlice(x, add[int16]) })
17 testInt32x4Reduce(t, archsimd.Int32x4.ReduceSum, func(x []int32) int32 { return reduceSlice(x, add[int32]) })
18 testUint8x16Reduce(t, archsimd.Uint8x16.ReduceSum, func(x []uint8) uint8 { return reduceSlice(x, add[uint8]) })
19 testUint16x8Reduce(t, archsimd.Uint16x8.ReduceSum, func(x []uint16) uint16 { return reduceSlice(x, add[uint16]) })
20 testUint32x4Reduce(t, archsimd.Uint32x4.ReduceSum, func(x []uint32) uint32 { return reduceSlice(x, add[uint32]) })
21 }
22
23 func TestReduceMax(t *testing.T) {
24 testInt8x16Reduce(t, archsimd.Int8x16.ReduceMax, func(x []int8) int8 { return reduceSlice(x, max_[int8]) })
25 testInt16x8Reduce(t, archsimd.Int16x8.ReduceMax, func(x []int16) int16 { return reduceSlice(x, max_[int16]) })
26 testInt32x4Reduce(t, archsimd.Int32x4.ReduceMax, func(x []int32) int32 { return reduceSlice(x, max_[int32]) })
27 testUint8x16Reduce(t, archsimd.Uint8x16.ReduceMax, func(x []uint8) uint8 { return reduceSlice(x, max_[uint8]) })
28 testUint16x8Reduce(t, archsimd.Uint16x8.ReduceMax, func(x []uint16) uint16 { return reduceSlice(x, max_[uint16]) })
29 testUint32x4Reduce(t, archsimd.Uint32x4.ReduceMax, func(x []uint32) uint32 { return reduceSlice(x, max_[uint32]) })
30 testFloat32x4Reduce(t, archsimd.Float32x4.ReduceMax, func(x []float32) float32 { return reduceSlice(x, max_[float32]) })
31 }
32
33 func TestReduceMin(t *testing.T) {
34 testInt8x16Reduce(t, archsimd.Int8x16.ReduceMin, func(x []int8) int8 { return reduceSlice(x, min_[int8]) })
35 testInt16x8Reduce(t, archsimd.Int16x8.ReduceMin, func(x []int16) int16 { return reduceSlice(x, min_[int16]) })
36 testInt32x4Reduce(t, archsimd.Int32x4.ReduceMin, func(x []int32) int32 { return reduceSlice(x, min_[int32]) })
37 testUint8x16Reduce(t, archsimd.Uint8x16.ReduceMin, func(x []uint8) uint8 { return reduceSlice(x, min_[uint8]) })
38 testUint16x8Reduce(t, archsimd.Uint16x8.ReduceMin, func(x []uint16) uint16 { return reduceSlice(x, min_[uint16]) })
39 testUint32x4Reduce(t, archsimd.Uint32x4.ReduceMin, func(x []uint32) uint32 { return reduceSlice(x, min_[uint32]) })
40 testFloat32x4Reduce(t, archsimd.Float32x4.ReduceMin, func(x []float32) float32 { return reduceSlice(x, min_[float32]) })
41 }
42
View as plain text