52 using CharInstanceType =
typename Traits<char>::InstanceType;
53 using SignedCharInstanceType =
typename Traits<signed char>::InstanceType;
54 using UnsignedCharInstanceType =
typename Traits<unsigned char>::InstanceType;
55 using ShortInstanceType =
typename Traits<short>::InstanceType;
56 using UnsignedShortInstanceType =
typename Traits<unsigned short>::InstanceType;
57 using IntInstanceType =
typename Traits<int>::InstanceType;
58 using UnsignedIntInstanceType =
typename Traits<unsigned int>::InstanceType;
59 using LongInstanceType =
typename Traits<long>::InstanceType;
60 using UnsignedLongInstanceType =
typename Traits<unsigned long>::InstanceType;
61 using LongLongInstanceType =
typename Traits<long long>::InstanceType;
62 using UnsignedLongLongInstanceType =
typename Traits<unsigned long long>::InstanceType;
63 using FloatInstanceType =
typename Traits<float>::InstanceType;
64 using DoubleInstanceType =
typename Traits<double>::InstanceType;
65 using LongDoubleInstanceType =
typename Traits<long double>::InstanceType;
66 using BFloat16InstanceType =
typename Traits<BFloat16>::InstanceType;
67 using Float16InstanceType =
typename Traits<Float16>::InstanceType;
71 CharInstanceType& instance(
char*) {
return m_char; }
72 SignedCharInstanceType& instance(
signed char*) {
return m_signed_char; }
73 UnsignedCharInstanceType& instance(
unsigned char*) {
return m_unsigned_char; }
74 ShortInstanceType& instance(
short*) {
return m_short; }
75 UnsignedShortInstanceType& instance(
unsigned short*) {
return m_unsigned_short; }
76 IntInstanceType& instance(
int*) {
return m_int; }
77 UnsignedIntInstanceType& instance(
unsigned int*) {
return m_unsigned_int; }
78 LongInstanceType& instance(
long*) {
return m_long; }
79 UnsignedLongInstanceType& instance(
unsigned long*) {
return m_unsigned_long; }
80 LongLongInstanceType& instance(
long long*) {
return m_long_long; }
81 UnsignedLongLongInstanceType& instance(
unsigned long long*) {
return m_unsigned_long_long; }
82 FloatInstanceType& instance(
float*) {
return m_float; }
83 DoubleInstanceType& instance(
double*) {
return m_double; }
84 LongDoubleInstanceType& instance(
long double*) {
return m_long_double; }
85 BFloat16InstanceType& instance(
BFloat16*) {
return m_bfloat16; }
86 Float16InstanceType& instance(
Float16*) {
return m_float16; }
91 template <
typename Lambda>
96 func(m_unsigned_char);
98 func(m_unsigned_short);
100 func(m_unsigned_int);
102 func(m_unsigned_long);
104 func(m_unsigned_long_long);
114 CharInstanceType m_char = {};
115 SignedCharInstanceType m_signed_char = {};
116 UnsignedCharInstanceType m_unsigned_char = {};
117 ShortInstanceType m_short = {};
118 UnsignedShortInstanceType m_unsigned_short = {};
119 IntInstanceType m_int = {};
120 UnsignedIntInstanceType m_unsigned_int = {};
121 LongInstanceType m_long = {};
122 UnsignedLongInstanceType m_unsigned_long = {};
123 LongLongInstanceType m_long_long = {};
124 UnsignedLongLongInstanceType m_unsigned_long_long = {};
125 FloatInstanceType m_float = {};
126 DoubleInstanceType m_double = {};
127 LongDoubleInstanceType m_long_double = {};
128 BFloat16InstanceType m_bfloat16 = {};
129 Float16InstanceType m_float16 = {};