<A NAME="el2">
<dt><b>rcoulomb-switch: (0) [nm]</b></dt>
-<dd>where to start switching the Coulomb potential</dd>
+<dd>where to start switching the Coulomb potential, only relevant when force or potential switching is used</dd>
<dt><b>rcoulomb: (1) [nm]</b></dt>
<dd>distance for the Coulomb <!--Idx-->cut-off<!--EIdx--></dd>
set using <b>lj-pme-comb-rule</b>.</dd>
<dt><b>Shift</b></dt>
-<dd>The LJ (not Buckingham) potential is decreased over the whole
+<dd>This functionality is deprecated and replaced by <b>vdw-modifier = Force-switch</b>.
+The LJ (not Buckingham) potential is decreased over the whole
range and the forces decay smoothly to zero between <b>rvdw-switch</b>
and <b>rvdw</b>. The neighbor search cut-off <b>rlist</b> should be
0.1 to 0.3 nm larger than <b>rvdw</b> to accommodate for the size of
updates.</dd>
<dt><b>Switch</b></dt>
-<dd>The LJ (not Buckingham)
+<dd>This functionality is deprecated and replaced by <b>vdw-modifier = Potential-switch</b>.
+The LJ (not Buckingham)
potential is normal out to <b>rvdw-switch</b>, after which it is switched
off to reach zero at <b>rvdw</b>. Both the potential and force functions
are continuously smooth, but be aware that all switch functions will give rise
affect the forces or the sampling.</dd>
<dt><b>None</b></dt>
<dd>Use an unmodified Van der Waals potential. With the group scheme this means no exact cut-off is used, energies and forces are calculated for all pairs in the neighborlist.</dd>
+<dt><b>Force-switch</b></dt>
+<dd>Smoothly switches the forces to zero between <b>rvdw-switch</b> and <b>rvdw</b>. This shifts the potential shift over the whole range and switches it to zero at the cut-off. Note that this is more expensive to calculate than a plain cut-off and it is not required for energy conservation, since <b>Potential-shift</b> conserves energy just as well.</dd>
+<dt><b>Potential-switch</b></dt>
+<dd>Smoothly switches the potential to zero between <b>rvdw-switch</b> and <b>rvdw</b>. Note that this introduces articifically large forces in the switching region and is much more expensive to calculate. This option should only be used if the force field you are using requires this.</dd>
</dl></dd>
<dt><b>rvdw-switch: (0) [nm]</b></dt>
-<dd>where to start switching the LJ potential</dd>
+<dd>where to start switching the LJ force and possibly the potential, only relevant when force or potential switching is used</dd>
<dt><b>rvdw: (1) [nm]</b></dt>
<dd>distance for the LJ or Buckingham <!--Idx-->cut-off<!--EIdx--></dd>
ir->coulombtype == eelENCADSHIFT ||
ir->coulombtype == eelPMESWITCH ||
ir->coulombtype == eelPMEUSERSWITCH ||
- ir->coulomb_modifier == eintmodPOTSWITCH);
+ ir->coulomb_modifier == eintmodPOTSWITCH ||
+ ir->coulomb_modifier == eintmodFORCESWITCH);
}
gmx_bool ir_coulomb_is_zero_at_cutoff(const t_inputrec *ir)
{
- return (ir_coulomb_switched(ir) || ir->coulomb_modifier != eintmodNONE ||
+ return (ir->cutoff_scheme == ecutsVERLET ||
+ ir_coulomb_switched(ir) || ir->coulomb_modifier != eintmodNONE ||
ir->coulombtype == eelRF_ZERO);
}
return (ir->vdwtype == evdwSWITCH ||
ir->vdwtype == evdwSHIFT ||
ir->vdwtype == evdwENCADSHIFT ||
- ir->vdw_modifier == eintmodPOTSWITCH);
+ ir->vdw_modifier == eintmodPOTSWITCH ||
+ ir->vdw_modifier == eintmodFORCESWITCH);
}
gmx_bool ir_vdw_is_zero_at_cutoff(const t_inputrec *ir)
{
- return (ir_vdw_switched(ir) || ir->vdw_modifier != eintmodNONE);
+ return (ir->cutoff_scheme == ecutsVERLET ||
+ ir_vdw_switched(ir) || ir->vdw_modifier != eintmodNONE);
}
gmx_bool ir_vdw_might_be_zero_at_cutoff(const t_inputrec *ir)
};
const char *eintmod_names[eintmodNR+1] = {
- "Potential-shift-Verlet", "Potential-shift", "None", "Potential-switch", "Exact-cutoff", NULL
+ "Potential-shift-Verlet", "Potential-shift", "None", "Potential-switch", "Exact-cutoff", "Force-switch", NULL
};
const char *egrp_nm[egNR+1] = {
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2012, by the GROMACS development team, led by
+ * Copyright (c) 2012,2014, 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.
int ewitab;
real ewtabscale, eweps, sh_ewald, ewrt, ewtabhalfspace;
real * ewtab;
- real rcoulomb2, rvdw, rvdw2, sh_invrc6;
+ real rcoulomb2, rvdw, rvdw2, sh_dispersion, sh_repulsion;
real rcutoff, rcutoff2;
real rswitch_elec, rswitch_vdw, d, d2, sw, dsw, rinvcorr;
real elec_swV3, elec_swV4, elec_swV5, elec_swF2, elec_swF3, elec_swF4;
rcoulomb2 = fr->rcoulomb*fr->rcoulomb;
rvdw = fr->rvdw;
rvdw2 = rvdw*rvdw;
- sh_invrc6 = fr->ic->sh_invrc6;
+ sh_dispersion = fr->ic->dispersion_shift.cpot;
+ sh_repulsion = fr->ic->repulsion_shift.cpot;
if (fr->coulomb_modifier == eintmodPOTSWITCH)
{
fvdw = (vvdw_rep-vvdw_disp)*rinvsq;
if (fr->vdw_modifier == eintmodPOTSHIFT)
{
- vvdw = (vvdw_rep-c12*sh_invrc6*sh_invrc6)*(1.0/12.0)-(vvdw_disp-c6*sh_invrc6)*(1.0/6.0);
+ vvdw = (vvdw_rep + c12*sh_repulsion)/12.0 - (vvdw_disp + c6*sh_dispersion)/6.0;
}
else
{
fvdw = (br*vvdw_rep-vvdw_disp)*rinvsq;
if (fr->vdw_modifier == eintmodPOTSHIFT)
{
- vvdw = (vvdw_rep-cexp1*exp(-cexp2*rvdw))-(vvdw_disp-c6*sh_invrc6)/6.0;
+ vvdw = (vvdw_rep-cexp1*exp(-cexp2*rvdw))-(vvdw_disp + c6*sh_dispersion)/6.0;
}
else
{
*
* Copyright (c) 2009 Christoph Junghans, Brad Lambeth.
* Copyright (c) 2011 Christoph Junghans, Sebastian Fritsch.
- * Copyright (c) 2011,2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014, 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.
int ewitab;
real ewtabscale, eweps, sh_ewald, ewrt, ewtabhalfspace;
real * ewtab;
- real rcoulomb2, rvdw, rvdw2, sh_invrc6;
+ real rcoulomb2, rvdw, rvdw2, sh_dispersion, sh_repulsion;
real rcutoff, rcutoff2;
real rswitch_elec, rswitch_vdw, d, d2, sw, dsw, rinvcorr;
real elec_swV3, elec_swV4, elec_swV5, elec_swF2, elec_swF3, elec_swF4;
rcoulomb2 = fr->rcoulomb*fr->rcoulomb;
rvdw = fr->rvdw;
rvdw2 = rvdw*rvdw;
- sh_invrc6 = fr->ic->sh_invrc6;
+ sh_dispersion = fr->ic->dispersion_shift.cpot;
+ sh_repulsion = fr->ic->repulsion_shift.cpot;
if (fr->coulomb_modifier == eintmodPOTSWITCH)
{
fvdw = (vvdw_rep-vvdw_disp)*rinvsq;
if (fr->vdw_modifier == eintmodPOTSHIFT)
{
- vvdw = (vvdw_rep-c12*sh_invrc6*sh_invrc6)*(1.0/12.0)-(vvdw_disp-c6*sh_invrc6)*(1.0/6.0);
+ vvdw = (vvdw_rep + c12*sh_repulsion)/12.0 - (vvdw_disp + c6*sh_dispersion)/6.0;
}
else
{
fvdw = (br*vvdw_rep-vvdw_disp)*rinvsq;
if (fr->vdw_modifier == eintmodPOTSHIFT)
{
- vvdw = (vvdw_rep-cexp1*exp(-cexp2*rvdw))-(vvdw_disp-c6*sh_invrc6)/6.0;
+ vvdw = (vvdw_rep-cexp1*exp(-cexp2*rvdw)) - (vvdw_disp + c6*sh_dispersion)/6.0;
}
else
{
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014, 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.
* - GPU always does exclusions, which requires 2-4 flops, but as invsqrt
* is always counted as 6 flops, this roughly compensates.
*/
- { "NxN RF Elec. + VdW [F]", 38 }, /* nbnxn kernel LJ+RF, no ener */
- { "NxN RF Elec. + VdW [V&F]", 54 },
- { "NxN QSTab Elec. + VdW [F]", 41 }, /* nbnxn kernel LJ+tab, no en */
- { "NxN QSTab Elec. + VdW [V&F]", 59 },
- { "NxN Ewald Elec. + VdW [F]", 66 }, /* nbnxn kernel LJ+Ewald, no en */
- { "NxN Ewald Elec. + VdW [V&F]", 107 },
- { "NxN VdW [F]", 33 }, /* nbnxn kernel LJ, no ener */
- { "NxN VdW [V&F]", 43 },
+ { "NxN RF Elec. + LJ [F]", 38 }, /* nbnxn kernel LJ+RF, no ener */
+ { "NxN RF Elec. + LJ [V&F]", 54 },
+ { "NxN QSTab Elec. + LJ [F]", 41 }, /* nbnxn kernel LJ+tab, no en */
+ { "NxN QSTab Elec. + LJ [V&F]", 59 },
+ { "NxN Ewald Elec. + LJ [F]", 66 }, /* nbnxn kernel LJ+Ewald, no en */
+ { "NxN Ewald Elec. + LJ [V&F]", 107 },
+ { "NxN LJ [F]", 33 }, /* nbnxn kernel LJ, no ener */
+ { "NxN LJ [V&F]", 43 },
{ "NxN RF Electrostatics [F]", 31 }, /* nbnxn kernel RF, no ener */
{ "NxN RF Electrostatics [V&F]", 36 },
{ "NxN QSTab Elec. [F]", 34 }, /* nbnxn kernel tab, no ener */
{ "NxN QSTab Elec. [V&F]", 41 },
{ "NxN Ewald Elec. [F]", 61 }, /* nbnxn kernel Ewald, no ener */
{ "NxN Ewald Elec. [V&F]", 84 },
+ /* The switch function flops should be added to the LJ kernels above */
+ { "NxN LJ add F-switch [F]", 12 }, /* extra cost for LJ F-switch */
+ { "NxN LJ add F-switch [V&F]", 22 },
+ { "NxN LJ add P-switch [F]", 27 }, /* extra cost for LJ P-switch */
+ { "NxN LJ add P-switch [V&F]", 20 },
{ "1,4 nonbonded interactions", 90 },
{ "Born radii (Still)", 47 },
{ "Born radii (HCT/OBC)", 183 },
#endif
}
+/* Returns in enr is the index of a full nbnxn VdW kernel */
+static gmx_bool nrnb_is_nbnxn_vdw_kernel(int enr)
+{
+ return (enr >= eNR_NBNXN_LJ_RF && enr <= eNR_NBNXN_LJ_E);
+}
+
+/* Returns in enr is the index of an nbnxn kernel addition (switch function) */
+static gmx_bool nrnb_is_nbnxn_kernel_addition(int enr)
+{
+ return (enr >= eNR_NBNXN_LJ_FSW && enr <= eNR_NBNXN_LJ_PSW_E);
+}
+
void print_flop(FILE *out, t_nrnb *nrnb, double *nbfs, double *mflop)
{
- int i;
+ int i, j;
double mni, frac, tfrac, tflop;
const char *myline = "-----------------------------------------------------------------------------";
for (i = 0; (i < eNRNB); i++)
{
mni = 1e-6*nrnb->n[i];
- *mflop += mni*nbdata[i].flop;
- frac = 100.0*mni*nbdata[i].flop/tflop;
- tfrac += frac;
- if (out && mni != 0)
+ /* Skip empty entries and nbnxn additional flops,
+ * which have been added to the kernel entry.
+ */
+ if (mni > 0 && !nrnb_is_nbnxn_kernel_addition(i))
{
- fprintf(out, " %-32s %16.6f %15.3f %6.1f\n",
- nbdata[i].name, mni, mni*nbdata[i].flop, frac);
+ int flop;
+
+ flop = nbdata[i].flop;
+ if (nrnb_is_nbnxn_vdw_kernel(i))
+ {
+ /* Possibly add the cost of a switch function */
+ for (j = eNR_NBNXN_LJ_FSW; j <= eNR_NBNXN_LJ_PSW; j += 2)
+ {
+ int e_kernel_add;
+
+ /* Select the force or energy flop count */
+ e_kernel_add = j + ((i - eNR_NBNXN_LJ_RF) % 2);
+
+ if (nrnb->n[e_kernel_add] > 0)
+ {
+ flop += nbdata[e_kernel_add].flop;
+ }
+ }
+ }
+ *mflop += mni*flop;
+ frac = 100.0*mni*flop/tflop;
+ tfrac += frac;
+ if (out != NULL)
+ {
+ fprintf(out, " %-32s %16.6f %15.3f %6.1f\n",
+ nbdata[i].name, mni, mni*flop, frac);
+ }
}
}
if (out)
static real ener_drift(const verletbuf_atomtype_t *att, int natt,
const gmx_ffparams_t *ffp,
real kT_fac,
- real md_ljd, real md_ljr, real md_el, real dd_el,
+ real md_ljd, real dd_ljd,
+ real md_ljr, real dd_ljr,
+ real md_el, real dd_el,
real r_buffer,
real rlist, real boxvol)
{
md_el*att[i].prop.q*att[j].prop.q;
/* d2V/dr2 at the cut-off for Coulomb, we neglect LJ */
- dd = dd_el*att[i].prop.q*att[j].prop.q;
+ dd =
+ dd_ljd*ffp->iparams[ti*ffp->atnr+tj].lj.c6 +
+ dd_ljr*ffp->iparams[ti*ffp->atnr+tj].lj.c12 +
+ dd_el*att[i].prop.q*att[j].prop.q;
rsh = r_buffer;
sc_fac = 1.0;
verletbuf_atomtype_t *att = NULL;
int natt = -1, i;
double reppow;
- real md_ljd, md_ljr, md_el, dd_el;
+ real md_ljd, dd_ljd, md_ljr, dd_ljr, md_el, dd_el;
real elfac;
real kT_fac, mass_min;
int ib0, ib1, ib;
reppow = mtop->ffparams.reppow;
md_ljd = 0;
+ dd_ljd = 0;
md_ljr = 0;
+ dd_ljr = 0;
if (ir->vdwtype == evdwCUT)
{
- /* -dV/dr of -r^-6 and r^-repporw */
- md_ljd = -6*pow(ir->rvdw, -7.0);
- md_ljr = reppow*pow(ir->rvdw, -(reppow+1));
- /* The contribution of the second derivative is negligible */
+ real sw_range, sw_range2;
+
+ switch (ir->vdw_modifier)
+ {
+ case eintmodNONE:
+ case eintmodPOTSHIFT:
+ /* -dV/dr of -r^-6 and r^-reppow */
+ md_ljd = -6*pow(ir->rvdw, -7.0);
+ md_ljr = reppow*pow(ir->rvdw, -(reppow+1));
+ /* The contribution of the second derivative is negligible */
+ break;
+ case eintmodFORCESWITCH:
+ /* At the cut-off: V=V'=V''=0.
+ * We choose to approximate the potential over the switch
+ * region using a linear force, thus quadratic potential.
+ * This is a tight overestimate for too short switching
+ * regions and not more than a factor 2 higher otherwise.
+ */
+ sw_range = ir->rvdw - ir->rvdw_switch;
+ dd_ljd = -6*pow(ir->rvdw_switch, -7.0 )/sw_range;
+ dd_ljr = reppow*pow(ir->rvdw_switch, -(reppow+1))/sw_range;
+ break;
+ case eintmodPOTSWITCH:
+ /* At the cut-off: V=V'=V''=0.
+ * We choose to approximate the potential over the switch
+ * region using a quadratic potential.
+ * This is an overestimate close to the cut-off and can be
+ * a slight underestimate close to rswitch.
+ */
+ sw_range = ir->rvdw - ir->rvdw_switch;
+ sw_range2 = sw_range*sw_range;
+ dd_ljd = -12*pow(ir->rvdw_switch, -6.0 )/sw_range2;
+ dd_ljr = 2*reppow*pow(ir->rvdw_switch, -reppow)/sw_range2;
+ break;
+ default:
+ gmx_incons("Unimplemented VdW modifier");
+ }
}
else if (EVDW_PME(ir->vdwtype))
{
if (debug)
{
- fprintf(debug, "md_ljd %e md_ljr %e\n", md_ljd, md_ljr);
- fprintf(debug, "md_el %e dd_el %e\n", md_el, dd_el);
+ fprintf(debug, "md_ljd %9.2e dd_ljd %9.2e\n", md_ljd, dd_ljd);
+ fprintf(debug, "md_ljr %9.2e dd_ljr %9.2e\n", md_ljr, dd_ljr);
+ fprintf(debug, "md_el %9.2e dd_el %9.2e\n", md_el, dd_el);
fprintf(debug, "sqrt(kT_fac) %f\n", sqrt(kT_fac));
fprintf(debug, "mass_min %f\n", mass_min);
}
*/
drift = ener_drift(att, natt, &mtop->ffparams,
kT_fac,
- md_ljd, md_ljr, md_el, dd_el, rb,
+ md_ljd, dd_ljd,
+ md_ljr, dd_ljr,
+ md_el, dd_el,
+ rb,
rl, boxvol);
/* Correct for the fact that we are using a Ni x Nj particle pair list
{
warning_error(wi, "With Verlet lists rcoulomb!=rvdw is not supported");
}
+ if (ir->vdwtype == evdwSHIFT || ir->vdwtype == evdwSWITCH)
+ {
+ if (ir->vdw_modifier == eintmodNONE ||
+ ir->vdw_modifier == eintmodPOTSHIFT)
+ {
+ ir->vdw_modifier = (ir->vdwtype == evdwSHIFT ? eintmodFORCESWITCH : eintmodPOTSWITCH);
+
+ sprintf(warn_buf, "Replacing vdwtype=%s by the equivalent combination of vdwtype=%s and vdw_modifier=%s", evdw_names[ir->vdwtype], evdw_names[evdwCUT], eintmod_names[ir->vdw_modifier]);
+ warning_note(wi, warn_buf);
+
+ ir->vdwtype = evdwCUT;
+ }
+ else
+ {
+ sprintf(warn_buf, "Unsupported combination of vdwtype=%s and vdw_modifier=%s", evdw_names[ir->vdwtype], eintmod_names[ir->vdw_modifier]);
+ warning_error(wi, warn_buf);
+ }
+ }
+
if (ir->vdwtype != evdwCUT)
{
warning_error(wi, "With Verlet lists only cut-off LJ interactions are supported");
{
warning_error(wi, "With Verlet lists only cut-off, reaction-field, PME and Ewald electrostatics are supported");
}
+ if (!(ir->coulomb_modifier == eintmodNONE ||
+ ir->coulomb_modifier == eintmodPOTSHIFT))
+ {
+ sprintf(warn_buf, "coulomb_modifier=%s is not supported with the Verlet cut-off scheme", eintmod_names[ir->coulomb_modifier]);
+ warning_error(wi, warn_buf);
+ }
if (ir->nstlist <= 0)
{
if (ir_vdw_switched(ir))
{
- sprintf(err_buf, "With vdwtype = %s rvdw-switch must be < rvdw. Or, better - use a potential modifier.",
- evdw_names[ir->vdwtype]);
+ sprintf(err_buf, "With switched vdw forces or potentials, rvdw-switch must be < rvdw");
CHECK(ir->rvdw_switch >= ir->rvdw);
}
else if (ir->vdwtype == evdwCUT)
CHECK(ir->rlist > ir->rvdw);
}
}
+
if (ir->cutoff_scheme == ecutsGROUP)
{
if (((ir->coulomb_modifier != eintmodNONE && ir->rcoulomb == ir->rlist) ||
evdw_names[evdwSHIFT]);
warning_note(wi, warn_buf);
}
- if (!ir_coulomb_might_be_zero_at_cutoff(ir) && ir->rcoulomb > 0 && ir->coulomb_modifier == eintmodNONE)
+ if (!ir_coulomb_might_be_zero_at_cutoff(ir) && ir->rcoulomb > 0)
{
sprintf(warn_buf, "You are using a cut-off for electrostatics with NVE, for good energy conservation use coulombtype = %s or %s",
eel_names[eelPMESWITCH], eel_names[eelRF_ZERO]);
* since user defined interactions might purposely
* not be zero at the cut-off.
*/
- if ((ir_vdw_is_zero_at_cutoff(ir) || ir->vdw_modifier != eintmodNONE) &&
+ if (ir_vdw_is_zero_at_cutoff(ir) &&
rvdw1 + rvdw2 > ir->rlistlong - ir->rvdw)
{
sprintf(warn_buf, "The sum of the two largest charge group "
warning_note(wi, warn_buf);
}
}
- if ((ir_coulomb_is_zero_at_cutoff(ir) ||
- ir->coulomb_modifier != eintmodNONE) &&
+ if (ir_coulomb_is_zero_at_cutoff(ir) &&
rcoul1 + rcoul2 > ir->rlistlong - ir->rcoulomb)
{
sprintf(warn_buf, "The sum of the two largest charge group radii (%f) is larger than %s (%f) - rcoulomb (%f).\n"
* Exactcutoff is only used by Reaction-field-zero, and is not user-selectable.
*/
enum eintmod {
- eintmodPOTSHIFT_VERLET, eintmodPOTSHIFT, eintmodNONE, eintmodPOTSWITCH, eintmodEXACTCUTOFF, eintmodNR
+ eintmodPOTSHIFT_VERLET, eintmodPOTSHIFT, eintmodNONE, eintmodPOTSWITCH, eintmodEXACTCUTOFF, eintmodFORCESWITCH, eintmodNR
};
/*
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
extern "C" {
#endif
+/* Used with force switching or a constant potential shift:
+ * rsw = max(r - r_switch, 0)
+ * force/p = r^-(p+1) + c2*rsw^2 + c3*rsw^3
+ * potential = r^-p + c2/3*rsw^3 + c3/4*rsw^4 + cpot
+ * With a constant potential shift c2 and c3 are both 0.
+ */
+typedef struct {
+ real c2;
+ real c3;
+ real cpot;
+} shift_consts_t;
+
+/* Used with potential switching:
+ * rsw = max(r - r_switch, 0)
+ * sw = 1 + c3*rsw^3 + c4*rsw^4 + c5*rsw^5
+ * dsw = 3*c3*rsw^2 + 4*c4*rsw^3 + 5*c5*rsw^4
+ * force = force*dsw - potential*sw
+ * potential *= sw
+ */
+typedef struct {
+ real c3;
+ real c4;
+ real c5;
+} switch_consts_t;
+
typedef struct {
/* VdW */
- real rvdw;
- real sh_invrc6; /* For shifting the LJ potential */
+ int vdw_modifier;
+ real rvdw;
+ real rvdw_switch;
+ shift_consts_t dispersion_shift;
+ shift_consts_t repulsion_shift;
+ switch_consts_t vdw_switch;
+ /* TODO: remove this variable, used for not modyfing the group kernels,
+ * it is equal to -dispersion_shift->cpot
+ */
+ real sh_invrc6;
/* type of electrostatics (defined in enums.h) */
int eeltype;
/* PME/Ewald */
real ewaldcoeff_q;
real ewaldcoeff_lj;
- real sh_ewald; /* For shifting the Ewald potential */
+ real sh_ewald; /* -sh_ewald is added to the direct space potential */
/* Dielectric constant resp. multiplication factor for charges */
real epsilon_r;
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014, 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.
eNR_NBNXN_RF, eNR_NBNXN_RF_E,
eNR_NBNXN_TAB, eNR_NBNXN_TAB_E,
eNR_NBNXN_EWALD, eNR_NBNXN_EWALD_E,
+ eNR_NBNXN_LJ_FSW, eNR_NBNXN_LJ_FSW_E,
+ eNR_NBNXN_LJ_PSW, eNR_NBNXN_LJ_PSW_E,
eNR_NB14,
eNR_BORN_RADII_STILL, eNR_BORN_RADII_HCT_OBC,
eNR_BORN_CHAINRULE,
#include "nbnxn_consts.h"
#include "gmx_omp_nthreads.h"
#include "gmx_detect_hardware.h"
+#include "inputrec.h"
#ifdef _MSC_VER
/* MSVC definition for __cpuid() */
}
}
-static void init_interaction_const(FILE *fp,
- const t_commrec gmx_unused *cr,
- interaction_const_t **interaction_const,
- const t_forcerec *fr,
- real rtab)
+static void clear_force_switch_constants(shift_consts_t *sc)
+{
+ sc->c2 = 0;
+ sc->c3 = 0;
+ sc->cpot = 0;
+}
+
+static void force_switch_constants(real p,
+ real rsw, real rc,
+ shift_consts_t *sc)
+{
+ /* Here we determine the coefficient for shifting the force to zero
+ * between distance rsw and the cut-off rc.
+ * For a potential of r^-p, we have force p*r^-(p+1).
+ * But to save flops we absorb p in the coefficient.
+ * Thus we get:
+ * force/p = r^-(p+1) + c2*r^2 + c3*r^3
+ * potential = r^-p + c2/3*r^3 + c3/4*r^4 + cpot
+ */
+ sc->c2 = ((p + 1)*rsw - (p + 4)*rc)/(pow(rc, p + 2)*pow(rc - rsw, 2));
+ sc->c3 = -((p + 1)*rsw - (p + 3)*rc)/(pow(rc, p + 2)*pow(rc - rsw, 3));
+ sc->cpot = -pow(rc, -p) + p*sc->c2/3*pow(rc - rsw, 3) + p*sc->c3/4*pow(rc - rsw, 4);
+}
+
+static void potential_switch_constants(real rsw, real rc,
+ switch_consts_t *sc)
+{
+ /* The switch function is 1 at rsw and 0 at rc.
+ * The derivative and second derivate are zero at both ends.
+ * rsw = max(r - r_switch, 0)
+ * sw = 1 + c3*rsw^3 + c4*rsw^4 + c5*rsw^5
+ * dsw = 3*c3*rsw^2 + 4*c4*rsw^3 + 5*c5*rsw^4
+ * force = force*dsw - potential*sw
+ * potential *= sw
+ */
+ sc->c3 = -10*pow(rc - rsw, -3);
+ sc->c4 = 15*pow(rc - rsw, -4);
+ sc->c5 = -6*pow(rc - rsw, -5);
+}
+
+static void
+init_interaction_const(FILE *fp,
+ const t_commrec gmx_unused *cr,
+ interaction_const_t **interaction_const,
+ const t_forcerec *fr,
+ real rtab)
{
interaction_const_t *ic;
gmx_bool bUsesSimpleTables = TRUE;
ic->rlistlong = fr->rlistlong;
/* Lennard-Jones */
- ic->rvdw = fr->rvdw;
- if (fr->vdw_modifier == eintmodPOTSHIFT)
- {
- ic->sh_invrc6 = pow(ic->rvdw, -6.0);
- }
- else
- {
- ic->sh_invrc6 = 0;
+ ic->vdw_modifier = fr->vdw_modifier;
+ ic->rvdw = fr->rvdw;
+ ic->rvdw_switch = fr->rvdw_switch;
+ clear_force_switch_constants(&ic->dispersion_shift);
+ clear_force_switch_constants(&ic->repulsion_shift);
+
+ switch (ic->vdw_modifier)
+ {
+ case eintmodPOTSHIFT:
+ /* Only shift the potential, don't touch the force */
+ ic->dispersion_shift.cpot = -pow(ic->rvdw, -6.0);
+ ic->repulsion_shift.cpot = -pow(ic->rvdw, -12.0);
+ break;
+ case eintmodFORCESWITCH:
+ /* Switch the force, switch and shift the potential */
+ force_switch_constants(6.0, ic->rvdw_switch, ic->rvdw,
+ &ic->dispersion_shift);
+ force_switch_constants(12.0, ic->rvdw_switch, ic->rvdw,
+ &ic->repulsion_shift);
+ break;
+ case eintmodPOTSWITCH:
+ /* Switch the potential and force */
+ potential_switch_constants(ic->rvdw_switch, ic->rvdw,
+ &ic->vdw_switch);
+ break;
+ case eintmodNONE:
+ case eintmodEXACTCUTOFF:
+ /* Nothing to do here */
+ break;
+ default:
+ gmx_incons("unimplemented potential modifier");
}
+ ic->sh_invrc6 = -ic->dispersion_shift.cpot;
+
/* Electrostatics */
ic->eeltype = fr->eeltype;
ic->rcoulomb = fr->rcoulomb;
if (fp != NULL)
{
fprintf(fp, "Potential shift: LJ r^-12: %.3f r^-6 %.3f",
- sqr(ic->sh_invrc6), ic->sh_invrc6);
+ ic->repulsion_shift.cpot, ic->dispersion_shift.cpot);
if (ic->eeltype == eelCUT)
{
- fprintf(fp, ", Coulomb %.3f", ic->c_rf);
+ fprintf(fp, ", Coulomb %.3f", -ic->c_rf);
}
else if (EEL_PME(ic->eeltype))
{
- fprintf(fp, ", Ewald %.3e", ic->sh_ewald);
+ fprintf(fp, ", Ewald %.3e", -ic->sh_ewald);
}
fprintf(fp, "\n");
}
if (i == 0 ||
nbv->grp[0].kernel_type != nbv->grp[i].kernel_type)
{
+ gmx_bool bSimpleList;
+
+ bSimpleList = nbnxn_kernel_pairlist_simple(nbv->grp[i].kernel_type);
+
snew(nbv->grp[i].nbat, 1);
nbnxn_atomdata_init(fp,
nbv->grp[i].nbat,
nbv->grp[i].kernel_type,
+ /* SIMD LJ switch kernels don't support LJ combination rules */
+ bSimpleList && !(fr->vdw_modifier == eintmodFORCESWITCH || fr->vdw_modifier == eintmodPOTSWITCH),
fr->ntype, fr->nbfp,
ir->opts.ngener,
- nbnxn_kernel_pairlist_simple(nbv->grp[i].kernel_type) ? gmx_omp_nthreads_get(emntNonbonded) : 1,
+ bSimpleList ? gmx_omp_nthreads_get(emntNonbonded) : 1,
nb_alloc, nb_free);
}
else
* A little unnecessary to make both vdw and coul tables sometimes,
* but what the heck... */
- bMakeTables = fr->bcoultab || fr->bvdwtab || fr->bEwald;
+ bMakeTables = fr->bcoultab || fr->bvdwtab || fr->bEwald ||
+ (ir->eDispCorr != edispcNO && ir_vdw_switched(ir));
bMakeSeparate14Table = ((!bMakeTables || fr->eeltype != eelCUT || fr->vdwtype != evdwCUT ||
fr->bBHAM || fr->bEwald) &&
}
}
-/* Determines the combination rule (or none) to be used, stores it,
- * and sets the LJ parameters required with the rule.
- */
-static void set_combination_rule_data(nbnxn_atomdata_t *nbat)
+/* Stores the LJ parameter data in a format convenient for the SIMD kernels */
+static void set_ljparam_simd_data(nbnxn_atomdata_t *nbat)
{
int nt, i, j;
real c6, c12;
void nbnxn_atomdata_init(FILE *fp,
nbnxn_atomdata_t *nbat,
int nb_kernel_type,
+ gmx_bool bTryCombinationRule,
int ntype, const real *nbfp,
int n_energygroups,
int nout,
simple = nbnxn_kernel_pairlist_simple(nb_kernel_type);
- if (simple)
+ if (bTryCombinationRule)
{
/* We prefer the geometic combination rule,
* as that gives a slightly faster kernel than the LB rule.
nbat->comb_rule == ljcrGEOM ? "geometric" : "Lorentz-Berthelot");
}
}
-
- set_combination_rule_data(nbat);
}
else
{
nbat->free(nbat->nbfp_comb);
}
+ if (simple)
+ {
+ set_ljparam_simd_data(nbat);
+ }
+
nbat->natoms = 0;
nbat->type = NULL;
nbat->lj_comb = NULL;
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
void nbnxn_atomdata_init(FILE *fp,
nbnxn_atomdata_t *nbat,
int nb_kernel_type,
+ gmx_bool bTryCombinationRule,
int ntype, const real *nbfp,
int n_energygroups,
int nout,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
static const nbnxn_cu_kfunc_ptr_t
nb_default_kfunc_ptr[eelCuNR][nEnergyKernelTypes][nPruneKernelTypes] =
{
- { { k_nbnxn_cutoff, k_nbnxn_cutoff_prune },
- { k_nbnxn_cutoff_ener, k_nbnxn_cutoff_ener_prune } },
- { { k_nbnxn_rf, k_nbnxn_rf_prune },
- { k_nbnxn_rf_ener, k_nbnxn_rf_ener_prune } },
- { { k_nbnxn_ewald_tab, k_nbnxn_ewald_tab_prune },
- { k_nbnxn_ewald_tab_ener, k_nbnxn_ewald_tab_ener_prune } },
- { { k_nbnxn_ewald_tab_twin, k_nbnxn_ewald_tab_twin_prune },
- { k_nbnxn_ewald_tab_twin_ener, k_nbnxn_ewald_twin_ener_prune } },
- { { k_nbnxn_ewald, k_nbnxn_ewald_prune },
- { k_nbnxn_ewald_ener, k_nbnxn_ewald_ener_prune } },
- { { k_nbnxn_ewald_twin, k_nbnxn_ewald_twin_prune },
- { k_nbnxn_ewald_twin_ener, k_nbnxn_ewald_twin_ener_prune } },
+ { { nbnxn_kernel_ElecCut_VdwLJ_F_cuda, nbnxn_kernel_ElecCut_VdwLJ_F_prune_cuda },
+ { nbnxn_kernel_ElecCut_VdwLJ_VF_cuda, nbnxn_kernel_ElecCut_VdwLJ_VF_prune_cuda } },
+ { { nbnxn_kernel_ElecRF_VdwLJ_F_cuda, nbnxn_kernel_ElecRF_VdwLJ_F_prune_cuda },
+ { nbnxn_kernel_ElecRF_VdwLJ_VF_cuda, nbnxn_kernel_ElecRF_VdwLJ_VF_prune_cuda } },
+ { { nbnxn_kernel_ElecEwQSTab_VdwLJ_F_cuda, nbnxn_kernel_ElecEwQSTab_VdwLJ_F_prune_cuda },
+ { nbnxn_kernel_ElecEwQSTab_VdwLJ_VF_cuda, nbnxn_kernel_ElecEwQSTab_VdwLJ_VF_prune_cuda } },
+ { { nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_F_cuda, nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_F_prune_cuda },
+ { nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_VF_cuda, nbnxn_kernel_ElecEwQSTabTwinCut_VdwLJ_VF_prune_cuda } },
+ { { nbnxn_kernel_ElecEw_VdwLJ_F_cuda, nbnxn_kernel_ElecEw_VdwLJ_F_prune_cuda },
+ { nbnxn_kernel_ElecEw_VdwLJ_VF_cuda, nbnxn_kernel_ElecEw_VdwLJ_VF_prune_cuda } },
+ { { nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_cuda, nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_prune_cuda },
+ { nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_cuda, nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_prune_cuda } }
};
/*! Return a pointer to the kernel version to be executed at the current step. */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
nbp->rlist_sq = ic->rlist * ic->rlist;
nbp->sh_invrc6 = ic->sh_invrc6;
+ /* TODO: implemented LJ force- and potential-switch CUDA kernels */
+ if (!(ic->vdw_modifier == eintmodNONE ||
+ ic->vdw_modifier == eintmodPOTSHIFT))
+ {
+ gmx_fatal(FARGS, "The CUDA kernels do not yet support switched LJ interactions");
+ }
+
if (ic->eeltype == eelCUT)
{
nbp->eeltype = eelCuCUT;
#endif
#ifdef PRUNE_NBL
#ifdef CALC_ENERGIES
-__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn, _ener_prune)
+__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _VF_prune_cuda)
#else
-__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn, _prune)
+__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _F_prune_cuda)
#endif
#else
#ifdef CALC_ENERGIES
-__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn, _ener)
+__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _VF_cuda)
#else
-__global__ void NB_KERNEL_FUNC_NAME(k_nbnxn)
+__global__ void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _F_cuda)
#endif
#endif
(const cu_atomdata_t atdat,
/* Analytical plain cut-off kernels */
#define EL_CUTOFF
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _cutoff ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecCut_VdwLJ ## __VA_ARGS__
#include "nbnxn_cuda_kernel.cuh"
#undef EL_CUTOFF
#undef NB_KERNEL_FUNC_NAME
/* Analytical reaction-field kernels */
#define EL_RF
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _rf ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecRF_VdwLJ ## __VA_ARGS__
#include "nbnxn_cuda_kernel.cuh"
#undef EL_RF
#undef NB_KERNEL_FUNC_NAME
/* Analytical Ewald interaction kernels
*/
#define EL_EWALD_ANA
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEw_VdwLJ ## __VA_ARGS__
#include "nbnxn_cuda_kernel.cuh"
#undef EL_EWALD_ANA
#undef NB_KERNEL_FUNC_NAME
*/
#define EL_EWALD_ANA
#define VDW_CUTOFF_CHECK
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald_twin ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEwTwinCut_VdwLJ ## __VA_ARGS__
#include "nbnxn_cuda_kernel.cuh"
#undef EL_EWALD_ANA
#undef VDW_CUTOFF_CHECK
/* Tabulated Ewald interaction kernels */
#define EL_EWALD_TAB
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald_tab ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEwQSTab_VdwLJ ## __VA_ARGS__
#include "nbnxn_cuda_kernel.cuh"
#undef EL_EWALD_TAB
#undef NB_KERNEL_FUNC_NAME
/* Tabulated Ewald interaction kernels with twin-range cut-off */
#define EL_EWALD_TAB
#define VDW_CUTOFF_CHECK
-#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ewald_tab_twin ## __VA_ARGS__
+#define NB_KERNEL_FUNC_NAME(x, ...) x ## _ElecEwQSTabTwinCut_VdwLJ ## __VA_ARGS__
#include "nbnxn_cuda_kernel.cuh"
#undef EL_EWALD_TAB
#undef VDW_CUTOFF_CHECK
sys.path.append('../../../../../admin')
from copyright import create_copyright_header
-FileHeader = create_copyright_header('2012,2013')
+FileHeader = create_copyright_header('2012,2013,2014')
FileHeader += """/*
* Note: this file was generated by the Verlet kernel generator for
* kernel type {0}.
# The dict order must match the order of an enumeration in
# nbnxn_kernel_simd_template.c.pre
ElectrostaticsDict = collections.OrderedDict()
-ElectrostaticsDict['rf'] = { 'define' : '#define CALC_COUL_RF' }
-ElectrostaticsDict['tab'] = { 'define' : '#define CALC_COUL_TAB' }
-ElectrostaticsDict['tab_twin'] = { 'define' : '#define CALC_COUL_TAB\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
-ElectrostaticsDict['ewald'] = { 'define' : '#define CALC_COUL_EWALD' }
-ElectrostaticsDict['ewald_twin'] = { 'define' : '#define CALC_COUL_EWALD\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
-
+ElectrostaticsDict['ElecRF'] = { 'define' : '#define CALC_COUL_RF' }
+ElectrostaticsDict['ElecQSTab'] = { 'define' : '#define CALC_COUL_TAB' }
+ElectrostaticsDict['ElecQSTabTwinCut'] = { 'define' : '#define CALC_COUL_TAB\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
+ElectrostaticsDict['ElecEw'] = { 'define' : '#define CALC_COUL_EWALD' }
+ElectrostaticsDict['ElecEwTwinCut'] = { 'define' : '#define CALC_COUL_EWALD\n#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */' }
+
# The dict order must match the order of a C enumeration.
-LJCombinationRuleDict = collections.OrderedDict()
-LJCombinationRuleDict['geom'] = { 'define' : '#define LJ_COMB_GEOM' }
-LJCombinationRuleDict['lb'] = { 'define' : '#define LJ_COMB_LB' }
-LJCombinationRuleDict['none'] = { 'define' : '/* Use no LJ combination rule */' }
+VdwTreatmentDict = collections.OrderedDict()
+VdwTreatmentDict['VdwLJCombGeom'] = { 'define' : '#define LJ_COMB_GEOM' }
+VdwTreatmentDict['VdwLJCombLB'] = { 'define' : '#define LJ_COMB_LB' }
+VdwTreatmentDict['VdwLJ'] = { 'define' : '/* Use no LJ combination rule */' }
+VdwTreatmentDict['VdwLJFSw'] = { 'define' : '/* Use no LJ combination rule */\n#define LJ_FORCE_SWITCH' }
+VdwTreatmentDict['VdwLJPSw'] = { 'define' : '/* Use no LJ combination rule */\n#define LJ_POT_SWITCH' }
# This is OK as an unordered dict
EnergiesComputationDict = {
- 'ener' : {
+ 'F' : {
+ 'function type' : 'nbk_func_noener',
+ 'define' : '/* Will not calculate energies */',
+ },
+ 'VF' : {
'function type' : 'nbk_func_ener',
'define' : '#define CALC_ENERGIES',
},
- 'energrp' : {
+ 'VgrpF' : {
'function type' : 'nbk_func_ener',
'define' : '#define CALC_ENERGIES\n#define ENERGY_GROUPS',
},
- 'noener' : {
- 'function type' : 'nbk_func_noener',
- 'define' : '/* Will not calculate energies */',
- },
}
# This is OK as an unordered dict
# for each kernel, a file defining the single C function for that kernel
for type in VerletKernelTypeDict:
DirName = "../simd_{0}".format(type)
- KernelNamePrefix = 'nbnxn_kernel_simd_{0}'.format(type)
- KernelsHeaderFileName = "{0}.h".format(KernelNamePrefix)
+ KernelNamePrefix = 'nbnxn_kernel'
+ KernelsName = "{0}_simd_{1}".format(KernelNamePrefix,type)
+ KernelsHeaderFileName = "{0}.h".format(KernelsName,type)
KernelFunctionLookupTable = {}
KernelDeclarations = ''
- KernelTemplate = read_kernel_template("{0}_kernel.c.pre".format(KernelNamePrefix))
+ KernelTemplate = read_kernel_template("{0}_kernel.c.pre".format(KernelsName))
# Loop over all kernels
for ener in EnergiesComputationDict:
KernelFunctionLookupTable[ener] = '{\n'
for elec in ElectrostaticsDict:
KernelFunctionLookupTable[ener] += ' {\n'
- for ljcomb in LJCombinationRuleDict:
- KernelName = ('{0}_{1}_comb_{2}_{3}'
- .format(KernelNamePrefix,elec,ljcomb,ener))
+ for ljtreat in VdwTreatmentDict:
+ KernelName = ('{0}_{1}_{2}_{3}_{4}'
+ .format(KernelNamePrefix,elec,ljtreat,ener,type))
# Declare the kernel function
KernelDeclarations += ('{1:21} {0};\n'
kernelfp.write(KernelTemplate
.format(VerletKernelTypeDict[type]['Define'],
ElectrostaticsDict[elec]['define'],
- LJCombinationRuleDict[ljcomb]['define'],
+ VdwTreatmentDict[ljtreat]['define'],
EnergiesComputationDict[ener]['define'],
KernelsHeaderFileName,
KernelName,
with open('{0}/{1}'.format(DirName,KernelsHeaderFileName),'w') as fp:
fp.write(FileHeader.format(type))
fp.write(KernelsHeaderTemplate
- .format(KernelNamePrefix,
- " " * (len(KernelNamePrefix) + 1),
+ .format(KernelsName,
+ " " * (len(KernelsName) + 1),
KernelDeclarations))
# Write the file defining the kernel dispatcher
# function for this type
- with open('{0}/{1}'.format(DirName,"{0}.c".format(KernelNamePrefix)),'w') as fp:
+ with open('{0}/{1}'.format(DirName,"{0}.c".format(KernelsName,type)),'w') as fp:
fp.write(FileHeader.format(type))
fp.write(KernelDispatcherTemplate
.format(VerletKernelTypeDict[type]['Define'],
VerletKernelTypeDict[type]['WidthCheck'],
VerletKernelTypeDict[type]['UnrollSize'],
KernelsHeaderFileName,
- KernelNamePrefix,
- ' ' * (len(KernelNamePrefix)+1),
- KernelFunctionLookupTable['ener'],
- KernelFunctionLookupTable['energrp'],
- KernelFunctionLookupTable['noener'],
+ KernelsName,
+ ' ' * (len(KernelsName)+1),
+ KernelFunctionLookupTable['F'],
+ KernelFunctionLookupTable['VF'],
+ KernelFunctionLookupTable['VgrpF'],
)
)
#ifdef {0}
{1}
-#include "gmx_simd_macros.h"
-#include "gmx_simd_vec.h"
+#include "gromacs/simd/macros.h"
+#include "gromacs/simd/vector_operations.h"
{2}
#define GMX_SIMD_J_UNROLL_SIZE {3}
#include "{4}"
#include "../nbnxn_kernel_common.h"
#include "gmx_omp_nthreads.h"
#include "types/force_flags.h"
+#include "gmx_fatal.h"
/*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels
*/
coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR
}};
-/* Declare and define the kernel function pointer lookup tables. */
-static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] =
+/* Declare and define the kernel function pointer lookup tables.
+ * The minor index of the array goes over both the LJ combination rules,
+ * which is only supported by plain cut-off, and the LJ switch functions.
+ */
+static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR+2] =
{7}
-static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR+2] =
{8}
-static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR+2] =
{9}
static void
{{
int nnbl;
nbnxn_pairlist_t **nbl;
- int coult;
+ int coult, ljtreatment = 0;
int nb;
nnbl = nbl_list->nnbl;
}}
}}
+ switch (ic->vdw_modifier)
+ {{
+ case eintmodNONE:
+ case eintmodPOTSHIFT:
+ ljtreatment = nbat->comb_rule;
+ break;
+ /* Switch functions follow after cut-off combination rule kernels */
+ case eintmodFORCESWITCH:
+ ljtreatment = ljcrNR;
+ break;
+ case eintmodPOTSWITCH:
+ ljtreatment = ljcrNR + 1;
+ break;
+ default:
+ gmx_incons("Unsupported VdW interaction modifier");
+ }}
+
#pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded))
for (nb = 0; nb < nnbl; nb++)
{{
if (!(force_flags & GMX_FORCE_ENERGY))
{{
/* Don't calculate energies */
- p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p);
+ p_nbk_noener[coult][ljtreatment](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p);
}}
else if (out->nV == 1)
{{
out->Vvdw[0] = 0;
out->Vc[0] = 0;
- p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p,
- out->Vvdw,
- out->Vc);
+ p_nbk_ener[coult][ljtreatment](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->Vvdw,
+ out->Vc);
}}
else
{{
out->VSc[i] = 0;
}}
- p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p,
- out->VSvdw,
- out->VSc);
+ p_nbk_energrp[coult][ljtreatment](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->VSvdw,
+ out->VSc);
reduce_group_energies(nbat->nenergrp, nbat->neg_2log,
out->VSvdw, out->VSc,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
/*! \brief Typedefs for declaring lookup tables of kernel functions.
*/
+
+typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t *nbl,
+ const nbnxn_atomdata_t *nbat,
+ const interaction_const_t *ic,
+ rvec *shift_vec,
+ real *f,
+ real *fshift);
+
typedef void (*p_nbk_func_ener)(const nbnxn_pairlist_t *nbl,
const nbnxn_atomdata_t *nbat,
const interaction_const_t *ic,
real *Vvdw,
real *Vc);
-typedef void (*p_nbk_func_noener)(const nbnxn_pairlist_t *nbl,
- const nbnxn_atomdata_t *nbat,
- const interaction_const_t *ic,
- rvec *shift_vec,
- real *f,
- real *fshift);
-
/* Analytical reaction-field kernels */
#define CALC_COUL_RF
-
-/* Include the force+energy kernels */
-#define CALC_ENERGIES
-#include "nbnxn_kernel_ref_outer.h"
-#undef CALC_ENERGIES
-
-/* Include the force+energygroups kernels */
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-#include "nbnxn_kernel_ref_outer.h"
-#undef ENERGY_GROUPS
-#undef CALC_ENERGIES
-
-/* Include the force only kernels */
-#include "nbnxn_kernel_ref_outer.h"
-
+#include "nbnxn_kernel_ref_includes.h"
+#define VDW_FORCE_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_FORCE_SWITCH
+#define VDW_POT_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_POT_SWITCH
#undef CALC_COUL_RF
/* Tabulated exclusion interaction electrostatics kernels */
#define CALC_COUL_TAB
-
-/* Include the force+energy kernels */
-#define CALC_ENERGIES
-#include "nbnxn_kernel_ref_outer.h"
-#undef CALC_ENERGIES
-
-/* Include the force+energygroups kernels */
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-#include "nbnxn_kernel_ref_outer.h"
-#undef ENERGY_GROUPS
-#undef CALC_ENERGIES
-
-/* Include the force only kernels */
-#include "nbnxn_kernel_ref_outer.h"
-
+#include "nbnxn_kernel_ref_includes.h"
+#define VDW_FORCE_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_FORCE_SWITCH
+#define VDW_POT_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_POT_SWITCH
/* Twin-range cut-off kernels */
#define VDW_CUTOFF_CHECK
-
-/* Include the force+energy kernels */
-#define CALC_ENERGIES
-#include "nbnxn_kernel_ref_outer.h"
-#undef CALC_ENERGIES
-
-/* Include the force+energygroups kernels */
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-#include "nbnxn_kernel_ref_outer.h"
-#undef ENERGY_GROUPS
-#undef CALC_ENERGIES
-
-/* Include the force only kernels */
-#include "nbnxn_kernel_ref_outer.h"
-
+#include "nbnxn_kernel_ref_includes.h"
+#define VDW_FORCE_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_FORCE_SWITCH
+#define VDW_POT_SWITCH
+#include "nbnxn_kernel_ref_includes.h"
+#undef VDW_POT_SWITCH
#undef VDW_CUTOFF_CHECK
-
#undef CALC_COUL_TAB
coultRF, coultTAB, coultTAB_TWIN, coultNR
};
-p_nbk_func_ener p_nbk_c_ener[coultNR] =
+enum {
+ vdwtCUT, vdwtFSWITCH, vdwtPSWITCH, vdwtNR
+};
+
+p_nbk_func_noener p_nbk_c_noener[coultNR][vdwtNR] =
{
- nbnxn_kernel_ref_rf_ener,
- nbnxn_kernel_ref_tab_ener,
- nbnxn_kernel_ref_tab_twin_ener
+ { nbnxn_kernel_ElecRF_VdwLJ_F_ref, nbnxn_kernel_ElecRF_VdwLJFsw_F_ref, nbnxn_kernel_ElecRF_VdwLJPsw_F_ref },
+ { nbnxn_kernel_ElecQSTab_VdwLJ_F_ref, nbnxn_kernel_ElecQSTab_VdwLJFsw_F_ref, nbnxn_kernel_ElecQSTab_VdwLJPsw_F_ref },
+ { nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJFsw_F_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJPsw_F_ref }
};
-p_nbk_func_ener p_nbk_c_energrp[coultNR] =
+p_nbk_func_ener p_nbk_c_ener[coultNR][vdwtNR] =
{
- nbnxn_kernel_ref_rf_energrp,
- nbnxn_kernel_ref_tab_energrp,
- nbnxn_kernel_ref_tab_twin_energrp
+ { nbnxn_kernel_ElecRF_VdwLJ_VF_ref, nbnxn_kernel_ElecRF_VdwLJFsw_VF_ref, nbnxn_kernel_ElecRF_VdwLJPsw_VF_ref },
+ { nbnxn_kernel_ElecQSTab_VdwLJ_VF_ref, nbnxn_kernel_ElecQSTab_VdwLJFsw_VF_ref, nbnxn_kernel_ElecQSTab_VdwLJPsw_VF_ref },
+ { nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJFsw_VF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJPsw_VF_ref }
};
-p_nbk_func_noener p_nbk_c_noener[coultNR] =
+p_nbk_func_ener p_nbk_c_energrp[coultNR][vdwtNR] =
{
- nbnxn_kernel_ref_rf_noener,
- nbnxn_kernel_ref_tab_noener,
- nbnxn_kernel_ref_tab_twin_noener
+ { nbnxn_kernel_ElecRF_VdwLJ_VgrpF_ref, nbnxn_kernel_ElecRF_VdwLJFsw_VgrpF_ref, nbnxn_kernel_ElecRF_VdwLJPsw_VgrpF_ref },
+ { nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_ref, nbnxn_kernel_ElecQSTab_VdwLJFsw_VgrpF_ref, nbnxn_kernel_ElecQSTab_VdwLJPsw_VgrpF_ref },
+ { nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJFsw_VgrpF_ref, nbnxn_kernel_ElecQSTabTwinCut_VdwLJPsw_VgrpF_ref }
};
void
int nnbl;
nbnxn_pairlist_t **nbl;
int coult;
+ int vdwt;
int nb;
nnbl = nbl_list->nnbl;
}
}
+ switch (ic->vdw_modifier)
+ {
+ case eintmodPOTSHIFT:
+ case eintmodNONE:
+ vdwt = vdwtCUT;
+ break;
+ case eintmodFORCESWITCH:
+ vdwt = vdwtFSWITCH;
+ break;
+ case eintmodPOTSWITCH:
+ vdwt = vdwtPSWITCH;
+ break;
+ default:
+ gmx_incons("Unsupported VdW modifier");
+ break;
+ }
+
#pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded))
for (nb = 0; nb < nnbl; nb++)
{
if (!(force_flags & GMX_FORCE_ENERGY))
{
/* Don't calculate energies */
- p_nbk_c_noener[coult](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p);
+ p_nbk_c_noener[coult][vdwt](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p);
}
else if (out->nV == 1)
{
out->Vvdw[0] = 0;
out->Vc[0] = 0;
- p_nbk_c_ener[coult](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p,
- out->Vvdw,
- out->Vc);
+ p_nbk_c_ener[coult][vdwt](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->Vvdw,
+ out->Vc);
}
else
{
out->Vc[i] = 0;
}
- p_nbk_c_energrp[coult](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p,
- out->Vvdw,
- out->Vc);
+ p_nbk_c_energrp[coult][vdwt](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->Vvdw,
+ out->Vc);
}
}
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+
+
+/* This file includes all required (non-)energy flavors of the kernel
+ * outer and inner loops, given a Coulomb and VdW treatment.
+ */
+
+/* Include the force only kernels */
+#include "nbnxn_kernel_ref_outer.h"
+
+/* Include the force+energy kernels */
+#define CALC_ENERGIES
+#include "nbnxn_kernel_ref_outer.h"
+#undef CALC_ENERGIES
+
+/* Include the force+energygroups kernels */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+#include "nbnxn_kernel_ref_outer.h"
+#undef ENERGY_GROUPS
+#undef CALC_ENERGIES
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
real rsq, rinv;
real rinvsq, rinvsix;
real c6, c12;
- real FrLJ6 = 0, FrLJ12 = 0, VLJ = 0;
+ real FrLJ6 = 0, FrLJ12 = 0, frLJ = 0, VLJ = 0;
+#if defined VDW_FORCE_SWITCH || defined VDW_POT_SWITCH
+ real r, rsw;
+#endif
+
#ifdef CALC_COULOMB
real qq;
real fcoul;
* (if appropriate) the i and j indices are
* unsuitable for this kind of inner loop. */
real skipmask;
-#ifdef VDW_CUTOFF_CHECK
- real skipmask_rvdw;
-#endif
+
#ifdef CHECK_EXCLS
/* A multiply mask used to zero an interaction
* when that interaction should be excluded
{
rinvsix = interact*rinvsq*rinvsq*rinvsq;
-#ifdef VDW_CUTOFF_CHECK
- skipmask_rvdw = (rsq < rvdw2);
- rinvsix *= skipmask_rvdw;
-#endif
-
c6 = nbfp[type_i_off+type[aj]*2 ];
c12 = nbfp[type_i_off+type[aj]*2+1];
FrLJ6 = c6*rinvsix;
FrLJ12 = c12*rinvsix*rinvsix;
- /* 6 flops for r^-2 + LJ force */
-#ifdef CALC_ENERGIES
- VLJ = (FrLJ12 - c12*sh_invrc6*sh_invrc6)/12 -
- (FrLJ6 - c6*sh_invrc6)/6;
+ frLJ = FrLJ12 - FrLJ6;
+ /* 7 flops for r^-2 + LJ force */
+#if defined CALC_ENERGIES || defined VDW_POT_SWITCH
+ VLJ = (FrLJ12 + c12*ic->repulsion_shift.cpot)/12 -
+ (FrLJ6 + c6*ic->dispersion_shift.cpot)/6;
+ /* 7 flops for LJ energy */
+#endif
+
+#if defined VDW_FORCE_SWITCH || defined VDW_POT_SWITCH
+ /* Force or potential switching from ic->rvdw_switch */
+ r = rsq*rinv;
+ rsw = r - ic->rvdw_switch;
+ rsw = (rsw >= 0.0 ? rsw : 0.0);
+#endif
+#ifdef VDW_FORCE_SWITCH
+ frLJ +=
+ -c6*(ic->dispersion_shift.c2 + ic->dispersion_shift.c3*rsw)*rsw*rsw*r
+ + c12*(ic->repulsion_shift.c2 + ic->repulsion_shift.c3*rsw)*rsw*rsw*r;
+#if defined CALC_ENERGIES
+ VLJ +=
+ -c6*(-ic->dispersion_shift.c2/3 - ic->dispersion_shift.c3/4*rsw)*rsw*rsw*rsw
+ + c12*(-ic->repulsion_shift.c2/3 - ic->repulsion_shift.c3/4*rsw)*rsw*rsw*rsw;
+#endif
+#endif
+
+#if defined CALC_ENERGIES || defined VDW_POT_SWITCH
+ /* Masking shoule be done after force switching,
+ * but before potential switching.
+ */
/* Need to zero the interaction if r >= rcut
* or there should be exclusion. */
VLJ = VLJ * skipmask * interact;
- /* 9 flops for LJ energy */
+ /* 2 more flops for LJ energy */
+#endif
+
+#ifdef VDW_POT_SWITCH
+ {
+ real sw, dsw;
+
+ sw = 1.0 + (swV3 + (swV4+ swV5*rsw)*rsw)*rsw*rsw*rsw;
+ dsw = (swF2 + (swF3 + swF4*rsw)*rsw)*rsw*rsw;
+
+ frLJ = frLJ*sw - r*VLJ*dsw;
+ VLJ *= sw;
+ }
+#endif
+
#ifdef VDW_CUTOFF_CHECK
- VLJ *= skipmask_rvdw;
+ /* Mask for VdW cut-off shorter than Coulomb cut-off */
+ {
+ real skipmask_rvdw;
+
+ skipmask_rvdw = (rsq < rvdw2);
+ frLJ *= skipmask_rvdw;
+#ifdef CALC_ENERGIES
+ VLJ *= skipmask_rvdw;
#endif
+ }
+#endif
+
+#ifdef CALC_ENERGIES
#ifdef ENERGY_GROUPS
Vvdw[egp_sh_i[i]+((egp_cj>>(nbat->neg_2log*j)) & egp_mask)] += VLJ;
#else
if (i < UNROLLI/2)
#endif
{
- fscal = (FrLJ12 - FrLJ6)*rinvsq + fcoul;
- /* 3 flops for scalar LJ+Coulomb force */
+ fscal = frLJ*rinvsq + fcoul;
+ /* 2 flops for scalar LJ+Coulomb force */
}
#ifdef HALF_LJ
else
}
#endif
#else
- fscal = (FrLJ12 - FrLJ6)*rinvsq;
+ fscal = frLJ*rinvsq;
#endif
fx = fscal*dx;
fy = fscal*dy;
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_SHIFTFORCES
#ifdef CALC_COUL_RF
-#define NBK_FUNC_NAME(base, ene) base ## _rf_ ## ene
+#define NBK_FUNC_NAME2(ljt, feg) nbnxn_kernel ## _ElecRF ## ljt ## feg ## _ref
#endif
#ifdef CALC_COUL_TAB
#ifndef VDW_CUTOFF_CHECK
-#define NBK_FUNC_NAME(base, ene) base ## _tab_ ## ene
+#define NBK_FUNC_NAME2(ljt, feg) nbnxn_kernel ## _ElecQSTab ## ljt ## feg ## _ref
#else
-#define NBK_FUNC_NAME(base, ene) base ## _tab_twin_ ## ene
+#define NBK_FUNC_NAME2(ljt, feg) nbnxn_kernel ## _ElecQSTabTwinCut ## ljt ## feg ## _ref
+#endif
+#endif
+
+#ifdef VDW_FORCE_SWITCH
+#define NBK_FUNC_NAME(feg) NBK_FUNC_NAME2(_VdwLJFsw, feg)
+#else
+#ifdef VDW_POT_SWITCH
+#define NBK_FUNC_NAME(feg) NBK_FUNC_NAME2(_VdwLJPsw, feg)
+#else
+#define NBK_FUNC_NAME(feg) NBK_FUNC_NAME2(_VdwLJ, feg)
#endif
#endif
static void
#ifndef CALC_ENERGIES
-NBK_FUNC_NAME(nbnxn_kernel_ref, noener)
+NBK_FUNC_NAME(_F)
#else
#ifndef ENERGY_GROUPS
-NBK_FUNC_NAME(nbnxn_kernel_ref, ener)
+NBK_FUNC_NAME(_VF)
#else
-NBK_FUNC_NAME(nbnxn_kernel_ref, energrp)
+NBK_FUNC_NAME(_VgrpF)
#endif
#endif
#undef NBK_FUNC_NAME
+#undef NBK_FUNC_NAME2
(const nbnxn_pairlist_t *nbl,
const nbnxn_atomdata_t *nbat,
const interaction_const_t *ic,
int egp_mask;
int egp_sh_i[UNROLLI];
#endif
- real sh_invrc6;
+#endif
+#ifdef VDW_POT_SWITCH
+ real swV3, swV4, swV5;
+ real swF2, swF3, swF4;
#endif
#ifdef CALC_COUL_RF
int npair = 0;
#endif
-#ifdef CALC_ENERGIES
- sh_invrc6 = ic->sh_invrc6;
+#ifdef VDW_POT_SWITCH
+ swV3 = ic->vdw_switch.c3;
+ swV4 = ic->vdw_switch.c4;
+ swV5 = ic->vdw_switch.c5;
+ swF2 = 3*ic->vdw_switch.c3;
+ swF3 = 4*ic->vdw_switch.c4;
+ swF4 = 5*ic->vdw_switch.c5;
#endif
#ifdef CALC_COUL_RF
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
*/
/*
* Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
+ * kernel type 2xnn.
*/
/* Some target architectures compile kernels for only some NBNxN
* kernel flavours, but the code is generated before the target
* architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
* function definition when the kernel will never be called.
*/
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_EWALD
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
/* Will not calculate energies */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *f,
real gmx_unused *fshift)
#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
{
/* No need to call gmx_incons() here, because the only function
* that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
* instead call gmx_incons().
*/
}
-#endif /* GMX_NBNXN_SIMD_4XN */
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_EWALD
-/* Use no LJ combination rule */
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_2XNN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_2XNN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_2XNN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
#define CALC_ENERGIES
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
#define LJ_COMB_GEOM
-#define CALC_ENERGIES
+/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_EWALD
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_2XNN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_EWALD
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
+nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
+nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
#endif /* CALC_ENERGIES */
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_outer.h"
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_RF
-#define LJ_COMB_GEOM
-/* Will not calculate energies */
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
#define LJ_COMB_GEOM
/* Will not calculate energies */
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
-#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+#define LJ_COMB_LB
/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_2XNN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+#define LJ_COMB_LB
#define CALC_ENERGIES
-#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-/* Will not calculate energies */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
*/
/*
* Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
+ * kernel type 2xnn.
*/
/* Some target architectures compile kernels for only some NBNxN
* kernel flavours, but the code is generated before the target
* architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
* function definition when the kernel will never be called.
*/
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
-/* Will not calculate energies */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *f,
real gmx_unused *fshift)
#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
{
/* No need to call gmx_incons() here, because the only function
* that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
* instead call gmx_incons().
*/
}
-#endif /* GMX_NBNXN_SIMD_4XN */
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_2XNN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
-/* Will not calculate energies */
+#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+/* Use no LJ combination rule */
#define CALC_ENERGIES
+#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define LJ_COMB_GEOM
#define CALC_ENERGIES
-#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_TAB
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define LJ_COMB_LB
#define CALC_ENERGIES
-#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
-/* Will not calculate energies */
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_RF
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_2XNN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_TAB
+#define CALC_COUL_RF
#define LJ_COMB_GEOM
#define CALC_ENERGIES
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_TAB
-/* Use no LJ combination rule */
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_RF
#define LJ_COMB_LB
-#define CALC_ENERGIES
+/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 2
#include "nbnxn_kernel_simd_2xnn.h"
-#define CALC_COUL_TAB
+#define CALC_COUL_RF
#define LJ_COMB_LB
#define CALC_ENERGIES
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_2xnn.h"
#define CALC_COUL_RF
-/* Use no LJ combination rule */
-/* Will not calculate energies */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_2XNN
#include "nbnxn_kernel_simd_2xnn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_F_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 2xnn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 2
+#include "nbnxn_kernel_simd_2xnn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_common.h"
+#endif /* GMX_NBNXN_SIMD_2XNN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_2XNN
+#include "nbnxn_kernel_simd_2xnn_outer.h"
+#else /* GMX_NBNXN_SIMD_2XNN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_2XNN */
#ifdef GMX_NBNXN_SIMD_2XNN
/* Include the full-width SIMD macros */
+
#include "gromacs/simd/macros.h"
#include "gromacs/simd/vector_operations.h"
#include "../nbnxn_kernel_common.h"
#include "gmx_omp_nthreads.h"
#include "types/force_flags.h"
+#include "gmx_fatal.h"
/*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels
*/
coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR
};
-/* Declare and define the kernel function pointer lookup tables. */
-static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] =
+/* Declare and define the kernel function pointer lookup tables.
+ * The minor index of the array goes over both the LJ combination rules,
+ * which is only supported by plain cut-off, and the LJ switch functions.
+ */
+static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR+2] =
{
{
- nbnxn_kernel_simd_2xnn_rf_comb_geom_ener,
- nbnxn_kernel_simd_2xnn_rf_comb_lb_ener,
- nbnxn_kernel_simd_2xnn_rf_comb_none_ener,
+ nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJ_F_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_tab_comb_geom_ener,
- nbnxn_kernel_simd_2xnn_tab_comb_lb_ener,
- nbnxn_kernel_simd_2xnn_tab_comb_none_ener,
+ nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener,
- nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener,
- nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener,
- nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener,
- nbnxn_kernel_simd_2xnn_ewald_comb_none_ener,
+ nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJ_F_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener,
- nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener,
- nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn,
},
};
-static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR+2] =
{
{
- nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp,
- nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp,
- nbnxn_kernel_simd_2xnn_rf_comb_none_energrp,
+ nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp,
- nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp,
- nbnxn_kernel_simd_2xnn_tab_comb_none_energrp,
+ nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp,
- nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp,
- nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp,
- nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp,
- nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp,
+ nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp,
- nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp,
- nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn,
},
};
-static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR+2] =
{
{
- nbnxn_kernel_simd_2xnn_rf_comb_geom_noener,
- nbnxn_kernel_simd_2xnn_rf_comb_lb_noener,
- nbnxn_kernel_simd_2xnn_rf_comb_none_noener,
+ nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn,
+ nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_tab_comb_geom_noener,
- nbnxn_kernel_simd_2xnn_tab_comb_lb_noener,
- nbnxn_kernel_simd_2xnn_tab_comb_none_noener,
+ nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn,
+ nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener,
- nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener,
- nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener,
- nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener,
- nbnxn_kernel_simd_2xnn_ewald_comb_none_noener,
+ nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn,
+ nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn,
},
{
- nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener,
- nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener,
- nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn,
},
};
{
int nnbl;
nbnxn_pairlist_t **nbl;
- int coult;
+ int coult, ljtreatment = 0;
int nb;
nnbl = nbl_list->nnbl;
}
}
+ switch (ic->vdw_modifier)
+ {
+ case eintmodNONE:
+ case eintmodPOTSHIFT:
+ ljtreatment = nbat->comb_rule;
+ break;
+ /* Switch functions follow after cut-off combination rule kernels */
+ case eintmodFORCESWITCH:
+ ljtreatment = ljcrNR;
+ break;
+ case eintmodPOTSWITCH:
+ ljtreatment = ljcrNR + 1;
+ break;
+ default:
+ gmx_incons("Unsupported VdW interaction modifier");
+ }
+
#pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded))
for (nb = 0; nb < nnbl; nb++)
{
if (!(force_flags & GMX_FORCE_ENERGY))
{
/* Don't calculate energies */
- p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p);
+ p_nbk_noener[coult][ljtreatment](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p);
}
else if (out->nV == 1)
{
out->Vvdw[0] = 0;
out->Vc[0] = 0;
- p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p,
- out->Vvdw,
- out->Vc);
+ p_nbk_ener[coult][ljtreatment](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->Vvdw,
+ out->Vc);
}
else
{
out->VSc[i] = 0;
}
- p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p,
- out->VSvdw,
- out->VSc);
+ p_nbk_energrp[coult][ljtreatment](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->VSvdw,
+ out->VSc);
reduce_group_energies(nbat->nenergrp, nbat->neg_2log,
out->VSvdw, out->VSc,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
typedef nbk_func_noener *p_nbk_func_noener;
#endif
-nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_none_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_none_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_none_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_none_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJ_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJ_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_2xnn;
-nbk_func_noener nbnxn_kernel_simd_2xnn_rf_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_rf_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_rf_comb_none_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_tab_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_tab_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_tab_comb_none_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_comb_none_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombLB_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJ_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJFSw_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJPSw_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJ_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombLB_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJ_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJFSw_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJPSw_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_2xnn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_2xnn;
-nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_rf_comb_none_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_comb_none_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_tab_twin_comb_none_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_comb_none_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJCombGeom_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJCombLB_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJ_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJFSw_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJPSw_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJ_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJFSw_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJPSw_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJCombGeom_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJCombLB_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJ_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJFSw_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJPSw_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_2xnn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_2xnn;
* the research papers on the package. Check out http://www.gromacs.org.
*/
#include "gromacs/simd/macros.h"
+#include "gromacs/simd/four_wide_macros.h"
#include "gromacs/simd/vector_operations.h"
#include "../../nbnxn_consts.h"
#ifdef CALC_COUL_EWALD
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_ewald_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_EWALD
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-/* Will not calculate energies */
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_EWALD
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
-#define CALC_ENERGIES
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_EWALD
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
-/* Will not calculate energies */
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_ewald_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
* Tested with gcc 4.6.2, 4.6.3 and 4.7.1.
*/
#if (defined CALC_COUL_RF || defined CALC_COUL_TAB) && (!defined __GNUC__ || (defined CALC_COUL_RF && defined GMX_SIMD_X86_AVX_256_OR_HIGHER))
-#define CUTOFF_BLENDV
+#define NBNXN_CUTOFF_USE_BLENDV
#endif
/* With analytical Ewald we replace cmp+and+and with sub+blendv+blendv.
* This is only faster with icc on Sandy Bridge (PS kernel slower than gcc 4.7).
* Tested with icc 13.
*/
#if defined CALC_COUL_EWALD && defined __INTEL_COMPILER && defined GMX_SIMD_X86_AVX_256_OR_HIGHER
-#define CUTOFF_BLENDV
+#define NBNXN_CUTOFF_USE_BLENDV
#endif
#endif
gmx_simd_real_t tx_S2, ty_S2, tz_S2;
gmx_simd_real_t rsq_S0, rinv_S0, rinvsq_S0;
gmx_simd_real_t rsq_S2, rinv_S2, rinvsq_S2;
-#ifndef CUTOFF_BLENDV
+#ifndef NBNXN_CUTOFF_USE_BLENDV
/* wco: within cut-off, mask of all 1's or 0's */
gmx_simd_bool_t wco_S0;
gmx_simd_bool_t wco_S2;
gmx_simd_bool_t wco_vdw_S2;
#endif
#endif
+
+#if (defined CALC_COULOMB && defined CALC_COUL_TAB) || defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+ gmx_simd_real_t r_S0;
+ gmx_simd_real_t r_S2;
+#endif
+
+#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+ gmx_simd_real_t rsw_S0, rsw2_S0, rsw2_r_S0;
+#ifndef HALF_LJ
+ gmx_simd_real_t rsw_S2, rsw2_S2, rsw2_r_S2;
+#endif
+#endif
+
#ifdef CALC_COULOMB
#ifdef CHECK_EXCLS
/* 1/r masked with the interaction mask */
gmx_simd_real_t frcoul_S2;
#ifdef CALC_COUL_TAB
/* For tables: r, rs=r/sp, rf=floor(rs), frac=rs-rf */
- gmx_simd_real_t r_S0, rs_S0, rf_S0, frac_S0;
- gmx_simd_real_t r_S2, rs_S2, rf_S2, frac_S2;
+ gmx_simd_real_t rs_S0, rf_S0, frac_S0;
+ gmx_simd_real_t rs_S2, rf_S2, frac_S2;
/* Table index: rs truncated to an int */
gmx_simd_int32_t ti_S0, ti_S2;
/* Linear force table values */
#endif
#endif
- gmx_simd_real_t FrLJ6_S0, FrLJ12_S0;
+ gmx_simd_real_t FrLJ6_S0, FrLJ12_S0, frLJ_S0;
#ifndef HALF_LJ
- gmx_simd_real_t FrLJ6_S2, FrLJ12_S2;
+ gmx_simd_real_t FrLJ6_S2, FrLJ12_S2, frLJ_S2;
#endif
-#ifdef CALC_ENERGIES
+#if defined CALC_ENERGIES || defined LJ_POT_SWITCH
gmx_simd_real_t VLJ6_S0, VLJ12_S0, VLJ_S0;
#ifndef HALF_LJ
gmx_simd_real_t VLJ6_S2, VLJ12_S2, VLJ_S2;
rsq_S0 = gmx_simd_calc_rsq_r(dx_S0, dy_S0, dz_S0);
rsq_S2 = gmx_simd_calc_rsq_r(dx_S2, dy_S2, dz_S2);
-#ifndef CUTOFF_BLENDV
+#ifndef NBNXN_CUTOFF_USE_BLENDV
wco_S0 = gmx_simd_cmplt_r(rsq_S0, rc2_S);
wco_S2 = gmx_simd_cmplt_r(rsq_S2, rc2_S);
#endif
#endif /* CALC_LJ */
-#ifndef CUTOFF_BLENDV
+#ifndef NBNXN_CUTOFF_USE_BLENDV
rinv_S0 = gmx_simd_blendzero_r(rinv_S0, wco_S0);
rinv_S2 = gmx_simd_blendzero_r(rinv_S2, wco_S2);
#else
/* We need to mask (or limit) rsq for the cut-off,
* as large distances can cause an overflow in gmx_pmecorrF/V.
*/
-#ifndef CUTOFF_BLENDV
+#ifndef NBNXN_CUTOFF_USE_BLENDV
brsq_S0 = gmx_simd_mul_r(beta2_S, gmx_simd_blendzero_r(rsq_S0, wco_S0));
brsq_S2 = gmx_simd_mul_r(beta2_S, gmx_simd_blendzero_r(rsq_S2, wco_S2));
#else
rinvsix_S2 = gmx_simd_blendzero_r(rinvsix_S2, interact_S2);
#endif
#endif
-#ifdef VDW_CUTOFF_CHECK
- rinvsix_S0 = gmx_simd_blendzero_r(rinvsix_S0, wco_vdw_S0);
-#ifndef HALF_LJ
- rinvsix_S2 = gmx_simd_blendzero_r(rinvsix_S2, wco_vdw_S2);
-#endif
-#endif
+
+#ifndef LJ_FORCE_SWITCH
+ /* We have plain LJ with simple C6/6 C12/12 coefficients */
FrLJ6_S0 = gmx_simd_mul_r(c6_S0, rinvsix_S0);
#ifndef HALF_LJ
FrLJ6_S2 = gmx_simd_mul_r(c6_S2, rinvsix_S2);
#ifndef HALF_LJ
FrLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2));
#endif
+#endif
+
+#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+ /* We switch the LJ force */
+ r_S0 = gmx_simd_mul_r(rsq_S0, rinv_S0);
+ rsw_S0 = gmx_simd_max_r(gmx_simd_sub_r(r_S0, rswitch_S), zero_S);
+ rsw2_S0 = gmx_simd_mul_r(rsw_S0, rsw_S0);
+ rsw2_r_S0 = gmx_simd_mul_r(rsw2_S0, r_S0);
+#ifndef HALF_LJ
+ r_S2 = gmx_simd_mul_r(rsq_S2, rinv_S2);
+ rsw_S2 = gmx_simd_max_r(gmx_simd_sub_r(r_S2, rswitch_S), zero_S);
+ rsw2_S2 = gmx_simd_mul_r(rsw_S2, rsw_S2);
+ rsw2_r_S2 = gmx_simd_mul_r(rsw2_S2, r_S2);
+#endif
+#endif
+
+#ifdef LJ_FORCE_SWITCH
+
+#define add_fr_switch(fr, rsw, rsw2_r, c2, c3) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c3, rsw, c2), rsw2_r, fr)
+
+ FrLJ6_S0 = gmx_simd_mul_r(c6_S0, add_fr_switch(rinvsix_S0, rsw_S0, rsw2_r_S0, p6_fc2_S, p6_fc3_S));
+#ifndef HALF_LJ
+ FrLJ6_S2 = gmx_simd_mul_r(c6_S2, add_fr_switch(rinvsix_S2, rsw_S2, rsw2_r_S2, p6_fc2_S, p6_fc3_S));
+#endif
+ FrLJ12_S0 = gmx_simd_mul_r(c12_S0, add_fr_switch(gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), rsw_S0, rsw2_r_S0, p12_fc2_S, p12_fc3_S));
+#ifndef HALF_LJ
+ FrLJ12_S2 = gmx_simd_mul_r(c12_S2, add_fr_switch(gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), rsw_S2, rsw2_r_S2, p12_fc2_S, p12_fc3_S));
+#endif
+#undef add_fr_switch
+#endif /* LJ_FORCE_SWITCH */
+
#endif /* not LJ_COMB_LB */
#ifdef LJ_COMB_LB
#endif
#endif /* LJ_COMB_LB */
+ /* Determine the total scalar LJ force*r */
+ frLJ_S0 = gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0);
+#ifndef HALF_LJ
+ frLJ_S2 = gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2);
+#endif
+
+#if defined CALC_ENERGIES && !defined LJ_POT_SWITCH
+#ifndef LJ_FORCE_SWITCH
+ /* Calculate the LJ energies, with constant potential shift */
+ VLJ6_S0 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S0, p6_cpot_S, FrLJ6_S0));
+#ifndef HALF_LJ
+ VLJ6_S2 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S2, p6_cpot_S, FrLJ6_S2));
+#endif
+ VLJ12_S0 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S0, p12_cpot_S, FrLJ12_S0));
+#ifndef HALF_LJ
+ VLJ12_S2 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S2, p12_cpot_S, FrLJ12_S2));
+#endif
+#else
+
+#define v_fswitch_pr(rsw, rsw2, c0, c3, c4) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), gmx_simd_mul_r(rsw2, rsw), c0)
+
+ VLJ6_S0 = gmx_simd_mul_r(c6_S0, gmx_simd_fmadd_r(sixth_S, rinvsix_S0, v_fswitch_pr(rsw_S0, rsw2_S0, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+#ifndef HALF_LJ
+ VLJ6_S2 = gmx_simd_mul_r(c6_S2, gmx_simd_fmadd_r(sixth_S, rinvsix_S2, v_fswitch_pr(rsw_S2, rsw2_S2, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+#endif
+ VLJ12_S0 = gmx_simd_mul_r(c12_S0, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), v_fswitch_pr(rsw_S0, rsw2_S0, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+#ifndef HALF_LJ
+ VLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), v_fswitch_pr(rsw_S2, rsw2_S2, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+#endif
+#undef v_fswitch_pr
+#endif /* LJ_FORCE_SWITCH */
+
+ /* Add up the repulsion and dispersion */
+ VLJ_S0 = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0);
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2);
+#endif
+#endif /* CALC_ENERGIES && !LJ_POT_SWITCH */
+
+#ifdef LJ_POT_SWITCH
+ /* We always need the potential, since it is needed for the force */
+ VLJ_S0 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S0, gmx_simd_mul_r(twelveth_S, FrLJ12_S0));
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S2, gmx_simd_mul_r(twelveth_S, FrLJ12_S2));
+#endif
+
+ {
+ gmx_simd_real_t sw_S0, dsw_S0;
+#ifndef HALF_LJ
+ gmx_simd_real_t sw_S2, dsw_S2;
+#endif
+
+#define switch_pr(rsw, rsw2, c3, c4, c5) gmx_simd_fmadd_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c5, rsw, c4), rsw, c3), gmx_simd_mul_r(rsw2, rsw), one_S)
+#define dswitch_pr(rsw, rsw2, c2, c3, c4) gmx_simd_mul_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), rsw, c2), rsw2)
+
+ sw_S0 = switch_pr(rsw_S0, rsw2_S0, swV3_S, swV4_S, swV5_S);
+ dsw_S0 = dswitch_pr(rsw_S0, rsw2_S0, swF2_S, swF3_S, swF4_S);
+#ifndef HALF_LJ
+ sw_S2 = switch_pr(rsw_S2, rsw2_S2, swV3_S, swV4_S, swV5_S);
+ dsw_S2 = dswitch_pr(rsw_S2, rsw2_S2, swF2_S, swF3_S, swF4_S);
+#endif
+ frLJ_S0 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S0, VLJ_S0), r_S0, gmx_simd_mul_r(sw_S0, frLJ_S0));
+#ifndef HALF_LJ
+ frLJ_S2 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S2, VLJ_S2), r_S2, gmx_simd_mul_r(sw_S2, frLJ_S2));
+#endif
+#ifdef CALC_ENERGIES
+ VLJ_S0 = gmx_simd_mul_r(sw_S0, VLJ_S0);
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_mul_r(sw_S2, VLJ_S2);
+#endif
+#endif
+
+#undef switch_pr
+#undef dswitch_pr
+ }
+#endif /* LJ_POT_SWITCH */
+
+#if defined VDW_CUTOFF_CHECK
+ /* frLJ is multiplied later by rinvsq, which is masked for the Coulomb
+ * cut-off, but if the VdW cut-off is shorter, we need to mask with that.
+ */
+ frLJ_S0 = gmx_simd_blendzero_r(frLJ_S0, wco_vdw_S0);
+#ifndef HALF_LJ
+ frLJ_S2 = gmx_simd_blendzero_r(frLJ_S2, wco_vdw_S2);
+#endif
+#endif
+
+#ifdef CALC_ENERGIES
+ /* The potential shift should be removed for pairs beyond cut-off */
+ VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0);
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2);
+#endif
+#endif
+
+#if defined CALC_ENERGIES && defined CHECK_EXCLS
+ /* The potential shift should be removed for excluded pairs */
+ VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, interact_S0);
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, interact_S2);
+#endif
+#endif
+
+
#endif /* CALC_LJ */
#ifdef CALC_ENERGIES
#endif
#ifdef CALC_LJ
- /* Calculate the LJ energies */
- VLJ6_S0 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S0, gmx_simd_mul_r(c6_S0, sh_invrc6_S)));
-#ifndef HALF_LJ
- VLJ6_S2 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S2, gmx_simd_mul_r(c6_S2, sh_invrc6_S)));
-#endif
- VLJ12_S0 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S0, gmx_simd_mul_r(c12_S0, sh_invrc12_S)));
-#ifndef HALF_LJ
- VLJ12_S2 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S2, gmx_simd_mul_r(c12_S2, sh_invrc12_S)));
-#endif
-
- VLJ_S0 = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0);
-#ifndef HALF_LJ
- VLJ_S2 = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2);
-#endif
- /* The potential shift should be removed for pairs beyond cut-off */
- VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0);
-#ifndef HALF_LJ
- VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2);
-#endif
-#ifdef CHECK_EXCLS
- /* The potential shift should be removed for excluded pairs */
- VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, interact_S0);
-#ifndef HALF_LJ
- VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, interact_S2);
-#endif
-#endif
#ifndef ENERGY_GROUPS
Vvdwtot_S = gmx_simd_add_r(Vvdwtot_S,
#ifndef HALF_LJ
#ifdef CALC_LJ
#ifdef CALC_COULOMB
- fscal_S0 = gmx_simd_mul_r(rinvsq_S0,
- gmx_simd_add_r(frcoul_S0,
- gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0)));
+ fscal_S0 = gmx_simd_mul_r(rinvsq_S0, gmx_simd_add_r(frcoul_S0, frLJ_S0));
#else
- fscal_S0 = gmx_simd_mul_r(rinvsq_S0,
- (
- gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0)));
+ fscal_S0 = gmx_simd_mul_r(rinvsq_S0, frLJ_S0);
#endif
#else
fscal_S0 = gmx_simd_mul_r(rinvsq_S0, frcoul_S0);
#endif /* CALC_LJ */
#if defined CALC_LJ && !defined HALF_LJ
#ifdef CALC_COULOMB
- fscal_S2 = gmx_simd_mul_r(rinvsq_S2,
- gmx_simd_add_r(frcoul_S2,
- gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2)));
+ fscal_S2 = gmx_simd_mul_r(rinvsq_S2, gmx_simd_add_r(frcoul_S2, frLJ_S2));
#else
- fscal_S2 = gmx_simd_mul_r(rinvsq_S2,
- (
- gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2)));
+ fscal_S2 = gmx_simd_mul_r(rinvsq_S2, frLJ_S2);
#endif
#else
/* Atom 2 and 3 don't have LJ, so only add Coulomb forces */
#undef wco_vdw_S0
#undef wco_vdw_S2
-#undef CUTOFF_BLENDV
+#undef NBNXN_CUTOFF_USE_BLENDV
#undef EXCL_FORCES
unsigned *exclusion_filter;
gmx_exclfilter filter_S0, filter_S2;
- gmx_simd_real_t zero_S = gmx_simd_set1_r(0);
+ gmx_simd_real_t zero_S = gmx_simd_set1_r(0.0);
gmx_simd_real_t one_S = gmx_simd_set1_r(1.0);
gmx_simd_real_t iq_S0 = gmx_simd_setzero_r();
gmx_simd_real_t iq_S2 = gmx_simd_setzero_r();
+
+#ifdef CALC_COUL_RF
gmx_simd_real_t mrc_3_S;
#ifdef CALC_ENERGIES
gmx_simd_real_t hrc_3_S, moh_rc_S;
#endif
+#endif
#ifdef CALC_COUL_TAB
/* Coulomb table variables */
#ifndef TAB_FDV0
const real *tab_coul_V;
#endif
- int ti0_array[2*GMX_SIMD_REAL_WIDTH], *ti0;
- int ti2_array[2*GMX_SIMD_REAL_WIDTH], *ti2;
+ /* Thread-local working buffers for force and potential lookups */
+ int ti0_array[2*GMX_SIMD_REAL_WIDTH], *ti0 = NULL;
+ int ti2_array[2*GMX_SIMD_REAL_WIDTH], *ti2 = NULL;
#ifdef CALC_ENERGIES
gmx_simd_real_t mhalfsp_S;
#endif
gmx_simd_real_t sh_ewald_S;
#endif
+#ifdef LJ_POT_SWITCH
+ gmx_simd_real_t rswitch_S;
+ gmx_simd_real_t swV3_S, swV4_S, swV5_S;
+ gmx_simd_real_t swF2_S, swF3_S, swF4_S;
+#else
+#ifdef LJ_FORCE_SWITCH
+ gmx_simd_real_t rswitch_S;
+ gmx_simd_real_t p6_fc2_S, p6_fc3_S;
+ gmx_simd_real_t p12_fc2_S, p12_fc3_S;
+#ifdef CALC_ENERGIES
+ gmx_simd_real_t p6_vc3_S, p6_vc4_S;
+ gmx_simd_real_t p12_vc3_S, p12_vc4_S;
+ gmx_simd_real_t p6_6cpot_S, p12_12cpot_S;
+#endif
+#else
+#ifdef CALC_ENERGIES
+ gmx_simd_real_t p6_cpot_S, p12_cpot_S;
+#endif
+#endif
+#endif
+
#ifdef LJ_COMB_LB
const real *ljc;
#endif
#ifdef CALC_ENERGIES
- gmx_simd_real_t sh_invrc6_S, sh_invrc12_S;
-
/* cppcheck-suppress unassignedVariable */
real tmpsum_array[2*GMX_SIMD_REAL_WIDTH], *tmpsum;
#endif
exclusion_filter = nbat->simd_exclusion_filter2;
}
- /* Here we cast the exclusion masks from unsigned * to int * or
- * real *. Since we only check bits, the actual value they
- * represent does not matter, as long as both mask and exclusion
- * info are treated the same way.
+ /* Here we cast the exclusion filters from unsigned * to int * or real *.
+ * Since we only check bits, the actual value they represent does not
+ * matter, as long as both filter and mask data are treated the same way.
*/
filter_S0 = gmx_load_exclusion_filter(exclusion_filter + 0*2*UNROLLJ*filter_stride);
filter_S2 = gmx_load_exclusion_filter(exclusion_filter + 1*2*UNROLLJ*filter_stride);
+#ifdef CALC_COUL_RF
+ /* Reaction-field constants */
+ mrc_3_S = gmx_simd_set1_r(-2*ic->k_rf);
+#ifdef CALC_ENERGIES
+ hrc_3_S = gmx_simd_set1_r(ic->k_rf);
+ moh_rc_S = gmx_simd_set1_r(-ic->c_rf);
+#endif
+#endif
+
#ifdef CALC_COUL_TAB
/* Generate aligned table index pointers */
ti0 = prepare_table_load_buffer(ti0_array);
sh_ewald_S = gmx_simd_set1_r(ic->sh_ewald);
#endif
- q = nbat->q;
- type = nbat->type;
- facel = ic->epsfac;
- shiftvec = shift_vec[0];
- x = nbat->x;
+ /* LJ function constants */
+#if defined CALC_ENERGIES || defined LJ_POT_SWITCH
+ sixth_S = gmx_simd_set1_r(1.0/6.0);
+ twelveth_S = gmx_simd_set1_r(1.0/12.0);
+#endif
- avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC);
+#ifdef LJ_POT_SWITCH
+ rswitch_S = gmx_simd_set1_r(ic->rvdw_switch);
+ swV3_S = gmx_simd_set1_r(ic->vdw_switch.c3);
+ swV4_S = gmx_simd_set1_r(ic->vdw_switch.c4);
+ swV5_S = gmx_simd_set1_r(ic->vdw_switch.c5);
+ swF2_S = gmx_simd_set1_r(3*ic->vdw_switch.c3);
+ swF3_S = gmx_simd_set1_r(4*ic->vdw_switch.c4);
+ swF4_S = gmx_simd_set1_r(5*ic->vdw_switch.c5);
+#else
+ sixth_S = gmx_simd_set1_r(1.0/6.0);
+ twelveth_S = gmx_simd_set1_r(1.0/12.0);
+#ifdef LJ_FORCE_SWITCH
+ rswitch_S = gmx_simd_set1_r(ic->rvdw_switch);
+ p6_fc2_S = gmx_simd_set1_r(ic->dispersion_shift.c2);
+ p6_fc3_S = gmx_simd_set1_r(ic->dispersion_shift.c3);
+ p12_fc2_S = gmx_simd_set1_r(ic->repulsion_shift.c2);
+ p12_fc3_S = gmx_simd_set1_r(ic->repulsion_shift.c3);
+#ifdef CALC_ENERGIES
+ {
+ gmx_simd_real_t mthird_S = gmx_simd_set1_r(-1.0/3.0);
+ gmx_simd_real_t mfourth_S = gmx_simd_set1_r(-1.0/4.0);
+
+ p6_vc3_S = gmx_simd_mul_r(mthird_S, p6_fc2_S);
+ p6_vc4_S = gmx_simd_mul_r(mfourth_S, p6_fc3_S);
+ p6_6cpot_S = gmx_simd_set1_r(ic->dispersion_shift.cpot/6);
+ p12_vc3_S = gmx_simd_mul_r(mthird_S, p12_fc2_S);
+ p12_vc4_S = gmx_simd_mul_r(mfourth_S, p12_fc3_S);
+ p12_12cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot/12);
+ }
+#endif
+#else
+ /* Plain LJ cut-off, with potential shift cpot, which can be 0 */
+#ifdef CALC_ENERGIES
+ p6_cpot_S = gmx_simd_set1_r(ic->dispersion_shift.cpot);
+ p12_cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot);
+#endif
+#endif
+#endif /* LJ_POT_SWITCH */
/* The kernel either supports rcoulomb = rvdw or rcoulomb >= rvdw */
rc2_S = gmx_simd_set1_r(ic->rcoulomb*ic->rcoulomb);
rcvdw2_S = gmx_simd_set1_r(ic->rvdw*ic->rvdw);
#endif
-#ifdef CALC_ENERGIES
- sixth_S = gmx_simd_set1_r(1.0/6.0);
- twelveth_S = gmx_simd_set1_r(1.0/12.0);
-
- sh_invrc6_S = gmx_simd_set1_r(ic->sh_invrc6);
- sh_invrc12_S = gmx_simd_set1_r(ic->sh_invrc6*ic->sh_invrc6);
-#endif
-
- mrc_3_S = gmx_simd_set1_r(-2*ic->k_rf);
-
-#ifdef CALC_ENERGIES
- hrc_3_S = gmx_simd_set1_r(ic->k_rf);
+ avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC);
- moh_rc_S = gmx_simd_set1_r(-ic->c_rf);
-#endif
+ q = nbat->q;
+ type = nbat->type;
+ facel = ic->epsfac;
+ shiftvec = shift_vec[0];
+ x = nbat->x;
#ifdef CALC_ENERGIES
tmpsum = gmx_simd_align_r(tmpsum_array);
#define CALC_LJ
if (half_LJ)
{
+ /* Coulomb: all i-atoms, LJ: first half i-atoms */
#define CALC_COULOMB
#define HALF_LJ
#define CHECK_EXCLS
}
else if (do_coul)
{
+ /* Coulomb: all i-atoms, LJ: all i-atoms */
#define CALC_COULOMB
#define CHECK_EXCLS
while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL)
}
else
{
+ /* Coulomb: none, LJ: all i-atoms */
#define CHECK_EXCLS
while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL)
{
/* Add accumulated i-forces to the force array */
fix_S = gmx_mm_transpose_sum4h_pr(fix_S0, fix_S2);
- gmx_store_pr4(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix)));
+ gmx_simd4_store_r(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix)));
fiy_S = gmx_mm_transpose_sum4h_pr(fiy_S0, fiy_S2);
- gmx_store_pr4(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy)));
+ gmx_simd4_store_r(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy)));
fiz_S = gmx_mm_transpose_sum4h_pr(fiz_S0, fiz_S2);
- gmx_store_pr4(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz)));
+ gmx_simd4_store_r(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz)));
#ifdef CALC_SHIFTFORCES
fshift[ish3+0] += gmx_sum_simd4(fix_S, shf);
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_RF
-#define LJ_COMB_GEOM
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_rf_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
-
-#define CALC_COUL_RF
-#define LJ_COMB_LB
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_2xnn_rf_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_2XNN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_4XN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_TAB
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
-/* Will not calculate energies */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_4XN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
#define CALC_ENERGIES
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_rf_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
#define CALC_ENERGIES
+#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_RF
+#define CALC_COUL_EWALD
#define LJ_COMB_GEOM
-#define CALC_ENERGIES
+/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_rf_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_EWALD
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_4XN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_EWALD
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
+nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
+nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
#endif /* CALC_ENERGIES */
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_outer.h"
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_EWALD
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
#define LJ_COMB_GEOM
/* Will not calculate energies */
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_EWALD
+#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
-#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_GEOM
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+#define LJ_COMB_LB
/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_4XN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+#define LJ_COMB_LB
#define CALC_ENERGIES
-#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-/* Will not calculate energies */
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
*/
/*
* Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
+ * kernel type 4xn.
*/
/* Some target architectures compile kernels for only some NBNxN
* kernel flavours, but the code is generated before the target
* architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
* function definition when the kernel will never be called.
*/
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
-/* Will not calculate energies */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *f,
real gmx_unused *fshift)
#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
{
/* No need to call gmx_incons() here, because the only function
* that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
* instead call gmx_incons().
*/
}
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
*/
/*
* Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
+ * kernel type 4xn.
*/
/* Some target architectures compile kernels for only some NBNxN
* kernel flavours, but the code is generated before the target
* architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
* function definition when the kernel will never be called.
*/
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-#define CALC_ENERGIES
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *f,
real gmx_unused *fshift)
#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
{
/* No need to call gmx_incons() here, because the only function
* that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
* instead call gmx_incons().
*/
}
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_4XN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_RF
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
/* Will not calculate energies */
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_rf_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_RF
+#define CALC_COUL_TAB
+#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
/* Use no LJ combination rule */
#define CALC_ENERGIES
-#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_rf_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_GEOM
+/* Use no LJ combination rule */
#define CALC_ENERGIES
+#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define LJ_COMB_GEOM
#define CALC_ENERGIES
-#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_TAB
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
#define LJ_COMB_LB
#define CALC_ENERGIES
-#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_EWALD
-/* Use no LJ combination rule */
-/* Will not calculate energies */
+#define CALC_COUL_TAB
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_ewald_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_TAB
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
#ifdef GMX_NBNXN_SIMD_4XN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
#endif /* CALC_ENERGIES */
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_outer.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
*/
/*
* Note: this file was generated by the Verlet kernel generator for
- * kernel type 2xnn.
+ * kernel type 4xn.
*/
/* Some target architectures compile kernels for only some NBNxN
* kernel flavours, but the code is generated before the target
* architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_2XNN, so that this file reduces to a stub
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
* function definition when the kernel will never be called.
*/
-#define GMX_SIMD_J_UNROLL_SIZE 2
-#include "nbnxn_kernel_simd_2xnn.h"
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_TAB
/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
#define CALC_ENERGIES
+#define ENERGY_GROUPS
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_common.h"
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_2xnn_tab_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *f,
real gmx_unused *fshift)
#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_2XNN
-#include "nbnxn_kernel_simd_2xnn_outer.h"
-#else /* GMX_NBNXN_SIMD_2XNN */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
{
/* No need to call gmx_incons() here, because the only function
* that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_2XNN is not defined, it will call no kernel functions and
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
* instead call gmx_incons().
*/
}
-#endif /* GMX_NBNXN_SIMD_2XNN */
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_TAB
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_RF
-#define LJ_COMB_LB
+#define LJ_COMB_GEOM
/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_4XN
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_rf_comb_lb_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_TAB
+#define CALC_COUL_RF
#define LJ_COMB_GEOM
#define CALC_ENERGIES
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_comb_geom_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_TAB
-/* Use no LJ combination rule */
+#define CALC_COUL_RF
+#define LJ_COMB_GEOM
#define CALC_ENERGIES
#define ENERGY_GROUPS
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_comb_none_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define CALC_COUL_RF
#define LJ_COMB_LB
-#define CALC_ENERGIES
+/* Will not calculate energies */
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_rf_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#define GMX_SIMD_J_UNROLL_SIZE 1
#include "nbnxn_kernel_simd_4xn.h"
-#define CALC_COUL_TAB
+#define CALC_COUL_RF
#define LJ_COMB_LB
#define CALC_ENERGIES
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_tab_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
#include "nbnxn_kernel_simd_4xn.h"
#define CALC_COUL_RF
-#define LJ_COMB_GEOM
-/* Will not calculate energies */
+#define LJ_COMB_LB
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
#ifdef GMX_NBNXN_SIMD_4XN
#include "nbnxn_kernel_simd_4xn_common.h"
#ifdef CALC_ENERGIES
void
-nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
real gmx_unused *Vc)
#else /* CALC_ENERGIES */
void
-nbnxn_kernel_simd_4xn_rf_comb_geom_noener(const nbnxn_pairlist_t gmx_unused *nbl,
+nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
const nbnxn_atomdata_t gmx_unused *nbat,
const interaction_const_t gmx_unused *ic,
rvec gmx_unused *shift_vec,
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_FORCE_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define LJ_POT_SWITCH
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+/* Will not calculate energies */
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_F_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_VF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 2012,2013,2014, 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.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+/*
+ * Note: this file was generated by the Verlet kernel generator for
+ * kernel type 4xn.
+ */
+
+/* Some target architectures compile kernels for only some NBNxN
+ * kernel flavours, but the code is generated before the target
+ * architecture is known. So compilation is conditional upon
+ * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
+ * function definition when the kernel will never be called.
+ */
+#define GMX_SIMD_J_UNROLL_SIZE 1
+#include "nbnxn_kernel_simd_4xn.h"
+
+#define CALC_COUL_RF
+/* Use no LJ combination rule */
+#define CALC_ENERGIES
+#define ENERGY_GROUPS
+
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_common.h"
+#endif /* GMX_NBNXN_SIMD_4XN */
+
+#ifdef CALC_ENERGIES
+void
+nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift,
+ real gmx_unused *Vvdw,
+ real gmx_unused *Vc)
+#else /* CALC_ENERGIES */
+void
+nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn(const nbnxn_pairlist_t gmx_unused *nbl,
+ const nbnxn_atomdata_t gmx_unused *nbat,
+ const interaction_const_t gmx_unused *ic,
+ rvec gmx_unused *shift_vec,
+ real gmx_unused *f,
+ real gmx_unused *fshift)
+#endif /* CALC_ENERGIES */
+#ifdef GMX_NBNXN_SIMD_4XN
+#include "nbnxn_kernel_simd_4xn_outer.h"
+#else /* GMX_NBNXN_SIMD_4XN */
+{
+/* No need to call gmx_incons() here, because the only function
+ * that calls this one is also compiled conditionally. When
+ * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
+ * instead call gmx_incons().
+ */
+}
+#endif /* GMX_NBNXN_SIMD_4XN */
#ifdef GMX_NBNXN_HALF_WIDTH_SIMD
#define GMX_USE_HALF_WIDTH_SIMD_HERE
#endif
+
#include "gromacs/simd/macros.h"
#include "gromacs/simd/vector_operations.h"
-
#if !(GMX_SIMD_REAL_WIDTH == 2 || GMX_SIMD_REAL_WIDTH == 4 || GMX_SIMD_REAL_WIDTH == 8)
#error "unsupported SIMD width"
#endif
#include "../nbnxn_kernel_common.h"
#include "gmx_omp_nthreads.h"
#include "types/force_flags.h"
+#include "gmx_fatal.h"
/*! \brief Kinds of electrostatic treatments in SIMD Verlet kernels
*/
coultRF, coultTAB, coultTAB_TWIN, coultEWALD, coultEWALD_TWIN, coultNR
};
-/* Declare and define the kernel function pointer lookup tables. */
-static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR] =
+/* Declare and define the kernel function pointer lookup tables.
+ * The minor index of the array goes over both the LJ combination rules,
+ * which is only supported by plain cut-off, and the LJ switch functions.
+ */
+static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR+2] =
{
{
- nbnxn_kernel_simd_4xn_rf_comb_geom_ener,
- nbnxn_kernel_simd_4xn_rf_comb_lb_ener,
- nbnxn_kernel_simd_4xn_rf_comb_none_ener,
+ nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn,
+ nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn,
+ nbnxn_kernel_ElecRF_VdwLJ_F_4xn,
+ nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn,
+ nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn,
},
{
- nbnxn_kernel_simd_4xn_tab_comb_geom_ener,
- nbnxn_kernel_simd_4xn_tab_comb_lb_ener,
- nbnxn_kernel_simd_4xn_tab_comb_none_ener,
+ nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn,
},
{
- nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener,
- nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener,
- nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn,
},
{
- nbnxn_kernel_simd_4xn_ewald_comb_geom_ener,
- nbnxn_kernel_simd_4xn_ewald_comb_lb_ener,
- nbnxn_kernel_simd_4xn_ewald_comb_none_ener,
+ nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn,
+ nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn,
+ nbnxn_kernel_ElecEw_VdwLJ_F_4xn,
+ nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn,
+ nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn,
},
{
- nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener,
- nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener,
- nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn,
},
};
-static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_ener[coultNR][ljcrNR+2] =
{
{
- nbnxn_kernel_simd_4xn_rf_comb_geom_energrp,
- nbnxn_kernel_simd_4xn_rf_comb_lb_energrp,
- nbnxn_kernel_simd_4xn_rf_comb_none_energrp,
+ nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn,
+ nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn,
+ nbnxn_kernel_ElecRF_VdwLJ_VF_4xn,
+ nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn,
+ nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn,
},
{
- nbnxn_kernel_simd_4xn_tab_comb_geom_energrp,
- nbnxn_kernel_simd_4xn_tab_comb_lb_energrp,
- nbnxn_kernel_simd_4xn_tab_comb_none_energrp,
+ nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn,
},
{
- nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp,
- nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp,
- nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn,
},
{
- nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp,
- nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp,
- nbnxn_kernel_simd_4xn_ewald_comb_none_energrp,
+ nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn,
+ nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn,
+ nbnxn_kernel_ElecEw_VdwLJ_VF_4xn,
+ nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn,
+ nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn,
},
{
- nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp,
- nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp,
- nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn,
},
};
-static p_nbk_func_noener p_nbk_noener[coultNR][ljcrNR] =
+static p_nbk_func_ener p_nbk_energrp[coultNR][ljcrNR+2] =
{
{
- nbnxn_kernel_simd_4xn_rf_comb_geom_noener,
- nbnxn_kernel_simd_4xn_rf_comb_lb_noener,
- nbnxn_kernel_simd_4xn_rf_comb_none_noener,
+ nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn,
+ nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn,
+ nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn,
+ nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn,
+ nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn,
},
{
- nbnxn_kernel_simd_4xn_tab_comb_geom_noener,
- nbnxn_kernel_simd_4xn_tab_comb_lb_noener,
- nbnxn_kernel_simd_4xn_tab_comb_none_noener,
+ nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn,
+ nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn,
},
{
- nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener,
- nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener,
- nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn,
+ nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn,
},
{
- nbnxn_kernel_simd_4xn_ewald_comb_geom_noener,
- nbnxn_kernel_simd_4xn_ewald_comb_lb_noener,
- nbnxn_kernel_simd_4xn_ewald_comb_none_noener,
+ nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn,
+ nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn,
+ nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn,
+ nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn,
+ nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn,
},
{
- nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener,
- nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener,
- nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn,
+ nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn,
},
};
{
int nnbl;
nbnxn_pairlist_t **nbl;
- int coult;
+ int coult, ljtreatment = 0;
int nb;
nnbl = nbl_list->nnbl;
}
}
+ switch (ic->vdw_modifier)
+ {
+ case eintmodNONE:
+ case eintmodPOTSHIFT:
+ ljtreatment = nbat->comb_rule;
+ break;
+ /* Switch functions follow after cut-off combination rule kernels */
+ case eintmodFORCESWITCH:
+ ljtreatment = ljcrNR;
+ break;
+ case eintmodPOTSWITCH:
+ ljtreatment = ljcrNR + 1;
+ break;
+ default:
+ gmx_incons("Unsupported VdW interaction modifier");
+ }
+
#pragma omp parallel for schedule(static) num_threads(gmx_omp_nthreads_get(emntNonbonded))
for (nb = 0; nb < nnbl; nb++)
{
if (!(force_flags & GMX_FORCE_ENERGY))
{
/* Don't calculate energies */
- p_nbk_noener[coult][nbat->comb_rule](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p);
+ p_nbk_noener[coult][ljtreatment](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p);
}
else if (out->nV == 1)
{
out->Vvdw[0] = 0;
out->Vc[0] = 0;
- p_nbk_ener[coult][nbat->comb_rule](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p,
- out->Vvdw,
- out->Vc);
+ p_nbk_ener[coult][ljtreatment](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->Vvdw,
+ out->Vc);
}
else
{
out->VSc[i] = 0;
}
- p_nbk_energrp[coult][nbat->comb_rule](nbl[nb], nbat,
- ic,
- shift_vec,
- out->f,
- fshift_p,
- out->VSvdw,
- out->VSc);
+ p_nbk_energrp[coult][ljtreatment](nbl[nb], nbat,
+ ic,
+ shift_vec,
+ out->f,
+ fshift_p,
+ out->VSvdw,
+ out->VSc);
reduce_group_energies(nbat->nenergrp, nbat->neg_2log,
out->VSvdw, out->VSc,
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014, 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.
typedef nbk_func_noener *p_nbk_func_noener;
#endif
-nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_none_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_none_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_none_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_none_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_energrp;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_none_energrp;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJ_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJPSw_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJ_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJPSw_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJ_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJPSw_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJ_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VgrpF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VgrpF_4xn;
-nbk_func_noener nbnxn_kernel_simd_4xn_rf_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_rf_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_rf_comb_none_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_tab_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_tab_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_tab_comb_none_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_tab_twin_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_tab_twin_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_ewald_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_ewald_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_ewald_comb_none_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_noener;
-nbk_func_noener nbnxn_kernel_simd_4xn_ewald_twin_comb_none_noener;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombGeom_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJCombLB_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJ_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJFSw_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecRF_VdwLJPSw_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJCombLB_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJ_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJFSw_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTab_VdwLJPSw_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombGeom_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJCombLB_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJ_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJFSw_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEw_VdwLJPSw_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJ_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_VF_4xn;
+nbk_func_ener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_VF_4xn;
-nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_rf_comb_none_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_comb_none_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_tab_twin_comb_none_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_comb_none_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_geom_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_lb_ener;
-nbk_func_ener nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJCombGeom_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJCombLB_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJ_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJFSw_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecRF_VdwLJPSw_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJCombGeom_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJCombLB_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJ_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJFSw_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTab_VdwLJPSw_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombGeom_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJCombLB_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJ_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJFSw_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecQSTabTwinCut_VdwLJPSw_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJCombGeom_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJCombLB_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJ_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJFSw_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEw_VdwLJPSw_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJCombGeom_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJCombLB_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJFSw_F_4xn;
+nbk_func_noener nbnxn_kernel_ElecEwTwinCut_VdwLJPSw_F_4xn;
* the research papers on the package. Check out http://www.gromacs.org.
*/
#include "gromacs/simd/macros.h"
+#include "gromacs/simd/four_wide_macros.h"
#include "gromacs/simd/vector_operations.h"
#include "../../nbnxn_consts.h"
#ifdef CALC_COUL_EWALD
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_EWALD
-#define LJ_COMB_GEOM
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_ewald_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_EWALD
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
-#define CALC_ENERGIES
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_ewald_twin_comb_none_ener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
gmx_simd_bool_t wco_vdw_S3;
#endif
#endif
+
+#if (defined CALC_COULOMB && defined CALC_COUL_TAB) || defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+ gmx_simd_real_t r_S0;
+ gmx_simd_real_t r_S1;
+ gmx_simd_real_t r_S2;
+ gmx_simd_real_t r_S3;
+#endif
+
+#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+ gmx_simd_real_t rsw_S0, rsw2_S0, rsw2_r_S0;
+ gmx_simd_real_t rsw_S1, rsw2_S1, rsw2_r_S1;
+#ifndef HALF_LJ
+ gmx_simd_real_t rsw_S2, rsw2_S2, rsw2_r_S2;
+ gmx_simd_real_t rsw_S3, rsw2_S3, rsw2_r_S3;
+#endif
+#endif
+
#ifdef CALC_COULOMB
#ifdef CHECK_EXCLS
/* 1/r masked with the interaction mask */
gmx_simd_real_t frcoul_S3;
#ifdef CALC_COUL_TAB
/* For tables: r, rs=r/sp, rf=floor(rs), frac=rs-rf */
- gmx_simd_real_t r_S0, rs_S0, rf_S0, frac_S0;
- gmx_simd_real_t r_S1, rs_S1, rf_S1, frac_S1;
- gmx_simd_real_t r_S2, rs_S2, rf_S2, frac_S2;
- gmx_simd_real_t r_S3, rs_S3, rf_S3, frac_S3;
+ gmx_simd_real_t rs_S0, rf_S0, frac_S0;
+ gmx_simd_real_t rs_S1, rf_S1, frac_S1;
+ gmx_simd_real_t rs_S2, rf_S2, frac_S2;
+ gmx_simd_real_t rs_S3, rf_S3, frac_S3;
/* Table index: rs truncated to an int */
gmx_simd_int32_t ti_S0, ti_S1, ti_S2, ti_S3;
/* Linear force table values */
#endif
#endif
- gmx_simd_real_t FrLJ6_S0, FrLJ12_S0;
- gmx_simd_real_t FrLJ6_S1, FrLJ12_S1;
+ gmx_simd_real_t FrLJ6_S0, FrLJ12_S0, frLJ_S0;
+ gmx_simd_real_t FrLJ6_S1, FrLJ12_S1, frLJ_S1;
#ifndef HALF_LJ
- gmx_simd_real_t FrLJ6_S2, FrLJ12_S2;
- gmx_simd_real_t FrLJ6_S3, FrLJ12_S3;
+ gmx_simd_real_t FrLJ6_S2, FrLJ12_S2, frLJ_S2;
+ gmx_simd_real_t FrLJ6_S3, FrLJ12_S3, frLJ_S3;
#endif
-#ifdef CALC_ENERGIES
+#if defined CALC_ENERGIES || defined LJ_POT_SWITCH
gmx_simd_real_t VLJ6_S0, VLJ12_S0, VLJ_S0;
gmx_simd_real_t VLJ6_S1, VLJ12_S1, VLJ_S1;
#ifndef HALF_LJ
rinvsix_S3 = gmx_simd_blendzero_r(rinvsix_S3, interact_S3);
#endif
#endif
-#ifdef VDW_CUTOFF_CHECK
- rinvsix_S0 = gmx_simd_blendzero_r(rinvsix_S0, wco_vdw_S0);
- rinvsix_S1 = gmx_simd_blendzero_r(rinvsix_S1, wco_vdw_S1);
-#ifndef HALF_LJ
- rinvsix_S2 = gmx_simd_blendzero_r(rinvsix_S2, wco_vdw_S2);
- rinvsix_S3 = gmx_simd_blendzero_r(rinvsix_S3, wco_vdw_S3);
-#endif
-#endif
+
+#ifndef LJ_FORCE_SWITCH
+ /* We have plain LJ with simple C6/6 C12/12 coefficients */
FrLJ6_S0 = gmx_simd_mul_r(c6_S0, rinvsix_S0);
FrLJ6_S1 = gmx_simd_mul_r(c6_S1, rinvsix_S1);
#ifndef HALF_LJ
FrLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2));
FrLJ12_S3 = gmx_simd_mul_r(c12_S3, gmx_simd_mul_r(rinvsix_S3, rinvsix_S3));
#endif
+#endif
+
+#if defined LJ_FORCE_SWITCH || defined LJ_POT_SWITCH
+ /* We switch the LJ force */
+ r_S0 = gmx_simd_mul_r(rsq_S0, rinv_S0);
+ rsw_S0 = gmx_simd_max_r(gmx_simd_sub_r(r_S0, rswitch_S), zero_S);
+ rsw2_S0 = gmx_simd_mul_r(rsw_S0, rsw_S0);
+ rsw2_r_S0 = gmx_simd_mul_r(rsw2_S0, r_S0);
+ r_S1 = gmx_simd_mul_r(rsq_S1, rinv_S1);
+ rsw_S1 = gmx_simd_max_r(gmx_simd_sub_r(r_S1, rswitch_S), zero_S);
+ rsw2_S1 = gmx_simd_mul_r(rsw_S1, rsw_S1);
+ rsw2_r_S1 = gmx_simd_mul_r(rsw2_S1, r_S1);
+#ifndef HALF_LJ
+ r_S2 = gmx_simd_mul_r(rsq_S2, rinv_S2);
+ rsw_S2 = gmx_simd_max_r(gmx_simd_sub_r(r_S2, rswitch_S), zero_S);
+ rsw2_S2 = gmx_simd_mul_r(rsw_S2, rsw_S2);
+ rsw2_r_S2 = gmx_simd_mul_r(rsw2_S2, r_S2);
+ r_S3 = gmx_simd_mul_r(rsq_S3, rinv_S3);
+ rsw_S3 = gmx_simd_max_r(gmx_simd_sub_r(r_S3, rswitch_S), zero_S);
+ rsw2_S3 = gmx_simd_mul_r(rsw_S3, rsw_S3);
+ rsw2_r_S3 = gmx_simd_mul_r(rsw2_S3, r_S3);
+#endif
+#endif
+
+#ifdef LJ_FORCE_SWITCH
+
+#define gmx_add_fr_switch(fr, rsw, rsw2_r, c2, c3) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c3, rsw, c2), rsw2_r, fr)
+
+ FrLJ6_S0 = gmx_simd_mul_r(c6_S0, gmx_add_fr_switch(rinvsix_S0, rsw_S0, rsw2_r_S0, p6_fc2_S, p6_fc3_S));
+ FrLJ6_S1 = gmx_simd_mul_r(c6_S1, gmx_add_fr_switch(rinvsix_S1, rsw_S1, rsw2_r_S1, p6_fc2_S, p6_fc3_S));
+#ifndef HALF_LJ
+ FrLJ6_S2 = gmx_simd_mul_r(c6_S2, gmx_add_fr_switch(rinvsix_S2, rsw_S2, rsw2_r_S2, p6_fc2_S, p6_fc3_S));
+ FrLJ6_S3 = gmx_simd_mul_r(c6_S3, gmx_add_fr_switch(rinvsix_S3, rsw_S3, rsw2_r_S3, p6_fc2_S, p6_fc3_S));
+#endif
+ FrLJ12_S0 = gmx_simd_mul_r(c12_S0, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), rsw_S0, rsw2_r_S0, p12_fc2_S, p12_fc3_S));
+ FrLJ12_S1 = gmx_simd_mul_r(c12_S1, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S1, rinvsix_S1), rsw_S1, rsw2_r_S1, p12_fc2_S, p12_fc3_S));
+#ifndef HALF_LJ
+ FrLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), rsw_S2, rsw2_r_S2, p12_fc2_S, p12_fc3_S));
+ FrLJ12_S3 = gmx_simd_mul_r(c12_S3, gmx_add_fr_switch(gmx_simd_mul_r(rinvsix_S3, rinvsix_S3), rsw_S3, rsw2_r_S3, p12_fc2_S, p12_fc3_S));
+#endif
+#undef gmx_add_fr_switch
+#endif /* LJ_FORCE_SWITCH */
+
#endif /* not LJ_COMB_LB */
#ifdef LJ_COMB_LB
#endif
#endif /* LJ_COMB_LB */
+ /* Determine the total scalar LJ force*r */
+ frLJ_S0 = gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0);
+ frLJ_S1 = gmx_simd_sub_r(FrLJ12_S1, FrLJ6_S1);
+#ifndef HALF_LJ
+ frLJ_S2 = gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2);
+ frLJ_S3 = gmx_simd_sub_r(FrLJ12_S3, FrLJ6_S3);
+#endif
+
+#if defined CALC_ENERGIES && !defined LJ_POT_SWITCH
+#ifndef LJ_FORCE_SWITCH
+ /* Calculate the LJ energies, with constant potential shift */
+ VLJ6_S0 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S0, p6_cpot_S, FrLJ6_S0));
+ VLJ6_S1 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S1, p6_cpot_S, FrLJ6_S1));
+#ifndef HALF_LJ
+ VLJ6_S2 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S2, p6_cpot_S, FrLJ6_S2));
+ VLJ6_S3 = gmx_simd_mul_r(sixth_S, gmx_simd_fmadd_r(c6_S3, p6_cpot_S, FrLJ6_S3));
+#endif
+ VLJ12_S0 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S0, p12_cpot_S, FrLJ12_S0));
+ VLJ12_S1 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S1, p12_cpot_S, FrLJ12_S1));
+#ifndef HALF_LJ
+ VLJ12_S2 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S2, p12_cpot_S, FrLJ12_S2));
+ VLJ12_S3 = gmx_simd_mul_r(twelveth_S, gmx_simd_fmadd_r(c12_S3, p12_cpot_S, FrLJ12_S3));
+#endif
+#else
+
+#define v_fswitch_r(rsw, rsw2, c0, c3, c4) gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), gmx_simd_mul_r(rsw2, rsw), c0)
+
+ VLJ6_S0 = gmx_simd_mul_r(c6_S0, gmx_simd_fmadd_r(sixth_S, rinvsix_S0, v_fswitch_r(rsw_S0, rsw2_S0, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+ VLJ6_S1 = gmx_simd_mul_r(c6_S1, gmx_simd_fmadd_r(sixth_S, rinvsix_S1, v_fswitch_r(rsw_S1, rsw2_S1, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+#ifndef HALF_LJ
+ VLJ6_S2 = gmx_simd_mul_r(c6_S2, gmx_simd_fmadd_r(sixth_S, rinvsix_S2, v_fswitch_r(rsw_S2, rsw2_S2, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+ VLJ6_S3 = gmx_simd_mul_r(c6_S3, gmx_simd_fmadd_r(sixth_S, rinvsix_S3, v_fswitch_r(rsw_S3, rsw2_S3, p6_6cpot_S, p6_vc3_S, p6_vc4_S)));
+#endif
+ VLJ12_S0 = gmx_simd_mul_r(c12_S0, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S0, rinvsix_S0), v_fswitch_r(rsw_S0, rsw2_S0, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+ VLJ12_S1 = gmx_simd_mul_r(c12_S1, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S1, rinvsix_S1), v_fswitch_r(rsw_S1, rsw2_S1, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+#ifndef HALF_LJ
+ VLJ12_S2 = gmx_simd_mul_r(c12_S2, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S2, rinvsix_S2), v_fswitch_r(rsw_S2, rsw2_S2, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+ VLJ12_S3 = gmx_simd_mul_r(c12_S3, gmx_simd_fmadd_r(twelveth_S, gmx_simd_mul_r(rinvsix_S3, rinvsix_S3), v_fswitch_r(rsw_S3, rsw2_S3, p12_12cpot_S, p12_vc3_S, p12_vc4_S)));
+#endif
+#undef v_fswitch_r
+#endif /* LJ_FORCE_SWITCH */
+
+ /* Add up the repulsion and dispersion */
+ VLJ_S0 = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0);
+ VLJ_S1 = gmx_simd_sub_r(VLJ12_S1, VLJ6_S1);
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2);
+ VLJ_S3 = gmx_simd_sub_r(VLJ12_S3, VLJ6_S3);
+#endif
+#endif /* CALC_ENERGIES && !LJ_POT_SWITCH */
+
+#ifdef LJ_POT_SWITCH
+ /* We always need the potential, since it is needed for the force */
+ VLJ_S0 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S0, gmx_simd_mul_r(twelveth_S, FrLJ12_S0));
+ VLJ_S1 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S1, gmx_simd_mul_r(twelveth_S, FrLJ12_S1));
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S2, gmx_simd_mul_r(twelveth_S, FrLJ12_S2));
+ VLJ_S3 = gmx_simd_fnmadd_r(sixth_S, FrLJ6_S3, gmx_simd_mul_r(twelveth_S, FrLJ12_S3));
+#endif
+
+ {
+ gmx_simd_real_t sw_S0, dsw_S0;
+ gmx_simd_real_t sw_S1, dsw_S1;
+#ifndef HALF_LJ
+ gmx_simd_real_t sw_S2, dsw_S2;
+ gmx_simd_real_t sw_S3, dsw_S3;
+#endif
+
+#define switch_r(rsw, rsw2, c3, c4, c5) gmx_simd_fmadd_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c5, rsw, c4), rsw, c3), gmx_simd_mul_r(rsw2, rsw), one_S)
+#define dswitch_r(rsw, rsw2, c2, c3, c4) gmx_simd_mul_r(gmx_simd_fmadd_r(gmx_simd_fmadd_r(c4, rsw, c3), rsw, c2), rsw2)
+
+ sw_S0 = switch_r(rsw_S0, rsw2_S0, swV3_S, swV4_S, swV5_S);
+ dsw_S0 = dswitch_r(rsw_S0, rsw2_S0, swF2_S, swF3_S, swF4_S);
+ sw_S1 = switch_r(rsw_S1, rsw2_S1, swV3_S, swV4_S, swV5_S);
+ dsw_S1 = dswitch_r(rsw_S1, rsw2_S1, swF2_S, swF3_S, swF4_S);
+#ifndef HALF_LJ
+ sw_S2 = switch_r(rsw_S2, rsw2_S2, swV3_S, swV4_S, swV5_S);
+ dsw_S2 = dswitch_r(rsw_S2, rsw2_S2, swF2_S, swF3_S, swF4_S);
+ sw_S3 = switch_r(rsw_S3, rsw2_S3, swV3_S, swV4_S, swV5_S);
+ dsw_S3 = dswitch_r(rsw_S3, rsw2_S3, swF2_S, swF3_S, swF4_S);
+#endif
+ frLJ_S0 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S0, VLJ_S0), r_S0, gmx_simd_mul_r(sw_S0, frLJ_S0));
+ frLJ_S1 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S1, VLJ_S1), r_S1, gmx_simd_mul_r(sw_S1, frLJ_S1));
+#ifndef HALF_LJ
+ frLJ_S2 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S2, VLJ_S2), r_S2, gmx_simd_mul_r(sw_S2, frLJ_S2));
+ frLJ_S3 = gmx_simd_fnmadd_r(gmx_simd_mul_r(dsw_S3, VLJ_S3), r_S3, gmx_simd_mul_r(sw_S3, frLJ_S3));
+#endif
+#ifdef CALC_ENERGIES
+ VLJ_S0 = gmx_simd_mul_r(sw_S0, VLJ_S0);
+ VLJ_S1 = gmx_simd_mul_r(sw_S1, VLJ_S1);
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_mul_r(sw_S2, VLJ_S2);
+ VLJ_S3 = gmx_simd_mul_r(sw_S3, VLJ_S3);
+#endif
+#endif
+
+#undef switch_r
+#undef dswitch_r
+ }
+#endif /* LJ_POT_SWITCH */
+
+#if defined VDW_CUTOFF_CHECK
+ /* frLJ is multiplied later by rinvsq, which is masked for the Coulomb
+ * cut-off, but if the VdW cut-off is shorter, we need to mask with that.
+ */
+ frLJ_S0 = gmx_simd_blendzero_r(frLJ_S0, wco_vdw_S0);
+ frLJ_S1 = gmx_simd_blendzero_r(frLJ_S1, wco_vdw_S1);
+#ifndef HALF_LJ
+ frLJ_S2 = gmx_simd_blendzero_r(frLJ_S2, wco_vdw_S2);
+ frLJ_S3 = gmx_simd_blendzero_r(frLJ_S3, wco_vdw_S3);
+#endif
+#endif
+
+#ifdef CALC_ENERGIES
+ /* The potential shift should be removed for pairs beyond cut-off */
+ VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0);
+ VLJ_S1 = gmx_simd_blendzero_r(VLJ_S1, wco_vdw_S1);
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2);
+ VLJ_S3 = gmx_simd_blendzero_r(VLJ_S3, wco_vdw_S3);
+#endif
+#endif
+
+#if defined CALC_ENERGIES && defined CHECK_EXCLS
+ /* The potential shift should be removed for excluded pairs */
+ VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, interact_S0);
+ VLJ_S1 = gmx_simd_blendzero_r(VLJ_S1, interact_S1);
+#ifndef HALF_LJ
+ VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, interact_S2);
+ VLJ_S3 = gmx_simd_blendzero_r(VLJ_S3, interact_S3);
+#endif
+#endif
+
+
#endif /* CALC_LJ */
#ifdef CALC_ENERGIES
#endif
#ifdef CALC_LJ
- /* Calculate the LJ energies */
- VLJ6_S0 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S0, gmx_simd_mul_r(c6_S0, sh_invrc6_S)));
- VLJ6_S1 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S1, gmx_simd_mul_r(c6_S1, sh_invrc6_S)));
-#ifndef HALF_LJ
- VLJ6_S2 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S2, gmx_simd_mul_r(c6_S2, sh_invrc6_S)));
- VLJ6_S3 = gmx_simd_mul_r(sixth_S, gmx_simd_sub_r(FrLJ6_S3, gmx_simd_mul_r(c6_S3, sh_invrc6_S)));
-#endif
- VLJ12_S0 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S0, gmx_simd_mul_r(c12_S0, sh_invrc12_S)));
- VLJ12_S1 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S1, gmx_simd_mul_r(c12_S1, sh_invrc12_S)));
-#ifndef HALF_LJ
- VLJ12_S2 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S2, gmx_simd_mul_r(c12_S2, sh_invrc12_S)));
- VLJ12_S3 = gmx_simd_mul_r(twelveth_S, gmx_simd_sub_r(FrLJ12_S3, gmx_simd_mul_r(c12_S3, sh_invrc12_S)));
-#endif
- VLJ_S0 = gmx_simd_sub_r(VLJ12_S0, VLJ6_S0);
- VLJ_S1 = gmx_simd_sub_r(VLJ12_S1, VLJ6_S1);
-#ifndef HALF_LJ
- VLJ_S2 = gmx_simd_sub_r(VLJ12_S2, VLJ6_S2);
- VLJ_S3 = gmx_simd_sub_r(VLJ12_S3, VLJ6_S3);
-#endif
- /* The potential shift should be removed for pairs beyond cut-off */
- VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, wco_vdw_S0);
- VLJ_S1 = gmx_simd_blendzero_r(VLJ_S1, wco_vdw_S1);
-#ifndef HALF_LJ
- VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, wco_vdw_S2);
- VLJ_S3 = gmx_simd_blendzero_r(VLJ_S3, wco_vdw_S3);
-#endif
-#ifdef CHECK_EXCLS
- /* The potential shift should be removed for excluded pairs */
- VLJ_S0 = gmx_simd_blendzero_r(VLJ_S0, interact_S0);
- VLJ_S1 = gmx_simd_blendzero_r(VLJ_S1, interact_S1);
-#ifndef HALF_LJ
- VLJ_S2 = gmx_simd_blendzero_r(VLJ_S2, interact_S2);
- VLJ_S3 = gmx_simd_blendzero_r(VLJ_S3, interact_S3);
-#endif
-#endif
#ifndef ENERGY_GROUPS
#ifndef HALF_LJ
Vvdwtot_S = gmx_simd_add_r(Vvdwtot_S,
gmx_simd_sub_r(FrLJ12_S0, FrLJ6_S0)));
#endif
#ifdef CALC_COULOMB
- fscal_S1 = gmx_simd_mul_r(rinvsq_S1,
- gmx_simd_add_r(frcoul_S1,
- gmx_simd_sub_r(FrLJ12_S1, FrLJ6_S1)));
+ fscal_S1 = gmx_simd_mul_r(rinvsq_S1, gmx_simd_add_r(frcoul_S1, frLJ_S1));
#else
- fscal_S1 = gmx_simd_mul_r(rinvsq_S1,
- (
- gmx_simd_sub_r(FrLJ12_S1, FrLJ6_S1)));
+ fscal_S1 = gmx_simd_mul_r(rinvsq_S1, frLJ_S1);
#endif
#else
fscal_S0 = gmx_simd_mul_r(rinvsq_S0, frcoul_S0);
#endif /* CALC_LJ */
#if defined CALC_LJ && !defined HALF_LJ
#ifdef CALC_COULOMB
- fscal_S2 = gmx_simd_mul_r(rinvsq_S2,
- gmx_simd_add_r(frcoul_S2,
- gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2)));
-#else
- fscal_S2 = gmx_simd_mul_r(rinvsq_S2,
- (
- gmx_simd_sub_r(FrLJ12_S2, FrLJ6_S2)));
-#endif
-#ifdef CALC_COULOMB
- fscal_S3 = gmx_simd_mul_r(rinvsq_S3,
- gmx_simd_add_r(frcoul_S3,
- gmx_simd_sub_r(FrLJ12_S3, FrLJ6_S3)));
+ fscal_S2 = gmx_simd_mul_r(rinvsq_S2, gmx_simd_add_r(frcoul_S2, frLJ_S2));
+ fscal_S3 = gmx_simd_mul_r(rinvsq_S3, gmx_simd_add_r(frcoul_S3, frLJ_S3));
#else
- fscal_S3 = gmx_simd_mul_r(rinvsq_S3,
- (
- gmx_simd_sub_r(FrLJ12_S3, FrLJ6_S3)));
+ fscal_S2 = gmx_simd_mul_r(rinvsq_S2, frLJ_S2);
+ fscal_S3 = gmx_simd_mul_r(rinvsq_S3, frLJ_S3);
#endif
#else
/* Atom 2 and 3 don't have LJ, so only add Coulomb forces */
* the research papers on the package. Check out http://www.gromacs.org.
*/
+
{
const nbnxn_ci_t *nbln;
const nbnxn_cj_t *l_cj;
gmx_simd_real_t fix_S3, fiy_S3, fiz_S3;
#if UNROLLJ >= 4
/* We use an i-force SIMD register width of 4 */
- gmx_mm_pr4 fix_S, fiy_S, fiz_S;
+ gmx_simd4_real_t fix_S, fiy_S, fiz_S;
#else
/* We use an i-force SIMD register width of 2 */
gmx_simd_real_t fix0_S, fiy0_S, fiz0_S;
gmx_simd_real_t iq_S1 = gmx_simd_setzero_r();
gmx_simd_real_t iq_S2 = gmx_simd_setzero_r();
gmx_simd_real_t iq_S3 = gmx_simd_setzero_r();
+
+#ifdef CALC_COUL_RF
gmx_simd_real_t mrc_3_S;
#ifdef CALC_ENERGIES
gmx_simd_real_t hrc_3_S, moh_rc_S;
#endif
+#endif
#ifdef CALC_COUL_TAB
/* Coulomb table variables */
gmx_simd_real_t sh_ewald_S;
#endif
+#ifdef LJ_POT_SWITCH
+ gmx_simd_real_t rswitch_S;
+ gmx_simd_real_t swV3_S, swV4_S, swV5_S;
+ gmx_simd_real_t swF2_S, swF3_S, swF4_S;
+#else
+#ifdef LJ_FORCE_SWITCH
+ gmx_simd_real_t rswitch_S;
+ gmx_simd_real_t p6_fc2_S, p6_fc3_S;
+ gmx_simd_real_t p12_fc2_S, p12_fc3_S;
+#ifdef CALC_ENERGIES
+ gmx_simd_real_t p6_vc3_S, p6_vc4_S;
+ gmx_simd_real_t p12_vc3_S, p12_vc4_S;
+ gmx_simd_real_t p6_6cpot_S, p12_12cpot_S;
+#endif
+#else
+#ifdef CALC_ENERGIES
+ gmx_simd_real_t p6_cpot_S, p12_cpot_S;
+#endif
+#endif
+#endif
+
#ifdef LJ_COMB_LB
const real *ljc;
#endif
#ifdef CALC_ENERGIES
- gmx_simd_real_t sh_invrc6_S, sh_invrc12_S;
-
/* cppcheck-suppress unassignedVariable */
real tmpsum_array[GMX_SIMD_REAL_WIDTH*2], *tmpsum;
#endif
* Since we only check bits, the actual value they represent does not
* matter, as long as both filter and mask data are treated the same way.
*/
- filter_S0 = gmx_load_exclusion_filter(exclusion_filter + 0*UNROLLJ*filter_stride);
- filter_S1 = gmx_load_exclusion_filter(exclusion_filter + 1*UNROLLJ*filter_stride);
- filter_S2 = gmx_load_exclusion_filter(exclusion_filter + 2*UNROLLJ*filter_stride);
- filter_S3 = gmx_load_exclusion_filter(exclusion_filter + 3*UNROLLJ*filter_stride);
+ filter_S0 = gmx_load_exclusion_filter(exclusion_filter + 0*UNROLLJ*filter_stride);
+ filter_S1 = gmx_load_exclusion_filter(exclusion_filter + 1*UNROLLJ*filter_stride);
+ filter_S2 = gmx_load_exclusion_filter(exclusion_filter + 2*UNROLLJ*filter_stride);
+ filter_S3 = gmx_load_exclusion_filter(exclusion_filter + 3*UNROLLJ*filter_stride);
+
+#ifdef CALC_COUL_RF
+ /* Reaction-field constants */
+ mrc_3_S = gmx_simd_set1_r(-2*ic->k_rf);
+#ifdef CALC_ENERGIES
+ hrc_3_S = gmx_simd_set1_r(ic->k_rf);
+ moh_rc_S = gmx_simd_set1_r(-ic->c_rf);
+#endif
+#endif
#ifdef CALC_COUL_TAB
/* Generate aligned table index pointers */
sh_ewald_S = gmx_simd_set1_r(ic->sh_ewald);
#endif
- q = nbat->q;
- type = nbat->type;
- facel = ic->epsfac;
- shiftvec = shift_vec[0];
- x = nbat->x;
+ /* LJ function constants */
+#if defined CALC_ENERGIES || defined LJ_POT_SWITCH
+ sixth_S = gmx_simd_set1_r(1.0/6.0);
+ twelveth_S = gmx_simd_set1_r(1.0/12.0);
+#endif
- avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC);
+#ifdef LJ_POT_SWITCH
+ rswitch_S = gmx_simd_set1_r(ic->rvdw_switch);
+ swV3_S = gmx_simd_set1_r(ic->vdw_switch.c3);
+ swV4_S = gmx_simd_set1_r(ic->vdw_switch.c4);
+ swV5_S = gmx_simd_set1_r(ic->vdw_switch.c5);
+ swF2_S = gmx_simd_set1_r(3*ic->vdw_switch.c3);
+ swF3_S = gmx_simd_set1_r(4*ic->vdw_switch.c4);
+ swF4_S = gmx_simd_set1_r(5*ic->vdw_switch.c5);
+#else
+ sixth_S = gmx_simd_set1_r(1.0/6.0);
+ twelveth_S = gmx_simd_set1_r(1.0/12.0);
+#ifdef LJ_FORCE_SWITCH
+ rswitch_S = gmx_simd_set1_r(ic->rvdw_switch);
+ p6_fc2_S = gmx_simd_set1_r(ic->dispersion_shift.c2);
+ p6_fc3_S = gmx_simd_set1_r(ic->dispersion_shift.c3);
+ p12_fc2_S = gmx_simd_set1_r(ic->repulsion_shift.c2);
+ p12_fc3_S = gmx_simd_set1_r(ic->repulsion_shift.c3);
+#ifdef CALC_ENERGIES
+ {
+ gmx_simd_real_t mthird_S = gmx_simd_set1_r(-1.0/3.0);
+ gmx_simd_real_t mfourth_S = gmx_simd_set1_r(-1.0/4.0);
+
+ p6_vc3_S = gmx_simd_mul_r(mthird_S, p6_fc2_S);
+ p6_vc4_S = gmx_simd_mul_r(mfourth_S, p6_fc3_S);
+ p6_6cpot_S = gmx_simd_set1_r(ic->dispersion_shift.cpot/6);
+ p12_vc3_S = gmx_simd_mul_r(mthird_S, p12_fc2_S);
+ p12_vc4_S = gmx_simd_mul_r(mfourth_S, p12_fc3_S);
+ p12_12cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot/12);
+ }
+#endif
+#else
+ /* Plain LJ cut-off, with potential shift cpot, which can be 0 */
+#ifdef CALC_ENERGIES
+ p6_cpot_S = gmx_simd_set1_r(ic->dispersion_shift.cpot);
+ p12_cpot_S = gmx_simd_set1_r(ic->repulsion_shift.cpot);
+#endif
+#endif
+#endif /* LJ_POT_SWITCH */
/* The kernel either supports rcoulomb = rvdw or rcoulomb >= rvdw */
rc2_S = gmx_simd_set1_r(ic->rcoulomb*ic->rcoulomb);
rcvdw2_S = gmx_simd_set1_r(ic->rvdw*ic->rvdw);
#endif
-#ifdef CALC_ENERGIES
- sixth_S = gmx_simd_set1_r(1.0/6.0);
- twelveth_S = gmx_simd_set1_r(1.0/12.0);
-
- sh_invrc6_S = gmx_simd_set1_r(ic->sh_invrc6);
- sh_invrc12_S = gmx_simd_set1_r(ic->sh_invrc6*ic->sh_invrc6);
-#endif
-
- mrc_3_S = gmx_simd_set1_r(-2*ic->k_rf);
-
-#ifdef CALC_ENERGIES
- hrc_3_S = gmx_simd_set1_r(ic->k_rf);
+ avoid_sing_S = gmx_simd_set1_r(NBNXN_AVOID_SING_R2_INC);
- moh_rc_S = gmx_simd_set1_r(-ic->c_rf);
-#endif
+ q = nbat->q;
+ type = nbat->type;
+ facel = ic->epsfac;
+ shiftvec = shift_vec[0];
+ x = nbat->x;
#ifdef CALC_ENERGIES
tmpsum = gmx_simd_align_r(tmpsum_array);
#endif
#ifdef FIX_LJ_C
- pvdw_c6 = gmx_simd_align_r(pvdw_array+3);
+ pvdw_c6 = gmx_simd_align_real(pvdw_array);
pvdw_c12 = pvdw_c6 + UNROLLI*UNROLLJ;
for (jp = 0; jp < UNROLLJ; jp++)
#define CALC_LJ
if (half_LJ)
{
+ /* Coulomb: all i-atoms, LJ: first half i-atoms */
#define CALC_COULOMB
#define HALF_LJ
#define CHECK_EXCLS
}
else if (do_coul)
{
+ /* Coulomb: all i-atoms, LJ: all i-atoms */
#define CALC_COULOMB
#define CHECK_EXCLS
while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL)
}
else
{
+ /* Coulomb: none, LJ: all i-atoms */
#define CHECK_EXCLS
while (cjind < cjind1 && nbl->cj[cjind].excl != NBNXN_INTERACTION_MASK_ALL)
{
/* Add accumulated i-forces to the force array */
#if UNROLLJ >= 4
fix_S = gmx_mm_transpose_sum4_pr(fix_S0, fix_S1, fix_S2, fix_S3);
- gmx_store_pr4(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix)));
+ gmx_simd4_store_r(f+scix, gmx_add_pr4(fix_S, gmx_load_pr4(f+scix)));
fiy_S = gmx_mm_transpose_sum4_pr(fiy_S0, fiy_S1, fiy_S2, fiy_S3);
- gmx_store_pr4(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy)));
+ gmx_simd4_store_r(f+sciy, gmx_add_pr4(fiy_S, gmx_load_pr4(f+sciy)));
fiz_S = gmx_mm_transpose_sum4_pr(fiz_S0, fiz_S1, fiz_S2, fiz_S3);
- gmx_store_pr4(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz)));
+ gmx_simd4_store_r(f+sciz, gmx_add_pr4(fiz_S, gmx_load_pr4(f+sciz)));
#ifdef CALC_SHIFTFORCES
fshift[ish3+0] += gmx_sum_simd4(fix_S, shf);
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_RF
-#define LJ_COMB_GEOM
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_rf_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_rf_comb_geom_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_RF
-#define LJ_COMB_LB
-#define CALC_ENERGIES
-#define ENERGY_GROUPS
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_rf_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_rf_comb_lb_energrp(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_TAB
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-#define LJ_COMB_LB
-#define CALC_ENERGIES
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_tab_twin_comb_lb_ener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
+++ /dev/null
-/*
- * This file is part of the GROMACS molecular simulation package.
- *
- * Copyright (c) 2012,2013, 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.
- *
- * GROMACS is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- *
- * GROMACS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with GROMACS; if not, see
- * http://www.gnu.org/licenses, or write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * If you want to redistribute modifications to GROMACS, please
- * consider that scientific software is very special. Version
- * control is crucial - bugs must be traceable. We will be happy to
- * consider code for inclusion in the official distribution, but
- * derived work must not be called official GROMACS. Details are found
- * in the README & COPYING files - if they are missing, get the
- * official version at http://www.gromacs.org.
- *
- * To help us fund GROMACS development, we humbly ask that you cite
- * the research papers on the package. Check out http://www.gromacs.org.
- */
-/*
- * Note: this file was generated by the Verlet kernel generator for
- * kernel type 4xn.
- */
-
-/* Some target architectures compile kernels for only some NBNxN
- * kernel flavours, but the code is generated before the target
- * architecture is known. So compilation is conditional upon
- * GMX_NBNXN_SIMD_4XN, so that this file reduces to a stub
- * function definition when the kernel will never be called.
- */
-#define GMX_SIMD_J_UNROLL_SIZE 1
-#include "nbnxn_kernel_simd_4xn.h"
-
-#define CALC_COUL_TAB
-#define VDW_CUTOFF_CHECK /* Use twin-range cut-off */
-/* Use no LJ combination rule */
-/* Will not calculate energies */
-
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_common.h"
-#endif /* GMX_NBNXN_SIMD_4XN */
-
-#ifdef CALC_ENERGIES
-void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift,
- real gmx_unused *Vvdw,
- real gmx_unused *Vc)
-#else /* CALC_ENERGIES */
-void
-nbnxn_kernel_simd_4xn_tab_twin_comb_none_noener(const nbnxn_pairlist_t gmx_unused *nbl,
- const nbnxn_atomdata_t gmx_unused *nbat,
- const interaction_const_t gmx_unused *ic,
- rvec gmx_unused *shift_vec,
- real gmx_unused *f,
- real gmx_unused *fshift)
-#endif /* CALC_ENERGIES */
-#ifdef GMX_NBNXN_SIMD_4XN
-#include "nbnxn_kernel_simd_4xn_outer.h"
-#else /* GMX_NBNXN_SIMD_4XN */
-{
-/* No need to call gmx_incons() here, because the only function
- * that calls this one is also compiled conditionally. When
- * GMX_NBNXN_SIMD_4XN is not defined, it will call no kernel functions and
- * instead call gmx_incons().
- */
-}
-#endif /* GMX_NBNXN_SIMD_4XN */
nbvg->nbl_lists.natpair_ljq);
inc_nrnb(nrnb, enr_nbnxn_kernel_lj,
nbvg->nbl_lists.natpair_lj);
+ /* The Coulomb-only kernels are offset -eNR_NBNXN_LJ_RF+eNR_NBNXN_RF */
inc_nrnb(nrnb, enr_nbnxn_kernel_ljc-eNR_NBNXN_LJ_RF+eNR_NBNXN_RF,
nbvg->nbl_lists.natpair_q);
+
+ if (ic->vdw_modifier == eintmodFORCESWITCH)
+ {
+ /* We add up the switch cost separately */
+ inc_nrnb(nrnb, eNR_NBNXN_LJ_FSW+((flags & GMX_FORCE_ENERGY) ? 1 : 0),
+ nbvg->nbl_lists.natpair_ljq + nbvg->nbl_lists.natpair_lj);
+ }
+ if (ic->vdw_modifier == eintmodPOTSWITCH)
+ {
+ /* We add up the switch cost separately */
+ inc_nrnb(nrnb, eNR_NBNXN_LJ_PSW+((flags & GMX_FORCE_ENERGY) ? 1 : 0),
+ nbvg->nbl_lists.natpair_ljq + nbvg->nbl_lists.natpair_lj);
+ }
}
void do_force_cutsVERLET(FILE *fplog, t_commrec *cr,
eners[i] = 0;
virs[i] = 0;
}
- if ((fr->vdwtype == evdwSWITCH) || (fr->vdwtype == evdwSHIFT))
+ if (fr->vdwtype == evdwSWITCH || fr->vdwtype == evdwSHIFT ||
+ fr->vdw_modifier == eintmodPOTSWITCH ||
+ fr->vdw_modifier == eintmodFORCESWITCH)
{
if (fr->rvdw_switch == 0)
{
rc3 = r0*r0*r0;
rc9 = rc3*rc3*rc3;
- if (fr->vdwtype == evdwSHIFT)
+ if (fr->vdwtype == evdwSHIFT ||
+ fr->vdw_modifier == eintmodFORCESWITCH)
{
/* Determine the constant energy shift below rvdw_switch.
* Table has a scale factor since we have scaled it down to compensate
gmx_fatal(FARGS, "Invalid vdwtype %d in %s line %d", vdwtype,
__FILE__, __LINE__);
}
+
+ if (!b14only && fr->vdw_modifier != eintmodNONE)
+ {
+ if (fr->vdwtype != evdwCUT)
+ {
+ gmx_incons("Potential modifiers only implemented for LJ cut-off");
+ }
+
+ switch (fr->vdw_modifier)
+ {
+ case eintmodNONE:
+ case eintmodPOTSHIFT:
+ case eintmodEXACTCUTOFF:
+ /* No modification */
+ break;
+ case eintmodPOTSWITCH:
+ tabsel[etiLJ6] = etabLJ6Switch;
+ tabsel[etiLJ12] = etabLJ12Switch;
+ break;
+ case eintmodFORCESWITCH:
+ tabsel[etiLJ6] = etabLJ6Shift;
+ tabsel[etiLJ12] = etabLJ12Shift;
+ break;
+ default:
+ gmx_incons("Unsupported vdw_modifier");
+ }
+ }
}
}
}
else if (ir_vdw_switched(ir) || ir_coulomb_switched(ir))
{
- md_print_warn(NULL, fplog, "Converting switched or shifted interactions to a shifted potential (without force shift), this will lead to slightly different interaction potentials");
-
- if (ir_vdw_switched(ir))
+ if (ir_vdw_switched(ir) && ir->vdw_modifier == eintmodNONE)
{
ir->vdwtype = evdwCUT;
+
+ switch (ir->vdwtype)
+ {
+ case evdwSHIFT: ir->vdw_modifier = eintmodFORCESWITCH; break;
+ case evdwSWITCH: ir->vdw_modifier = eintmodPOTSWITCH; break;
+ default: gmx_fatal(FARGS, "The Verlet scheme does not support Van der Waals interactions of type '%s'", evdw_names[ir->vdwtype]);
+ }
}
- if (ir_coulomb_switched(ir))
+ if (ir_coulomb_switched(ir) && ir->coulomb_modifier == eintmodNONE)
{
if (EEL_FULL(ir->coulombtype))
{
/* With full electrostatic only PME can be switched */
- ir->coulombtype = eelPME;
+ ir->coulombtype = eelPME;
+ ir->coulomb_modifier = eintmodPOTSHIFT;
}
else
{
md_print_warn(NULL, fplog, "NOTE: Replacing %s electrostatics with reaction-field with epsilon-rf=inf\n", eel_names[ir->coulombtype]);
- ir->coulombtype = eelRF;
- ir->epsilon_rf = 0.0;
+ ir->coulombtype = eelRF;
+ ir->epsilon_rf = 0.0;
+ ir->coulomb_modifier = eintmodPOTSHIFT;
}
}
bUseGPU = (hwinfo->gpu_info.ncuda_dev_compatible > 0 ||
getenv("GMX_EMULATE_GPU") != NULL);
+ if (bUseGPU && (inputrec->vdw_modifier == eintmodFORCESWITCH ||
+ inputrec->vdw_modifier == eintmodPOTSWITCH))
+ {
+ md_print_warn(cr, fplog, "LJ switch functions are not yet supported on the GPU, falling back to CPU-only");
+ bUseGPU = FALSE;
+ }
+
prepare_verlet_scheme(fplog, cr,
inputrec, nstlist_cmdline, mtop, state->box,
bUseGPU);