17 #if defined(HIGHWAY_HWY_CONTRIB_SORT_SORTING_NETWORKS_TOGGLE) == \
18 defined(HWY_TARGET_TOGGLE)
19 #ifdef HIGHWAY_HWY_CONTRIB_SORT_SORTING_NETWORKS_TOGGLE
20 #undef HIGHWAY_HWY_CONTRIB_SORT_SORTING_NETWORKS_TOGGLE
22 #define HIGHWAY_HWY_CONTRIB_SORT_SORTING_NETWORKS_TOGGLE
46 const Base* base =
static_cast<const Base*
>(
this);
47 Vec<D> swapped = base->SwapAdjacentPairs(
d,
v);
48 base->Sort2(
d,
v, swapped);
49 return base->OddEvenPairs(
d, swapped,
v);
55 const Base* base =
static_cast<const Base*
>(
this);
56 Vec<D> swapped = base->ReverseKeys8(
d,
v);
57 base->Sort2(
d,
v, swapped);
58 return base->OddEvenQuads(
d, swapped,
v);
64 const Base* base =
static_cast<const Base*
>(
this);
66 Vec<D> swapped = base->ReverseKeys(
d,
v);
67 base->Sort2(
d,
v, swapped);
75 template <
class D,
class Traits,
class V = Vec<D>>
77 V& v6, V& v7, V& v8, V& v9, V& va, V& vb, V& vc, V& vd,
145 template <
class D,
class Traits,
class V = Vec<D>>
147 V& v6, V& v7, V& v8, V& v9, V& va, V& vb, V& vc, V& vd,
149 v8 = st.ReverseKeys2(
d, v8);
150 v9 = st.ReverseKeys2(
d, v9);
151 va = st.ReverseKeys2(
d, va);
152 vb = st.ReverseKeys2(
d, vb);
153 vc = st.ReverseKeys2(
d, vc);
154 vd = st.ReverseKeys2(
d, vd);
155 ve = st.ReverseKeys2(
d, ve);
156 vf = st.ReverseKeys2(
d, vf);
165 v4 = st.ReverseKeys2(
d, v4);
166 vc = st.ReverseKeys2(
d, vc);
167 v5 = st.ReverseKeys2(
d, v5);
168 vd = st.ReverseKeys2(
d, vd);
169 v6 = st.ReverseKeys2(
d, v6);
170 ve = st.ReverseKeys2(
d, ve);
171 v7 = st.ReverseKeys2(
d, v7);
172 vf = st.ReverseKeys2(
d, vf);
181 v2 = st.ReverseKeys2(
d, v2);
182 v3 = st.ReverseKeys2(
d, v3);
183 v6 = st.ReverseKeys2(
d, v6);
184 v7 = st.ReverseKeys2(
d, v7);
185 va = st.ReverseKeys2(
d, va);
186 vb = st.ReverseKeys2(
d, vb);
187 ve = st.ReverseKeys2(
d, ve);
188 vf = st.ReverseKeys2(
d, vf);
197 v1 = st.ReverseKeys2(
d, v1);
198 v3 = st.ReverseKeys2(
d, v3);
199 v5 = st.ReverseKeys2(
d, v5);
200 v7 = st.ReverseKeys2(
d, v7);
201 v9 = st.ReverseKeys2(
d, v9);
202 vb = st.ReverseKeys2(
d, vb);
203 vd = st.ReverseKeys2(
d, vd);
204 vf = st.ReverseKeys2(
d, vf);
213 v0 = st.SortPairsDistance1(
d, v0);
214 v1 = st.SortPairsDistance1(
d, v1);
215 v2 = st.SortPairsDistance1(
d, v2);
216 v3 = st.SortPairsDistance1(
d, v3);
217 v4 = st.SortPairsDistance1(
d, v4);
218 v5 = st.SortPairsDistance1(
d, v5);
219 v6 = st.SortPairsDistance1(
d, v6);
220 v7 = st.SortPairsDistance1(
d, v7);
221 v8 = st.SortPairsDistance1(
d, v8);
222 v9 = st.SortPairsDistance1(
d, v9);
223 va = st.SortPairsDistance1(
d, va);
224 vb = st.SortPairsDistance1(
d, vb);
225 vc = st.SortPairsDistance1(
d, vc);
226 vd = st.SortPairsDistance1(
d, vd);
227 ve = st.SortPairsDistance1(
d, ve);
228 vf = st.SortPairsDistance1(
d, vf);
231 template <
class D,
class Traits,
class V = Vec<D>>
233 V& v6, V& v7, V& v8, V& v9, V& va, V& vb, V& vc, V& vd,
235 v8 = st.ReverseKeys4(
d, v8);
236 v9 = st.ReverseKeys4(
d, v9);
237 va = st.ReverseKeys4(
d, va);
238 vb = st.ReverseKeys4(
d, vb);
239 vc = st.ReverseKeys4(
d, vc);
240 vd = st.ReverseKeys4(
d, vd);
241 ve = st.ReverseKeys4(
d, ve);
242 vf = st.ReverseKeys4(
d, vf);
251 v4 = st.ReverseKeys4(
d, v4);
252 vc = st.ReverseKeys4(
d, vc);
253 v5 = st.ReverseKeys4(
d, v5);
254 vd = st.ReverseKeys4(
d, vd);
255 v6 = st.ReverseKeys4(
d, v6);
256 ve = st.ReverseKeys4(
d, ve);
257 v7 = st.ReverseKeys4(
d, v7);
258 vf = st.ReverseKeys4(
d, vf);
267 v2 = st.ReverseKeys4(
d, v2);
268 v3 = st.ReverseKeys4(
d, v3);
269 v6 = st.ReverseKeys4(
d, v6);
270 v7 = st.ReverseKeys4(
d, v7);
271 va = st.ReverseKeys4(
d, va);
272 vb = st.ReverseKeys4(
d, vb);
273 ve = st.ReverseKeys4(
d, ve);
274 vf = st.ReverseKeys4(
d, vf);
283 v1 = st.ReverseKeys4(
d, v1);
284 v3 = st.ReverseKeys4(
d, v3);
285 v5 = st.ReverseKeys4(
d, v5);
286 v7 = st.ReverseKeys4(
d, v7);
287 v9 = st.ReverseKeys4(
d, v9);
288 vb = st.ReverseKeys4(
d, vb);
289 vd = st.ReverseKeys4(
d, vd);
290 vf = st.ReverseKeys4(
d, vf);
299 v0 = st.SortPairsReverse4(
d, v0);
300 v1 = st.SortPairsReverse4(
d, v1);
301 v2 = st.SortPairsReverse4(
d, v2);
302 v3 = st.SortPairsReverse4(
d, v3);
303 v4 = st.SortPairsReverse4(
d, v4);
304 v5 = st.SortPairsReverse4(
d, v5);
305 v6 = st.SortPairsReverse4(
d, v6);
306 v7 = st.SortPairsReverse4(
d, v7);
307 v8 = st.SortPairsReverse4(
d, v8);
308 v9 = st.SortPairsReverse4(
d, v9);
309 va = st.SortPairsReverse4(
d, va);
310 vb = st.SortPairsReverse4(
d, vb);
311 vc = st.SortPairsReverse4(
d, vc);
312 vd = st.SortPairsReverse4(
d, vd);
313 ve = st.SortPairsReverse4(
d, ve);
314 vf = st.SortPairsReverse4(
d, vf);
315 v0 = st.SortPairsDistance1(
d, v0);
316 v1 = st.SortPairsDistance1(
d, v1);
317 v2 = st.SortPairsDistance1(
d, v2);
318 v3 = st.SortPairsDistance1(
d, v3);
319 v4 = st.SortPairsDistance1(
d, v4);
320 v5 = st.SortPairsDistance1(
d, v5);
321 v6 = st.SortPairsDistance1(
d, v6);
322 v7 = st.SortPairsDistance1(
d, v7);
323 v8 = st.SortPairsDistance1(
d, v8);
324 v9 = st.SortPairsDistance1(
d, v9);
325 va = st.SortPairsDistance1(
d, va);
326 vb = st.SortPairsDistance1(
d, vb);
327 vc = st.SortPairsDistance1(
d, vc);
328 vd = st.SortPairsDistance1(
d, vd);
329 ve = st.SortPairsDistance1(
d, ve);
330 vf = st.SortPairsDistance1(
d, vf);
333 template <
class D,
class Traits,
class V = Vec<D>>
335 V& v6, V& v7, V& v8, V& v9, V& va, V& vb, V& vc, V& vd,
337 v8 = st.ReverseKeys8(
d, v8);
338 v9 = st.ReverseKeys8(
d, v9);
339 va = st.ReverseKeys8(
d, va);
340 vb = st.ReverseKeys8(
d, vb);
341 vc = st.ReverseKeys8(
d, vc);
342 vd = st.ReverseKeys8(
d, vd);
343 ve = st.ReverseKeys8(
d, ve);
344 vf = st.ReverseKeys8(
d, vf);
353 v4 = st.ReverseKeys8(
d, v4);
354 vc = st.ReverseKeys8(
d, vc);
355 v5 = st.ReverseKeys8(
d, v5);
356 vd = st.ReverseKeys8(
d, vd);
357 v6 = st.ReverseKeys8(
d, v6);
358 ve = st.ReverseKeys8(
d, ve);
359 v7 = st.ReverseKeys8(
d, v7);
360 vf = st.ReverseKeys8(
d, vf);
369 v2 = st.ReverseKeys8(
d, v2);
370 v3 = st.ReverseKeys8(
d, v3);
371 v6 = st.ReverseKeys8(
d, v6);
372 v7 = st.ReverseKeys8(
d, v7);
373 va = st.ReverseKeys8(
d, va);
374 vb = st.ReverseKeys8(
d, vb);
375 ve = st.ReverseKeys8(
d, ve);
376 vf = st.ReverseKeys8(
d, vf);
385 v1 = st.ReverseKeys8(
d, v1);
386 v3 = st.ReverseKeys8(
d, v3);
387 v5 = st.ReverseKeys8(
d, v5);
388 v7 = st.ReverseKeys8(
d, v7);
389 v9 = st.ReverseKeys8(
d, v9);
390 vb = st.ReverseKeys8(
d, vb);
391 vd = st.ReverseKeys8(
d, vd);
392 vf = st.ReverseKeys8(
d, vf);
401 v0 = st.SortPairsReverse8(
d, v0);
402 v1 = st.SortPairsReverse8(
d, v1);
403 v2 = st.SortPairsReverse8(
d, v2);
404 v3 = st.SortPairsReverse8(
d, v3);
405 v4 = st.SortPairsReverse8(
d, v4);
406 v5 = st.SortPairsReverse8(
d, v5);
407 v6 = st.SortPairsReverse8(
d, v6);
408 v7 = st.SortPairsReverse8(
d, v7);
409 v8 = st.SortPairsReverse8(
d, v8);
410 v9 = st.SortPairsReverse8(
d, v9);
411 va = st.SortPairsReverse8(
d, va);
412 vb = st.SortPairsReverse8(
d, vb);
413 vc = st.SortPairsReverse8(
d, vc);
414 vd = st.SortPairsReverse8(
d, vd);
415 ve = st.SortPairsReverse8(
d, ve);
416 vf = st.SortPairsReverse8(
d, vf);
417 v0 = st.SortPairsDistance2(
d, v0);
418 v1 = st.SortPairsDistance2(
d, v1);
419 v2 = st.SortPairsDistance2(
d, v2);
420 v3 = st.SortPairsDistance2(
d, v3);
421 v4 = st.SortPairsDistance2(
d, v4);
422 v5 = st.SortPairsDistance2(
d, v5);
423 v6 = st.SortPairsDistance2(
d, v6);
424 v7 = st.SortPairsDistance2(
d, v7);
425 v8 = st.SortPairsDistance2(
d, v8);
426 v9 = st.SortPairsDistance2(
d, v9);
427 va = st.SortPairsDistance2(
d, va);
428 vb = st.SortPairsDistance2(
d, vb);
429 vc = st.SortPairsDistance2(
d, vc);
430 vd = st.SortPairsDistance2(
d, vd);
431 ve = st.SortPairsDistance2(
d, ve);
432 vf = st.SortPairsDistance2(
d, vf);
433 v0 = st.SortPairsDistance1(
d, v0);
434 v1 = st.SortPairsDistance1(
d, v1);
435 v2 = st.SortPairsDistance1(
d, v2);
436 v3 = st.SortPairsDistance1(
d, v3);
437 v4 = st.SortPairsDistance1(
d, v4);
438 v5 = st.SortPairsDistance1(
d, v5);
439 v6 = st.SortPairsDistance1(
d, v6);
440 v7 = st.SortPairsDistance1(
d, v7);
441 v8 = st.SortPairsDistance1(
d, v8);
442 v9 = st.SortPairsDistance1(
d, v9);
443 va = st.SortPairsDistance1(
d, va);
444 vb = st.SortPairsDistance1(
d, vb);
445 vc = st.SortPairsDistance1(
d, vc);
446 vd = st.SortPairsDistance1(
d, vd);
447 ve = st.SortPairsDistance1(
d, ve);
448 vf = st.SortPairsDistance1(
d, vf);
452 #if !HWY_COMPILER_MSVC
454 template <
class D,
class Traits,
class V = Vec<D>>
456 V& v5, V& v6, V& v7, V& v8, V& v9, V& va, V& vb, V& vc,
457 V& vd, V& ve, V& vf) {
458 v8 = st.ReverseKeys16(
d, v8);
459 v9 = st.ReverseKeys16(
d, v9);
460 va = st.ReverseKeys16(
d, va);
461 vb = st.ReverseKeys16(
d, vb);
462 vc = st.ReverseKeys16(
d, vc);
463 vd = st.ReverseKeys16(
d, vd);
464 ve = st.ReverseKeys16(
d, ve);
465 vf = st.ReverseKeys16(
d, vf);
474 v4 = st.ReverseKeys16(
d, v4);
475 vc = st.ReverseKeys16(
d, vc);
476 v5 = st.ReverseKeys16(
d, v5);
477 vd = st.ReverseKeys16(
d, vd);
478 v6 = st.ReverseKeys16(
d, v6);
479 ve = st.ReverseKeys16(
d, ve);
480 v7 = st.ReverseKeys16(
d, v7);
481 vf = st.ReverseKeys16(
d, vf);
490 v2 = st.ReverseKeys16(
d, v2);
491 v3 = st.ReverseKeys16(
d, v3);
492 v6 = st.ReverseKeys16(
d, v6);
493 v7 = st.ReverseKeys16(
d, v7);
494 va = st.ReverseKeys16(
d, va);
495 vb = st.ReverseKeys16(
d, vb);
496 ve = st.ReverseKeys16(
d, ve);
497 vf = st.ReverseKeys16(
d, vf);
506 v1 = st.ReverseKeys16(
d, v1);
507 v3 = st.ReverseKeys16(
d, v3);
508 v5 = st.ReverseKeys16(
d, v5);
509 v7 = st.ReverseKeys16(
d, v7);
510 v9 = st.ReverseKeys16(
d, v9);
511 vb = st.ReverseKeys16(
d, vb);
512 vd = st.ReverseKeys16(
d, vd);
513 vf = st.ReverseKeys16(
d, vf);
522 v0 = st.SortPairsReverse16(
d, v0);
523 v1 = st.SortPairsReverse16(
d, v1);
524 v2 = st.SortPairsReverse16(
d, v2);
525 v3 = st.SortPairsReverse16(
d, v3);
526 v4 = st.SortPairsReverse16(
d, v4);
527 v5 = st.SortPairsReverse16(
d, v5);
528 v6 = st.SortPairsReverse16(
d, v6);
529 v7 = st.SortPairsReverse16(
d, v7);
530 v8 = st.SortPairsReverse16(
d, v8);
531 v9 = st.SortPairsReverse16(
d, v9);
532 va = st.SortPairsReverse16(
d, va);
533 vb = st.SortPairsReverse16(
d, vb);
534 vc = st.SortPairsReverse16(
d, vc);
535 vd = st.SortPairsReverse16(
d, vd);
536 ve = st.SortPairsReverse16(
d, ve);
537 vf = st.SortPairsReverse16(
d, vf);
538 v0 = st.SortPairsDistance4(
d, v0);
539 v1 = st.SortPairsDistance4(
d, v1);
540 v2 = st.SortPairsDistance4(
d, v2);
541 v3 = st.SortPairsDistance4(
d, v3);
542 v4 = st.SortPairsDistance4(
d, v4);
543 v5 = st.SortPairsDistance4(
d, v5);
544 v6 = st.SortPairsDistance4(
d, v6);
545 v7 = st.SortPairsDistance4(
d, v7);
546 v8 = st.SortPairsDistance4(
d, v8);
547 v9 = st.SortPairsDistance4(
d, v9);
548 va = st.SortPairsDistance4(
d, va);
549 vb = st.SortPairsDistance4(
d, vb);
550 vc = st.SortPairsDistance4(
d, vc);
551 vd = st.SortPairsDistance4(
d, vd);
552 ve = st.SortPairsDistance4(
d, ve);
553 vf = st.SortPairsDistance4(
d, vf);
554 v0 = st.SortPairsDistance2(
d, v0);
555 v1 = st.SortPairsDistance2(
d, v1);
556 v2 = st.SortPairsDistance2(
d, v2);
557 v3 = st.SortPairsDistance2(
d, v3);
558 v4 = st.SortPairsDistance2(
d, v4);
559 v5 = st.SortPairsDistance2(
d, v5);
560 v6 = st.SortPairsDistance2(
d, v6);
561 v7 = st.SortPairsDistance2(
d, v7);
562 v8 = st.SortPairsDistance2(
d, v8);
563 v9 = st.SortPairsDistance2(
d, v9);
564 va = st.SortPairsDistance2(
d, va);
565 vb = st.SortPairsDistance2(
d, vb);
566 vc = st.SortPairsDistance2(
d, vc);
567 vd = st.SortPairsDistance2(
d, vd);
568 ve = st.SortPairsDistance2(
d, ve);
569 vf = st.SortPairsDistance2(
d, vf);
570 v0 = st.SortPairsDistance1(
d, v0);
571 v1 = st.SortPairsDistance1(
d, v1);
572 v2 = st.SortPairsDistance1(
d, v2);
573 v3 = st.SortPairsDistance1(
d, v3);
574 v4 = st.SortPairsDistance1(
d, v4);
575 v5 = st.SortPairsDistance1(
d, v5);
576 v6 = st.SortPairsDistance1(
d, v6);
577 v7 = st.SortPairsDistance1(
d, v7);
578 v8 = st.SortPairsDistance1(
d, v8);
579 v9 = st.SortPairsDistance1(
d, v9);
580 va = st.SortPairsDistance1(
d, va);
581 vb = st.SortPairsDistance1(
d, vb);
582 vc = st.SortPairsDistance1(
d, vc);
583 vd = st.SortPairsDistance1(
d, vd);
584 ve = st.SortPairsDistance1(
d, ve);
585 vf = st.SortPairsDistance1(
d, vf);
602 template <
class Traits,
typename T>
605 using V = decltype(
Zero(
d));
610 constexpr
size_t kLanesPerKey = st.LanesPerKey();
611 const size_t keys = cols / kLanesPerKey;
612 constexpr
size_t kMaxKeys =
MaxLanes(
d) / kLanesPerKey;
617 V v0 =
LoadU(
d, buf + 0x0 * cols);
618 V v1 =
LoadU(
d, buf + 0x1 * cols);
619 V v2 =
LoadU(
d, buf + 0x2 * cols);
620 V v3 =
LoadU(
d, buf + 0x3 * cols);
621 V v4 =
LoadU(
d, buf + 0x4 * cols);
622 V v5 =
LoadU(
d, buf + 0x5 * cols);
623 V v6 =
LoadU(
d, buf + 0x6 * cols);
624 V v7 =
LoadU(
d, buf + 0x7 * cols);
625 V v8 =
LoadU(
d, buf + 0x8 * cols);
626 V v9 =
LoadU(
d, buf + 0x9 * cols);
627 V va =
LoadU(
d, buf + 0xa * cols);
628 V vb =
LoadU(
d, buf + 0xb * cols);
629 V vc =
LoadU(
d, buf + 0xc * cols);
630 V vd =
LoadU(
d, buf + 0xd * cols);
631 V ve =
LoadU(
d, buf + 0xe * cols);
632 V vf =
LoadU(
d, buf + 0xf * cols);
634 Sort16(
d, st, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, va, vb, vc, vd, ve, vf);
639 Merge2(
d, st, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, va, vb, vc, vd, ve,
643 Merge4(
d, st, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, va, vb, vc, vd, ve,
647 Merge8(
d, st, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, va, vb, vc, vd,
651 #if !HWY_COMPILER_MSVC
652 if (
HWY_LIKELY(keys >= 16 && kMaxKeys >= 16)) {
653 Merge16(
d, st, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, va, vb, vc, vd,
663 StoreU(v0,
d, buf + 0x0 * cols);
664 StoreU(v1,
d, buf + 0x1 * cols);
665 StoreU(v2,
d, buf + 0x2 * cols);
666 StoreU(v3,
d, buf + 0x3 * cols);
667 StoreU(v4,
d, buf + 0x4 * cols);
668 StoreU(v5,
d, buf + 0x5 * cols);
669 StoreU(v6,
d, buf + 0x6 * cols);
670 StoreU(v7,
d, buf + 0x7 * cols);
671 StoreU(v8,
d, buf + 0x8 * cols);
672 StoreU(v9,
d, buf + 0x9 * cols);
673 StoreU(va,
d, buf + 0xa * cols);
674 StoreU(vb,
d, buf + 0xb * cols);
675 StoreU(vc,
d, buf + 0xc * cols);
676 StoreU(vd,
d, buf + 0xd * cols);
677 StoreU(ve,
d, buf + 0xe * cols);
678 StoreU(vf,
d, buf + 0xf * cols);
#define HWY_RESTRICT
Definition: base.h:63
#define HWY_INLINE
Definition: base.h:64
#define HWY_DASSERT(condition)
Definition: base.h:193
#define HWY_LIKELY(expr)
Definition: base.h:68
HWY_INLINE void Sort16(D d, Traits st, V &v0, V &v1, V &v2, V &v3, V &v4, V &v5, V &v6, V &v7, V &v8, V &v9, V &va, V &vb, V &vc, V &vd, V &ve, V &vf)
Definition: sorting_networks-inl.h:76
HWY_INLINE void Merge16(D d, Traits st, V &v0, V &v1, V &v2, V &v3, V &v4, V &v5, V &v6, V &v7, V &v8, V &v9, V &va, V &vb, V &vc, V &vd, V &ve, V &vf)
Definition: sorting_networks-inl.h:455
HWY_INLINE void Merge4(D d, Traits st, V &v0, V &v1, V &v2, V &v3, V &v4, V &v5, V &v6, V &v7, V &v8, V &v9, V &va, V &vb, V &vc, V &vd, V &ve, V &vf)
Definition: sorting_networks-inl.h:232
HWY_INLINE void SortingNetwork(Traits st, T *HWY_RESTRICT buf, size_t cols)
Definition: sorting_networks-inl.h:603
HWY_INLINE void Merge8(D d, Traits st, V &v0, V &v1, V &v2, V &v3, V &v4, V &v5, V &v6, V &v7, V &v8, V &v9, V &va, V &vb, V &vc, V &vd, V &ve, V &vf)
Definition: sorting_networks-inl.h:334
HWY_INLINE void Merge2(D d, Traits st, V &v0, V &v1, V &v2, V &v3, V &v4, V &v5, V &v6, V &v7, V &v8, V &v9, V &va, V &vb, V &vc, V &vd, V &ve, V &vf)
Definition: sorting_networks-inl.h:146
d
Definition: rvv-inl.h:1656
typename detail::CappedTagChecker< T, kLimit >::type CappedTag
Definition: ops/shared-inl.h:173
HWY_API Vec128< T, N > Zero(Simd< T, N, 0 > d)
Definition: arm_neon-inl.h:733
HWY_API void StoreU(const Vec128< uint8_t > v, Full128< uint8_t >, uint8_t *HWY_RESTRICT unaligned)
Definition: arm_neon-inl.h:2224
HWY_API Vec128< uint8_t > LoadU(Full128< uint8_t >, const uint8_t *HWY_RESTRICT unaligned)
Definition: arm_neon-inl.h:2031
HWY_API Vec128< T, N > ConcatUpperLower(Simd< T, N, 0 > d, Vec128< T, N > hi, Vec128< T, N > lo)
Definition: arm_neon-inl.h:3895
HWY_INLINE constexpr HWY_MAYBE_UNUSED size_t MaxLanes(D)
Definition: ops/shared-inl.h:271
const vfloat64m1_t v
Definition: rvv-inl.h:1656
decltype(Zero(D())) Vec
Definition: generic_ops-inl.h:32
Definition: aligned_allocator.h:27
#define HWY_NAMESPACE
Definition: set_macros-inl.h:80
Definition: sorting_networks-inl.h:42
HWY_INLINE Vec< D > SortPairsDistance2(D d, Vec< D > v) const
Definition: sorting_networks-inl.h:45
HWY_INLINE Vec< D > SortPairsReverse8(D d, Vec< D > v) const
Definition: sorting_networks-inl.h:54
HWY_INLINE Vec< D > SortPairsReverse16(D d, Vec< D > v) const
Definition: sorting_networks-inl.h:63
Definition: contrib/sort/shared-inl.h:28
static constexpr size_t kMaxCols
Definition: contrib/sort/shared-inl.h:34
static constexpr size_t kMaxRows
Definition: contrib/sort/shared-inl.h:43