Coverage Report

Created: 2026-07-12 07:18

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/Simd/src/Simd/SimdSynetConvolution32fCommon.h
Line
Count
Source
1
/*
2
* Simd Library (http://ermig1979.github.io/Simd).
3
*
4
* Copyright (c) 2011-2024 Yermalayeu Ihar.
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to deal
8
* in the Software without restriction, including without limitation the rights
9
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
* copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in
14
* all copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
* SOFTWARE.
23
*/
24
#ifndef __SimdSynetConvolution32fCommon_h__
25
#define __SimdSynetConvolution32fCommon_h__
26
27
#include "Simd/SimdSynetActivation.h"
28
29
namespace Simd
30
{
31
    enum TermType
32
    {
33
        TermLast,
34
        TermInterim,
35
        TermSize
36
    };
37
38
    namespace Base
39
    {
40
        template<SimdConvolutionActivationType type> void DepthwiseConvolution(const float* src, const SimdConvolutionParameters& p,
41
            size_t maC, size_t yBeg, size_t yEnd, const size_t bufH[2], const float* weight, const float* bias, const float* params, float* dst, int first)
42
0
        {
43
0
            assert(p.group == p.srcC && p.group == p.dstC);
44
0
            size_t srcH = p.srcH, srcW = p.srcW, srcC = p.srcC, dstW = p.dstW;
45
0
            size_t kernelY = p.kernelY, kernelX = p.kernelX, strideY = p.strideY, strideX = p.strideX, padY = p.padY, padX = p.padX;
46
0
            for (size_t dy = yBeg; dy < yEnd; ++dy)
47
0
            {
48
0
                for (size_t dx = 0; dx < dstW; ++dx)
49
0
                {
50
0
                    for (size_t c = 0; c < srcC; ++c)
51
0
                    {
52
0
                        float sum = bias ? bias[c] : 0;
53
0
                        for (size_t ky = 0; ky < kernelY; ++ky)
54
0
                        {
55
0
                            size_t sy = dy * strideY + ky - padY;
56
0
                            if (sy < srcH)
57
0
                            {
58
0
                                for (size_t kx = 0; kx < kernelX; ++kx)
59
0
                                {
60
0
                                    size_t sx = dx * strideX + kx - padX;
61
0
                                    if (sx < srcW)
62
0
                                    {
63
0
                                        const float* pw = weight + (ky * kernelX + kx) * srcC + c;
64
0
                                        const float* ps = src + (sy * srcW + sx) * srcC + c;
65
0
                                        sum += ps[0] * pw[0];
66
0
                                    }
67
0
                                }
68
0
                            }
69
0
                        }
70
0
                        dst[c] = Activate<type>(sum, params, c);
71
0
                    }
72
0
                    dst += srcC;
73
0
                }
74
0
            }
75
0
        }
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)0>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)1>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)2>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)3>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)4>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)5>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)6>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)7>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)8>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)9>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
Unexecuted instantiation: void Simd::Base::DepthwiseConvolution<(SimdConvolutionActivationType)10>(float const*, SimdConvolutionParameters const&, unsigned long, unsigned long, unsigned long, unsigned long const*, float const*, float const*, float const*, float*, int)
76
    }
77
78
#ifdef SIMD_SSE41_ENABLE    
79
    namespace Sse41
80
    {
81
        template <TermType term> struct Term
82
        {
83
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m128 value, const __m128 * bias, const __m128 * params);
84
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m128 value, const __m128 * bias, const __m128 * params, size_t tail);
85
        };
86
87
        template <> struct Term<TermLast>
88
        {
89
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m128 value, const __m128 * bias, const __m128 * params)
90
0
            {
91
0
                _mm_storeu_ps(ptr, Activate<type>(_mm_add_ps(value, bias[index]), params, index));
92
0
            }
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
93
94
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m128 value, const __m128 * bias, const __m128 * params, size_t tail)
95
0
            {
96
0
                float tmp[F];
97
0
                _mm_storeu_ps(tmp, Activate<type>(_mm_add_ps(value, bias[index]), params, index));
98
0
                for (size_t i = 0; i < tail; ++i)
99
0
                    ptr[i] = tmp[i];
100
0
            }
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
101
        };
102
103
        template <> struct Term<TermInterim>
104
        {
105
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m128 value, const __m128 * bias, const __m128 * params)
106
0
            {
107
0
                _mm_storeu_ps(ptr, value);
108
0
            }
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
109
110
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m128 value, const __m128 * bias, const __m128 * params, size_t tail)
111
0
            {
112
0
                float tmp[F];
113
0
                _mm_storeu_ps(tmp, value);
114
0
                for (size_t i = 0; i < tail; ++i)
115
0
                    ptr[i] = tmp[i];
116
0
            }
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 1>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 2>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
117
        };
118
119
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save1(float* dst, __m128 val0, const __m128* bias, const __m128* params)
120
0
        {
121
0
            Term<term>::template Save<type, 0>(dst, val0, bias, params);
122
0
        }
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*)
123
124
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save1(float* dst, __m128 val0, const __m128* bias, const __m128* params, size_t tail)
125
0
        {
126
0
            Term<term>::template Save<type, 0>(dst, val0, bias, params, tail);
127
0
        }
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
128
129
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save2(float* dst, __m128 val0, __m128 val1, const __m128* bias, const __m128* params)
130
0
        {
131
0
            Term<term>::template Save<type, 0>(dst + 0, val0, bias, params);
132
0
            Term<term>::template Save<type, 1>(dst + F, val1, bias, params);
133
0
        }
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
134
135
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save2(float* dst, __m128 val0, __m128 val1, const __m128* bias, const __m128* params, size_t tail)
136
0
        {
137
0
            Term<term>::template Save<type, 0>(dst + 0, val0, bias, params);
138
0
            Term<term>::template Save<type, 1>(dst + F, val1, bias, params, tail);
139
0
        }
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
140
141
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save3(float* dst, __m128 val0, __m128 val1, __m128 val2, const __m128* bias, const __m128* params)
142
0
        {
143
0
            Term<term>::template Save<type, 0>(dst + 0 * F, val0, bias, params);
144
0
            Term<term>::template Save<type, 1>(dst + 1 * F, val1, bias, params);
145
0
            Term<term>::template Save<type, 2>(dst + 2 * F, val2, bias, params);
146
0
        }
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*)
147
148
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save3(float* dst, __m128 val0, __m128 val1, __m128 val2, const __m128* bias, const __m128* params, size_t tail)
149
0
        {
150
0
            Term<term>::template Save<type, 0>(dst + 0 * F, val0, bias, params);
151
0
            Term<term>::template Save<type, 1>(dst + 1 * F, val1, bias, params);
152
0
            Term<term>::template Save<type, 2>(dst + 2 * F, val2, bias, params, tail);
153
0
        }
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
Unexecuted instantiation: void Simd::Sse41::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(4), float __vector(4), float __vector(4), float __vector(4) const*, float __vector(4) const*, unsigned long)
154
    }
155
#endif
156
157
#ifdef SIMD_AVX2_ENABLE    
158
    namespace Avx2
159
    {
160
        template <TermType term> struct Term
161
        {
162
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m256 value, const __m256 * bias, const __m256 * params);
163
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m256 value, const __m256 * bias, const __m256 * params, size_t tail);
164
        };
165
166
        template <> struct Term<TermLast>
167
        {
168
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m256 value, const __m256 * bias, const __m256 * params)
169
0
            {
170
0
                _mm256_storeu_ps(ptr, Activate<type>(_mm256_add_ps(value, bias[index]), params, index));
171
0
            }
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
172
173
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m256 value, const __m256 * bias, const __m256 * params, size_t tail)
174
0
            {
175
0
                float tmp[F];
176
0
                _mm256_storeu_ps(tmp, Activate<type>(_mm256_add_ps(value, bias[index]), params, index));
177
0
                for (size_t i = 0; i < tail; ++i)
178
0
                    ptr[i] = tmp[i];
179
0
            }
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
180
        };
181
182
        template <> struct Term<TermInterim>
183
        {
184
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m256 value, const __m256 * bias, const __m256 * params)
185
0
            {
186
0
                _mm256_storeu_ps(ptr, value);
187
0
            }
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
188
189
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m256 value, const __m256 * bias, const __m256 * params, size_t tail)
190
0
            {
191
0
                float tmp[F];
192
0
                _mm256_storeu_ps(tmp, value);
193
0
                for (size_t i = 0; i < tail; ++i)
194
0
                    ptr[i] = tmp[i];
195
0
            }
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 1>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 2>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
196
        };
197
198
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save1(float* dst, __m256 val0, const __m256* bias, const __m256* params)
199
0
        {
200
0
            Term<term>::template Save<type, 0>(dst, val0, bias, params);
201
0
        }
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*)
202
203
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save1(float* dst, __m256 val0, const __m256* bias, const __m256* params, size_t tail)
204
0
        {
205
0
            Term<term>::template Save<type, 0>(dst, val0, bias, params, tail);
206
0
        }
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
207
208
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save2(float* dst, __m256 val0, __m256 val1, const __m256* bias, const __m256* params)
209
0
        {
210
0
            Term<term>::template Save<type, 0>(dst + 0, val0, bias, params);
211
0
            Term<term>::template Save<type, 1>(dst + F, val1, bias, params);
212
0
        }
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
213
214
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save2(float* dst, __m256 val0, __m256 val1, const __m256* bias, const __m256* params, size_t tail)
215
0
        {
216
0
            Term<term>::template Save<type, 0>(dst + 0, val0, bias, params);
217
0
            Term<term>::template Save<type, 1>(dst + F, val1, bias, params, tail);
218
0
        }
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
219
220
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save3(float* dst, __m256 val0, __m256 val1, __m256 val2, const __m256* bias, const __m256* params)
221
0
        {
222
0
            Term<term>::template Save<type, 0>(dst + 0 * F, val0, bias, params);
223
0
            Term<term>::template Save<type, 1>(dst + 1 * F, val1, bias, params);
224
0
            Term<term>::template Save<type, 2>(dst + 2 * F, val2, bias, params);
225
0
        }
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*)
226
227
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save3(float* dst, __m256 val0, __m256 val1, __m256 val2, const __m256* bias, const __m256* params, size_t tail)
228
0
        {
229
0
            Term<term>::template Save<type, 0>(dst + 0 * F, val0, bias, params);
230
0
            Term<term>::template Save<type, 1>(dst + 1 * F, val1, bias, params);
231
0
            Term<term>::template Save<type, 2>(dst + 2 * F, val2, bias, params, tail);
232
0
        }
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
Unexecuted instantiation: void Simd::Avx2::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(8), float __vector(8), float __vector(8), float __vector(8) const*, float __vector(8) const*, unsigned long)
233
    }
234
#endif
235
236
#ifdef SIMD_AVX512BW_ENABLE    
237
    namespace Avx512bw
238
    {
239
        template <TermType term> struct Term
240
        {
241
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m512 value, const __m512 * bias, const __m512 * params, __mmask16 tail = __mmask16(-1));
242
        };
243
244
        template <> struct Term<TermLast>
245
        {
246
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m512 value, const __m512 * bias, const __m512 * params, __mmask16 tail = __mmask16(-1))
247
0
            {
248
0
                _mm512_mask_storeu_ps(ptr, tail, Activate<type>(_mm512_add_ps(value, bias[index]), params, index));
249
0
            }
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 1>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 1>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 1>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 1>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 1>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 1>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 1>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 1>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)3, 2>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)4, 2>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)5, 2>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)6, 2>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)7, 2>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)8, 2>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)9, 2>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)0>::Save<(SimdConvolutionActivationType)10, 2>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
250
        };
251
252
        template <> struct Term<TermInterim>
253
        {
254
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, __m512 value, const __m512 * bias, const __m512 * params, __mmask16 tail = __mmask16(-1))
255
0
            {
256
0
                _mm512_mask_storeu_ps(ptr, tail, value);
257
0
            }
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 1>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
Unexecuted instantiation: void Simd::Avx512bw::Term<(Simd::TermType)1>::Save<(SimdConvolutionActivationType)0, 2>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short)
258
        };
259
260
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save1(float* dst, __m512 val0, const __m512* bias, const __m512* params, const __mmask16 * tails)
261
0
        {
262
0
            Term<term>::template Save<type, 0>(dst, val0, bias, params, tails[0]);
263
0
        }
Unexecuted instantiation: void Simd::Avx512bw::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save1<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save1<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
264
265
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save2(float* dst, __m512 val0, __m512 val1, const __m512* bias, const __m512* params, const __mmask16* tails)
266
0
        {
267
0
            Term<term>::template Save<type, 0>(dst + 0, val0, bias, params);
268
0
            Term<term>::template Save<type, 1>(dst + F, val1, bias, params, tails[1]);
269
0
        }
Unexecuted instantiation: void Simd::Avx512bw::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save2<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save2<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
270
271
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save3(float* dst, __m512 val0, __m512 val1, __m512 val2, const __m512* bias, const __m512* params, const __mmask16* tails)
272
0
        {
273
0
            Term<term>::template Save<type, 0>(dst + 0 * F, val0, bias, params);
274
0
            Term<term>::template Save<type, 1>(dst + 1 * F, val1, bias, params);
275
0
            Term<term>::template Save<type, 2>(dst + 2 * F, val2, bias, params, tails[2]);
276
0
        }
Unexecuted instantiation: void Simd::Avx512bw::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)3>(float*, float __vector(16), float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save3<(Simd::TermType)1, (SimdConvolutionActivationType)0>(float*, float __vector(16), float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)4>(float*, float __vector(16), float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)5>(float*, float __vector(16), float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)6>(float*, float __vector(16), float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)7>(float*, float __vector(16), float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)8>(float*, float __vector(16), float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)9>(float*, float __vector(16), float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
Unexecuted instantiation: void Simd::Avx512bw::Save3<(Simd::TermType)0, (SimdConvolutionActivationType)10>(float*, float __vector(16), float __vector(16), float __vector(16), float __vector(16) const*, float __vector(16) const*, unsigned short const*)
277
    }
278
#endif
279
280
#if defined(SIMD_AMXBF16_ENABLE) || (defined(SIMD_AVX512BW_ENABLE) && defined(SIMD_AMX_EMULATE)) 
281
    namespace AmxBf16
282
    {
283
284
    }
285
#endif
286
287
#ifdef SIMD_NEON_ENABLE    
288
    namespace Neon
289
    {
290
        template<::SimdConvolutionActivationType type> SIMD_INLINE float32x4_t Activate(float32x4_t value, const float* params, size_t offset);
291
292
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationIdentity>(float32x4_t value, const float* params, size_t offset)
293
        {
294
            return value;
295
        }
296
297
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationRelu>(float32x4_t value, const float* params, size_t offset)
298
        {
299
            return vmaxq_f32(vdupq_n_f32(0.0f), value);
300
        }
301
302
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationLeakyRelu>(float32x4_t value, const float* params, size_t offset)
303
        {
304
            return vmlaq_f32(vmaxq_f32(vdupq_n_f32(0.0f), value), vld1q_dup_f32(params + 0), vminq_f32(vdupq_n_f32(0.0f), value));
305
        }
306
307
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationRestrictRange>(float32x4_t value, const float* params, size_t offset)
308
        {
309
            return vminq_f32(vmaxq_f32(vld1q_dup_f32(params + 0), value), vld1q_dup_f32(params + 1));
310
        }
311
312
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationPrelu>(float32x4_t value, const float* params, size_t offset)
313
        {
314
            return vmlaq_f32(vmaxq_f32(vdupq_n_f32(0.0f), value), Load<false>(params + offset), vminq_f32(vdupq_n_f32(0.0f), value));
315
        }
316
317
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationElu>(float32x4_t value, const float* params, size_t offset)
318
        {
319
            return Neon::Elu(value, vld1q_dup_f32(params + 0));
320
        }
321
322
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationHswish>(float32x4_t value, const float* params, size_t offset)
323
        {
324
            return Neon::SynetHswish32f(value, vld1q_dup_f32(params + 0), vld1q_dup_f32(params + 1));
325
        }
326
327
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationMish>(float32x4_t value, const float* params, size_t offset)
328
        {
329
            return Neon::Mish<1>(value, vld1q_dup_f32(params + 0));
330
        }
331
332
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationHardSigmoid>(float32x4_t value, const float* params, size_t offset)
333
        {
334
            return Neon::SynetHardSigmoid32f(value, vld1q_dup_f32(params + 0), vld1q_dup_f32(params + 1));
335
        }
336
337
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationSwish>(float32x4_t value, const float* params, size_t offset)
338
        {
339
            return Neon::Swish<1>(value, vld1q_dup_f32(params + 0));
340
        }
341
342
        template<> SIMD_INLINE float32x4_t Activate<::SimdConvolutionActivationGelu>(float32x4_t value, const float* params, size_t offset)
343
        {
344
            return Neon::Gelu<1>(value);
345
        }
346
347
        //-------------------------------------------------------------------------------------------------
348
349
        template <TermType term> struct Term
350
        {
351
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, float32x4_t value, const float32x4_t * bias, const float32x4_t * params);
352
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, float32x4_t value, const float32x4_t * bias, const float32x4_t * params, size_t tail);
353
        };
354
355
        template <> struct Term<TermLast>
356
        {
357
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, float32x4_t value, const float32x4_t * bias, const float32x4_t * params)
358
            {
359
                Store<false>(ptr, Activate<type>(vaddq_f32(value, bias[index]), params, index));
360
            }
361
362
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, float32x4_t value, const float32x4_t * bias, const float32x4_t * params, size_t tail)
363
            {
364
                float tmp[F];
365
                Store<false>(tmp, Activate<type>(vaddq_f32(value, bias[index]), params, index));
366
                for (size_t i = 0; i < tail; ++i)
367
                    ptr[i] = tmp[i];
368
            }
369
        };
370
371
        template <> struct Term<TermInterim>
372
        {
373
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, float32x4_t value, const float32x4_t * bias, const float32x4_t * params)
374
            {
375
                Store<false>(ptr, value);
376
            }
377
378
            template<SimdConvolutionActivationType type, int index> static SIMD_INLINE void Save(float * ptr, float32x4_t value, const float32x4_t * bias, const float32x4_t * params, size_t tail)
379
            {
380
                float tmp[F];
381
                Store<false>(tmp, value);
382
                for (size_t i = 0; i < tail; ++i)
383
                    ptr[i] = tmp[i];
384
            }
385
        };
386
387
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save1(float* dst, float32x4_t val0, const float32x4_t* bias, const float32x4_t* params)
388
        {
389
            Term<term>::template Save<type, 0>(dst, val0, bias, params);
390
        }
391
392
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save1(float* dst, float32x4_t val0, const float32x4_t* bias, const float32x4_t* params, size_t tail)
393
        {
394
            Term<term>::template Save<type, 0>(dst, val0, bias, params, tail);
395
        }
396
397
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save2(float* dst, float32x4_t val0, float32x4_t val1, const float32x4_t* bias, const float32x4_t* params)
398
        {
399
            Term<term>::template Save<type, 0>(dst + 0, val0, bias, params);
400
            Term<term>::template Save<type, 1>(dst + F, val1, bias, params);
401
        }
402
403
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save2(float* dst, float32x4_t val0, float32x4_t val1, const float32x4_t* bias, const float32x4_t* params, size_t tail)
404
        {
405
            Term<term>::template Save<type, 0>(dst + 0, val0, bias, params);
406
            Term<term>::template Save<type, 1>(dst + F, val1, bias, params, tail);
407
        }
408
409
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save3(float* dst, float32x4_t val0, float32x4_t val1, float32x4_t val2, const float32x4_t* bias, const float32x4_t* params)
410
        {
411
            Term<term>::template Save<type, 0>(dst + 0 * F, val0, bias, params);
412
            Term<term>::template Save<type, 1>(dst + 1 * F, val1, bias, params);
413
            Term<term>::template Save<type, 2>(dst + 2 * F, val2, bias, params);
414
        }
415
416
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save3(float* dst, float32x4_t val0, float32x4_t val1, float32x4_t val2, const float32x4_t* bias, const float32x4_t* params, size_t tail)
417
        {
418
            Term<term>::template Save<type, 0>(dst + 0 * F, val0, bias, params);
419
            Term<term>::template Save<type, 1>(dst + 1 * F, val1, bias, params);
420
            Term<term>::template Save<type, 2>(dst + 2 * F, val2, bias, params, tail);
421
        }
422
423
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save4(float* dst, float32x4_t val0, float32x4_t val1, float32x4_t val2, float32x4_t val3, const float32x4_t* bias, const float32x4_t* params)
424
        {
425
            Term<term>::template Save<type, 0>(dst + 0 * F, val0, bias, params);
426
            Term<term>::template Save<type, 1>(dst + 1 * F, val1, bias, params);
427
            Term<term>::template Save<type, 2>(dst + 2 * F, val2, bias, params);
428
            Term<term>::template Save<type, 3>(dst + 3 * F, val3, bias, params);
429
        }
430
431
        template<TermType term, SimdConvolutionActivationType type> SIMD_INLINE void Save4(float* dst, float32x4_t val0, float32x4_t val1, float32x4_t val2, float32x4_t val3, const float32x4_t* bias, const float32x4_t* params, size_t tail)
432
        {
433
            Term<term>::template Save<type, 0>(dst + 0 * F, val0, bias, params);
434
            Term<term>::template Save<type, 1>(dst + 1 * F, val1, bias, params);
435
            Term<term>::template Save<type, 2>(dst + 2 * F, val2, bias, params);
436
            Term<term>::template Save<type, 3>(dst + 3 * F, val3, bias, params, tail);
437
        }
438
    }
439
#endif
440
}
441
#endif