39 #include <type_traits>
46 #ifdef ARM_COMPUTE_ENABLE_SVE
47 #ifdef ARM_COMPUTE_ENABLE_SME
57 template void IndirectInterleave<2, 1, VLType::SME>(
float *,
const float *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
58 template void ConvolutionInterleave<2, 1, VLType::SME>(
float *,
const float *,
size_t,
const convolver<float> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
59 template void Interleave<2, 1, VLType::SME>(
float *,
const float *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
61 template void IndirectInterleave<1, 1, VLType::SME>(
float *,
const float *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
62 template void ConvolutionInterleave<1, 1, VLType::SME>(
float *,
const float *,
size_t,
const convolver<float> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
63 template void Interleave<1, 1, VLType::SME>(
float *,
const float *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
65 template void IndirectInterleave<4, 1, VLType::SME>(
float *,
const float *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
66 template void ConvolutionInterleave<4, 1, VLType::SME>(
float *,
const float *,
size_t,
const convolver<float> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
67 template void Interleave<4, 1, VLType::SME>(
float *,
const float *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
70 template void IndirectInterleave<2, 2, VLType::SME>(
bfloat16 *,
const bfloat16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
71 template void ConvolutionInterleave<2, 2, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
const convolver<bfloat16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
72 template void Interleave<2, 2, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
74 template void IndirectInterleave<1, 2, VLType::SME>(
bfloat16 *,
const bfloat16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
75 template void ConvolutionInterleave<1, 2, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
const convolver<bfloat16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
76 template void Interleave<1, 2, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
78 template void IndirectInterleave<4, 2, VLType::SME>(
bfloat16 *,
const bfloat16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
79 template void ConvolutionInterleave<4, 2, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
const convolver<bfloat16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
80 template void Interleave<4, 2, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
83 template void IndirectInterleave<2, 1, VLType::SME>(
bfloat16 *,
const bfloat16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
84 template void ConvolutionInterleave<2, 1, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
const convolver<bfloat16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
85 template void Interleave<2, 1, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
87 template void IndirectInterleave<1, 1, VLType::SME>(
bfloat16 *,
const bfloat16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
88 template void ConvolutionInterleave<1, 1, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
const convolver<bfloat16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
89 template void Interleave<1, 1, VLType::SME>(
bfloat16 *,
const bfloat16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
92 template void IndirectInterleave<2, 1, VLType::SME>(__fp16 *,
const __fp16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
93 template void ConvolutionInterleave<2, 1, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
const convolver<__fp16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
94 template void Interleave<2, 1, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
96 template void IndirectInterleave<1, 1, VLType::SME>(__fp16 *,
const __fp16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
97 template void ConvolutionInterleave<1, 1, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
const convolver<__fp16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
98 template void Interleave<1, 1, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
101 template void IndirectInterleave<2, 2, VLType::SME>(__fp16 *,
const __fp16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
102 template void ConvolutionInterleave<2, 2, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
const convolver<__fp16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
103 template void Interleave<2, 2, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
105 template void IndirectInterleave<1, 2, VLType::SME>(__fp16 *,
const __fp16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
106 template void ConvolutionInterleave<1, 2, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
const convolver<__fp16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
107 template void Interleave<1, 2, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
109 template void IndirectInterleave<4, 2, VLType::SME>(__fp16 *,
const __fp16 *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
110 template void ConvolutionInterleave<4, 2, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
const convolver<__fp16> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
111 template void Interleave<4, 2, VLType::SME>(__fp16 *,
const __fp16 *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
114 template void IndirectInterleave<1, 2, VLType::SME>(
bfloat16 *,
const float *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
115 template void ConvolutionInterleave<1, 2, VLType::SME>(
bfloat16 *,
const float *,
size_t,
const convolver<float> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
116 template void Interleave<1, 2, VLType::SME>(
bfloat16 *,
const float *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
118 template void IndirectInterleave<2, 2, VLType::SME>(
bfloat16 *,
const float *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
119 template void ConvolutionInterleave<2, 2, VLType::SME>(
bfloat16 *,
const float *,
size_t,
const convolver<float> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
120 template void Interleave<2, 2, VLType::SME>(
bfloat16 *,
const float *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
122 template void IndirectInterleave<4, 2, VLType::SME>(
bfloat16 *,
const float *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
123 template void ConvolutionInterleave<4, 2, VLType::SME>(
bfloat16 *,
const float *,
size_t,
const convolver<float> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
124 template void Interleave<4, 2, VLType::SME>(
bfloat16 *,
const float *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
127 template void IndirectInterleave<1, 4, VLType::SME>(int8_t *,
const int8_t *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
128 template void ConvolutionInterleave<1, 4, VLType::SME>(int8_t *,
const int8_t *,
size_t,
const convolver<int8_t> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
129 template void Interleave<1, 4, VLType::SME>(int8_t *,
const int8_t *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
131 template void IndirectInterleave<2, 4, VLType::SME>(int8_t *,
const int8_t *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
132 template void ConvolutionInterleave<2, 4, VLType::SME>(int8_t *,
const int8_t *,
size_t,
const convolver<int8_t> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
133 template void Interleave<2, 4, VLType::SME>(int8_t *,
const int8_t *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
135 template void IndirectInterleave<4, 4, VLType::SME>(int8_t *,
const int8_t *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
136 template void ConvolutionInterleave<4, 4, VLType::SME>(int8_t *,
const int8_t *,
size_t,
const convolver<int8_t> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
137 template void Interleave<4, 4, VLType::SME>(int8_t *,
const int8_t *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
140 template void IndirectInterleave<1, 4, VLType::SME>(uint8_t *,
const uint8_t *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
141 template void ConvolutionInterleave<1, 4, VLType::SME>(uint8_t *,
const uint8_t *,
size_t,
const convolver<uint8_t> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
142 template void Interleave<1, 4, VLType::SME>(uint8_t *,
const uint8_t *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
144 template void IndirectInterleave<2, 4, VLType::SME>(uint8_t *,
const uint8_t *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
145 template void ConvolutionInterleave<2, 4, VLType::SME>(uint8_t *,
const uint8_t *,
size_t,
const convolver<uint8_t> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
146 template void Interleave<2, 4, VLType::SME>(uint8_t *,
const uint8_t *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
148 template void IndirectInterleave<4, 4, VLType::SME>(uint8_t *,
const uint8_t *
const *
const *,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
149 template void ConvolutionInterleave<4, 4, VLType::SME>(uint8_t *,
const uint8_t *,
size_t,
const convolver<uint8_t> &,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
150 template void Interleave<4, 4, VLType::SME>(uint8_t *,
const uint8_t *,
size_t,
unsigned int,
unsigned int,
unsigned int,
unsigned int,
bool, int32_t);
154 #endif // ARM_COMPUTE_ENABLE_SME
155 #endif // ARM_COMPUTE_ENABLE_SVE