Add DYNAMIC_ARCH support for ARMV8 EMAG8180
@@ -51,10 +51,11 @@ extern gotoblas_t gotoblas_FALKOR;
extern gotoblas_t gotoblas_THUNDERX;
extern gotoblas_t gotoblas_THUNDERX2T99;
extern gotoblas_t gotoblas_TSV110;
+extern gotoblas_t gotoblas_EMAG8180;
extern void openblas_warning(int verbose, const char * msg);
-#define NUM_CORETYPES 9
+#define NUM_CORETYPES 10
/*
* In case asm/hwcap.h is outdated on the build system, make sure
@@ -78,6 +79,7 @@ static char *corename[] = {
"thunderx",
"thunderx2t99",
"tsv110",
+ "emag8180",
"unknown"
};
@@ -91,6 +93,7 @@ char *gotoblas_corename(void) {
if (gotoblas == &gotoblas_THUNDERX) return corename[ 6];
if (gotoblas == &gotoblas_THUNDERX2T99) return corename[ 7];
if (gotoblas == &gotoblas_TSV110) return corename[ 8];
+ if (gotoblas == &gotoblas_EMAG8180) return corename[ 9];
return corename[NUM_CORETYPES];
}
@@ -119,6 +122,7 @@ static gotoblas_t *force_coretype(char *coretype) {
case 6: return (&gotoblas_THUNDERX);
case 7: return (&gotoblas_THUNDERX2T99);
case 8: return (&gotoblas_TSV110);
+ case 9: return (&gotoblas_EMAG8180);
}
snprintf(message, 128, "Core not found: %s\n", coretype);
openblas_warning(1, message);
@@ -189,6 +193,13 @@ static gotoblas_t *get_coretype(void) {
return &gotoblas_TSV110;
}
break;
+ case 0x50: // Ampere
+ switch (part)
+ {
+ case 0x000: // Skylark/EMAG8180
+ return &gotoblas_EMAG818;
+ }
+ break;
case 0x51: // Qualcomm
switch (part)
{
