1
2
3
4
5
6
7 package simd_test
8
9 import (
10 "simd"
11 "testing"
12 )
13
14
15
16 var comparisonFixed bool = simd.X86.AVX512()
17
18 func TestLess(t *testing.T) {
19 testFloat32x4Compare(t, simd.Float32x4.Less, lessSlice[float32])
20 testFloat32x8Compare(t, simd.Float32x8.Less, lessSlice[float32])
21 testFloat64x2Compare(t, simd.Float64x2.Less, lessSlice[float64])
22 testFloat64x4Compare(t, simd.Float64x4.Less, lessSlice[float64])
23
24 testInt16x16Compare(t, simd.Int16x16.Less, lessSlice[int16])
25 testInt16x8Compare(t, simd.Int16x8.Less, lessSlice[int16])
26 testInt32x4Compare(t, simd.Int32x4.Less, lessSlice[int32])
27 testInt32x8Compare(t, simd.Int32x8.Less, lessSlice[int32])
28 testInt64x2Compare(t, simd.Int64x2.Less, lessSlice[int64])
29 testInt64x4Compare(t, simd.Int64x4.Less, lessSlice[int64])
30 testInt8x16Compare(t, simd.Int8x16.Less, lessSlice[int8])
31 testInt8x32Compare(t, simd.Int8x32.Less, lessSlice[int8])
32
33 testInt16x16Compare(t, simd.Int16x16.Less, lessSlice[int16])
34 testInt16x8Compare(t, simd.Int16x8.Less, lessSlice[int16])
35 testInt32x4Compare(t, simd.Int32x4.Less, lessSlice[int32])
36 testInt32x8Compare(t, simd.Int32x8.Less, lessSlice[int32])
37 testInt64x2Compare(t, simd.Int64x2.Less, lessSlice[int64])
38 testInt64x4Compare(t, simd.Int64x4.Less, lessSlice[int64])
39 testInt8x16Compare(t, simd.Int8x16.Less, lessSlice[int8])
40 testInt8x32Compare(t, simd.Int8x32.Less, lessSlice[int8])
41
42 testUint16x16Compare(t, simd.Uint16x16.Less, lessSlice[uint16])
43 testUint16x8Compare(t, simd.Uint16x8.Less, lessSlice[uint16])
44 testUint32x4Compare(t, simd.Uint32x4.Less, lessSlice[uint32])
45 testUint32x8Compare(t, simd.Uint32x8.Less, lessSlice[uint32])
46 testUint64x2Compare(t, simd.Uint64x2.Less, lessSlice[uint64])
47 testUint64x4Compare(t, simd.Uint64x4.Less, lessSlice[uint64])
48 testUint8x16Compare(t, simd.Uint8x16.Less, lessSlice[uint8])
49 testUint8x32Compare(t, simd.Uint8x32.Less, lessSlice[uint8])
50
51 if simd.X86.AVX512() {
52 testUint16x16Compare(t, simd.Uint16x16.Less, lessSlice[uint16])
53 testUint16x8Compare(t, simd.Uint16x8.Less, lessSlice[uint16])
54 testUint32x4Compare(t, simd.Uint32x4.Less, lessSlice[uint32])
55 testUint32x8Compare(t, simd.Uint32x8.Less, lessSlice[uint32])
56 testUint64x2Compare(t, simd.Uint64x2.Less, lessSlice[uint64])
57 testUint64x4Compare(t, simd.Uint64x4.Less, lessSlice[uint64])
58 testUint8x16Compare(t, simd.Uint8x16.Less, lessSlice[uint8])
59 testUint8x32Compare(t, simd.Uint8x32.Less, lessSlice[uint8])
60
61 testFloat32x16Compare(t, simd.Float32x16.Less, lessSlice[float32])
62 testFloat64x8Compare(t, simd.Float64x8.Less, lessSlice[float64])
63 testInt8x64Compare(t, simd.Int8x64.Less, lessSlice[int8])
64 testInt16x32Compare(t, simd.Int16x32.Less, lessSlice[int16])
65 testInt32x16Compare(t, simd.Int32x16.Less, lessSlice[int32])
66 testInt64x8Compare(t, simd.Int64x8.Less, lessSlice[int64])
67 testUint8x64Compare(t, simd.Uint8x64.Less, lessSlice[uint8])
68 testUint16x32Compare(t, simd.Uint16x32.Less, lessSlice[uint16])
69 testUint32x16Compare(t, simd.Uint32x16.Less, lessSlice[uint32])
70 testUint64x8Compare(t, simd.Uint64x8.Less, lessSlice[uint64])
71 }
72 }
73
74 func TestLessEqual(t *testing.T) {
75 testFloat32x4Compare(t, simd.Float32x4.LessEqual, lessEqualSlice[float32])
76 testFloat32x8Compare(t, simd.Float32x8.LessEqual, lessEqualSlice[float32])
77 testFloat64x2Compare(t, simd.Float64x2.LessEqual, lessEqualSlice[float64])
78 testFloat64x4Compare(t, simd.Float64x4.LessEqual, lessEqualSlice[float64])
79
80 testInt16x16Compare(t, simd.Int16x16.LessEqual, lessEqualSlice[int16])
81 testInt16x8Compare(t, simd.Int16x8.LessEqual, lessEqualSlice[int16])
82 testInt32x4Compare(t, simd.Int32x4.LessEqual, lessEqualSlice[int32])
83 testInt32x8Compare(t, simd.Int32x8.LessEqual, lessEqualSlice[int32])
84 testInt64x2Compare(t, simd.Int64x2.LessEqual, lessEqualSlice[int64])
85 testInt64x4Compare(t, simd.Int64x4.LessEqual, lessEqualSlice[int64])
86 testInt8x16Compare(t, simd.Int8x16.LessEqual, lessEqualSlice[int8])
87 testInt8x32Compare(t, simd.Int8x32.LessEqual, lessEqualSlice[int8])
88
89 testUint16x16Compare(t, simd.Uint16x16.LessEqual, lessEqualSlice[uint16])
90 testUint16x8Compare(t, simd.Uint16x8.LessEqual, lessEqualSlice[uint16])
91 testUint32x4Compare(t, simd.Uint32x4.LessEqual, lessEqualSlice[uint32])
92 testUint32x8Compare(t, simd.Uint32x8.LessEqual, lessEqualSlice[uint32])
93 testUint64x2Compare(t, simd.Uint64x2.LessEqual, lessEqualSlice[uint64])
94 testUint64x4Compare(t, simd.Uint64x4.LessEqual, lessEqualSlice[uint64])
95 testUint8x16Compare(t, simd.Uint8x16.LessEqual, lessEqualSlice[uint8])
96 testUint8x32Compare(t, simd.Uint8x32.LessEqual, lessEqualSlice[uint8])
97
98 if simd.X86.AVX512() {
99 testFloat32x16Compare(t, simd.Float32x16.LessEqual, lessEqualSlice[float32])
100 testFloat64x8Compare(t, simd.Float64x8.LessEqual, lessEqualSlice[float64])
101 testInt8x64Compare(t, simd.Int8x64.LessEqual, lessEqualSlice[int8])
102 testInt16x32Compare(t, simd.Int16x32.LessEqual, lessEqualSlice[int16])
103 testInt32x16Compare(t, simd.Int32x16.LessEqual, lessEqualSlice[int32])
104 testInt64x8Compare(t, simd.Int64x8.LessEqual, lessEqualSlice[int64])
105 testUint8x64Compare(t, simd.Uint8x64.LessEqual, lessEqualSlice[uint8])
106 testUint16x32Compare(t, simd.Uint16x32.LessEqual, lessEqualSlice[uint16])
107 testUint32x16Compare(t, simd.Uint32x16.LessEqual, lessEqualSlice[uint32])
108 testUint64x8Compare(t, simd.Uint64x8.LessEqual, lessEqualSlice[uint64])
109 }
110 }
111
112 func TestGreater(t *testing.T) {
113 testFloat32x4Compare(t, simd.Float32x4.Greater, greaterSlice[float32])
114 testFloat32x8Compare(t, simd.Float32x8.Greater, greaterSlice[float32])
115 testFloat64x2Compare(t, simd.Float64x2.Greater, greaterSlice[float64])
116 testFloat64x4Compare(t, simd.Float64x4.Greater, greaterSlice[float64])
117
118 testInt16x16Compare(t, simd.Int16x16.Greater, greaterSlice[int16])
119 testInt16x8Compare(t, simd.Int16x8.Greater, greaterSlice[int16])
120 testInt32x4Compare(t, simd.Int32x4.Greater, greaterSlice[int32])
121 testInt32x8Compare(t, simd.Int32x8.Greater, greaterSlice[int32])
122
123 testInt64x2Compare(t, simd.Int64x2.Greater, greaterSlice[int64])
124 testInt64x4Compare(t, simd.Int64x4.Greater, greaterSlice[int64])
125 testInt8x16Compare(t, simd.Int8x16.Greater, greaterSlice[int8])
126 testInt8x32Compare(t, simd.Int8x32.Greater, greaterSlice[int8])
127
128 testUint16x16Compare(t, simd.Uint16x16.Greater, greaterSlice[uint16])
129 testUint16x8Compare(t, simd.Uint16x8.Greater, greaterSlice[uint16])
130 testUint32x4Compare(t, simd.Uint32x4.Greater, greaterSlice[uint32])
131 testUint32x8Compare(t, simd.Uint32x8.Greater, greaterSlice[uint32])
132
133 testUint64x2Compare(t, simd.Uint64x2.Greater, greaterSlice[uint64])
134 testUint64x4Compare(t, simd.Uint64x4.Greater, greaterSlice[uint64])
135 testUint8x16Compare(t, simd.Uint8x16.Greater, greaterSlice[uint8])
136 testUint8x32Compare(t, simd.Uint8x32.Greater, greaterSlice[uint8])
137
138 if simd.X86.AVX512() {
139
140 testFloat32x16Compare(t, simd.Float32x16.Greater, greaterSlice[float32])
141 testFloat64x8Compare(t, simd.Float64x8.Greater, greaterSlice[float64])
142 testInt8x64Compare(t, simd.Int8x64.Greater, greaterSlice[int8])
143 testInt16x32Compare(t, simd.Int16x32.Greater, greaterSlice[int16])
144 testInt32x16Compare(t, simd.Int32x16.Greater, greaterSlice[int32])
145 testInt64x8Compare(t, simd.Int64x8.Greater, greaterSlice[int64])
146 testUint8x64Compare(t, simd.Uint8x64.Greater, greaterSlice[uint8])
147 testUint16x32Compare(t, simd.Uint16x32.Greater, greaterSlice[uint16])
148 testUint32x16Compare(t, simd.Uint32x16.Greater, greaterSlice[uint32])
149 testUint64x8Compare(t, simd.Uint64x8.Greater, greaterSlice[uint64])
150 }
151 }
152
153 func TestGreaterEqual(t *testing.T) {
154 testFloat32x4Compare(t, simd.Float32x4.GreaterEqual, greaterEqualSlice[float32])
155 testFloat32x8Compare(t, simd.Float32x8.GreaterEqual, greaterEqualSlice[float32])
156 testFloat64x2Compare(t, simd.Float64x2.GreaterEqual, greaterEqualSlice[float64])
157 testFloat64x4Compare(t, simd.Float64x4.GreaterEqual, greaterEqualSlice[float64])
158
159 testInt16x16Compare(t, simd.Int16x16.GreaterEqual, greaterEqualSlice[int16])
160 testInt16x8Compare(t, simd.Int16x8.GreaterEqual, greaterEqualSlice[int16])
161 testInt32x4Compare(t, simd.Int32x4.GreaterEqual, greaterEqualSlice[int32])
162 testInt32x8Compare(t, simd.Int32x8.GreaterEqual, greaterEqualSlice[int32])
163 testInt64x2Compare(t, simd.Int64x2.GreaterEqual, greaterEqualSlice[int64])
164 testInt64x4Compare(t, simd.Int64x4.GreaterEqual, greaterEqualSlice[int64])
165 testInt8x16Compare(t, simd.Int8x16.GreaterEqual, greaterEqualSlice[int8])
166 testInt8x32Compare(t, simd.Int8x32.GreaterEqual, greaterEqualSlice[int8])
167
168 testUint16x16Compare(t, simd.Uint16x16.GreaterEqual, greaterEqualSlice[uint16])
169 testUint16x8Compare(t, simd.Uint16x8.GreaterEqual, greaterEqualSlice[uint16])
170 testUint32x4Compare(t, simd.Uint32x4.GreaterEqual, greaterEqualSlice[uint32])
171 testUint32x8Compare(t, simd.Uint32x8.GreaterEqual, greaterEqualSlice[uint32])
172 testUint64x2Compare(t, simd.Uint64x2.GreaterEqual, greaterEqualSlice[uint64])
173 testUint64x4Compare(t, simd.Uint64x4.GreaterEqual, greaterEqualSlice[uint64])
174 testUint8x16Compare(t, simd.Uint8x16.GreaterEqual, greaterEqualSlice[uint8])
175 testUint8x32Compare(t, simd.Uint8x32.GreaterEqual, greaterEqualSlice[uint8])
176
177 if simd.X86.AVX512() {
178 testFloat32x16Compare(t, simd.Float32x16.GreaterEqual, greaterEqualSlice[float32])
179 testFloat64x8Compare(t, simd.Float64x8.GreaterEqual, greaterEqualSlice[float64])
180 testInt8x64Compare(t, simd.Int8x64.GreaterEqual, greaterEqualSlice[int8])
181 testInt16x32Compare(t, simd.Int16x32.GreaterEqual, greaterEqualSlice[int16])
182 testInt32x16Compare(t, simd.Int32x16.GreaterEqual, greaterEqualSlice[int32])
183 testInt64x8Compare(t, simd.Int64x8.GreaterEqual, greaterEqualSlice[int64])
184 testUint8x64Compare(t, simd.Uint8x64.GreaterEqual, greaterEqualSlice[uint8])
185 testUint16x32Compare(t, simd.Uint16x32.GreaterEqual, greaterEqualSlice[uint16])
186 testUint32x16Compare(t, simd.Uint32x16.GreaterEqual, greaterEqualSlice[uint32])
187 testUint64x8Compare(t, simd.Uint64x8.GreaterEqual, greaterEqualSlice[uint64])
188 }
189 }
190
191 func TestEqual(t *testing.T) {
192 testFloat32x4Compare(t, simd.Float32x4.Equal, equalSlice[float32])
193 testFloat32x8Compare(t, simd.Float32x8.Equal, equalSlice[float32])
194 testFloat64x2Compare(t, simd.Float64x2.Equal, equalSlice[float64])
195 testFloat64x4Compare(t, simd.Float64x4.Equal, equalSlice[float64])
196
197 testInt16x16Compare(t, simd.Int16x16.Equal, equalSlice[int16])
198 testInt16x8Compare(t, simd.Int16x8.Equal, equalSlice[int16])
199 testInt32x4Compare(t, simd.Int32x4.Equal, equalSlice[int32])
200 testInt32x8Compare(t, simd.Int32x8.Equal, equalSlice[int32])
201 testInt64x2Compare(t, simd.Int64x2.Equal, equalSlice[int64])
202 testInt64x4Compare(t, simd.Int64x4.Equal, equalSlice[int64])
203 testInt8x16Compare(t, simd.Int8x16.Equal, equalSlice[int8])
204 testInt8x32Compare(t, simd.Int8x32.Equal, equalSlice[int8])
205
206 testUint16x16Compare(t, simd.Uint16x16.Equal, equalSlice[uint16])
207 testUint16x8Compare(t, simd.Uint16x8.Equal, equalSlice[uint16])
208 testUint32x4Compare(t, simd.Uint32x4.Equal, equalSlice[uint32])
209 testUint32x8Compare(t, simd.Uint32x8.Equal, equalSlice[uint32])
210 testUint64x2Compare(t, simd.Uint64x2.Equal, equalSlice[uint64])
211 testUint64x4Compare(t, simd.Uint64x4.Equal, equalSlice[uint64])
212 testUint8x16Compare(t, simd.Uint8x16.Equal, equalSlice[uint8])
213 testUint8x32Compare(t, simd.Uint8x32.Equal, equalSlice[uint8])
214
215 if simd.X86.AVX512() {
216 testFloat32x16Compare(t, simd.Float32x16.Equal, equalSlice[float32])
217 testFloat64x8Compare(t, simd.Float64x8.Equal, equalSlice[float64])
218 testInt8x64Compare(t, simd.Int8x64.Equal, equalSlice[int8])
219 testInt16x32Compare(t, simd.Int16x32.Equal, equalSlice[int16])
220 testInt32x16Compare(t, simd.Int32x16.Equal, equalSlice[int32])
221 testInt64x8Compare(t, simd.Int64x8.Equal, equalSlice[int64])
222 testUint8x64Compare(t, simd.Uint8x64.Equal, equalSlice[uint8])
223 testUint16x32Compare(t, simd.Uint16x32.Equal, equalSlice[uint16])
224 testUint32x16Compare(t, simd.Uint32x16.Equal, equalSlice[uint32])
225 testUint64x8Compare(t, simd.Uint64x8.Equal, equalSlice[uint64])
226 }
227 }
228
229 func TestNotEqual(t *testing.T) {
230 testFloat32x4Compare(t, simd.Float32x4.NotEqual, notEqualSlice[float32])
231 testFloat32x8Compare(t, simd.Float32x8.NotEqual, notEqualSlice[float32])
232 testFloat64x2Compare(t, simd.Float64x2.NotEqual, notEqualSlice[float64])
233 testFloat64x4Compare(t, simd.Float64x4.NotEqual, notEqualSlice[float64])
234
235 testInt16x16Compare(t, simd.Int16x16.NotEqual, notEqualSlice[int16])
236 testInt16x8Compare(t, simd.Int16x8.NotEqual, notEqualSlice[int16])
237 testInt32x4Compare(t, simd.Int32x4.NotEqual, notEqualSlice[int32])
238 testInt32x8Compare(t, simd.Int32x8.NotEqual, notEqualSlice[int32])
239 testInt64x2Compare(t, simd.Int64x2.NotEqual, notEqualSlice[int64])
240 testInt64x4Compare(t, simd.Int64x4.NotEqual, notEqualSlice[int64])
241 testInt8x16Compare(t, simd.Int8x16.NotEqual, notEqualSlice[int8])
242 testInt8x32Compare(t, simd.Int8x32.NotEqual, notEqualSlice[int8])
243
244 testUint16x16Compare(t, simd.Uint16x16.NotEqual, notEqualSlice[uint16])
245 testUint16x8Compare(t, simd.Uint16x8.NotEqual, notEqualSlice[uint16])
246 testUint32x4Compare(t, simd.Uint32x4.NotEqual, notEqualSlice[uint32])
247 testUint32x8Compare(t, simd.Uint32x8.NotEqual, notEqualSlice[uint32])
248 testUint64x2Compare(t, simd.Uint64x2.NotEqual, notEqualSlice[uint64])
249 testUint64x4Compare(t, simd.Uint64x4.NotEqual, notEqualSlice[uint64])
250 testUint8x16Compare(t, simd.Uint8x16.NotEqual, notEqualSlice[uint8])
251 testUint8x32Compare(t, simd.Uint8x32.NotEqual, notEqualSlice[uint8])
252
253 if simd.X86.AVX512() {
254 testFloat32x16Compare(t, simd.Float32x16.NotEqual, notEqualSlice[float32])
255 testFloat64x8Compare(t, simd.Float64x8.NotEqual, notEqualSlice[float64])
256 testInt8x64Compare(t, simd.Int8x64.NotEqual, notEqualSlice[int8])
257 testInt16x32Compare(t, simd.Int16x32.NotEqual, notEqualSlice[int16])
258 testInt32x16Compare(t, simd.Int32x16.NotEqual, notEqualSlice[int32])
259 testInt64x8Compare(t, simd.Int64x8.NotEqual, notEqualSlice[int64])
260 testUint8x64Compare(t, simd.Uint8x64.NotEqual, notEqualSlice[uint8])
261 testUint16x32Compare(t, simd.Uint16x32.NotEqual, notEqualSlice[uint16])
262 testUint32x16Compare(t, simd.Uint32x16.NotEqual, notEqualSlice[uint32])
263 testUint64x8Compare(t, simd.Uint64x8.NotEqual, notEqualSlice[uint64])
264 }
265 }
266
View as plain text