Source File
min_max_amd64.go
Belonging Package
github.com/apache/arrow-go/v18/internal/utils
// Licensed to the Apache Software Foundation (ASF) under one// or more contributor license agreements. See the NOTICE file// distributed with this work for additional information// regarding copyright ownership. The ASF licenses this file// to you under the Apache License, Version 2.0 (the// "License"); you may not use this file except in compliance// with the License. You may obtain a copy of the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.//go:build !noasmpackage utilsimportfunc init() {// if the CPU supports AVX2 or SSE4 then let's use those to benefit from SIMD// to accelerate the performance for finding the min and max for an integral slice.// otherwise fallback to a pure go implementation if the cpu doesn't have these features.if cpu.X86.HasAVX2 {minmaxFuncs.i8 = int8MaxMinAVX2minmaxFuncs.ui8 = uint8MaxMinAVX2minmaxFuncs.i16 = int16MaxMinAVX2minmaxFuncs.ui16 = uint16MaxMinAVX2minmaxFuncs.i32 = int32MaxMinAVX2minmaxFuncs.ui32 = uint32MaxMinAVX2minmaxFuncs.i64 = int64MaxMinAVX2minmaxFuncs.ui64 = uint64MaxMinAVX2} else if cpu.X86.HasSSE42 {minmaxFuncs.i8 = int8MaxMinSSE4minmaxFuncs.ui8 = uint8MaxMinSSE4minmaxFuncs.i16 = int16MaxMinSSE4minmaxFuncs.ui16 = uint16MaxMinSSE4minmaxFuncs.i32 = int32MaxMinSSE4minmaxFuncs.ui32 = uint32MaxMinSSE4minmaxFuncs.i64 = int64MaxMinSSE4minmaxFuncs.ui64 = uint64MaxMinSSE4} else {minmaxFuncs.i8 = int8MinMaxminmaxFuncs.ui8 = uint8MinMaxminmaxFuncs.i16 = int16MinMaxminmaxFuncs.ui16 = uint16MinMaxminmaxFuncs.i32 = int32MinMaxminmaxFuncs.ui32 = uint32MinMaxminmaxFuncs.i64 = int64MinMaxminmaxFuncs.ui64 = uint64MinMax}}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |