@@ -120,6 +120,11 @@ extern gotoblas_t gotoblas_CORTEXA55;
120120#else
121121#define gotoblas_CORTEXA55 gotoblas_ARMV8
122122#endif
123+ #ifdef DYN_A64FX
124+ extern gotoblas_t gotoblas_A64FX ;
125+ #else
126+ #define gotoblas_A64FX gotoblas_ARMV8
127+ #endif
123128#else
124129extern gotoblas_t gotoblas_CORTEXA53 ;
125130#define gotoblas_CORTEXA55 gotoblas_CORTEXA53
@@ -136,10 +141,12 @@ extern gotoblas_t gotoblas_NEOVERSEN1;
136141extern gotoblas_t gotoblas_NEOVERSEV1 ;
137142extern gotoblas_t gotoblas_NEOVERSEN2 ;
138143extern gotoblas_t gotoblas_ARMV8SVE ;
144+ extern gotoblas_t gotoblas_A64FX ;
139145#else
140146#define gotoblas_NEOVERSEV1 gotoblas_ARMV8
141147#define gotoblas_NEOVERSEN2 gotoblas_ARMV8
142148#define gotoblas_ARMV8SVE gotoblas_ARMV8
149+ #define gotoblas_A64FX gotoblas_ARMV8
143150#endif
144151extern gotoblas_t gotoblas_THUNDERX3T110 ;
145152#endif
@@ -149,7 +156,7 @@ extern void openblas_warning(int verbose, const char * msg);
149156#define FALLBACK_VERBOSE 1
150157#define NEOVERSEN1_FALLBACK "OpenBLAS : Your OS does not support SVE instructions. OpenBLAS is using Neoverse N1 kernels as a fallback, which may give poorer performance.\n"
151158
152- #define NUM_CORETYPES 17
159+ #define NUM_CORETYPES 18
153160
154161/*
155162 * In case asm/hwcap.h is outdated on the build system, make sure
@@ -184,6 +191,7 @@ static char *corename[] = {
184191 "thunderx3t110" ,
185192 "cortexa55" ,
186193 "armv8sve" ,
194+ "a64fx" ,
187195 "unknown"
188196};
189197
@@ -205,6 +213,7 @@ char *gotoblas_corename(void) {
205213 if (gotoblas == & gotoblas_THUNDERX3T110 ) return corename [14 ];
206214 if (gotoblas == & gotoblas_CORTEXA55 ) return corename [15 ];
207215 if (gotoblas == & gotoblas_ARMV8SVE ) return corename [16 ];
216+ if (gotoblas == & gotoblas_A64FX ) return corename [17 ];
208217 return corename [NUM_CORETYPES ];
209218}
210219
@@ -241,6 +250,7 @@ static gotoblas_t *force_coretype(char *coretype) {
241250 case 14 : return (& gotoblas_THUNDERX3T110 );
242251 case 15 : return (& gotoblas_CORTEXA55 );
243252 case 16 : return (& gotoblas_ARMV8SVE );
253+ case 17 : return (& gotoblas_A64FX );
244254 }
245255 snprintf (message , 128 , "Core not found: %s\n" , coretype );
246256 openblas_warning (1 , message );
@@ -346,6 +356,15 @@ static gotoblas_t *get_coretype(void) {
346356 return & gotoblas_THUNDERX3T110 ;
347357 }
348358 break ;
359+ case 0x46 : // Fujitsu
360+ switch (part )
361+ {
362+ #ifndef NO_SVE
363+ case 0x001 : // A64FX
364+ return & gotoblas_A64FX ;
365+ #endif
366+ }
367+ break ;
349368 case 0x48 : // HiSilicon
350369 switch (part )
351370 {
0 commit comments