@@ -120,6 +120,11 @@ extern gotoblas_t gotoblas_CORTEXA55;
120
120
#else
121
121
#define gotoblas_CORTEXA55 gotoblas_ARMV8
122
122
#endif
123
+ #ifdef DYN_A64FX
124
+ extern gotoblas_t gotoblas_A64FX ;
125
+ #else
126
+ #define gotoblas_A64FX gotoblas_ARMV8
127
+ #endif
123
128
#else
124
129
extern gotoblas_t gotoblas_CORTEXA53 ;
125
130
#define gotoblas_CORTEXA55 gotoblas_CORTEXA53
@@ -136,10 +141,12 @@ extern gotoblas_t gotoblas_NEOVERSEN1;
136
141
extern gotoblas_t gotoblas_NEOVERSEV1 ;
137
142
extern gotoblas_t gotoblas_NEOVERSEN2 ;
138
143
extern gotoblas_t gotoblas_ARMV8SVE ;
144
+ extern gotoblas_t gotoblas_A64FX ;
139
145
#else
140
146
#define gotoblas_NEOVERSEV1 gotoblas_ARMV8
141
147
#define gotoblas_NEOVERSEN2 gotoblas_ARMV8
142
148
#define gotoblas_ARMV8SVE gotoblas_ARMV8
149
+ #define gotoblas_A64FX gotoblas_ARMV8
143
150
#endif
144
151
extern gotoblas_t gotoblas_THUNDERX3T110 ;
145
152
#endif
@@ -149,7 +156,7 @@ extern void openblas_warning(int verbose, const char * msg);
149
156
#define FALLBACK_VERBOSE 1
150
157
#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"
151
158
152
- #define NUM_CORETYPES 17
159
+ #define NUM_CORETYPES 18
153
160
154
161
/*
155
162
* In case asm/hwcap.h is outdated on the build system, make sure
@@ -184,6 +191,7 @@ static char *corename[] = {
184
191
"thunderx3t110" ,
185
192
"cortexa55" ,
186
193
"armv8sve" ,
194
+ "a64fx" ,
187
195
"unknown"
188
196
};
189
197
@@ -205,6 +213,7 @@ char *gotoblas_corename(void) {
205
213
if (gotoblas == & gotoblas_THUNDERX3T110 ) return corename [14 ];
206
214
if (gotoblas == & gotoblas_CORTEXA55 ) return corename [15 ];
207
215
if (gotoblas == & gotoblas_ARMV8SVE ) return corename [16 ];
216
+ if (gotoblas == & gotoblas_A64FX ) return corename [17 ];
208
217
return corename [NUM_CORETYPES ];
209
218
}
210
219
@@ -241,6 +250,7 @@ static gotoblas_t *force_coretype(char *coretype) {
241
250
case 14 : return (& gotoblas_THUNDERX3T110 );
242
251
case 15 : return (& gotoblas_CORTEXA55 );
243
252
case 16 : return (& gotoblas_ARMV8SVE );
253
+ case 17 : return (& gotoblas_A64FX );
244
254
}
245
255
snprintf (message , 128 , "Core not found: %s\n" , coretype );
246
256
openblas_warning (1 , message );
@@ -346,6 +356,15 @@ static gotoblas_t *get_coretype(void) {
346
356
return & gotoblas_THUNDERX3T110 ;
347
357
}
348
358
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 ;
349
368
case 0x48 : // HiSilicon
350
369
switch (part )
351
370
{
0 commit comments