From ebb69e5e3765c0a65f92d4eb5e4ae8ba56c23f94 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 27 Dec 2018 11:25:30 +0100 Subject: Add CPU feature detection. Will be used for dynamically dispatching future asm functions. --- mg2d.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'mg2d.c') diff --git a/mg2d.c b/mg2d.c index 4b01ae6..82a5546 100644 --- a/mg2d.c +++ b/mg2d.c @@ -24,6 +24,7 @@ #include #include "common.h" +#include "cpu.h" #include "ell_relax.h" #include "log.h" #include "mg2d.h" @@ -54,6 +55,8 @@ struct MG2DInternal { MG2DLevel *root; + int cpuflags; + int64_t time_solve; int64_t count_solve; @@ -343,6 +346,7 @@ static int mg_levels_init(MG2DContext *ctx) cur->solver->step[0] = prev->solver->step[0] * ((double)(prev->solver->domain_size[0] - 1) / (cur->solver->domain_size[0] - 1)); cur->solver->step[1] = prev->solver->step[1] * ((double)(prev->solver->domain_size[1] - 1) / (cur->solver->domain_size[1] - 1)); } + cur->solver->cpuflags = priv->cpuflags; cur->solver->fd_stencil = ctx->fd_stencil; @@ -497,6 +501,8 @@ MG2DContext *mg2d_solver_alloc(size_t domain_size) priv->logger.log = log_callback; priv->logger.opaque = ctx; + priv->cpuflags = mg2di_cpu_flags_get(); + for (int i = 0; i < ARRAY_ELEMS(ctx->boundaries); i++) { const size_t boundary_len_max = domain_size + 2 * (FD_STENCIL_MAX - 1); -- cgit v1.2.3