Better L4 and array storage design
This commit is contained in:
@@ -50,25 +50,22 @@ void load_intrinsic_sse(sn_intrinsic *context, SIMDID id)
|
||||
{
|
||||
context->city_hash_simplify = city_hash_simplify_sse;
|
||||
context->factorial_simd = factorial_simd_sse;
|
||||
context->index_pair = index_pair_sse;
|
||||
|
||||
context->mat[F32].buffer_add = STD_MK_PROC_NAME(float, sse, , add);
|
||||
context->mat[F32].buffer_fill = STD_MK_PROC_NAME(float, sse, , fill);
|
||||
context->mat[F32].buffer_scalar_mul = STD_MK_PROC_NAME(float, sse, , scalar_mul);
|
||||
context->mat[F32].buffer_sub = STD_MK_PROC_NAME(float, sse, , sub);
|
||||
context->mat[F32].buffer_transpose = STD_MK_PROC_NAME(float, sse, , transpose);
|
||||
context->mat[F32].ker_fma = STD_MK_PROC_NAME(float, sse, , fma);
|
||||
context->mat[F32].ker_tile_fma = STD_MK_PROC_NAME(float, sse, , tiled_fma);
|
||||
context->mat[F32].pivot = NULL;
|
||||
context->mat_mk[F32].add = MK_PROC_NAME_STD(float, sse, , add);
|
||||
context->mat_mk[F32].fill = MK_PROC_NAME_STD(float, sse, , fill);
|
||||
context->mat_mk[F32].scalar_mul = MK_PROC_NAME_STD(float, sse, , scalar_mul);
|
||||
context->mat_mk[F32].sub = MK_PROC_NAME_STD(float, sse, , sub);
|
||||
context->mat_mk[F32].transpose = MK_PROC_NAME_STD(float, sse, , transpose);
|
||||
context->mat_mk[F32].fma = MK_PROC_NAME_STD(float, sse, , fma);
|
||||
context->mat_mk[F32].pivot = NULL;
|
||||
|
||||
context->mat[F64].buffer_add = STD_MK_PROC_NAME(double, sse, , add);
|
||||
context->mat[F64].buffer_fill = STD_MK_PROC_NAME(double, sse, , fill);
|
||||
context->mat[F64].buffer_scalar_mul = STD_MK_PROC_NAME(double, sse, , scalar_mul);
|
||||
context->mat[F64].buffer_sub = STD_MK_PROC_NAME(double, sse, , sub);
|
||||
context->mat[F64].buffer_transpose = NULL;
|
||||
context->mat[F64].ker_fma = STD_MK_PROC_NAME(double, sse, , fma);
|
||||
context->mat[F64].ker_tile_fma = STD_MK_PROC_NAME(double, sse, , tiled_fma);
|
||||
context->mat[F64].pivot = NULL;
|
||||
context->mat_mk[F64].add = MK_PROC_NAME_STD(double, sse, , add);
|
||||
context->mat_mk[F64].fill = MK_PROC_NAME_STD(double, sse, , fill);
|
||||
context->mat_mk[F64].scalar_mul = MK_PROC_NAME_STD(double, sse, , scalar_mul);
|
||||
context->mat_mk[F64].sub = MK_PROC_NAME_STD(double, sse, , sub);
|
||||
context->mat_mk[F64].transpose = NULL;
|
||||
context->mat_mk[F64].fma = MK_PROC_NAME_STD(double, sse, , fma);
|
||||
context->mat_mk[F64].pivot = NULL;
|
||||
|
||||
context->vec_f32_normalize_3 = f32_normalize;
|
||||
}
|
||||
@@ -81,29 +78,24 @@ void load_intrinsic_avx(sn_intrinsic *context, SIMDID id)
|
||||
|
||||
context->city_hash_simplify = city_hash_simplify_sse;
|
||||
context->factorial_simd = factorial_simd_sse;
|
||||
context->index_pair = index_pair_sse;
|
||||
|
||||
context->mat[F32].buffer_add = STD_MK_PROC_NAME(float, avx, , add);
|
||||
context->mat[F32].buffer_fill = STD_MK_PROC_NAME(float, avx, , fill);
|
||||
context->mat[F32].buffer_scalar_mul = STD_MK_PROC_NAME(float, avx, , scalar_mul);
|
||||
context->mat[F32].buffer_sub = STD_MK_PROC_NAME(float, avx, , sub);
|
||||
context->mat[F32].buffer_transpose = STD_MK_PROC_NAME(float, avx, , transpose);
|
||||
context->mat[F32].ker_fma = is_fma ? STD_MK_PROC_NAME(float, avx, , fma) :
|
||||
STD_MK_PROC_NAME(float, avx, _fma, fma);
|
||||
context->mat[F32].ker_tile_fma = is_fma ? STD_MK_PROC_NAME(float, avx, , tiled_fma) :
|
||||
STD_MK_PROC_NAME(float, avx, _fma, tiled_fma);
|
||||
context->mat[F32].pivot = NULL;
|
||||
context->mat_mk[F32].add = MK_PROC_NAME_STD(float, avx, , add);
|
||||
context->mat_mk[F32].fill = MK_PROC_NAME_STD(float, avx, , fill);
|
||||
context->mat_mk[F32].scalar_mul = MK_PROC_NAME_STD(float, avx, , scalar_mul);
|
||||
context->mat_mk[F32].sub = MK_PROC_NAME_STD(float, avx, , sub);
|
||||
context->mat_mk[F32].transpose = MK_PROC_NAME_STD(float, avx, , transpose);
|
||||
context->mat_mk[F32].fma = is_fma ? MK_PROC_NAME_STD(float, avx, , fma) :
|
||||
MK_PROC_NAME_STD(float, avx, _fma, fma);
|
||||
context->mat_mk[F32].pivot = NULL;
|
||||
|
||||
context->mat[F64].buffer_add = STD_MK_PROC_NAME(double, avx, , add);
|
||||
context->mat[F64].buffer_fill = STD_MK_PROC_NAME(double, avx, , fill);
|
||||
context->mat[F64].buffer_scalar_mul = STD_MK_PROC_NAME(double, avx, , scalar_mul);
|
||||
context->mat[F64].buffer_sub = STD_MK_PROC_NAME(double, avx, , sub);
|
||||
context->mat[F64].buffer_transpose = NULL;
|
||||
context->mat[F64].ker_fma = is_fma ? STD_MK_PROC_NAME(double, avx, , fma) :
|
||||
STD_MK_PROC_NAME(double, avx, _fma, fma);
|
||||
context->mat[F64].ker_tile_fma = is_fma ? STD_MK_PROC_NAME(double, avx, , tiled_fma) :
|
||||
STD_MK_PROC_NAME(double, avx, _fma, tiled_fma);
|
||||
context->mat[F64].pivot = NULL;
|
||||
context->mat_mk[F64].add = MK_PROC_NAME_STD(double, avx, , add);
|
||||
context->mat_mk[F64].fill = MK_PROC_NAME_STD(double, avx, , fill);
|
||||
context->mat_mk[F64].scalar_mul = MK_PROC_NAME_STD(double, avx, , scalar_mul);
|
||||
context->mat_mk[F64].sub = MK_PROC_NAME_STD(double, avx, , sub);
|
||||
context->mat_mk[F64].transpose = NULL;
|
||||
context->mat_mk[F64].fma = is_fma ? MK_PROC_NAME_STD(double, avx, , fma) :
|
||||
MK_PROC_NAME_STD(double, avx, _fma, fma);
|
||||
context->mat_mk[F64].pivot = NULL;
|
||||
|
||||
context->vec_f32_normalize_3 = f32_normalize;
|
||||
}
|
||||
@@ -112,25 +104,22 @@ void load_intrinsic_512(sn_intrinsic *context, SIMDID id)
|
||||
{
|
||||
context->city_hash_simplify = city_hash_simplify_sse;
|
||||
context->factorial_simd = factorial_simd_sse;
|
||||
context->index_pair = index_pair_sse;
|
||||
|
||||
context->mat[F32].buffer_add = STD_MK_PROC_NAME(float, 512, , add);
|
||||
context->mat[F32].buffer_fill = STD_MK_PROC_NAME(float, 512, , fill);
|
||||
context->mat[F32].buffer_scalar_mul = STD_MK_PROC_NAME(float, 512, , scalar_mul);
|
||||
context->mat[F32].buffer_sub = STD_MK_PROC_NAME(float, 512, , sub);
|
||||
context->mat[F32].buffer_transpose = STD_MK_PROC_NAME(float, 512, , transpose);
|
||||
context->mat[F32].ker_fma = STD_MK_PROC_NAME(float, 512, , fma);
|
||||
context->mat[F32].ker_tile_fma = STD_MK_PROC_NAME(float, 512, , tiled_fma);
|
||||
context->mat[F32].pivot = NULL;
|
||||
context->mat_mk[F32].add = MK_PROC_NAME_STD(float, 512, , add);
|
||||
context->mat_mk[F32].fill = MK_PROC_NAME_STD(float, 512, , fill);
|
||||
context->mat_mk[F32].scalar_mul = MK_PROC_NAME_STD(float, 512, , scalar_mul);
|
||||
context->mat_mk[F32].sub = MK_PROC_NAME_STD(float, 512, , sub);
|
||||
context->mat_mk[F32].transpose = MK_PROC_NAME_STD(float, 512, , transpose);
|
||||
context->mat_mk[F32].fma = MK_PROC_NAME_STD(float, 512, , fma);
|
||||
context->mat_mk[F32].pivot = NULL;
|
||||
|
||||
context->mat[F64].buffer_add = STD_MK_PROC_NAME(double, 512, , add);
|
||||
context->mat[F64].buffer_fill = STD_MK_PROC_NAME(double, 512, , fill);
|
||||
context->mat[F64].buffer_scalar_mul = STD_MK_PROC_NAME(double, 512, , scalar_mul);
|
||||
context->mat[F64].buffer_sub = STD_MK_PROC_NAME(double, 512, , sub);
|
||||
context->mat[F64].buffer_transpose = NULL;
|
||||
context->mat[F64].ker_fma = STD_MK_PROC_NAME(double, 512, , fma);
|
||||
context->mat[F64].ker_tile_fma = STD_MK_PROC_NAME(double, 512, , tiled_fma);
|
||||
context->mat[F64].pivot = NULL;
|
||||
context->mat_mk[F64].add = MK_PROC_NAME_STD(double, 512, , add);
|
||||
context->mat_mk[F64].fill = MK_PROC_NAME_STD(double, 512, , fill);
|
||||
context->mat_mk[F64].scalar_mul = MK_PROC_NAME_STD(double, 512, , scalar_mul);
|
||||
context->mat_mk[F64].sub = MK_PROC_NAME_STD(double, 512, , sub);
|
||||
context->mat_mk[F64].transpose = NULL;
|
||||
context->mat_mk[F64].fma = MK_PROC_NAME_STD(double, 512, , fma);
|
||||
context->mat_mk[F64].pivot = NULL;
|
||||
|
||||
context->vec_f32_normalize_3 = f32_normalize;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user