Arm SVE Exclude SVE-Intrinsic Kernels for GCC 8-9

Affected configs: a64fx.
This commit is contained in:
RuQing Xu
2021-09-16 05:01:03 +09:00
parent bffa85be59
commit 30c29b256e
5 changed files with 14 additions and 10 deletions

View File

@@ -58,9 +58,10 @@ void bli_cntx_init_a64fx( cntx_t* cntx )
// Set SVE-512 packing routine.
bli_cntx_set_packm_kers
(
3,
2,
BLIS_PACKM_10XK_KER, BLIS_DOUBLE, bli_dpackm_armsve512_asm_10xk,
BLIS_PACKM_12XK_KER, BLIS_DOUBLE, bli_dpackm_armsve512_int_12xk,
// 12xk is not used and disabled for GCC 8-9 compatibility.
// BLIS_PACKM_12XK_KER, BLIS_DOUBLE, bli_dpackm_armsve512_int_12xk,
BLIS_PACKM_16XK_KER, BLIS_DOUBLE, bli_dpackm_armsve512_asm_16xk,
cntx
);

View File

@@ -65,6 +65,8 @@ void bli_cntx_init_armsve( cntx_t* cntx )
);
// Set VL-specific packing routines if applicable.
// NOTE: SVE-Intrinsic kernels are used without checking __has_include(<arm_sve.h>).
// Such is ensured at configuration stage for config: armsve.
if (m_r_d==16)
bli_cntx_set_packm_kers
(

View File

@@ -35,11 +35,8 @@
#include "blis.h"
#ifdef __ARM_FEATURE_SVE
#if __has_include(<arm_sve.h>)
#include <arm_sve.h>
#else
#error "No Arm SVE intrinsics support in compiler"
#endif // __ARM_FEATURE_SVE
// assumption:
// SVE vector length = 256 bits.
@@ -230,3 +227,5 @@ void bli_dpackm_armsve256_int_8xk
);
}
}
#endif // __has_include(<arm_sve.h>)

View File

@@ -36,11 +36,8 @@
#include "blis.h"
#include <stdio.h>
#ifdef __ARM_FEATURE_SVE
#if __has_include(<arm_sve.h>)
#include <arm_sve.h>
#else
#error "No Arm SVE intrinsics support in compiler"
#endif // __ARM_FEATURE_SVE
// assumption:
// SVE vector length = 512 bits.
@@ -357,3 +354,5 @@ void bli_dpackm_armsve512_int_12xk
);
}
}
#endif // __has_include(<arm_sve.h>)

View File

@@ -39,7 +39,10 @@ GEMMSUP_KER_PROT( double, d, gemmsup_rv_armsve_2vx10_unindexed )
GEMMSUP_KER_PROT( double, d, gemmsup_cv_armsve_2vx10_unindexed )
GEMMSUP_KER_PROT( double, d, gemmsup_rv_armsve_10x2v_unindexed )
#if __has_include(<arm_sve.h>)
// Use SVE intrinsics only when supported.
PACKM_KER_PROT( double, d, packm_armsve256_int_8xk )
PACKM_KER_PROT( double, d, packm_armsve512_int_12xk )
#endif
PACKM_KER_PROT( double, d, packm_armsve512_asm_16xk )
PACKM_KER_PROT( double, d, packm_armsve512_asm_10xk )