4343#endif
4444
4545extern gotoblas_t gotoblas_ARMV8 ;
46+ extern gotoblas_t gotoblas_CORTEXA53 ;
4647extern gotoblas_t gotoblas_CORTEXA57 ;
48+ extern gotoblas_t gotoblas_CORTEXA72 ;
49+ extern gotoblas_t gotoblas_CORTEXA73 ;
50+ extern gotoblas_t gotoblas_FALKOR ;
4751extern gotoblas_t gotoblas_THUNDERX ;
4852extern gotoblas_t gotoblas_THUNDERX2T99 ;
53+ extern gotoblas_t gotoblas_TSV110 ;
4954
5055extern void openblas_warning (int verbose , const char * msg );
5156
52- #define NUM_CORETYPES 4
57+ #define NUM_CORETYPES 9
5358
5459/*
5560 * In case asm/hwcap.h is outdated on the build system, make sure
@@ -65,17 +70,27 @@ extern void openblas_warning(int verbose, const char * msg);
6570
6671static char * corename [] = {
6772 "armv8" ,
73+ "cortexa53" ,
6874 "cortexa57" ,
75+ "cortexa72" ,
76+ "cortexa73" ,
77+ "falkor" ,
6978 "thunderx" ,
7079 "thunderx2t99" ,
80+ "tsv110" ,
7181 "unknown"
7282};
7383
7484char * gotoblas_corename (void ) {
7585 if (gotoblas == & gotoblas_ARMV8 ) return corename [ 0 ];
76- if (gotoblas == & gotoblas_CORTEXA57 ) return corename [ 1 ];
77- if (gotoblas == & gotoblas_THUNDERX ) return corename [ 2 ];
78- if (gotoblas == & gotoblas_THUNDERX2T99 ) return corename [ 3 ];
86+ if (gotoblas == & gotoblas_CORTEXA53 ) return corename [ 1 ];
87+ if (gotoblas == & gotoblas_CORTEXA57 ) return corename [ 2 ];
88+ if (gotoblas == & gotoblas_CORTEXA72 ) return corename [ 3 ];
89+ if (gotoblas == & gotoblas_CORTEXA73 ) return corename [ 4 ];
90+ if (gotoblas == & gotoblas_FALKOR ) return corename [ 5 ];
91+ if (gotoblas == & gotoblas_THUNDERX ) return corename [ 6 ];
92+ if (gotoblas == & gotoblas_THUNDERX2T99 ) return corename [ 7 ];
93+ if (gotoblas == & gotoblas_TSV110 ) return corename [ 8 ];
7994 return corename [NUM_CORETYPES ];
8095}
8196
@@ -96,9 +111,14 @@ static gotoblas_t *force_coretype(char *coretype) {
96111 switch (found )
97112 {
98113 case 0 : return (& gotoblas_ARMV8 );
99- case 1 : return (& gotoblas_CORTEXA57 );
100- case 2 : return (& gotoblas_THUNDERX );
101- case 3 : return (& gotoblas_THUNDERX2T99 );
114+ case 1 : return (& gotoblas_CORTEXA53 );
115+ case 2 : return (& gotoblas_CORTEXA57 );
116+ case 3 : return (& gotoblas_CORTEXA72 );
117+ case 4 : return (& gotoblas_CORTEXA73 );
118+ case 5 : return (& gotoblas_FALKOR );
119+ case 6 : return (& gotoblas_THUNDERX );
120+ case 7 : return (& gotoblas_THUNDERX2T99 );
121+ case 8 : return (& gotoblas_TSV110 );
102122 }
103123 snprintf (message , 128 , "Core not found: %s\n" , coretype );
104124 openblas_warning (1 , message );
@@ -136,10 +156,14 @@ static gotoblas_t *get_coretype(void) {
136156 case 0x41 : // ARM
137157 switch (part )
138158 {
139- case 0xd07 : // Cortex A57
140- case 0xd08 : // Cortex A72
141159 case 0xd03 : // Cortex A53
160+ return & gotoblas_CORTEXA53 ;
161+ case 0xd07 : // Cortex A57
142162 return & gotoblas_CORTEXA57 ;
163+ case 0xd08 : // Cortex A72
164+ return & gotoblas_CORTEXA72 ;
165+ case 0xd09 : // Cortex A73
166+ return & gotoblas_CORTEXA73 ;
143167 }
144168 break ;
145169 case 0x42 : // Broadcom
@@ -158,6 +182,20 @@ static gotoblas_t *get_coretype(void) {
158182 return & gotoblas_THUNDERX2T99 ;
159183 }
160184 break ;
185+ case 0x48 : // HiSilicon
186+ switch (part )
187+ {
188+ case 0xd01 : // tsv110
189+ return & gotoblas_TSV110 ;
190+ }
191+ break ;
192+ case 0x51 : // Qualcomm
193+ switch (part )
194+ {
195+ case 0xc00 : // Falkor
196+ return & gotoblas_FALKOR ;
197+ }
198+ break ;
161199 }
162200 return NULL ;
163201}
0 commit comments