@@ -328,20 +328,34 @@ set_platform (struct cpu_features *cpu_features)
GLRO(dl_hwcap) |= HWCAP_X86_AVX512_1;
}
}
+ }
- if (platform == NULL
- && CPU_FEATURES_ARCH_P (cpu_features, AVX2_Usable)
- && CPU_FEATURES_ARCH_P (cpu_features, FMA_Usable)
- && CPU_FEATURES_CPU_P (cpu_features, BMI1)
- && CPU_FEATURES_CPU_P (cpu_features, BMI2)
- && CPU_FEATURES_CPU_P (cpu_features, LZCNT)
- && CPU_FEATURES_CPU_P (cpu_features, MOVBE)
- && CPU_FEATURES_CPU_P (cpu_features, POPCNT))
+ if (platform == NULL
+ && CPU_FEATURES_ARCH_P (cpu_features, AVX2_Usable)
+ && CPU_FEATURES_ARCH_P (cpu_features, FMA_Usable)
+ && CPU_FEATURES_CPU_P (cpu_features, BMI1)
+ && CPU_FEATURES_CPU_P (cpu_features, BMI2)
+ && CPU_FEATURES_CPU_P (cpu_features, LZCNT)
+ && CPU_FEATURES_CPU_P (cpu_features, MOVBE)
+ && CPU_FEATURES_CPU_P (cpu_features, POPCNT))
+ {
+ if (cpu_features->basic.kind == arch_kind_intel)
platform = "haswell";
+ else if (cpu_features->basic.kind == arch_kind_amd)
+ platform = "zen";
}
+ if (platform == NULL
+ && CPU_FEATURES_ARCH_P (cpu_features, AVX2_Usable))
+ platform = "generic-avx2";
+
+ if (platform == NULL
+ && CPU_FEATURES_ARCH_P (cpu_features, AVX_Usable))
+ platform = "generic-avx";
+
if (platform != NULL)
GLRO(dl_platform) = platform;
+
#else
GLRO(dl_hwcap) = 0;
if (CPU_FEATURES_CPU_P (cpu_features, SSE2))