/* Load i atom data */
int sciy = scix + STRIDE;
int sciz = sciy + STRIDE;
- ix_S0 = load1DualHsimd(x+scix);
- ix_S2 = load1DualHsimd(x+scix+2);
- iy_S0 = load1DualHsimd(x+sciy);
- iy_S2 = load1DualHsimd(x+sciy+2);
- iz_S0 = load1DualHsimd(x+sciz);
- iz_S2 = load1DualHsimd(x+sciz+2);
+ ix_S0 = loadU1DualHsimd(x+scix);
+ ix_S2 = loadU1DualHsimd(x+scix+2);
+ iy_S0 = loadU1DualHsimd(x+sciy);
+ iy_S2 = loadU1DualHsimd(x+sciy+2);
+ iz_S0 = loadU1DualHsimd(x+sciz);
+ iz_S2 = loadU1DualHsimd(x+sciz+2);
ix_S0 = ix_S0 + shX_S;
ix_S2 = ix_S2 + shX_S;
iy_S0 = iy_S0 + shY_S;
facel_S = SimdReal(facel);
- iq_S0 = load1DualHsimd(q+sci);
- iq_S2 = load1DualHsimd(q+sci+2);
+ iq_S0 = loadU1DualHsimd(q+sci);
+ iq_S2 = loadU1DualHsimd(q+sci+2);
iq_S0 = facel_S * iq_S0;
iq_S2 = facel_S * iq_S2;
}
#ifdef LJ_COMB_LB
- hsig_i_S0 = load1DualHsimd(ljc+sci2);
- hsig_i_S2 = load1DualHsimd(ljc+sci2+2);
- seps_i_S0 = load1DualHsimd(ljc+sci2+STRIDE);
- seps_i_S2 = load1DualHsimd(ljc+sci2+STRIDE+2);
+ hsig_i_S0 = loadU1DualHsimd(ljc+sci2);
+ hsig_i_S2 = loadU1DualHsimd(ljc+sci2+2);
+ seps_i_S0 = loadU1DualHsimd(ljc+sci2+STRIDE);
+ seps_i_S2 = loadU1DualHsimd(ljc+sci2+STRIDE+2);
#else
#ifdef LJ_COMB_GEOM
SimdReal c6s_S0, c12s_S0;
SimdReal c6s_S2, c12s_S2;
- c6s_S0 = load1DualHsimd(ljc+sci2);
+ c6s_S0 = loadU1DualHsimd(ljc+sci2);
if (!half_LJ)
{
- c6s_S2 = load1DualHsimd(ljc+sci2+2);
+ c6s_S2 = loadU1DualHsimd(ljc+sci2+2);
}
- c12s_S0 = load1DualHsimd(ljc+sci2+STRIDE);
+ c12s_S0 = loadU1DualHsimd(ljc+sci2+STRIDE);
if (!half_LJ)
{
- c12s_S2 = load1DualHsimd(ljc+sci2+STRIDE+2);
+ c12s_S2 = loadU1DualHsimd(ljc+sci2+STRIDE+2);
}
#elif !defined LJ_COMB_LB && !defined FIX_LJ_C
const real *nbfp0 = nbfp_ptr + type[sci ]*nbat->ntype*c_simdBestPairAlignment;
#ifdef LJ_EWALD_GEOM
/* We need the geometrically combined C6 for the PME grid correction */
SimdReal c6s_S0, c6s_S2;
- c6s_S0 = load1DualHsimd(ljc+sci2);
+ c6s_S0 = loadU1DualHsimd(ljc+sci2);
if (!half_LJ)
{
- c6s_S2 = load1DualHsimd(ljc+sci2+2);
+ c6s_S2 = loadU1DualHsimd(ljc+sci2+2);
}
#endif
/* Load i atom data */
int sciy = scix + STRIDE;
int sciz = sciy + STRIDE;
- SimdReal ix_S0 = load1DualHsimd(x + scix ) + shX_S;
- SimdReal ix_S2 = load1DualHsimd(x + scix + 2) + shX_S;
- SimdReal iy_S0 = load1DualHsimd(x + sciy ) + shY_S;
- SimdReal iy_S2 = load1DualHsimd(x + sciy + 2) + shY_S;
- SimdReal iz_S0 = load1DualHsimd(x + sciz ) + shZ_S;
- SimdReal iz_S2 = load1DualHsimd(x + sciz + 2) + shZ_S;
+ SimdReal ix_S0 = loadU1DualHsimd(x + scix ) + shX_S;
+ SimdReal ix_S2 = loadU1DualHsimd(x + scix + 2) + shX_S;
+ SimdReal iy_S0 = loadU1DualHsimd(x + sciy ) + shY_S;
+ SimdReal iy_S2 = loadU1DualHsimd(x + sciy + 2) + shY_S;
+ SimdReal iz_S0 = loadU1DualHsimd(x + sciz ) + shZ_S;
+ SimdReal iz_S2 = loadU1DualHsimd(x + sciz + 2) + shZ_S;
for (int cjind = ciEntry->cj_ind_start; cjind < ciEntry->cj_ind_end; cjind++)
{
ia = xIndexFromCi<NbnxnLayout::Simd2xNN>(ci);
- store(x_ci_simd + 0*GMX_SIMD_REAL_WIDTH, load1DualHsimd(x + ia + 0*STRIDE_S + 0) + SimdReal(shx) );
- store(x_ci_simd + 1*GMX_SIMD_REAL_WIDTH, load1DualHsimd(x + ia + 1*STRIDE_S + 0) + SimdReal(shy) );
- store(x_ci_simd + 2*GMX_SIMD_REAL_WIDTH, load1DualHsimd(x + ia + 2*STRIDE_S + 0) + SimdReal(shz) );
- store(x_ci_simd + 3*GMX_SIMD_REAL_WIDTH, load1DualHsimd(x + ia + 0*STRIDE_S + 2) + SimdReal(shx) );
- store(x_ci_simd + 4*GMX_SIMD_REAL_WIDTH, load1DualHsimd(x + ia + 1*STRIDE_S + 2) + SimdReal(shy) );
- store(x_ci_simd + 5*GMX_SIMD_REAL_WIDTH, load1DualHsimd(x + ia + 2*STRIDE_S + 2) + SimdReal(shz) );
+ store(x_ci_simd + 0*GMX_SIMD_REAL_WIDTH, loadU1DualHsimd(x + ia + 0*STRIDE_S + 0) + SimdReal(shx) );
+ store(x_ci_simd + 1*GMX_SIMD_REAL_WIDTH, loadU1DualHsimd(x + ia + 1*STRIDE_S + 0) + SimdReal(shy) );
+ store(x_ci_simd + 2*GMX_SIMD_REAL_WIDTH, loadU1DualHsimd(x + ia + 2*STRIDE_S + 0) + SimdReal(shz) );
+ store(x_ci_simd + 3*GMX_SIMD_REAL_WIDTH, loadU1DualHsimd(x + ia + 0*STRIDE_S + 2) + SimdReal(shx) );
+ store(x_ci_simd + 4*GMX_SIMD_REAL_WIDTH, loadU1DualHsimd(x + ia + 1*STRIDE_S + 2) + SimdReal(shy) );
+ store(x_ci_simd + 5*GMX_SIMD_REAL_WIDTH, loadU1DualHsimd(x + ia + 2*STRIDE_S + 2) + SimdReal(shz) );
}
/* SIMD code for checking and adding cluster-pairs to the list using coordinates in packed format.
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2014,2015, by the GROMACS development team, led by
+ * Copyright (c) 2014,2015,2017, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
* Available if \ref GMX_SIMD_HAVE_HSIMD_UTIL_DOUBLE is 1.
*/
static inline SimdDouble gmx_simdcall
-load1DualHsimd(const double * m)
+loadU1DualHsimd(const double * m)
{
SimdDouble a;
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2014,2015, by the GROMACS development team, led by
+ * Copyright (c) 2014,2015,2017, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
* Available if \ref GMX_SIMD_HAVE_HSIMD_UTIL_FLOAT is 1.
*/
static inline SimdFloat gmx_simdcall
-load1DualHsimd(const float * m)
+loadU1DualHsimd(const float * m)
{
SimdFloat a;
}
static inline SimdFloat gmx_simdcall
-load1DualHsimd(const float * m)
+loadU1DualHsimd(const float * m)
{
__m128 t0, t1;
t0 = _mm_broadcast_ss(m);
}
static inline SimdDouble gmx_simdcall
-load1DualHsimd(const double * m)
+loadU1DualHsimd(const double * m)
{
return {
_mm512_insertf64x4(_mm512_broadcastsd_pd(_mm_load_sd(m)),
}
static inline SimdFloat gmx_simdcall
-load1DualHsimd(const float * m)
+loadU1DualHsimd(const float * m)
{
return {
_mm512_shuffle_f32x4(_mm512_broadcastss_ps(_mm_load_ss(m)),
}
static inline SimdDouble gmx_simdcall
-load1DualHsimd(const double * m)
+loadU1DualHsimd(const double * m)
{
return _mm512_mask_extload_pd(_mm512_extload_pd(m, _MM_UPCONV_PD_NONE, _MM_BROADCAST_1X8, _MM_HINT_NONE), _mm512_int2mask(0xF0),
m+1, _MM_UPCONV_PD_NONE, _MM_BROADCAST_1X8, _MM_HINT_NONE);
}
static inline SimdFloat gmx_simdcall
-load1DualHsimd(const float * m)
+loadU1DualHsimd(const float * m)
{
return _mm512_mask_extload_ps(_mm512_extload_ps(m, _MM_UPCONV_PS_NONE, _MM_BROADCAST_1X16, _MM_HINT_NONE), _mm512_int2mask(0xFF00),
m+1, _MM_UPCONV_PS_NONE, _MM_BROADCAST_1X16, _MM_HINT_NONE);
}
-TEST_F(SimdFloatingpointUtilTest, load1DualHsimd)
+TEST_F(SimdFloatingpointUtilTest, loadU1DualHsimd)
{
SimdReal v0, v1;
int i;
}
v0 = load<SimdReal>(val0_);
- v1 = load1DualHsimd(data);
+ v1 = loadU1DualHsimd(data);
GMX_EXPECT_SIMD_REAL_EQ(v0, v1);
}