aboutsummaryrefslogtreecommitdiff
path: root/transfer.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2019-04-09 22:06:03 +0200
committerAnton Khirnov <anton@khirnov.net>2019-04-09 22:06:03 +0200
commit552bcf4c906522c3ef7695654052f61e12260049 (patch)
tree294b5c636a6c29f050d0a7112cc47508c3a1e14c /transfer.c
parent1e83fd63c30d433ee53769d4e4768feabf822ae2 (diff)
transfer: add AVX2 version of LAGRANGE_5 interpolation.
Diffstat (limited to 'transfer.c')
-rw-r--r--transfer.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/transfer.c b/transfer.c
index 311c6a9..db3cecb 100644
--- a/transfer.c
+++ b/transfer.c
@@ -61,6 +61,10 @@ void mg2di_transfer_interp_line_cont_4_fma3(double *dst, ptrdiff_t dst_len,
const double *src, ptrdiff_t src_stride,
const ptrdiff_t *idx_x,
const double *fact_x, const double *fact_y);
+void mg2di_transfer_interp_line_cont_6_fma3(double *dst, ptrdiff_t dst_len,
+ const double *src, ptrdiff_t src_stride,
+ const ptrdiff_t *idx_x,
+ const double *fact_x, const double *fact_y);
#endif
#define STENCIL 2
@@ -170,6 +174,11 @@ static int transfer_lagrange_init(GridTransferContext *ctx)
priv->transfer_cont = interp_transfer_line_cont_6;
priv->transfer_generic = interp_transfer_line_generic_6;
priv->stencil = 6;
+#if HAVE_EXTERNAL_ASM
+ if (ctx->cpuflags & MG2DI_CPU_FLAG_FMA3) {
+ priv->transfer_cont = mg2di_transfer_interp_line_cont_6_fma3;
+ }
+#endif
break;
case GRID_TRANSFER_LAGRANGE_7:
priv->transfer_cont = interp_transfer_line_cont_8;