@@ -459,7 +459,7 @@ bool bli_cpuid_is_bulldozer
459
459
return TRUE;
460
460
}
461
461
462
- #elif defined(__aarch64__ ) || defined(__arm__ ) || defined(_M_ARM )
462
+ #elif defined(__aarch64__ ) || defined(__arm__ ) || defined(_M_ARM ) || defined( _ARCH_PPC )
463
463
464
464
arch_t bli_cpuid_query_id ( void )
465
465
{
@@ -514,9 +514,14 @@ arch_t bli_cpuid_query_id( void )
514
514
return BLIS_ARCH_GENERIC ;
515
515
}
516
516
}
517
- else if ( vendor == VENDOR_UNKNOWN )
517
+ else if ( vendor == VENDOR_IBM )
518
518
{
519
- return BLIS_ARCH_GENERIC ;
519
+ if ( model == MODEL_POWER7 )
520
+ return BLIS_ARCH_POWER7 ;
521
+ else if ( model == MODEL_POWER9 )
522
+ return BLIS_ARCH_POWER9 ;
523
+ else if ( model == MODEL_POWER10 )
524
+ return BLIS_ARCH_POWER10 ;
520
525
}
521
526
522
527
return BLIS_ARCH_GENERIC ;
@@ -1015,7 +1020,7 @@ int vpu_count( void )
1015
1020
}
1016
1021
}
1017
1022
1018
- #elif defined(__aarch64__ ) || defined(__arm__ ) || defined(_M_ARM )
1023
+ #elif defined(__aarch64__ ) || defined(__arm__ ) || defined(_M_ARM ) || defined( _ARCH_PPC )
1019
1024
1020
1025
#define TEMP_BUFFER_SIZE 200
1021
1026
@@ -1037,6 +1042,20 @@ uint32_t bli_cpuid_query
1037
1042
char feat_str [ TEMP_BUFFER_SIZE ];
1038
1043
char * r_val ;
1039
1044
1045
+ #ifdef _ARCH_PPC
1046
+ r_val = find_string_in ( "cpu" , proc_str , TEMP_BUFFER_SIZE , pci_str );
1047
+ if ( r_val == NULL ) return VENDOR_IBM ;
1048
+
1049
+ if ( strstr ( proc_str , "POWER7" ) != NULL )
1050
+ * model = MODEL_POWER7 ;
1051
+ else if ( strstr ( proc_str , "POWER9" ) != NULL )
1052
+ * model = MODEL_POWER9 ;
1053
+ else if ( strstr ( proc_str , "POWER10" ) != NULL )
1054
+ * model = MODEL_POWER10 ;
1055
+
1056
+ return VENDOR_IBM ;
1057
+ #endif
1058
+
1040
1059
//printf( "bli_cpuid_query(): beginning search\n" );
1041
1060
1042
1061
// Search /proc/cpuinfo for the 'Processor' entry.
0 commit comments