13 _lengthOfIntrinsicVector =
static_cast<int>(
AVX512) / (
sizeof(T) * bitsPerByte);
14 _degreesOfFreedomPadded =
static_cast<index_t>(_lengthOfIntrinsicVector) *
static_cast<index_t>(ceilf(degreesOfFreedom /
static_cast<float>(_lengthOfIntrinsicVector)));
15 _numberOfIntrinsicVectors = _degreesOfFreedomPadded / _lengthOfIntrinsicVector;
17 _numberOfPaddedEntries =
static_cast<int>(_degreesOfFreedomPadded - degreesOfFreedom);
19 else if ((alignment ==
AVX2|| alignment ==
AVX512) && properties.CPUSupportsAVX2())
23 _lengthOfIntrinsicVector =
static_cast<int>(
AVX2) / (
sizeof(T) * bitsPerByte);
24 _degreesOfFreedomPadded =
static_cast<index_t>(_lengthOfIntrinsicVector) *
static_cast<index_t>(ceilf(degreesOfFreedom /
static_cast<float>(_lengthOfIntrinsicVector)));
25 _numberOfIntrinsicVectors = _degreesOfFreedomPadded / _lengthOfIntrinsicVector;
27 _numberOfPaddedEntries =
static_cast<int>(_degreesOfFreedomPadded - degreesOfFreedom);
31 _lengthOfIntrinsicVector = 1;
32 _degreesOfFreedomPadded = degreesOfFreedom;
36 _masks.reset(
new IntrinsicMasks(_numberOfIntrinsicVectors, _lengthOfIntrinsicVector, _numberOfPaddedEntries));