44 template<
typename TOperand,
typename TResult,
unsigned int height,
unsigned int w
idth,
unsigned int block=1,
bool integrate_sums=false>
48 template<
typename TIn>
49 void PrepareA(TOperand *out,
const TIn *in,
const int stride,
const int y0,
50 const int ymax,
const int k0,
const int kmax, int32_t row_sum_multiplier)
const {
51 Interleave<height, block, VLType::None>(out, in, stride, y0, ymax, k0, kmax, integrate_sums, row_sum_multiplier);
54 template<
typename TIn>
55 void PrepareA_indirect(TOperand *out,
const TIn *
const *
const *ptr,
size_t stringlen,
size_t rounded_stringlen,
const int y0,
56 const int ymax,
const int k0,
const int kmax, int32_t row_sum_multiplier) {
57 IndirectInterleave<height, block, VLType::None>(out, ptr, stringlen, rounded_stringlen, y0, ymax, k0, kmax, integrate_sums, row_sum_multiplier);
60 template<
typename TIn>
62 const int y0,
const int ymax,
const int k0,
const int kmax, int32_t row_sum_multiplier) {
63 ConvolutionInterleave<height, block, VLType::None>(out, ptr, stride, conv, rounded_stringlen, y0, ymax, k0, kmax, integrate_sums, row_sum_multiplier);
66 template<
typename TIn>
67 void PrepareB(TOperand *out,
const TIn *in,
const int stride,
const int x0,
68 const int xmax,
const int k0,
const int kmax)
const {
69 Transform<width, block, true>(out, in, stride, x0, xmax, k0, kmax);
72 template<
typename TOut>
73 void Merge(TOut *out,
const TResult *in,
int stride,
int y0,
int ymax,
int x0,
int xmax,
const TOut *
bias,
const Activation act,
bool append)
const {
74 MergeResults<width, height>(out, in, stride, y0, ymax, x0, xmax,
bias, act, append);