From 62aecd220e0909ccbf4da1972c7ba3f681152976 Mon Sep 17 00:00:00 2001 From: James Willis <james.s.willis@durham.ac.uk> Date: Thu, 29 Jun 2017 13:54:37 +0100 Subject: [PATCH] Use intrinsics for vector operations as arithmetic overloading is not supported by the Intel compiler yet for AVX-512 vectors. --- src/hydro/Gadget2/hydro_iact.h | 36 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/hydro/Gadget2/hydro_iact.h b/src/hydro/Gadget2/hydro_iact.h index fc62845ce1..35475056eb 100644 --- a/src/hydro/Gadget2/hydro_iact.h +++ b/src/hydro/Gadget2/hydro_iact.h @@ -578,24 +578,24 @@ runner_iact_nonsym_2_vec_density(float *R2, float *Dx, float *Dy, float *Dz, curlvzSum->v = vec_mask_add( curlvzSum->v, vec_mul(mj2.v, vec_mul(curlvrz2.v, wi_dx2.v)), mask2); } else { - rhoSum->v += vec_mul(mj.v, wi.v); - rhoSum->v += vec_mul(mj2.v, wi2.v); - rho_dhSum->v -= vec_mul( - mj.v, vec_fma(vec_set1(hydro_dimension), wi.v, vec_mul(xi.v, wi_dx.v))); - rho_dhSum->v -= vec_mul(mj2.v, vec_fma(vec_set1(hydro_dimension), wi2.v, - vec_mul(xi2.v, wi_dx2.v))); - wcountSum->v += wi.v; - wcountSum->v += wi2.v; - wcount_dhSum->v -= vec_mul(xi.v, wi_dx.v); - wcount_dhSum->v -= vec_mul(xi2.v, wi_dx2.v); - div_vSum->v -= vec_mul(mj.v, vec_mul(dvdr.v, wi_dx.v)); - div_vSum->v -= vec_mul(mj2.v, vec_mul(dvdr2.v, wi_dx2.v)); - curlvxSum->v += vec_mul(mj.v, vec_mul(curlvrx.v, wi_dx.v)); - curlvxSum->v += vec_mul(mj2.v, vec_mul(curlvrx2.v, wi_dx2.v)); - curlvySum->v += vec_mul(mj.v, vec_mul(curlvry.v, wi_dx.v)); - curlvySum->v += vec_mul(mj2.v, vec_mul(curlvry2.v, wi_dx2.v)); - curlvzSum->v += vec_mul(mj.v, vec_mul(curlvrz.v, wi_dx.v)); - curlvzSum->v += vec_mul(mj2.v, vec_mul(curlvrz2.v, wi_dx2.v)); + rhoSum->v = vec_add(rhoSum->v, vec_mul(mj.v, wi.v)); + rhoSum->v = vec_add(rhoSum->v, vec_mul(mj2.v, wi2.v)); + rho_dhSum->v = vec_sub(rho_dhSum->v, vec_mul( + mj.v, vec_fma(vec_set1(hydro_dimension), wi.v, vec_mul(xi.v, wi_dx.v)))); + rho_dhSum->v = vec_sub(rho_dhSum->v, vec_mul(mj2.v, vec_fma(vec_set1(hydro_dimension), wi2.v, + vec_mul(xi2.v, wi_dx2.v)))); + wcountSum->v = vec_add(wcountSum->v, wi.v); + wcountSum->v = vec_add(wcountSum->v, wi2.v); + wcount_dhSum->v = vec_sub(wcount_dhSum->v, vec_mul(xi.v, wi_dx.v)); + wcount_dhSum->v = vec_sub(wcount_dhSum->v, vec_mul(xi2.v, wi_dx2.v)); + div_vSum->v = vec_sub(div_vSum->v, vec_mul(mj.v, vec_mul(dvdr.v, wi_dx.v))); + div_vSum->v = vec_sub(div_vSum->v, vec_mul(mj2.v, vec_mul(dvdr2.v, wi_dx2.v))); + curlvxSum->v = vec_add(curlvxSum->v, vec_mul(mj.v, vec_mul(curlvrx.v, wi_dx.v))); + curlvxSum->v = vec_add(curlvxSum->v, vec_mul(mj2.v, vec_mul(curlvrx2.v, wi_dx2.v))); + curlvySum->v = vec_add(curlvySum->v, vec_mul(mj.v, vec_mul(curlvry.v, wi_dx.v))); + curlvySum->v = vec_add(curlvySum->v, vec_mul(mj2.v, vec_mul(curlvry2.v, wi_dx2.v))); + curlvzSum->v = vec_add(curlvzSum->v, vec_mul(mj.v, vec_mul(curlvrz.v, wi_dx.v))); + curlvzSum->v = vec_add(curlvzSum->v, vec_mul(mj2.v, vec_mul(curlvrz2.v, wi_dx2.v))); } } #endif -- GitLab