add simd id and cpu id
This commit is contained in:
@@ -3,12 +3,13 @@
|
||||
#if SN_IS_ARCH(SN_ARCH_X86_64)
|
||||
|
||||
#include "sn_intrinsic.h"
|
||||
#include "sn_intrincontext.x86.h"
|
||||
|
||||
#define _FMA_SELECT(i) _MM_SHUFFLE(i, i, i, i)
|
||||
|
||||
// ans = left * right + ans
|
||||
// right is not transposed
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, sse, fma)
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, sse, , fma)
|
||||
{
|
||||
const __m128 a0 = PANEL_COL_VEC((*left), 0, 0);
|
||||
const __m128 a1 = PANEL_COL_VEC((*left), 1, 0);
|
||||
@@ -58,7 +59,7 @@ DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, sse, fma)
|
||||
|
||||
// ans = left * right + ans
|
||||
// right is not transposed
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, avx_fma, fma)
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, avx, _fma, fma)
|
||||
{
|
||||
static const __m256i idx0 = { 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||
|
||||
@@ -101,7 +102,7 @@ DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, avx_fma, fma)
|
||||
|
||||
// ans = left * right + ans
|
||||
// right is not transposed
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, avx, fma)
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, avx, , fma)
|
||||
{
|
||||
static const __m256i idx0 = { 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||
|
||||
@@ -142,7 +143,7 @@ DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, avx, fma)
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, 512, fma)
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, 512, , fma)
|
||||
{
|
||||
const __m512i ones = _mm512_set1_epi32(1);
|
||||
|
||||
@@ -208,7 +209,7 @@ DECLARE_PNL_PROC_LEFT_RIGHT_ANS(float, 512, fma)
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, sse, fma)
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, sse, , fma)
|
||||
{
|
||||
for (int col = 0; col < 4; ++col) {
|
||||
/* current answer column (two chunks: rows 0-1 and 2-3) */
|
||||
@@ -260,7 +261,7 @@ DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, sse, fma)
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, avx, fma)
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, avx, , fma)
|
||||
{
|
||||
register __m256d a0 = _mm256_load_pd((double *)&left->vec[0][0]);
|
||||
register __m256d a1 = _mm256_load_pd((double *)&left->vec[1][0]);
|
||||
@@ -301,7 +302,7 @@ DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, avx, fma)
|
||||
_mm256_store_pd((double *)&ans->vec[3][0], c3);
|
||||
}
|
||||
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, avx_fma, fma)
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, avx, _fma, fma)
|
||||
{
|
||||
register __m256d a0 = _mm256_load_pd((double *)&left->vec[0][0]);
|
||||
register __m256d a1 = _mm256_load_pd((double *)&left->vec[1][0]);
|
||||
@@ -344,7 +345,7 @@ DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, avx_fma, fma)
|
||||
|
||||
// ans = left * right + ans
|
||||
// right is not transposed
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, 512, fma)
|
||||
DECLARE_PNL_PROC_LEFT_RIGHT_ANS(double, 512, , fma)
|
||||
{
|
||||
const __m512i ones = _mm512_set1_epi32(1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user