mat proc kernel std tamplate is ok, merging old decl
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#if SN_IS_ARCH(SN_ARCH_X86_64)
|
||||
|
||||
#include "sn_intrinsic.h"
|
||||
#include "sn_intrinsic.std.h"
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// SIMDID layout helpers (see SIMDID.x86.md)
|
||||
@@ -57,39 +58,39 @@
|
||||
#define SIMDID_MAIN_LVL_AVX10 0x05u
|
||||
|
||||
#ifndef SIMDID_AVX512_BASE
|
||||
#define SIMDID_AVX512_FP16 U << 13) relative bit 13 within [31..16] */
|
||||
#define SIMDID_AVX512_BF16 U << 12)
|
||||
#define SIMDID_AVX512_VNNI U << 11)
|
||||
#define SIMDID_AVX512_VBMI2 U << 10)
|
||||
#define SIMDID_AVX512_VBMI U << 9)
|
||||
#define SIMDID_AVX512_AI_RESERVED U << 8)
|
||||
#define SIMDID_AVX512_BASE U << 4)
|
||||
#define SIMDID_AVX512_IMPL_SHIFT
|
||||
#define SIMDID_AVX512_IMPL_MASK x3U << SIMDID_AVX512_IMPL_SHIFT)
|
||||
#define SIMDID_AVX512_IMPL_UNKNOWN x0U << SIMDID_AVX512_IMPL_SHIFT)
|
||||
#define SIMDID_AVX512_IMPL_DUAL x1U << SIMDID_AVX512_IMPL_SHIFT)
|
||||
#define SIMDID_AVX512_IMPL_NATIVE x2U << SIMDID_AVX512_IMPL_SHIFT)
|
||||
#define SIMDID_AVX512_FP16 (1U << 13) /* relative bit 13 within [31..16] */
|
||||
#define SIMDID_AVX512_BF16 (1U << 12)
|
||||
#define SIMDID_AVX512_VNNI (1U << 11)
|
||||
#define SIMDID_AVX512_VBMI2 (1U << 10)
|
||||
#define SIMDID_AVX512_VBMI (1U << 9)
|
||||
#define SIMDID_AVX512_AI_RESERVED (1U << 8)
|
||||
#define SIMDID_AVX512_BASE (1U << 4)
|
||||
#define SIMDID_AVX512_IMPL_SHIFT 6
|
||||
#define SIMDID_AVX512_IMPL_MASK (0x3U << SIMDID_AVX512_IMPL_SHIFT)
|
||||
#define SIMDID_AVX512_IMPL_UNKNOWN (0x0U << SIMDID_AVX512_IMPL_SHIFT)
|
||||
#define SIMDID_AVX512_IMPL_DUAL (0x1U << SIMDID_AVX512_IMPL_SHIFT)
|
||||
#define SIMDID_AVX512_IMPL_NATIVE (0x2U << SIMDID_AVX512_IMPL_SHIFT)
|
||||
#endif
|
||||
|
||||
#ifndef SIMDID_AVX_BASE
|
||||
#define SIMDID_AVX U << 0) relative bit 0 within [47..40] */
|
||||
#define SIMDID_AVX2 U << 1)
|
||||
#define SIMDID_AVX_FMA U << 2)
|
||||
#define SIMDID_AVX (1U << 0) /* relative bit 0 within [47..40] */
|
||||
#define SIMDID_AVX2 (1U << 1)
|
||||
#define SIMDID_AVX_FMA (1U << 2)
|
||||
#define SIMDID_AVX_F16C (1U << 3)
|
||||
#define SIMDID_AVX_DUAL ( \
|
||||
U << 4) glued/split-lane YMM (two 128-bit units; Zen1, Hygon, VIA/Zhaoxin) */
|
||||
#define SIMDID_AVX_DUAL \
|
||||
(1U << 4) /* glued/split-lane YMM (two 128-bit units; Zen1, Hygon, VIA/Zhaoxin) */
|
||||
#endif
|
||||
|
||||
#ifndef SIMDID_AMX_TILE
|
||||
#define SIMDID_AMX_TILE (1U << 0) relative bit 0 within [39..32] */
|
||||
#define SIMDID_AMX_TILE (1U << 0) /* relative bit 0 within [39..32] */
|
||||
#define SIMDID_AMX_INT8 (1U << 1)
|
||||
#define SIMDID_AMX_BF16 (1U << 2)
|
||||
#endif
|
||||
|
||||
#ifndef SIMDID_AVX10_BASE
|
||||
#define SIMDID_AVX10 U << 0) /* relative bit 0 within [55..48] */
|
||||
#define SIMDID_AVX10_V1 U << 1)
|
||||
#define SIMDID_AVX10_V2 U << 2)
|
||||
#define SIMDID_AVX10 (1U << 0) /* relative bit 0 within [55..48] */
|
||||
#define SIMDID_AVX10_V1 (1U << 1)
|
||||
#define SIMDID_AVX10_V2 (1U << 2)
|
||||
#define SIMDID_AVX10_256W (1U << 3)
|
||||
#define SIMDID_AVX10_512W (1U << 4)
|
||||
#endif
|
||||
@@ -102,10 +103,10 @@
|
||||
* 10 = P-core (performance/big core in a hybrid CPU)
|
||||
* 11 = unified (confirmed non-hybrid; numerically strongest)
|
||||
* Higher numeric value == stronger / higher-capability topology. */
|
||||
#define SIMDID_UARCH_HYBRID_E << 0) / E-core (efficiency/small) in a hybrid topology */
|
||||
#define SIMDID_UARCH_HYBRID_P << 1) / P-core (performance/big) in a hybrid topology */
|
||||
#define SIMDID_UARCH_SIMD_DUAL ( \
|
||||
<< 2) / SIMD is glued/dual (summary: AVX_DUAL or AVX512_IMPL=DUAL) */
|
||||
#define SIMDID_UARCH_HYBRID_E (1U << 0) /* E-core (efficiency/small) in a hybrid topology */
|
||||
#define SIMDID_UARCH_HYBRID_P (1U << 1) /* P-core (performance/big) in a hybrid topology */
|
||||
#define SIMDID_UARCH_SIMD_DUAL \
|
||||
(1U << 2) /* SIMD is glued/dual (summary: AVX_DUAL or AVX512_IMPL=DUAL) */
|
||||
#endif
|
||||
|
||||
// Pack helpers (define locally to avoid missing macros when included standalone)
|
||||
@@ -133,71 +134,63 @@
|
||||
|
||||
INTERNAL void f32_normalize(VEC(float) * source, VEC(float) * target);
|
||||
|
||||
STD_MK_PROC_DECL(float, sse, , add);
|
||||
STD_MK_PROC_DECL(float, avx, , add);
|
||||
STD_MK_PROC_DECL(float, 512, , add);
|
||||
SN_MK_PROC_DECL_STD(float, sse, , add);
|
||||
SN_MK_PROC_DECL_STD(float, avx, , add);
|
||||
SN_MK_PROC_DECL_STD(float, 512, , add);
|
||||
|
||||
STD_MK_PROC_DECL(double, sse, , add);
|
||||
STD_MK_PROC_DECL(double, avx, , add);
|
||||
STD_MK_PROC_DECL(double, 512, , add);
|
||||
SN_MK_PROC_DECL_STD(double, sse, , add);
|
||||
SN_MK_PROC_DECL_STD(double, avx, , add);
|
||||
SN_MK_PROC_DECL_STD(double, 512, , add);
|
||||
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, , sub);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , sub);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, , sub);
|
||||
SN_MK_PROC_DECL_STD(float, sse, , sub);
|
||||
SN_MK_PROC_DECL_STD(float, avx, , sub);
|
||||
SN_MK_PROC_DECL_STD(float, 512, , sub);
|
||||
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , sub);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , sub);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , sub);
|
||||
SN_MK_PROC_DECL_STD(double, sse, , sub);
|
||||
SN_MK_PROC_DECL_STD(double, avx, , sub);
|
||||
SN_MK_PROC_DECL_STD(double, 512, , sub);
|
||||
|
||||
DECLARE_KER_PROC_RIGHT_ANS(float, sse, , transpose);
|
||||
DECLARE_KER_PROC_RIGHT_ANS(float, avx, , transpose);
|
||||
DECLARE_KER_PROC_RIGHT_ANS(float, 512, , transpose);
|
||||
SN_MK_PROC_DECL_STD(float, sse, , transpose);
|
||||
SN_MK_PROC_DECL_STD(float, avx, , transpose);
|
||||
SN_MK_PROC_DECL_STD(float, 512, , transpose);
|
||||
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, , scalar_mul);
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, , scalar_mul);
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, , scalar_mul);
|
||||
SN_MK_PROC_DECL_STD(float, sse, , scalar_mul);
|
||||
SN_MK_PROC_DECL_STD(float, avx, , scalar_mul);
|
||||
SN_MK_PROC_DECL_STD(float, 512, , scalar_mul);
|
||||
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, , scalar_mul);
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, , scalar_mul);
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, 512, , scalar_mul);
|
||||
SN_MK_PROC_DECL_STD(double, sse, , scalar_mul);
|
||||
SN_MK_PROC_DECL_STD(double, avx, , scalar_mul);
|
||||
SN_MK_PROC_DECL_STD(double, 512, , scalar_mul);
|
||||
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(float, sse, , fill);
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(float, avx, , fill);
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(float, 512, , fill);
|
||||
SN_MK_PROC_DECL_STD(float, sse, , fill);
|
||||
SN_MK_PROC_DECL_STD(float, avx, , fill);
|
||||
SN_MK_PROC_DECL_STD(float, 512, , fill);
|
||||
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(double, sse, , fill);
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(double, avx, , fill);
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(double, 512, , fill);
|
||||
SN_MK_PROC_DECL_STD(double, sse, , fill);
|
||||
SN_MK_PROC_DECL_STD(double, avx, , fill);
|
||||
SN_MK_PROC_DECL_STD(double, 512, , fill);
|
||||
|
||||
DECLARE_PNL_PROC_ANS(float, sse, , clear);
|
||||
DECLARE_PNL_PROC_ANS(float, avx, , clear);
|
||||
DECLARE_PNL_PROC_ANS(float, 512, , clear);
|
||||
SN_MK_PROC_DECL_STD(float, sse, , quality);
|
||||
|
||||
DECLARE_PNL_PROC_ANS(double, sse, , clear);
|
||||
DECLARE_PNL_PROC_ANS(double, avx, , clear);
|
||||
DECLARE_PNL_PROC_ANS(double, 512, , clear);
|
||||
SN_MK_PROC_DECL_STD(float, sse, , fma);
|
||||
SN_MK_PROC_DECL_STD(float, avx, , fma);
|
||||
SN_MK_PROC_DECL_STD(float, avx, _fma, fma);
|
||||
SN_MK_PROC_DECL_STD(float, 512, , fma);
|
||||
|
||||
DECLARE_KER_PROC_RIGHT_ANS(float, sse, , quality);
|
||||
SN_MK_PROC_DECL_STD(double, sse, , fma);
|
||||
SN_MK_PROC_DECL_STD(double, avx, , fma);
|
||||
SN_MK_PROC_DECL_STD(double, avx, _fma, fma);
|
||||
SN_MK_PROC_DECL_STD(double, 512, , fma);
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, sse, , fma);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, , fma);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, _fma, fma);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, 512, , fma);
|
||||
SN_MK_PROC_DECL_STD(float, sse, , fma);
|
||||
SN_MK_PROC_DECL_STD(float, avx, , fma);
|
||||
SN_MK_PROC_DECL_STD(float, avx, _fma, fma);
|
||||
SN_MK_PROC_DECL_STD(float, 512, , fma);
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, sse, , fma);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, avx, , fma);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, avx, _fma, fma);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, 512, , fma);
|
||||
|
||||
DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, sse, , fma);
|
||||
DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, avx, , fma);
|
||||
DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, avx, _fma, fma);
|
||||
DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, 512, , fma);
|
||||
|
||||
DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, sse, , fma);
|
||||
DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, avx, , fma);
|
||||
DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, avx, _fma, fma);
|
||||
DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, 512, , fma);
|
||||
SN_MK_PROC_DECL_STD(double, sse, , fma);
|
||||
SN_MK_PROC_DECL_STD(double, avx, , fma);
|
||||
SN_MK_PROC_DECL_STD(double, avx, _fma, fma);
|
||||
SN_MK_PROC_DECL_STD(double, 512, , fma);
|
||||
|
||||
#pragma endregion
|
||||
|
||||
|
||||
Reference in New Issue
Block a user