| 568 | |
| 569 | template <template <typename...> class ExecTemplate> |
| 570 | void AddArraySortingKernels(VectorKernel base, VectorFunction* func) { |
| 571 | // null type |
| 572 | base.signature = KernelSignature::Make({null()}, uint64()); |
| 573 | base.exec = ExecTemplate<UInt64Type, NullType>::Exec; |
| 574 | DCHECK_OK(func->AddKernel(base)); |
| 575 | |
| 576 | // bool type |
| 577 | base.signature = KernelSignature::Make({boolean()}, uint64()); |
| 578 | base.exec = ExecTemplate<UInt64Type, BooleanType>::Exec; |
| 579 | DCHECK_OK(func->AddKernel(base)); |
| 580 | |
| 581 | // duration type |
| 582 | base.signature = KernelSignature::Make({Type::DURATION}, uint64()); |
| 583 | base.exec = GenerateNumeric<ExecTemplate, UInt64Type>(*int64()); |
| 584 | DCHECK_OK(func->AddKernel(base)); |
| 585 | |
| 586 | for (const auto& ty : NumericTypes()) { |
| 587 | auto physical_type = GetPhysicalType(ty); |
| 588 | base.signature = KernelSignature::Make({ty}, uint64()); |
| 589 | base.exec = GenerateNumeric<ExecTemplate, UInt64Type>(*physical_type); |
| 590 | DCHECK_OK(func->AddKernel(base)); |
| 591 | } |
| 592 | for (const auto& ty : TemporalTypes()) { |
| 593 | auto physical_type = GetPhysicalType(ty); |
| 594 | base.signature = KernelSignature::Make({ty->id()}, uint64()); |
| 595 | base.exec = GenerateNumeric<ExecTemplate, UInt64Type>(*physical_type); |
| 596 | DCHECK_OK(func->AddKernel(base)); |
| 597 | } |
| 598 | for (const auto id : {Type::DECIMAL128, Type::DECIMAL256}) { |
| 599 | base.signature = KernelSignature::Make({id}, uint64()); |
| 600 | base.exec = GenerateDecimal<ExecTemplate, UInt64Type>(id); |
| 601 | DCHECK_OK(func->AddKernel(base)); |
| 602 | } |
| 603 | for (const auto& ty : BaseBinaryTypes()) { |
| 604 | auto physical_type = GetPhysicalType(ty); |
| 605 | base.signature = KernelSignature::Make({ty}, uint64()); |
| 606 | base.exec = GenerateVarBinaryBase<ExecTemplate, UInt64Type>(*physical_type); |
| 607 | DCHECK_OK(func->AddKernel(base)); |
| 608 | } |
| 609 | base.signature = KernelSignature::Make({Type::FIXED_SIZE_BINARY}, uint64()); |
| 610 | base.exec = ExecTemplate<UInt64Type, FixedSizeBinaryType>::Exec; |
| 611 | DCHECK_OK(func->AddKernel(base)); |
| 612 | } |
| 613 | |
| 614 | template <template <typename...> class ExecTemplate> |
| 615 | void AddDictArraySortingKernels(VectorKernel base, VectorFunction* func) { |
nothing calls this directly
no test coverage detected