24.04
a64_sgemm_8x6.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017-2021 Arm Limited.
3
*
4
* SPDX-License-Identifier: MIT
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
8
* deal in the Software without restriction, including without limitation the
9
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
* sell 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 all
14
* 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
#pragma once
25
26
#ifdef __aarch64__
27
28
#include "../std_transforms_fixed.hpp"
29
30
namespace
arm_gemm
{
31
32
// Actual kernel implementations
33
void
a64_sgemm_asimd_8x6(
const
float
*,
const
float
*,
float
*,
int
,
int
,
int
);
34
35
// 8x6 SGEMM "strategy" class.
36
//
37
// This describes the characteristics of a family of kernels, in terms of
38
// the required interleave properties and the output block size.
39
//
40
// All kernels in the family must share these characteristics. The actual
41
// kernel to be used can be chosen at runtime, based on the CPU_type
42
// structure.
43
class
cls_a64_sgemm_8x6 {
44
public
:
45
typedef
float
operand_type;
46
typedef
float
result_type;
47
48
typedef
void (*kern_type)(
const
float
*,
const
float
*,
float
*, int, int, int);
49
50
/* Kernel blocking parameters */
51
static
unsigned
int
out_width() {
52
return
6;
53
}
54
55
static
unsigned
int
out_height() {
56
return
8;
57
}
58
59
static
unsigned
int
k_unroll() {
60
return
1;
61
}
62
63
// Use the standard fixed size transforms.
64
StdTransformsFixed<operand_type, result_type, 8, 6, 1> transforms = {};
65
66
kern_type kernel=a64_sgemm_asimd_8x6;
67
68
cls_a64_sgemm_8x6(
const
CPUInfo
*) {
69
70
}
71
};
72
73
}
// namespace arm_gemm
74
75
#endif // __aarch64__
arm_compute::CPUInfo
Definition:
CPPTypes.h:66
arm_gemm
Definition:
barrier.hpp:30
src
core
NEON
kernels
arm_gemm
kernels
a64_sgemm_8x6.hpp
Generated on Mon Apr 29 2024 10:53:56 for Compute Library by
1.8.17