Detect AMD Trinity and Richland.
authorZhang Xianyi <traits.zhang@gmail.com>
Wed, 28 Oct 2015 18:53:29 +0000 (02:53 +0800)
committerZhang Xianyi <traits.zhang@gmail.com>
Wed, 28 Oct 2015 18:53:29 +0000 (02:53 +0800)
cpuid_x86.c
driver/others/dynamic.c

index a659910..6680b80 100644 (file)
@@ -1239,13 +1239,19 @@ int get_cpuname(void){
            return CPUTYPE_BULLDOZER;
          else
            return CPUTYPE_BARCELONA; //OS don't support AVX.
-       case 2:
+       case 2: //AMD Piledriver
+       case 3: //AMD Richland
          if(support_avx())
            return CPUTYPE_PILEDRIVER;
          else
            return CPUTYPE_BARCELONA; //OS don't support AVX.
        case 0:
          switch(exmodel){
+         case 1: //AMD Trinity
+           if(support_avx())
+             return CPUTYPE_PILEDRIVER;
+           else
+             return CPUTYPE_BARCELONA; //OS don't support AVX.
          case 3:
            if(support_avx())
              return CPUTYPE_STEAMROLLER;
@@ -1718,7 +1724,8 @@ int get_coretype(void){
            return CORE_BULLDOZER;
          else
            return CORE_BARCELONA; //OS don't support AVX.
-       case 2:
+       case 2: //AMD Piledriver
+       case 3: //AMD Richland
          if(support_avx())
            return CORE_PILEDRIVER;
          else
@@ -1726,6 +1733,12 @@ int get_coretype(void){
        
        case 0:
          switch(exmodel){
+         case 1: //AMD Trinity
+           if(support_avx())
+             return CORE_PILEDRIVER;
+           else
+             return CORE_BARCELONA; //OS don't support AVX.
+
          case 3:
            if(support_avx())
              return CORE_STEAMROLLER;
index c411645..1c4a229 100644 (file)
@@ -318,7 +318,7 @@ static gotoblas_t *get_coretype(void){
            openblas_warning(FALLBACK_VERBOSE, BARCELONA_FALLBACK);
            return &gotoblas_BARCELONA; //OS doesn't support AVX. Use old kernels.
          }
-       }else if(model == 2){
+       }else if(model == 2 || model == 3){
          //AMD Bulldozer Opteron 6300 / Opteron 4300 / Opteron 3300
          if(support_avx())
            return &gotoblas_PILEDRIVER;
@@ -327,7 +327,15 @@ static gotoblas_t *get_coretype(void){
            return &gotoblas_BARCELONA; //OS doesn't support AVX. Use old kernels.
          }
        }else if(model == 0){
-         if (exmodel == 3) {
+         if (exmodel == 1) {
+           //AMD Trinity
+           if(support_avx())
+             return &gotoblas_PILEDRIVER;
+           else{
+             openblas_warning(FALLBACK_VERBOSE, BARCELONA_FALLBACK);
+             return &gotoblas_BARCELONA; //OS doesn't support AVX. Use old kernels.
+           }
+          }else if (exmodel == 3) {
            //AMD STEAMROLLER
            if(support_avx())
              return &gotoblas_STEAMROLLER;