![]() |
ATLAS Offline Software
|
#include "CxxUtils/features.h"#include "CxxUtils/inline_hints.h"#include "CxxUtils/restrict.h"#include "CxxUtils/vec.h"#include <algorithm>#include <memory>#include <numeric>#include <climits>Go to the source code of this file.
Namespaces | |
| namespace | vAlgs |
Functions | |
| template<size_t ISA_WIDTH> | |
| constexpr size_t | vAlgs::alignmentForArray () |
| In the following ISA_WIDTH is the ISA width in bits e.g 128 for SSE 256 for AVX2 etc For the cases of interest/tested doing 4 simd vectors at a time seemed best. | |
| template<size_t ISA_WIDTH, typename T> | |
| constexpr size_t | vAlgs::strideOfNumSIMDVec (size_t NumSIMDVec) |
| returns the STRIDE in units of elements covered by NumSIMDVec simd vectors of type T for the specific ISA For example for a 256 bit, a SIMD vector is 8 floats So 4 simd vectors correspond to 32 elements. | |
| template<size_t STRIDE> | |
| constexpr int | vAlgs::numPadded (const int n) |
| Given a number n returns a new n >= n that is padded to the required STRIDE. | |
| template<size_t ISA_WIDTH, typename T> | |
| ATH_ALWAYS_INLINE T | vAlgs::vFindMinimum (const T *distancesIn, int n) |
| Find the minimum element in the array of distances processing four simd vectors at a time. | |
| template<size_t ISA_WIDTH, typename T> | |
| ATH_ALWAYS_INLINE int | vAlgs::vIdxOfValue (const T value, const T *distancesIn, int n) |
| Find the index of an element in the array of distances processing four simd vectors at a time. | |
| template<int ISA_WIDTH, typename T> | |
| ATH_ALWAYS_INLINE int | vAlgs::vIdxOfMin (const T *distancesIn, int n) |
| Find the index of the minimum in the array of distances. | |