Better L4 and array storage design
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
|
||||
// float
|
||||
|
||||
SN_MK_PROC_DECL_STD(float, sse, , tiled_fma)
|
||||
SN_MK_PROC_DECL_STD(float, sse, , fma)
|
||||
{
|
||||
__mk_param_std(TILE, LEFT_RIGHT_ANS, float);
|
||||
|
||||
@@ -69,7 +69,7 @@ SN_MK_PROC_DECL_STD(float, sse, , tiled_fma)
|
||||
_mm_store_ps((float *)&ans_cur->f32_x[3], c3);
|
||||
}
|
||||
|
||||
SN_MK_PROC_DECL_STD(float, avx, , tiled_fma)
|
||||
SN_MK_PROC_DECL_STD(float, avx, , fma)
|
||||
{
|
||||
static const __m256i b01_shift_source = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
|
||||
static const __m256i b23_shift_source = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
|
||||
@@ -127,7 +127,7 @@ SN_MK_PROC_DECL_STD(float, avx, , tiled_fma)
|
||||
_mm256_store_ps((float *)&ans_cur->f32_y[1], c23);
|
||||
}
|
||||
|
||||
SN_MK_PROC_DECL_STD(float, avx, _fma, tiled_fma)
|
||||
SN_MK_PROC_DECL_STD(float, avx, _fma, fma)
|
||||
{
|
||||
static const __m256i b01_shift_source = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
|
||||
static const __m256i b23_shift_source = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
|
||||
@@ -185,7 +185,7 @@ SN_MK_PROC_DECL_STD(float, avx, _fma, tiled_fma)
|
||||
_mm256_store_ps((float *)&ans_cur->f32_y[1], c23);
|
||||
}
|
||||
|
||||
SN_MK_PROC_DECL_STD(float, 512, , tiled_fma)
|
||||
SN_MK_PROC_DECL_STD(float, 512, , fma)
|
||||
{
|
||||
static const __m512i b_shift_source = { .m512i_i32 = {
|
||||
// shuff order
|
||||
@@ -260,7 +260,7 @@ SN_MK_PROC_DECL_STD(float, 512, , tiled_fma)
|
||||
c##i##_hi = _mm_add_pd(c##i##_hi, _mm_mul_pd(a_hi, b)); \
|
||||
} while (0)
|
||||
|
||||
SN_MK_PROC_DECL_STD(double, sse, , tiled_fma)
|
||||
SN_MK_PROC_DECL_STD(double, sse, , fma)
|
||||
{
|
||||
__mk_param_std(TILE, LEFT_RIGHT_ANS, double);
|
||||
|
||||
@@ -299,7 +299,7 @@ SN_MK_PROC_DECL_STD(double, sse, , tiled_fma)
|
||||
_mm_store_pd(ans_cur->f64_x + (3 * 2 + 1), c3_hi);
|
||||
}
|
||||
|
||||
SN_MK_PROC_DECL_STD(double, avx, , tiled_fma)
|
||||
SN_MK_PROC_DECL_STD(double, avx, , fma)
|
||||
{
|
||||
__mk_param_std(TILE, LEFT_RIGHT_ANS, double);
|
||||
|
||||
@@ -372,7 +372,7 @@ SN_MK_PROC_DECL_STD(double, avx, , tiled_fma)
|
||||
_mm256_store_pd((double *)&ans_cur->f64_y[3], c3);
|
||||
}
|
||||
|
||||
SN_MK_PROC_DECL_STD(double, avx, _fma, tiled_fma)
|
||||
SN_MK_PROC_DECL_STD(double, avx, _fma, fma)
|
||||
{
|
||||
__mk_param_std(TILE, LEFT_RIGHT_ANS, double);
|
||||
|
||||
@@ -429,7 +429,7 @@ SN_MK_PROC_DECL_STD(double, avx, _fma, tiled_fma)
|
||||
_mm256_store_pd((double *)&ans_cur->f64_y[3], c3);
|
||||
}
|
||||
|
||||
SN_MK_PROC_DECL_STD(double, 512, , tiled_fma)
|
||||
SN_MK_PROC_DECL_STD(double, 512, , fma)
|
||||
{
|
||||
static const __m512i b01_shift_source = { .m512i_i64 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
|
||||
static const __m512i b23_shift_source = { .m512i_i64 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
|
||||
|
||||
Reference in New Issue
Block a user