35#ifndef _BLAZE_UTIL_TYPETRAITS_ALIGNMENTOF_H_
36#define _BLAZE_UTIL_TYPETRAITS_ALIGNMENTOF_H_
64struct AlignmentOfHelper
68 static constexpr size_t defaultAlignment = std::alignment_of<T>::value;
73 static constexpr size_t value =
74#if BLAZE_AVX512BW_MODE
75 ( IsVectorizable_v<T> )?( 64UL ):( defaultAlignment );
76#elif BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
77 ( IsVectorizable_v<T> )?(
sizeof(T) >= 4UL ? 64UL : 32UL ):( defaultAlignment );
79 ( IsVectorizable_v<T> )?( 32UL ):( defaultAlignment );
81 ( IsVectorizable_v<T> )?( 16UL ):( defaultAlignment );
97struct AlignmentOfHelper<float>
101 static constexpr size_t value =
102#if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
109 std::alignment_of<float>::value;
123struct AlignmentOfHelper<double>
127 static constexpr size_t value =
128#if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
135 std::alignment_of<double>::value;
148template<
typename T >
149struct AlignmentOfHelper<
complex<T> >
153 static constexpr size_t value = AlignmentOfHelper<T>::value;
179template<
typename T >
191template<
typename T >
204template<
typename T >
205struct AlignmentOf< volatile T >
206 :
public IntegralConstant<size_t,AlignmentOfHelper<T>::value>
217template<
typename T >
218struct AlignmentOf< const volatile T >
219 :
public IntegralConstant<size_t,AlignmentOfHelper<T>::value>
238template<
typename T >
Header file for the complex data type.
Header file for the IsVectorizable type trait.
Complex data type of the Blaze library.
constexpr size_t AlignmentOf_v
Auxiliary variable template for the AlignmentOf type trait.
Definition: AlignmentOf.h:239
Evaluation of the required alignment of the given data type.
Definition: AlignmentOf.h:182
Generic wrapper for a compile time constant integral value.
Definition: IntegralConstant.h:74
System settings for the SSE mode.
Header file for basic type definitions.