aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/m4
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-05-21 03:54:32 -0700
committerH.J. Lu <hjl.tools@gmail.com>2020-05-21 03:54:47 -0700
commit8ebc2f5e05aa32bcad8cbfb02f8b50d92a469e66 (patch)
tree41e2ba782785299699ebf96e9298b85e1bf82d81 /libgfortran/m4
parent9e02b45ffc60e0078bde3c56a14f00c54b7f8039 (diff)
downloadgcc-8ebc2f5e05aa32bcad8cbfb02f8b50d92a469e66.zip
gcc-8ebc2f5e05aa32bcad8cbfb02f8b50d92a469e66.tar.gz
gcc-8ebc2f5e05aa32bcad8cbfb02f8b50d92a469e66.tar.bz2
libgfortran: Use __builtin_cpu_is/__builtin_cpu_supports
* m4/matmul.m4: Don't include <config/i386/cpuinfo.h>. Use __builtin_cpu_is/__builtin_cpu_supports * generated/matmul_c10.c: Regenerated. * generated/matmul_c16.c: Likewise. * generated/matmul_c4.c: Likewise. * generated/matmul_c8.c: Likewise. * generated/matmul_i1.c: Likewise. * generated/matmul_i16.c: Likewise. * generated/matmul_i2.c: Likewise. * generated/matmul_i4.c: Likewise. * generated/matmul_i8.c: Likewise. * generated/matmul_r10.c: Likewise. * generated/matmul_r16.c: Likewise. * generated/matmul_r4.c: Likewise. * generated/matmul_r8.c: Likewise.
Diffstat (limited to 'libgfortran/m4')
-rw-r--r--libgfortran/m4/matmul.m421
1 files changed, 10 insertions, 11 deletions
diff --git a/libgfortran/m4/matmul.m4 b/libgfortran/m4/matmul.m4
index 83f4ae6..5acecf1 100644
--- a/libgfortran/m4/matmul.m4
+++ b/libgfortran/m4/matmul.m4
@@ -134,7 +134,6 @@ internal_proto('matmul_name`);
/* Currently, this is i386 only. Adjust for other architectures. */
-#include <config/i386/cpuinfo.h>
void matmul_'rtype_code` ('rtype` * const restrict retarray,
'rtype` * const restrict a, 'rtype` * const restrict b, int try_blas,
int blas_limit, blas_call gemm)
@@ -151,11 +150,11 @@ void matmul_'rtype_code` ('rtype` * const restrict retarray,
if (matmul_fn == NULL)
{
matmul_fn = matmul_'rtype_code`_vanilla;
- if (__cpu_model.__cpu_vendor == VENDOR_INTEL)
+ if (__builtin_cpu_is ("intel"))
{
/* Run down the available processors in order of preference. */
#ifdef HAVE_AVX512F
- if (__cpu_model.__cpu_features[0] & (1 << FEATURE_AVX512F))
+ if (__builtin_cpu_supports ("avx512f"))
{
matmul_fn = matmul_'rtype_code`_avx512f;
goto store;
@@ -164,8 +163,8 @@ void matmul_'rtype_code` ('rtype` * const restrict retarray,
#endif /* HAVE_AVX512F */
#ifdef HAVE_AVX2
- if ((__cpu_model.__cpu_features[0] & (1 << FEATURE_AVX2))
- && (__cpu_model.__cpu_features[0] & (1 << FEATURE_FMA)))
+ if (__builtin_cpu_supports ("avx2")
+ && __builtin_cpu_supports ("fma"))
{
matmul_fn = matmul_'rtype_code`_avx2;
goto store;
@@ -174,26 +173,26 @@ void matmul_'rtype_code` ('rtype` * const restrict retarray,
#endif
#ifdef HAVE_AVX
- if (__cpu_model.__cpu_features[0] & (1 << FEATURE_AVX))
+ if (__builtin_cpu_supports ("avx"))
{
matmul_fn = matmul_'rtype_code`_avx;
goto store;
}
#endif /* HAVE_AVX */
}
- else if (__cpu_model.__cpu_vendor == VENDOR_AMD)
+ else if (__builtin_cpu_is ("amd"))
{
#if defined(HAVE_AVX) && defined(HAVE_FMA3) && defined(HAVE_AVX128)
- if ((__cpu_model.__cpu_features[0] & (1 << FEATURE_AVX))
- && (__cpu_model.__cpu_features[0] & (1 << FEATURE_FMA)))
+ if (__builtin_cpu_supports ("avx")
+ && __builtin_cpu_supports ("fma"))
{
matmul_fn = matmul_'rtype_code`_avx128_fma3;
goto store;
}
#endif
#if defined(HAVE_AVX) && defined(HAVE_FMA4) && defined(HAVE_AVX128)
- if ((__cpu_model.__cpu_features[0] & (1 << FEATURE_AVX))
- && (__cpu_model.__cpu_features[0] & (1 << FEATURE_FMA4)))
+ if (__builtin_cpu_supports ("avx")
+ && __builtin_cpu_supports ("fma4"))
{
matmul_fn = matmul_'rtype_code`_avx128_fma4;
goto store;