|
AnalysisHistogramSettingsInitializer | histogramFromRange (real min, real max) |
| Initializes a histogram using a range and a bin width. More...
|
|
AnalysisHistogramSettingsInitializer | histogramFromBins (real start, int nbins, real binwidth) |
| Initializes a histogram using bin width and the number of bins. More...
|
|
CommandLineProgramContext & | initForCommandLine (int *argc, char ***argv) |
| Initializes the GROMACS library for command-line use. More...
|
|
void | finalizeForCommandLine () |
| Deinitializes the GROMACS library after initForCommandLine(). More...
|
|
int | processExceptionAtExitForCommandLine (const std::exception &ex) |
| Handles an exception and deinitializes after initForCommandLine. More...
|
|
int | runCommandLineModule (int argc, char *argv[], ICommandLineModule *module) |
| Implements a main() method that runs a single module. More...
|
|
int | runCommandLineModule (int argc, char *argv[], const char *name, const char *description, std::function< std::unique_ptr< ICommandLineOptionsModule >()> factory) |
| Implements a main() method that runs a single module. More...
|
|
void | writeCommandLineHelpCMain (const CommandLineHelpContext &context, const char *name, int(*mainFunction)(int argc, char *argv[])) |
| Helper to implement ICommandLineModule::writeHelp() with a C-like main() function that calls parse_common_args(). More...
|
|
bool | cpuIsX86Nehalem (const CpuInfo &cpuInfo) |
| Return true if the CPU is an Intel x86 Nehalem. More...
|
|
unsigned int | log2I (std::uint32_t x) |
| Compute floor of logarithm to base 2, 32 bit unsigned argument. More...
|
|
unsigned int | log2I (std::uint64_t x) |
| Compute floor of logarithm to base 2, 64 bit unsigned argument. More...
|
|
unsigned int | log2I (std::int32_t x) |
| Compute floor of logarithm to base 2, 32 bit signed argument. More...
|
|
unsigned int | log2I (std::int64_t x) |
| Compute floor of logarithm to base 2, 64 bit signed argument. More...
|
|
std::int64_t | greatestCommonDivisor (std::int64_t p, std::int64_t q) |
| Find greatest common divisor of two numbers. More...
|
|
double | erfinv (double x) |
| Inverse error function, double precision. More...
|
|
float | erfinv (float x) |
| Inverse error function, single precision. More...
|
|
static float | invsqrt (float x) |
| Calculate 1.0/sqrt(x) in single precision. More...
|
|
static double | invsqrt (double x) |
| Calculate 1.0/sqrt(x) in double precision, but single range. More...
|
|
static double | invsqrt (int x) |
| Calculate 1.0/sqrt(x) for integer x in double precision. More...
|
|
static float | invcbrt (float x) |
| Calculate inverse cube root of x in single precision. More...
|
|
static double | invcbrt (double x) |
| Calculate inverse sixth root of x in double precision. More...
|
|
static double | invcbrt (int x) |
| Calculate inverse sixth root of integer x in double precision. More...
|
|
static float | sixthroot (float x) |
| Calculate sixth root of x in single precision. More...
|
|
static double | sixthroot (double x) |
| Calculate sixth root of x in double precision. More...
|
|
static double | sixthroot (int x) |
| Calculate sixth root of integer x, return double. More...
|
|
static float | invsixthroot (float x) |
| Calculate inverse sixth root of x in single precision. More...
|
|
static double | invsixthroot (double x) |
| Calculate inverse sixth root of x in double precision. More...
|
|
static double | invsixthroot (int x) |
| Calculate inverse sixth root of integer x in double precision. More...
|
|
template<typename T > |
T | square (T x) |
| calculate x^2 More...
|
|
template<typename T > |
T | power3 (T x) |
| calculate x^3 More...
|
|
template<typename T > |
T | power4 (T x) |
| calculate x^4 More...
|
|
template<typename T > |
T | power5 (T x) |
| calculate x^5 More...
|
|
template<typename T > |
T | power6 (T x) |
| calculate x^6 More...
|
|
template<typename T > |
T | power12 (T x) |
| calculate x^12 More...
|
|
static real | series_sinhx (real x) |
| Maclaurin series for sinh(x)/x. More...
|
|
void | invertBoxMatrix (const matrix src, matrix dest) |
| Invert a simulation-box matrix in src , return in dest . More...
|
|
void | invertMatrix (const matrix src, matrix dest) |
| Invert a general 3x3 matrix in src , return in dest . More...
|
|
template<typename ValueType > |
static BasicVector< ValueType >
::RawArray * | as_vec_array (BasicVector< ValueType > *x) |
| Casts a gmx::BasicVector array into an equivalent raw C array.
|
|
template<typename ValueType > |
static const BasicVector
< ValueType >::RawArray * | as_vec_array (const BasicVector< ValueType > *x) |
| Casts a gmx::BasicVector array into an equivalent raw C array.
|
|
static rvec * | as_rvec_array (RVec *x) |
| Casts a gmx::RVec array into an rvec array.
|
|
static const rvec * | as_rvec_array (const RVec *x) |
| Casts a gmx::RVec array into an rvec array.
|
|
double | do_cg (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
| Do conjugate gradients minimization. More...
|
|
double | do_lbfgs (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
| Do L-BFGS conjugate gradients minimization. More...
|
|
double | do_steep (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
| Do steepest descents minimization. More...
|
|
double | do_nm (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
| Do normal modes analysis. More...
|
|
double | do_tpi (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
| Do test particle insertion. More...
|
|
gmx_uint64_t | makeRandomSeed () |
| Return 64 random bits from the random device, suitable as seed. More...
|
|
template<class RealType = real, unsigned int Bits, class Rng > |
RealType | generateCanonical (Rng &g) |
| Generate a floating-point value with specified number of random bits. More...
|
|
HelpTopicPointer | createSelectionHelpTopic () |
| */ More...
|
|
static void | simdPrefetch (void *m) |
| Prefetch memory at address m. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadTranspose (const double *base, const std::int32_t offset[], SimdDouble *v0, SimdDouble *v1, SimdDouble *v2, SimdDouble *v3) |
| Load 4 consecutive double from each of GMX_SIMD_DOUBLE_WIDTH offsets, and transpose into 4 SIMD double variables. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadTranspose (const double *base, const std::int32_t offset[], SimdDouble *v0, SimdDouble *v1) |
| Load 2 consecutive double from each of GMX_SIMD_DOUBLE_WIDTH offsets, and transpose into 2 SIMD double variables. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadUTranspose (const double *base, const std::int32_t offset[], SimdDouble *v0, SimdDouble *v1, SimdDouble *v2) |
| Load 3 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH offsets, and transpose into 3 SIMD double variables. More...
|
|
template<int align> |
static void gmx_simdcall | transposeScatterStoreU (double *base, const std::int32_t offset[], SimdDouble v0, SimdDouble v1, SimdDouble v2) |
| Transpose and store 3 SIMD doubles to 3 consecutive addresses at GMX_SIMD_DOUBLE_WIDTH offsets. More...
|
|
template<int align> |
static void gmx_simdcall | transposeScatterIncrU (double *base, const std::int32_t offset[], SimdDouble v0, SimdDouble v1, SimdDouble v2) |
| Transpose and add 3 SIMD doubles to 3 consecutive addresses at GMX_SIMD_DOUBLE_WIDTH offsets. More...
|
|
template<int align> |
static void gmx_simdcall | transposeScatterDecrU (double *base, const std::int32_t offset[], SimdDouble v0, SimdDouble v1, SimdDouble v2) |
| Transpose and subtract 3 SIMD doubles to 3 consecutive addresses at GMX_SIMD_DOUBLE_WIDTH offsets. More...
|
|
static void gmx_simdcall | expandScalarsToTriplets (SimdDouble scalar, SimdDouble *triplets0, SimdDouble *triplets1, SimdDouble *triplets2) |
| Expand each element of double SIMD variable into three identical consecutive elements in three SIMD outputs. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadBySimdIntTranspose (const double *base, SimdDInt32 offset, SimdDouble *v0, SimdDouble *v1, SimdDouble *v2, SimdDouble *v3) |
| Load 4 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH offsets specified by a SIMD integer, transpose into 4 SIMD double variables. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadUBySimdIntTranspose (const double *base, SimdDInt32 offset, SimdDouble *v0, SimdDouble *v1) |
| Load 2 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH offsets (unaligned) specified by SIMD integer, transpose into 2 SIMD doubles. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadBySimdIntTranspose (const double *base, SimdDInt32 offset, SimdDouble *v0, SimdDouble *v1) |
| Load 2 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH offsets specified by a SIMD integer, transpose into 2 SIMD double variables. More...
|
|
static double gmx_simdcall | reduceIncr4ReturnSum (double *m, SimdDouble v0, SimdDouble v1, SimdDouble v2, SimdDouble v3) |
| Reduce each of four SIMD doubles, add those values to four consecutive doubles in memory, return sum. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadTranspose (const float *base, const std::int32_t offset[], SimdFloat *v0, SimdFloat *v1, SimdFloat *v2, SimdFloat *v3) |
| Load 4 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets, and transpose into 4 SIMD float variables. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadTranspose (const float *base, const std::int32_t offset[], SimdFloat *v0, SimdFloat *v1) |
| Load 2 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets, and transpose into 2 SIMD float variables. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadUTranspose (const float *base, const std::int32_t offset[], SimdFloat *v0, SimdFloat *v1, SimdFloat *v2) |
| Load 3 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets, and transpose into 3 SIMD float variables. More...
|
|
template<int align> |
static void gmx_simdcall | transposeScatterStoreU (float *base, const std::int32_t offset[], SimdFloat v0, SimdFloat v1, SimdFloat v2) |
| Transpose and store 3 SIMD floats to 3 consecutive addresses at GMX_SIMD_FLOAT_WIDTH offsets. More...
|
|
template<int align> |
static void gmx_simdcall | transposeScatterIncrU (float *base, const std::int32_t offset[], SimdFloat v0, SimdFloat v1, SimdFloat v2) |
| Transpose and add 3 SIMD floats to 3 consecutive addresses at GMX_SIMD_FLOAT_WIDTH offsets. More...
|
|
template<int align> |
static void gmx_simdcall | transposeScatterDecrU (float *base, const std::int32_t offset[], SimdFloat v0, SimdFloat v1, SimdFloat v2) |
| Transpose and subtract 3 SIMD floats to 3 consecutive addresses at GMX_SIMD_FLOAT_WIDTH offsets. More...
|
|
static void gmx_simdcall | expandScalarsToTriplets (SimdFloat scalar, SimdFloat *triplets0, SimdFloat *triplets1, SimdFloat *triplets2) |
| Expand each element of float SIMD variable into three identical consecutive elements in three SIMD outputs. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadBySimdIntTranspose (const float *base, SimdFInt32 offset, SimdFloat *v0, SimdFloat *v1, SimdFloat *v2, SimdFloat *v3) |
| Load 4 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets specified by a SIMD integer, transpose into 4 SIMD float variables. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadUBySimdIntTranspose (const float *base, SimdFInt32 offset, SimdFloat *v0, SimdFloat *v1) |
| Load 2 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets (unaligned) specified by SIMD integer, transpose into 2 SIMD floats. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadBySimdIntTranspose (const float *base, SimdFInt32 offset, SimdFloat *v0, SimdFloat *v1) |
| Load 2 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets specified by a SIMD integer, transpose into 2 SIMD float variables. More...
|
|
static float gmx_simdcall | reduceIncr4ReturnSum (float *m, SimdFloat v0, SimdFloat v1, SimdFloat v2, SimdFloat v3) |
| Reduce each of four SIMD floats, add those values to four consecutive floats in memory, return sum. More...
|
|
static void | store (float *m, float a) |
| Store contents of float variable to aligned memory m. More...
|
|
static void | storeU (float *m, float a) |
| Store contents of float variable to unaligned memory m. More...
|
|
static float | fma (float a, float b, float c) |
| Float Fused-multiply-add. Result is a*b + c. More...
|
|
static float | fms (float a, float b, float c) |
| Float Fused-multiply-subtract. Result is a*b - c. More...
|
|
static float | fnma (float a, float b, float c) |
| Float Fused-negated-multiply-add. Result is -a*b + c. More...
|
|
static float | fnms (float a, float b, float c) |
| Float Fused-negated-multiply-subtract. Result is -a*b - c. More...
|
|
static float | maskAdd (float a, float b, float m) |
| Add two float variables, masked version. More...
|
|
static float | maskzMul (float a, float b, float m) |
| Multiply two float variables, masked version. More...
|
|
static float | maskzFma (float a, float b, float c, float m) |
| Float fused multiply-add, masked version. More...
|
|
static float | abs (float a) |
| Float Floating-point abs(). More...
|
|
static float | max (float a, float b) |
| Set each float element to the largest from two variables. More...
|
|
static float | min (float a, float b) |
| Set each float element to the smallest from two variables. More...
|
|
static float | round (float a) |
| Float round to nearest integer value (in floating-point format). More...
|
|
static float | trunc (float a) |
| Truncate float, i.e. round towards zero - common hardware instruction. More...
|
|
static float | reduce (float a) |
| Return sum of all elements in float variable (i.e., the variable itself). More...
|
|
static float | andNot (float a, float b) |
| Bitwise andnot for two scalar float variables. More...
|
|
static bool | testBits (float a) |
| Return true if any bits are set in the float variable. More...
|
|
static bool | anyTrue (bool a) |
| Returns if the boolean is true. More...
|
|
static float | selectByMask (float a, bool mask) |
| Select from single precision variable where boolean is true. More...
|
|
static float | selectByNotMask (float a, bool mask) |
| Select from single precision variable where boolean is false. More...
|
|
static float | blend (float a, float b, float sel) |
| Blend float selection. More...
|
|
static std::int32_t | cvtR2I (float a) |
| Round single precision floating point to integer. More...
|
|
static std::int32_t | cvttR2I (float a) |
| Truncate single precision floating point to integer. More...
|
|
static std::int32_t | cvtI2R (std::int32_t a) |
| Return integer. More...
|
|
static void | store (double *m, double a) |
| Store contents of double variable to aligned memory m. More...
|
|
static void | storeU (double *m, double a) |
| Store contents of double variable to unaligned memory m. More...
|
|
static double | fma (double a, double b, double c) |
| double Fused-multiply-add. Result is a*b + c. More...
|
|
static double | fms (double a, double b, double c) |
| double Fused-multiply-subtract. Result is a*b - c. More...
|
|
static double | fnma (double a, double b, double c) |
| double Fused-negated-multiply-add. Result is - a*b + c. More...
|
|
static double | fnms (double a, double b, double c) |
| double Fused-negated-multiply-subtract. Result is -a*b - c. More...
|
|
static double | maskAdd (double a, double b, double m) |
| Add two double variables, masked version. More...
|
|
static double | maskzMul (double a, double b, double m) |
| Multiply two double variables, masked version. More...
|
|
static double | maskzFma (double a, double b, double c, double m) |
| double fused multiply-add, masked version. More...
|
|
static double | abs (double a) |
| double doubleing-point abs(). More...
|
|
static double | max (double a, double b) |
| Set each double element to the largest from two variables. More...
|
|
static double | min (double a, double b) |
| Set each double element to the smallest from two variables. More...
|
|
static double | round (double a) |
| double round to nearest integer value (in doubleing-point format). More...
|
|
static double | trunc (double a) |
| Truncate double, i.e. round towards zero - common hardware instruction. More...
|
|
static double | reduce (double a) |
| Return sum of all elements in double variable (i.e., the variable itself). More...
|
|
static double | andNot (double a, double b) |
| Bitwise andnot for two scalar double variables. More...
|
|
static bool | testBits (double a) |
| Return true if any bits are set in the double variable. More...
|
|
static double | selectByMask (double a, bool mask) |
| Select from double precision variable where boolean is true. More...
|
|
static double | selectByNotMask (double a, bool mask) |
| Select from double precision variable where boolean is false. More...
|
|
static double | blend (double a, double b, double sel) |
| Blend double selection. More...
|
|
static std::int32_t | cvtR2I (double a) |
| Round single precision doubleing point to integer. More...
|
|
static std::int32_t | cvttR2I (double a) |
| Truncate single precision doubleing point to integer. More...
|
|
static double | cvtF2D (float a) |
| Convert float to double (mimicks SIMD conversion) More...
|
|
static float | cvtD2F (double a) |
| Convert double to float (mimicks SIMD conversion) More...
|
|
static void | store (std::int32_t *m, std::int32_t a) |
| Store contents of integer variable to aligned memory m. More...
|
|
static void | storeU (std::int32_t *m, std::int32_t a) |
| Store contents of integer variable to unaligned memory m. More...
|
|
static std::int32_t | andNot (std::int32_t a, std::int32_t b) |
| Bitwise andnot for two scalar integer variables. More...
|
|
static bool | testBits (std::int32_t a) |
| Return true if any bits are set in the integer variable. More...
|
|
static std::int32_t | selectByMask (std::int32_t a, bool mask) |
| Select from integer variable where boolean is true. More...
|
|
static std::int32_t | selectByNotMask (std::int32_t a, bool mask) |
| Select from integer variable where boolean is false. More...
|
|
static std::int32_t | blend (std::int32_t a, std::int32_t b, float sel) |
| Blend integer selection. More...
|
|
static bool | cvtB2IB (bool a) |
| Just return a boolean (mimicks SIMD real-to-int bool conversions) More...
|
|
static bool | cvtIB2B (bool a) |
| Just return a boolean (mimicks SIMD int-to-real bool conversions) More...
|
|
static float | copysign (float x, float y) |
| Composes single value with the magnitude of x and the sign of y. More...
|
|
static void | invsqrtPair (float x0, float x1, float *out0, float *out1) |
| Calculate 1/sqrt(x) for two floats. More...
|
|
static float | inv (float x) |
| Calculate 1/x for float. More...
|
|
static float | maskzInvsqrt (float x, bool m) |
| Calculate 1/sqrt(x) for masked entry of float. More...
|
|
static float | maskzInv (float x, bool m) |
| Calculate 1/x for masked entry of float. More...
|
|
static float | log (float x) |
| Float log(x). This is the natural logarithm. More...
|
|
static float | exp2 (float x) |
| Float 2^x. More...
|
|
static float | exp (float x) |
| Float exp(x). More...
|
|
static float | erf (float x) |
| Float erf(x). More...
|
|
static float | erfc (float x) |
| Float erfc(x). More...
|
|
static void | sincos (float x, float *sinval, float *cosval) |
| Float sin & cos. More...
|
|
static float | sin (float x) |
| Float sin. More...
|
|
static float | cos (float x) |
| Float cos. More...
|
|
static float | tan (float x) |
| Float tan. More...
|
|
static float | asin (float x) |
| float asin. More...
|
|
static float | acos (float x) |
| Float acos. More...
|
|
static float | atan (float x) |
| Float atan. More...
|
|
static float | atan2 (float y, float x) |
| Float atan2(y,x). More...
|
|
static float | pmeForceCorrection (float z2) |
| Calculate the force correction due to PME analytically in float. More...
|
|
static float | pmePotentialCorrection (float z2) |
| Calculate the potential correction due to PME analytically in float. More...
|
|
static double | copysign (double x, double y) |
| Composes double value with the magnitude of x and the sign of y. More...
|
|
static void | invsqrtPair (double x0, double x1, double *out0, double *out1) |
| Calculate 1/sqrt(x) for two doubles. More...
|
|
static double | inv (double x) |
| Calculate 1/x for double. More...
|
|
static double | maskzInvsqrt (double x, bool m) |
| Calculate 1/sqrt(x) for masked entry of double. More...
|
|
static double | maskzInv (double x, bool m) |
| Calculate 1/x for masked entry of double. More...
|
|
static double | log (double x) |
| Double log(x). This is the natural logarithm. More...
|
|
static double | exp2 (double x) |
| Double 2^x. More...
|
|
static double | exp (double x) |
| Double exp(x). More...
|
|
static double | erf (double x) |
| Double erf(x). More...
|
|
static double | erfc (double x) |
| Double erfc(x). More...
|
|
static void | sincos (double x, double *sinval, double *cosval) |
| Double sin & cos. More...
|
|
static double | sin (double x) |
| Double sin. More...
|
|
static double | cos (double x) |
| Double cos. More...
|
|
static double | tan (double x) |
| Double tan. More...
|
|
static double | asin (double x) |
| Double asin. More...
|
|
static double | acos (double x) |
| Double acos. More...
|
|
static double | atan (double x) |
| Double atan. More...
|
|
static double | atan2 (double y, double x) |
| Double atan2(y,x). More...
|
|
static double | pmeForceCorrection (double z2) |
| Calculate the force correction due to PME analytically in double. More...
|
|
static double | pmePotentialCorrection (double z2) |
| Calculate the potential correction due to PME analytically in double. More...
|
|
static double | invsqrtSingleAccuracy (double x) |
| Calculate 1/sqrt(x) for double, but with single accuracy. More...
|
|
static void | invsqrtPairSingleAccuracy (double x0, double x1, double *out0, double *out1) |
| Calculate 1/sqrt(x) for two doubles, but with single accuracy. More...
|
|
static double | invSingleAccuracy (double x) |
| Calculate 1/x for double, but with single accuracy. More...
|
|
static double | maskzInvsqrtSingleAccuracy (double x, bool m) |
| Calculate 1/sqrt(x) for masked entry of double, but with single accuracy. More...
|
|
static double | maskzInvSingleAccuracy (double x, bool m) |
| Calculate 1/x for masked entry of double, but with single accuracy. More...
|
|
static double | sqrtSingleAccuracy (double x) |
| Calculate sqrt(x) for double, but with single accuracy. More...
|
|
static double | logSingleAccuracy (double x) |
| Double log(x), but with single accuracy. This is the natural logarithm. More...
|
|
static double | exp2SingleAccuracy (double x) |
| Double 2^x, but with single accuracy. More...
|
|
static double | expSingleAccuracy (double x) |
| Double exp(x), but with single accuracy. More...
|
|
static double | erfSingleAccuracy (double x) |
| Double erf(x), but with single accuracy. More...
|
|
static double | erfcSingleAccuracy (double x) |
| Double erfc(x), but with single accuracy. More...
|
|
static void | sincosSingleAccuracy (double x, double *sinval, double *cosval) |
| Double sin & cos, but with single accuracy. More...
|
|
static double | sinSingleAccuracy (double x) |
| Double sin, but with single accuracy. More...
|
|
static double | cosSingleAccuracy (double x) |
| Double cos, but with single accuracy. More...
|
|
static double | tanSingleAccuracy (double x) |
| Double tan, but with single accuracy. More...
|
|
static double | asinSingleAccuracy (double x) |
| Double asin, but with single accuracy. More...
|
|
static double | acosSingleAccuracy (double x) |
| Double acos, but with single accuracy. More...
|
|
static double | atanSingleAccuracy (double x) |
| Double atan, but with single accuracy. More...
|
|
static double | atan2SingleAccuracy (double y, double x) |
| Double atan2(y,x), but with single accuracy. More...
|
|
static double | pmeForceCorrectionSingleAccuracy (double z2) |
| Force correction due to PME in double, but with single accuracy. More...
|
|
static double | pmePotentialCorrectionSingleAccuracy (double z2) |
| Potential correction due to PME in double, but with single accuracy. More...
|
|
template<int align> |
static void | gatherLoadTranspose (const float *base, const std::int32_t offset[], float *v0, float *v1, float *v2, float *v3) |
| Load 4 consecutive floats from base/offset into four variables. More...
|
|
template<int align> |
static void | gatherLoadTranspose (const float *base, const std::int32_t offset[], float *v0, float *v1) |
| Load 2 consecutive floats from base/offset into four variables. More...
|
|
template<int align> |
static void | gatherLoadUTranspose (const float *base, const std::int32_t offset[], float *v0, float *v1, float *v2) |
| Load 3 consecutive floats from base/offsets, store into three vars. More...
|
|
template<int align> |
static void | transposeScatterStoreU (float *base, const std::int32_t offset[], float v0, float v1, float v2) |
| Store 3 floats to 3 to base/offset. More...
|
|
template<int align> |
static void | transposeScatterIncrU (float *base, const std::int32_t offset[], float v0, float v1, float v2) |
| Add 3 floats to base/offset. More...
|
|
template<int align> |
static void | transposeScatterDecrU (float *base, const std::int32_t offset[], float v0, float v1, float v2) |
| Subtract 3 floats from base/offset. More...
|
|
static void | expandScalarsToTriplets (float scalar, float *triplets0, float *triplets1, float *triplets2) |
| Copy single float to three variables. More...
|
|
template<int align> |
static void | gatherLoadBySimdIntTranspose (const float *base, std::int32_t offset, float *v0, float *v1, float *v2, float *v3) |
| Load 4 floats from base/offsets and store into variables. More...
|
|
template<int align> |
static void | gatherLoadUBySimdIntTranspose (const float *base, std::int32_t offset, float *v0, float *v1) |
| Load 2 floats from base/offsets and store into variables (unaligned). More...
|
|
template<int align> |
static void | gatherLoadBySimdIntTranspose (const float *base, std::int32_t offset, float *v0, float *v1) |
| Load 2 floats from base/offsets and store into variables (aligned). More...
|
|
static float | reduceIncr4ReturnSum (float *m, float v0, float v1, float v2, float v3) |
| Add each float to four consecutive memory locations, return sum. More...
|
|
template<int align> |
static void | gatherLoadTranspose (const double *base, const std::int32_t offset[], double *v0, double *v1, double *v2, double *v3) |
| Load 4 consecutive doubles from base/offset into four variables. More...
|
|
template<int align> |
static void | gatherLoadTranspose (const double *base, const std::int32_t offset[], double *v0, double *v1) |
| Load 2 consecutive doubles from base/offset into four variables. More...
|
|
template<int align> |
static void | gatherLoadUTranspose (const double *base, const std::int32_t offset[], double *v0, double *v1, double *v2) |
| Load 3 consecutive doubles from base/offsets, store into three vars. More...
|
|
template<int align> |
static void | transposeScatterStoreU (double *base, const std::int32_t offset[], double v0, double v1, double v2) |
| Store 3 doubles to 3 to base/offset. More...
|
|
template<int align> |
static void | transposeScatterIncrU (double *base, const std::int32_t offset[], double v0, double v1, double v2) |
| Add 3 doubles to base/offset. More...
|
|
template<int align> |
static void | transposeScatterDecrU (double *base, const std::int32_t offset[], double v0, double v1, double v2) |
| Subtract 3 doubles from base/offset. More...
|
|
static void | expandScalarsToTriplets (double scalar, double *triplets0, double *triplets1, double *triplets2) |
| Copy single double to three variables. More...
|
|
template<int align> |
static void | gatherLoadBySimdIntTranspose (const double *base, std::int32_t offset, double *v0, double *v1, double *v2, double *v3) |
| Load 4 doubles from base/offsets and store into variables. More...
|
|
template<int align> |
static void | gatherLoadUBySimdIntTranspose (const double *base, std::int32_t offset, double *v0, double *v1) |
| Load 2 doubles from base/offsets and store into variables (unaligned). More...
|
|
template<int align> |
static void | gatherLoadBySimdIntTranspose (const double *base, std::int32_t offset, double *v0, double *v1) |
| Load 2 doubles from base/offsets and store into variables (aligned). More...
|
|
static float | reduceIncr4ReturnSum (double *m, double v0, double v1, double v2, double v3) |
| Add each double to four consecutive memory locations, return sum. More...
|
|
static SimdFloat gmx_simdcall | invsqrtSingleAccuracy (SimdFloat x) |
| Calculate 1/sqrt(x) for SIMD float, only targeting single accuracy. More...
|
|
static SimdFloat | maskzInvsqrtSingleAccuracy (SimdFloat x, SimdFBool m) |
| Calculate 1/sqrt(x) for masked SIMD floats, only targeting single accuracy. More...
|
|
static void gmx_simdcall | invsqrtPairSingleAccuracy (SimdFloat x0, SimdFloat x1, SimdFloat *out0, SimdFloat *out1) |
| Calculate 1/sqrt(x) for two SIMD floats, only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | invSingleAccuracy (SimdFloat x) |
| Calculate 1/x for SIMD float, only targeting single accuracy. More...
|
|
static SimdFloat | maskzInvSingleAccuracy (SimdFloat x, SimdFBool m) |
| Calculate 1/x for masked SIMD floats, only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | sqrtSingleAccuracy (SimdFloat x) |
| Calculate sqrt(x) for SIMD float, only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | logSingleAccuracy (SimdFloat x) |
| SIMD float log(x), only targeting single accuracy. This is the natural logarithm. More...
|
|
static SimdFloat gmx_simdcall | exp2SingleAccuracy (SimdFloat x) |
| SIMD float 2^x, only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | expSingleAccuracy (SimdFloat x) |
| SIMD float e^x, only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | erfSingleAccuracy (SimdFloat x) |
| SIMD float erf(x), only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | erfcSingleAccuracy (SimdFloat x) |
| SIMD float erfc(x), only targeting single accuracy. More...
|
|
static void gmx_simdcall | sinCosSingleAccuracy (SimdFloat x, SimdFloat *sinval, SimdFloat *cosval) |
| SIMD float sin & cos, only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | sinSingleAccuracy (SimdFloat x) |
| SIMD float sin(x), only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | cosSingleAccuracy (SimdFloat x) |
| SIMD float cos(x), only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | tanSingleAccuracy (SimdFloat x) |
| SIMD float tan(x), only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | asinSingleAccuracy (SimdFloat x) |
| SIMD float asin(x), only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | acosSingleAccuracy (SimdFloat x) |
| SIMD float acos(x), only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | atanSingleAccuracy (SimdFloat x) |
| SIMD float atan(x), only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | atan2SingleAccuracy (SimdFloat y, SimdFloat x) |
| SIMD float atan2(y,x), only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | pmeForceCorrectionSingleAccuracy (SimdFloat z2) |
| SIMD Analytic PME force correction, only targeting single accuracy. More...
|
|
static SimdFloat gmx_simdcall | pmePotentialCorrectionSingleAccuracy (SimdFloat z2) |
| SIMD Analytic PME potential correction, only targeting single accuracy. More...
|
|
static Simd4Float gmx_simdcall | invsqrtSingleAccuracy (Simd4Float x) |
| Calculate 1/sqrt(x) for SIMD4 float, only targeting single accuracy. More...
|
|
const std::string & | simdString (SimdType s) |
| Return a string with the name of a SIMD type. More...
|
|
SimdType | simdSuggested (const CpuInfo &c) |
| Return the SIMD type that would fit this hardware best.
|
|
SimdType | simdCompiled () |
| Return the SIMD type the library was compiled with.
|
|
bool | simdCheck (SimdType s, FILE *log, bool warnToStdErr) |
| Check if binary was compiled with the provided SIMD type. More...
|
|
static SimdFloat gmx_simdcall | iprod (SimdFloat ax, SimdFloat ay, SimdFloat az, SimdFloat bx, SimdFloat by, SimdFloat bz) |
| SIMD float inner product of multiple float vectors. More...
|
|
static SimdFloat gmx_simdcall | norm2 (SimdFloat ax, SimdFloat ay, SimdFloat az) |
| SIMD float norm squared of multiple vectors. More...
|
|
static void gmx_simdcall | cprod (SimdFloat ax, SimdFloat ay, SimdFloat az, SimdFloat bx, SimdFloat by, SimdFloat bz, SimdFloat *cx, SimdFloat *cy, SimdFloat *cz) |
| SIMD float cross-product of multiple vectors. More...
|
|
static SimdDouble gmx_simdcall | iprod (SimdDouble ax, SimdDouble ay, SimdDouble az, SimdDouble bx, SimdDouble by, SimdDouble bz) |
| SIMD double inner product of multiple double vectors. More...
|
|
static SimdDouble gmx_simdcall | norm2 (SimdDouble ax, SimdDouble ay, SimdDouble az) |
| SIMD double norm squared of multiple vectors. More...
|
|
static void gmx_simdcall | cprod (SimdDouble ax, SimdDouble ay, SimdDouble az, SimdDouble bx, SimdDouble by, SimdDouble bz, SimdDouble *cx, SimdDouble *cy, SimdDouble *cz) |
| SIMD double cross-product of multiple vectors. More...
|
|
static Simd4Float gmx_simdcall | norm2 (Simd4Float ax, Simd4Float ay, Simd4Float az) |
| SIMD4 float norm squared of multiple vectors. More...
|
|
static Simd4Double gmx_simdcall | norm2 (Simd4Double ax, Simd4Double ay, Simd4Double az) |
| SIMD4 double norm squared of multiple vectors. More...
|
|
void | registerTrajectoryAnalysisModules (CommandLineModuleManager *manager) |
| Registers all trajectory analysis command-line modules. More...
|
|
template<typename T > |
void | swap (ArrayRef< T > &a, ArrayRef< T > &b) |
| Simple swap method for ArrayRef objects. More...
|
|
template<typename T > |
void | swap (ConstArrayRef< T > &a, ConstArrayRef< T > &b) |
| Simple swap method for ConstArrayRef objects. More...
|
|
void | printBinaryInformation (FILE *fp, const IProgramContext &programContext) |
| Print basic information about the executable. More...
|
|
void | printBinaryInformation (FILE *fp, const IProgramContext &programContext, const BinaryInformationSettings &settings) |
| Print basic information about the executable with custom settings. More...
|
|
std::string | bromacs () |
| Return a cool definition for the acronym GROMACS.
|
|
std::string | getCoolQuote () |
| Return a string with a cool quote.
|
|
const char * | getErrorCodeString (int errorcode) |
| Returns a short string description of an error code. More...
|
|
void | printFatalErrorMessage (FILE *fp, const std::exception &ex) |
| Formats a standard fatal error message for reporting an exception. More...
|
|
std::string | formatExceptionMessageToString (const std::exception &ex) |
| Formats an error message for reporting an exception. More...
|
|
void | formatExceptionMessageToFile (FILE *fp, const std::exception &ex) |
| Formats an error message for reporting an exception. More...
|
|
void | formatExceptionMessageToWriter (TextWriter *writer, const std::exception &ex) |
| Formats an error message for reporting an exception. More...
|
|
int | processExceptionAtExit (const std::exception &ex) |
| Handles an exception that is causing the program to terminate. More...
|
|
void | processExceptionAsFatalError (const std::exception &ex) |
| Helper function for terminating the program on an exception. More...
|
|
template<class Exception , class Tag , class T > |
std::enable_if
< std::is_base_of
< GromacsException, Exception >
::value, const Exception & >
::type | operator<< (const Exception &ex, const ExceptionInfo< Tag, T > &item) |
| Associates extra information with an exception. More...
|
|
IFileInputRedirector & | defaultFileInputRedirector () |
| Returns default implementation for IFileInputRedirector. More...
|
|
IFileOutputRedirector & | defaultFileOutputRedirector () |
| Returns default implementation for IFileOutputRedirector. More...
|
|
const DataFileFinder & | getLibraryFileFinder () |
| Gets a finder for locating data files from share/top/. More...
|
|
void | setLibraryFileFinder (const DataFileFinder *finder) |
| Sets a finder for location data files from share/top/. More...
|
|
bool | regexMatch (const char *str, const Regex ®ex) |
| Matches a string with a regular expression. More...
|
|
bool | regexMatch (const std::string &str, const Regex ®ex) |
| Matches a string with a regular expression. More...
|
|
void | init (int *argc, char ***argv) |
| Initializes the GROMACS library. More...
|
|
void | finalize () |
| Deinitializes the GROMACS library. More...
|
|
const IProgramContext & | getProgramContext () |
| Returns the global IProgramContext instance. More...
|
|
void | setProgramContext (const IProgramContext *context) |
| Sets the global IProgramContext instance. More...
|
|
template<class T > |
void | sfree_wrapper (T *p) |
| sfree wrapper to be used as scoped_cptr deleter
|
|
std::size_t | countWords (const char *s) |
| Returns number of space-separated words in zero-terminated char ptr. More...
|
|
std::size_t | countWords (const std::string &str) |
| Returns the number of space-separated words in a string object. More...
|
|
bool | endsWith (const char *str, const char *suffix) |
| Tests whether a string ends with another string. More...
|
|
std::string | stripSuffixIfPresent (const std::string &str, const char *suffix) |
| Removes a suffix from a string. More...
|
|
std::string | stripString (const std::string &str) |
| Removes leading and trailing whitespace from a string. More...
|
|
std::string | formatString (const char *fmt,...) |
| Formats a string (snprintf() wrapper). More...
|
|
std::vector< std::string > | splitString (const std::string &str) |
| Splits a string to whitespace separated tokens. More...
|
|
std::string | replaceAll (const std::string &input, const char *from, const char *to) |
| Replace all occurrences of a string with another string. More...
|
|
std::string | replaceAll (const std::string &input, const std::string &from, const std::string &to) |
| Replace all occurrences of a string with another string. More...
|
|
std::string | replaceAllWords (const std::string &input, const char *from, const char *to) |
| Replace whole words with others. More...
|
|
std::string | replaceAllWords (const std::string &input, const std::string &from, const std::string &to) |
| Replace whole words with others. More...
|
|
static bool | isNullOrEmpty (const char *str) |
| Tests whether a string is null or empty. More...
|
|
static bool | startsWith (const std::string &str, const std::string &prefix) |
| Tests whether a string starts with another string. More...
|
|
static bool | startsWith (const char *str, const char *prefix) |
| Tests whether a string starts with another string. More...
|
|
static bool | endsWith (const std::string &str, const char *suffix) |
| Tests whether a string ends with another string. More...
|
|
static bool | contains (const std::string &str, const char *substr) |
| Tests whether a string contains another as a substring. More...
|
|
static bool | contains (const std::string &str, const std::string &substr) |
| Tests whether a string contains another as a substring. More...
|
|
static bool | endsWith (const std::string &str, const std::string &suffix) |
| Tests whether a string ends with another string. More...
|
|
template<typename InputIterator , typename FormatterType > |
std::string | formatAndJoin (InputIterator begin, InputIterator end, const char *separator, const FormatterType &formatter) |
| Formats all the range as strings, and then joins them with a separator in between. More...
|
|
template<typename ContainerType , typename FormatterType > |
std::string | formatAndJoin (const ContainerType &container, const char *separator, const FormatterType &formatter) |
| Formats all elements of the container as strings, and then joins them with a separator in between. More...
|
|
template<typename InputIterator > |
std::string | joinStrings (InputIterator begin, InputIterator end, const char *separator) |
| Joins strings from a range with a separator in between. More...
|
|
template<typename ContainerType > |
std::string | joinStrings (const ContainerType &container, const char *separator) |
| Joins strings from a container with a separator in between. More...
|
|
template<size_t count> |
std::string | joinStrings (const char *const (&array)[count], const char *separator) |
| Joins strings from an array with a separator in between. More...
|
|
static const char * | boolToString (bool value) |
| Converts a boolean to a "true"/"false" string. More...
|
|
static integrator_t * | my_integrator (unsigned int ei) |
| Return the correct integrator function.
|
|
int | mdrunner (gmx_hw_opt_t *hw_opt, FILE *fplog, struct t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, ivec ddxyz, int dd_rank_order, int npme, real rdd, real rconstr, const char *dddlb_opt, real dlb_scale, const char *ddcsx, const char *ddcsy, const char *ddcsz, const char *nbpu_opt, int nstlist_cmdline, gmx_int64_t nsteps_cmdline, int nstepout, int resetstep, int nmultisim, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, real pforce, real cpt_period, real max_hours, int imdport, unsigned long Flags) |
| Driver routine, that calls the different methods. More...
|
|
|
static Simd4Double gmx_simdcall | load4 (const double *m) |
| Load 4 double values from aligned memory into SIMD4 variable. More...
|
|
static void gmx_simdcall | store4 (double *m, Simd4Double a) |
| Store the contents of SIMD4 double to aligned memory m. More...
|
|
static Simd4Double gmx_simdcall | load4U (const double *m) |
| Load SIMD4 double from unaligned memory. More...
|
|
static void gmx_simdcall | store4U (double *m, Simd4Double a) |
| Store SIMD4 double to unaligned memory. More...
|
|
static Simd4Double gmx_simdcall | simd4SetZeroD () |
| Set all SIMD4 double elements to 0. More...
|
|
static Simd4Double gmx_simdcall | operator& (Simd4Double a, Simd4Double b) |
| Bitwise and for two SIMD4 double variables. More...
|
|
static Simd4Double gmx_simdcall | andNot (Simd4Double a, Simd4Double b) |
| Bitwise andnot for two SIMD4 double variables. c=(~a) & b. More...
|
|
static Simd4Double gmx_simdcall | operator| (Simd4Double a, Simd4Double b) |
| Bitwise or for two SIMD4 doubles. More...
|
|
static Simd4Double gmx_simdcall | operator^ (Simd4Double a, Simd4Double b) |
| Bitwise xor for two SIMD4 double variables. More...
|
|
static Simd4Double gmx_simdcall | operator+ (Simd4Double a, Simd4Double b) |
| Add two double SIMD4 variables. More...
|
|
static Simd4Double gmx_simdcall | operator- (Simd4Double a, Simd4Double b) |
| Subtract two SIMD4 variables. More...
|
|
static Simd4Double gmx_simdcall | operator- (Simd4Double a) |
| SIMD4 floating-point negate. More...
|
|
static Simd4Double gmx_simdcall | operator* (Simd4Double a, Simd4Double b) |
| Multiply two SIMD4 variables. More...
|
|
static Simd4Double gmx_simdcall | fma (Simd4Double a, Simd4Double b, Simd4Double c) |
| SIMD4 Fused-multiply-add. Result is a*b+c. More...
|
|
static Simd4Double gmx_simdcall | fms (Simd4Double a, Simd4Double b, Simd4Double c) |
| SIMD4 Fused-multiply-subtract. Result is a*b-c. More...
|
|
static Simd4Double gmx_simdcall | fnma (Simd4Double a, Simd4Double b, Simd4Double c) |
| SIMD4 Fused-negated-multiply-add. Result is -a*b+c. More...
|
|
static Simd4Double gmx_simdcall | fnms (Simd4Double a, Simd4Double b, Simd4Double c) |
| SIMD4 Fused-negated-multiply-subtract. Result is -a*b-c. More...
|
|
static Simd4Double gmx_simdcall | rsqrt (Simd4Double x) |
| SIMD4 1.0/sqrt(x) lookup. More...
|
|
static Simd4Double gmx_simdcall | abs (Simd4Double a) |
| SIMD4 Floating-point abs(). More...
|
|
static Simd4Double gmx_simdcall | max (Simd4Double a, Simd4Double b) |
| Set each SIMD4 element to the largest from two variables. More...
|
|
static Simd4Double gmx_simdcall | min (Simd4Double a, Simd4Double b) |
| Set each SIMD4 element to the largest from two variables. More...
|
|
static Simd4Double gmx_simdcall | round (Simd4Double a) |
| SIMD4 Round to nearest integer value (in floating-point format). More...
|
|
static Simd4Double gmx_simdcall | trunc (Simd4Double a) |
| Truncate SIMD4, i.e. round towards zero - common hardware instruction. More...
|
|
static double gmx_simdcall | dotProduct (Simd4Double a, Simd4Double b) |
| Return dot product of two double precision SIMD4 variables. More...
|
|
static void gmx_simdcall | transpose (Simd4Double *v0, Simd4Double *v1, Simd4Double *v2, Simd4Double *v3) |
| SIMD4 double transpose. More...
|
|
static Simd4DBool gmx_simdcall | operator== (Simd4Double a, Simd4Double b) |
| a==b for SIMD4 double More...
|
|
static Simd4DBool gmx_simdcall | operator!= (Simd4Double a, Simd4Double b) |
| a!=b for SIMD4 double More...
|
|
static Simd4DBool gmx_simdcall | operator< (Simd4Double a, Simd4Double b) |
| a<b for SIMD4 double More...
|
|
static Simd4DBool gmx_simdcall | operator<= (Simd4Double a, Simd4Double b) |
| a<=b for SIMD4 double. More...
|
|
static Simd4DBool gmx_simdcall | operator&& (Simd4DBool a, Simd4DBool b) |
| Logical and on single precision SIMD4 booleans. More...
|
|
static Simd4DBool gmx_simdcall | operator|| (Simd4DBool a, Simd4DBool b) |
| Logical or on single precision SIMD4 booleans. More...
|
|
static bool gmx_simdcall | anyTrue (Simd4DBool a) |
| Returns non-zero if any of the boolean in SIMD4 a is True, otherwise 0. More...
|
|
static Simd4Double gmx_simdcall | selectByMask (Simd4Double a, Simd4DBool mask) |
| Select from single precision SIMD4 variable where boolean is true. More...
|
|
static Simd4Double gmx_simdcall | selectByNotMask (Simd4Double a, Simd4DBool mask) |
| Select from single precision SIMD4 variable where boolean is false. More...
|
|
static Simd4Double gmx_simdcall | blend (Simd4Double a, Simd4Double b, Simd4DBool sel) |
| Vector-blend SIMD4 selection. More...
|
|
static double gmx_simdcall | reduce (Simd4Double a) |
| Return sum of all elements in SIMD4 double variable. More...
|
|
|
static Simd4Float gmx_simdcall | load4 (const float *m) |
| Load 4 float values from aligned memory into SIMD4 variable. More...
|
|
static void gmx_simdcall | store4 (float *m, Simd4Float a) |
| Store the contents of SIMD4 float to aligned memory m. More...
|
|
static Simd4Float gmx_simdcall | load4U (const float *m) |
| Load SIMD4 float from unaligned memory. More...
|
|
static void gmx_simdcall | store4U (float *m, Simd4Float a) |
| Store SIMD4 float to unaligned memory. More...
|
|
static Simd4Float gmx_simdcall | simd4SetZeroF () |
| Set all SIMD4 float elements to 0. More...
|
|
static Simd4Float gmx_simdcall | operator& (Simd4Float a, Simd4Float b) |
| Bitwise and for two SIMD4 float variables. More...
|
|
static Simd4Float gmx_simdcall | andNot (Simd4Float a, Simd4Float b) |
| Bitwise andnot for two SIMD4 float variables. c=(~a) & b. More...
|
|
static Simd4Float gmx_simdcall | operator| (Simd4Float a, Simd4Float b) |
| Bitwise or for two SIMD4 floats. More...
|
|
static Simd4Float gmx_simdcall | operator^ (Simd4Float a, Simd4Float b) |
| Bitwise xor for two SIMD4 float variables. More...
|
|
static Simd4Float gmx_simdcall | operator+ (Simd4Float a, Simd4Float b) |
| Add two float SIMD4 variables. More...
|
|
static Simd4Float gmx_simdcall | operator- (Simd4Float a, Simd4Float b) |
| Subtract two SIMD4 variables. More...
|
|
static Simd4Float gmx_simdcall | operator- (Simd4Float a) |
| SIMD4 floating-point negate. More...
|
|
static Simd4Float gmx_simdcall | operator* (Simd4Float a, Simd4Float b) |
| Multiply two SIMD4 variables. More...
|
|
static Simd4Float gmx_simdcall | fma (Simd4Float a, Simd4Float b, Simd4Float c) |
| SIMD4 Fused-multiply-add. Result is a*b+c. More...
|
|
static Simd4Float gmx_simdcall | fms (Simd4Float a, Simd4Float b, Simd4Float c) |
| SIMD4 Fused-multiply-subtract. Result is a*b-c. More...
|
|
static Simd4Float gmx_simdcall | fnma (Simd4Float a, Simd4Float b, Simd4Float c) |
| SIMD4 Fused-negated-multiply-add. Result is -a*b+c. More...
|
|
static Simd4Float gmx_simdcall | fnms (Simd4Float a, Simd4Float b, Simd4Float c) |
| SIMD4 Fused-negated-multiply-subtract. Result is -a*b-c. More...
|
|
static Simd4Float gmx_simdcall | rsqrt (Simd4Float x) |
| SIMD4 1.0/sqrt(x) lookup. More...
|
|
static Simd4Float gmx_simdcall | abs (Simd4Float a) |
| SIMD4 Floating-point fabs(). More...
|
|
static Simd4Float gmx_simdcall | max (Simd4Float a, Simd4Float b) |
| Set each SIMD4 element to the largest from two variables. More...
|
|
static Simd4Float gmx_simdcall | min (Simd4Float a, Simd4Float b) |
| Set each SIMD4 element to the largest from two variables. More...
|
|
static Simd4Float gmx_simdcall | round (Simd4Float a) |
| SIMD4 Round to nearest integer value (in floating-point format). More...
|
|
static Simd4Float gmx_simdcall | trunc (Simd4Float a) |
| Truncate SIMD4, i.e. round towards zero - common hardware instruction. More...
|
|
static float gmx_simdcall | dotProduct (Simd4Float a, Simd4Float b) |
| Return dot product of two single precision SIMD4 variables. More...
|
|
static void gmx_simdcall | transpose (Simd4Float *v0, Simd4Float *v1, Simd4Float *v2, Simd4Float *v3) |
| SIMD4 float transpose. More...
|
|
static Simd4FBool gmx_simdcall | operator== (Simd4Float a, Simd4Float b) |
| a==b for SIMD4 float More...
|
|
static Simd4FBool gmx_simdcall | operator!= (Simd4Float a, Simd4Float b) |
| a!=b for SIMD4 float More...
|
|
static Simd4FBool gmx_simdcall | operator< (Simd4Float a, Simd4Float b) |
| a<b for SIMD4 float More...
|
|
static Simd4FBool gmx_simdcall | operator<= (Simd4Float a, Simd4Float b) |
| a<=b for SIMD4 float. More...
|
|
static Simd4FBool gmx_simdcall | operator&& (Simd4FBool a, Simd4FBool b) |
| Logical and on single precision SIMD4 booleans. More...
|
|
static Simd4FBool gmx_simdcall | operator|| (Simd4FBool a, Simd4FBool b) |
| Logical or on single precision SIMD4 booleans. More...
|
|
static bool gmx_simdcall | anyTrue (Simd4FBool a) |
| Returns non-zero if any of the boolean in SIMD4 a is True, otherwise 0. More...
|
|
static Simd4Float gmx_simdcall | selectByMask (Simd4Float a, Simd4FBool mask) |
| Select from single precision SIMD4 variable where boolean is true. More...
|
|
static Simd4Float gmx_simdcall | selectByNotMask (Simd4Float a, Simd4FBool mask) |
| Select from single precision SIMD4 variable where boolean is false. More...
|
|
static Simd4Float gmx_simdcall | blend (Simd4Float a, Simd4Float b, Simd4FBool sel) |
| Vector-blend SIMD4 selection. More...
|
|
static float gmx_simdcall | reduce (Simd4Float a) |
| Return sum of all elements in SIMD4 float variable. More...
|
|
|
static SimdDouble gmx_simdcall | simdLoad (const double *m) |
| Load GMX_SIMD_DOUBLE_WIDTH numbers from aligned memory. More...
|
|
static void gmx_simdcall | store (double *m, SimdDouble a) |
| Store the contents of SIMD double variable to aligned memory m. More...
|
|
static SimdDouble gmx_simdcall | simdLoadU (const double *m) |
| Load SIMD double from unaligned memory. More...
|
|
static void gmx_simdcall | storeU (double *m, SimdDouble a) |
| Store SIMD double to unaligned memory. More...
|
|
static SimdDouble gmx_simdcall | setZeroD () |
| Set all SIMD double variable elements to 0.0. More...
|
|
|
static SimdDInt32 gmx_simdcall | simdLoadDI (const std::int32_t *m) |
| Load aligned SIMD integer data, width corresponds to gmx::SimdDouble. More...
|
|
static void gmx_simdcall | store (std::int32_t *m, SimdDInt32 a) |
| Store aligned SIMD integer data, width corresponds to gmx::SimdDouble. More...
|
|
static SimdDInt32 gmx_simdcall | simdLoadUDI (const std::int32_t *m) |
| Load unaligned integer SIMD data, width corresponds to gmx::SimdDouble. More...
|
|
static void gmx_simdcall | storeU (std::int32_t *m, SimdDInt32 a) |
| Store unaligned SIMD integer data, width corresponds to gmx::SimdDouble. More...
|
|
static SimdDInt32 gmx_simdcall | setZeroDI () |
| Set all SIMD (double) integer variable elements to 0. More...
|
|
template<int index> |
static std::int32_t gmx_simdcall | extract (SimdDInt32 a) |
| Extract element with index i from gmx::SimdDInt32. More...
|
|
|
static SimdDouble gmx_simdcall | operator& (SimdDouble a, SimdDouble b) |
| Bitwise and for two SIMD double variables. More...
|
|
static SimdDouble gmx_simdcall | andNot (SimdDouble a, SimdDouble b) |
| Bitwise andnot for SIMD double. More...
|
|
static SimdDouble gmx_simdcall | operator| (SimdDouble a, SimdDouble b) |
| Bitwise or for SIMD double. More...
|
|
static SimdDouble gmx_simdcall | operator^ (SimdDouble a, SimdDouble b) |
| Bitwise xor for SIMD double. More...
|
|
|
static SimdDouble gmx_simdcall | operator+ (SimdDouble a, SimdDouble b) |
| Add two double SIMD variables. More...
|
|
static SimdDouble gmx_simdcall | operator- (SimdDouble a, SimdDouble b) |
| Subtract two double SIMD variables. More...
|
|
static SimdDouble gmx_simdcall | operator- (SimdDouble a) |
| SIMD double precision negate. More...
|
|
static SimdDouble gmx_simdcall | operator* (SimdDouble a, SimdDouble b) |
| Multiply two double SIMD variables. More...
|
|
static SimdDouble gmx_simdcall | fma (SimdDouble a, SimdDouble b, SimdDouble c) |
| SIMD double Fused-multiply-add. Result is a*b+c. More...
|
|
static SimdDouble gmx_simdcall | fms (SimdDouble a, SimdDouble b, SimdDouble c) |
| SIMD double Fused-multiply-subtract. Result is a*b-c. More...
|
|
static SimdDouble gmx_simdcall | fnma (SimdDouble a, SimdDouble b, SimdDouble c) |
| SIMD double Fused-negated-multiply-add. Result is -a*b+c. More...
|
|
static SimdDouble gmx_simdcall | fnms (SimdDouble a, SimdDouble b, SimdDouble c) |
| SIMD double Fused-negated-multiply-subtract. Result is -a*b-c. More...
|
|
static SimdDouble gmx_simdcall | rsqrt (SimdDouble x) |
| double SIMD 1.0/sqrt(x) lookup. More...
|
|
static SimdDouble gmx_simdcall | rcp (SimdDouble x) |
| SIMD double 1.0/x lookup. More...
|
|
static SimdDouble gmx_simdcall | maskAdd (SimdDouble a, SimdDouble b, SimdDBool m) |
| Add two double SIMD variables, masked version. More...
|
|
static SimdDouble gmx_simdcall | maskzMul (SimdDouble a, SimdDouble b, SimdDBool m) |
| Multiply two double SIMD variables, masked version. More...
|
|
static SimdDouble gmx_simdcall | maskzFma (SimdDouble a, SimdDouble b, SimdDouble c, SimdDBool m) |
| SIMD double fused multiply-add, masked version. More...
|
|
static SimdDouble gmx_simdcall | maskzRsqrt (SimdDouble x, SimdDBool m) |
| SIMD double 1.0/sqrt(x) lookup, masked version. More...
|
|
static SimdDouble gmx_simdcall | maskzRcp (SimdDouble x, SimdDBool m) |
| SIMD double 1.0/x lookup, masked version. More...
|
|
static SimdDouble gmx_simdcall | abs (SimdDouble a) |
| SIMD double floating-point fabs(). More...
|
|
static SimdDouble gmx_simdcall | max (SimdDouble a, SimdDouble b) |
| Set each SIMD double element to the largest from two variables. More...
|
|
static SimdDouble gmx_simdcall | min (SimdDouble a, SimdDouble b) |
| Set each SIMD double element to the smallest from two variables. More...
|
|
static SimdDouble gmx_simdcall | round (SimdDouble a) |
| SIMD double round to nearest integer value (in floating-point format). More...
|
|
static SimdDouble gmx_simdcall | trunc (SimdDouble a) |
| Truncate SIMD double, i.e. round towards zero - common hardware instruction. More...
|
|
static SimdDouble gmx_simdcall | frexp (SimdDouble value, SimdDInt32 *exponent) |
| Extract (integer) exponent and fraction from double precision SIMD. More...
|
|
static SimdDouble gmx_simdcall | ldexp (SimdDouble value, SimdDInt32 exponent) |
| Multiply a SIMD double value by the number 2 raised to an exp power. More...
|
|
static double gmx_simdcall | reduce (SimdDouble a) |
| Return sum of all elements in SIMD double variable. More...
|
|
|
static SimdDBool gmx_simdcall | operator== (SimdDouble a, SimdDouble b) |
| SIMD a==b for double SIMD. More...
|
|
static SimdDBool gmx_simdcall | operator!= (SimdDouble a, SimdDouble b) |
| SIMD a!=b for double SIMD. More...
|
|
static SimdDBool gmx_simdcall | operator< (SimdDouble a, SimdDouble b) |
| SIMD a<b for double SIMD. More...
|
|
static SimdDBool gmx_simdcall | operator<= (SimdDouble a, SimdDouble b) |
| SIMD a<=b for double SIMD. More...
|
|
static SimdDBool gmx_simdcall | testBits (SimdDouble a) |
| Return true if any bits are set in the single precision SIMD. More...
|
|
static SimdDBool gmx_simdcall | operator&& (SimdDBool a, SimdDBool b) |
| Logical and on double precision SIMD booleans. More...
|
|
static SimdDBool gmx_simdcall | operator|| (SimdDBool a, SimdDBool b) |
| Logical or on double precision SIMD booleans. More...
|
|
static bool gmx_simdcall | anyTrue (SimdDBool a) |
| Returns non-zero if any of the boolean in SIMD a is True, otherwise 0. More...
|
|
static SimdDouble gmx_simdcall | selectByMask (SimdDouble a, SimdDBool mask) |
| Select from double precision SIMD variable where boolean is true. More...
|
|
static SimdDouble gmx_simdcall | selectByNotMask (SimdDouble a, SimdDBool mask) |
| Select from double precision SIMD variable where boolean is false. More...
|
|
static SimdDouble gmx_simdcall | blend (SimdDouble a, SimdDouble b, SimdDBool sel) |
| Vector-blend SIMD double selection. More...
|
|
|
static SimdDInt32 gmx_simdcall | operator<< (SimdDInt32 a, int n) |
| SIMD integer shift left logical, based on immediate value. More...
|
|
static SimdDInt32 gmx_simdcall | operator>> (SimdDInt32 a, int n) |
| SIMD integer shift right logical, based on immediate value. More...
|
|
static SimdDInt32 gmx_simdcall | operator& (SimdDInt32 a, SimdDInt32 b) |
| Integer SIMD bitwise and. More...
|
|
static SimdDInt32 gmx_simdcall | andNot (SimdDInt32 a, SimdDInt32 b) |
| Integer SIMD bitwise not/complement. More...
|
|
static SimdDInt32 gmx_simdcall | operator| (SimdDInt32 a, SimdDInt32 b) |
| Integer SIMD bitwise or. More...
|
|
static SimdDInt32 gmx_simdcall | operator^ (SimdDInt32 a, SimdDInt32 b) |
| Integer SIMD bitwise xor. More...
|
|
|
static SimdDInt32 gmx_simdcall | operator+ (SimdDInt32 a, SimdDInt32 b) |
| Add SIMD integers. More...
|
|
static SimdDInt32 gmx_simdcall | operator- (SimdDInt32 a, SimdDInt32 b) |
| Subtract SIMD integers. More...
|
|
static SimdDInt32 gmx_simdcall | operator* (SimdDInt32 a, SimdDInt32 b) |
| Multiply SIMD integers. More...
|
|
|
static SimdDIBool gmx_simdcall | operator== (SimdDInt32 a, SimdDInt32 b) |
| Equality comparison of two integers corresponding to double values. More...
|
|
static SimdDIBool gmx_simdcall | operator< (SimdDInt32 a, SimdDInt32 b) |
| Less-than comparison of two SIMD integers corresponding to double values. More...
|
|
static SimdDIBool gmx_simdcall | testBits (SimdDInt32 a) |
| Check if any bit is set in each element. More...
|
|
static SimdDIBool gmx_simdcall | operator&& (SimdDIBool a, SimdDIBool b) |
| Logical AND on SimdDIBool. More...
|
|
static SimdDIBool gmx_simdcall | operator|| (SimdDIBool a, SimdDIBool b) |
| Logical OR on SimdDIBool. More...
|
|
static bool gmx_simdcall | anyTrue (SimdDIBool a) |
| Returns true if any of the boolean in x is True, otherwise 0. More...
|
|
static SimdDInt32 gmx_simdcall | selectByMask (SimdDInt32 a, SimdDIBool mask) |
| Select from gmx::SimdDInt32 variable where boolean is true. More...
|
|
static SimdDInt32 gmx_simdcall | selectByNotMask (SimdDInt32 a, SimdDIBool mask) |
| Select from gmx::SimdDInt32 variable where boolean is false. More...
|
|
static SimdDInt32 gmx_simdcall | blend (SimdDInt32 a, SimdDInt32 b, SimdDIBool sel) |
| Vector-blend SIMD integer selection. More...
|
|
|
static SimdDInt32 gmx_simdcall | cvtR2I (SimdDouble a) |
| Round double precision floating point to integer. More...
|
|
static SimdDInt32 gmx_simdcall | cvttR2I (SimdDouble a) |
| Truncate double precision floating point to integer. More...
|
|
static SimdDouble gmx_simdcall | cvtI2R (SimdDInt32 a) |
| Convert integer to double precision floating point. More...
|
|
static SimdDIBool gmx_simdcall | cvtB2IB (SimdDBool a) |
| Convert from double precision boolean to corresponding integer boolean. More...
|
|
static SimdDBool gmx_simdcall | cvtIB2B (SimdDIBool a) |
| Convert from integer boolean to corresponding double precision boolean. More...
|
|
static SimdDouble gmx_simdcall | cvtF2D (SimdFloat f) |
| Convert SIMD float to double. More...
|
|
static SimdFloat gmx_simdcall | cvtD2F (SimdDouble d) |
| Convert SIMD double to float. More...
|
|
static void gmx_simdcall | cvtF2DD (SimdFloat f, SimdDouble *d0, SimdDouble *d1) |
| Convert SIMD float to double. More...
|
|
static SimdFloat gmx_simdcall | cvtDD2F (SimdDouble d0, SimdDouble d1) |
| Convert SIMD double to float. More...
|
|
static SimdFInt32 gmx_simdcall | cvtR2I (SimdFloat a) |
| Round single precision floating point to integer. More...
|
|
static SimdFInt32 gmx_simdcall | cvttR2I (SimdFloat a) |
| Truncate single precision floating point to integer. More...
|
|
static SimdFloat gmx_simdcall | cvtI2R (SimdFInt32 a) |
| Convert integer to single precision floating point. More...
|
|
static SimdFIBool gmx_simdcall | cvtB2IB (SimdFBool a) |
| Convert from single precision boolean to corresponding integer boolean. More...
|
|
static SimdFBool gmx_simdcall | cvtIB2B (SimdFIBool a) |
| Convert from integer boolean to corresponding single precision boolean. More...
|
|
|
static SimdFloat gmx_simdcall | simdLoad (const float *m) |
| Load GMX_SIMD_FLOAT_WIDTH float numbers from aligned memory. More...
|
|
static void gmx_simdcall | store (float *m, SimdFloat a) |
| Store the contents of SIMD float variable to aligned memory m. More...
|
|
static SimdFloat gmx_simdcall | simdLoadU (const float *m) |
| Load SIMD float from unaligned memory. More...
|
|
static void gmx_simdcall | storeU (float *m, SimdFloat a) |
| Store SIMD float to unaligned memory. More...
|
|
static SimdFloat gmx_simdcall | setZeroF () |
| Set all SIMD float variable elements to 0.0. More...
|
|
|
static SimdFInt32 gmx_simdcall | simdLoadFI (const std::int32_t *m) |
| Load aligned SIMD integer data, width corresponds to gmx::SimdFloat. More...
|
|
static void gmx_simdcall | store (std::int32_t *m, SimdFInt32 a) |
| Store aligned SIMD integer data, width corresponds to gmx::SimdFloat. More...
|
|
static SimdFInt32 gmx_simdcall | simdLoadUFI (const std::int32_t *m) |
| Load unaligned integer SIMD data, width corresponds to gmx::SimdFloat. More...
|
|
static void gmx_simdcall | storeU (std::int32_t *m, SimdFInt32 a) |
| Store unaligned SIMD integer data, width corresponds to gmx::SimdFloat. More...
|
|
static SimdFInt32 gmx_simdcall | setZeroFI () |
| Set all SIMD (float) integer variable elements to 0. More...
|
|
template<int index> |
static std::int32_t gmx_simdcall | extract (SimdFInt32 a) |
| Extract element with index i from gmx::SimdFInt32. More...
|
|
|
static SimdFloat gmx_simdcall | operator& (SimdFloat a, SimdFloat b) |
| Bitwise and for two SIMD float variables. More...
|
|
static SimdFloat gmx_simdcall | andNot (SimdFloat a, SimdFloat b) |
| Bitwise andnot for SIMD float. More...
|
|
static SimdFloat gmx_simdcall | operator| (SimdFloat a, SimdFloat b) |
| Bitwise or for SIMD float. More...
|
|
static SimdFloat gmx_simdcall | operator^ (SimdFloat a, SimdFloat b) |
| Bitwise xor for SIMD float. More...
|
|
|
static SimdFloat gmx_simdcall | operator+ (SimdFloat a, SimdFloat b) |
| Add two float SIMD variables. More...
|
|
static SimdFloat gmx_simdcall | operator- (SimdFloat a, SimdFloat b) |
| Subtract two float SIMD variables. More...
|
|
static SimdFloat gmx_simdcall | operator- (SimdFloat a) |
| SIMD single precision negate. More...
|
|
static SimdFloat gmx_simdcall | operator* (SimdFloat a, SimdFloat b) |
| Multiply two float SIMD variables. More...
|
|
static SimdFloat gmx_simdcall | fma (SimdFloat a, SimdFloat b, SimdFloat c) |
| SIMD float Fused-multiply-add. Result is a*b+c. More...
|
|
static SimdFloat gmx_simdcall | fms (SimdFloat a, SimdFloat b, SimdFloat c) |
| SIMD float Fused-multiply-subtract. Result is a*b-c. More...
|
|
static SimdFloat gmx_simdcall | fnma (SimdFloat a, SimdFloat b, SimdFloat c) |
| SIMD float Fused-negated-multiply-add. Result is -a*b+c. More...
|
|
static SimdFloat gmx_simdcall | fnms (SimdFloat a, SimdFloat b, SimdFloat c) |
| SIMD float Fused-negated-multiply-subtract. Result is -a*b-c. More...
|
|
static SimdFloat gmx_simdcall | rsqrt (SimdFloat x) |
| SIMD float 1.0/sqrt(x) lookup. More...
|
|
static SimdFloat gmx_simdcall | rcp (SimdFloat x) |
| SIMD float 1.0/x lookup. More...
|
|
static SimdFloat gmx_simdcall | maskAdd (SimdFloat a, SimdFloat b, SimdFBool m) |
| Add two float SIMD variables, masked version. More...
|
|
static SimdFloat gmx_simdcall | maskzMul (SimdFloat a, SimdFloat b, SimdFBool m) |
| Multiply two float SIMD variables, masked version. More...
|
|
static SimdFloat gmx_simdcall | maskzFma (SimdFloat a, SimdFloat b, SimdFloat c, SimdFBool m) |
| SIMD float fused multiply-add, masked version. More...
|
|
static SimdFloat gmx_simdcall | maskzRsqrt (SimdFloat x, SimdFBool m) |
| SIMD float 1.0/sqrt(x) lookup, masked version. More...
|
|
static SimdFloat gmx_simdcall | maskzRcp (SimdFloat x, SimdFBool m) |
| SIMD float 1.0/x lookup, masked version. More...
|
|
static SimdFloat gmx_simdcall | abs (SimdFloat a) |
| SIMD float Floating-point abs(). More...
|
|
static SimdFloat gmx_simdcall | max (SimdFloat a, SimdFloat b) |
| Set each SIMD float element to the largest from two variables. More...
|
|
static SimdFloat gmx_simdcall | min (SimdFloat a, SimdFloat b) |
| Set each SIMD float element to the smallest from two variables. More...
|
|
static SimdFloat gmx_simdcall | round (SimdFloat a) |
| SIMD float round to nearest integer value (in floating-point format). More...
|
|
static SimdFloat gmx_simdcall | trunc (SimdFloat a) |
| Truncate SIMD float, i.e. round towards zero - common hardware instruction. More...
|
|
static SimdFloat gmx_simdcall | frexp (SimdFloat value, SimdFInt32 *exponent) |
| Extract (integer) exponent and fraction from single precision SIMD. More...
|
|
static SimdFloat gmx_simdcall | ldexp (SimdFloat value, SimdFInt32 exponent) |
| Multiply a SIMD float value by the number 2 raised to an exp power. More...
|
|
static float gmx_simdcall | reduce (SimdFloat a) |
| Return sum of all elements in SIMD float variable. More...
|
|
|
static SimdFBool gmx_simdcall | operator== (SimdFloat a, SimdFloat b) |
| SIMD a==b for single SIMD. More...
|
|
static SimdFBool gmx_simdcall | operator!= (SimdFloat a, SimdFloat b) |
| SIMD a!=b for single SIMD. More...
|
|
static SimdFBool gmx_simdcall | operator< (SimdFloat a, SimdFloat b) |
| SIMD a<b for single SIMD. More...
|
|
static SimdFBool gmx_simdcall | operator<= (SimdFloat a, SimdFloat b) |
| SIMD a<=b for single SIMD. More...
|
|
static SimdFBool gmx_simdcall | testBits (SimdFloat a) |
| Return true if any bits are set in the single precision SIMD. More...
|
|
static SimdFBool gmx_simdcall | operator&& (SimdFBool a, SimdFBool b) |
| Logical and on single precision SIMD booleans. More...
|
|
static SimdFBool gmx_simdcall | operator|| (SimdFBool a, SimdFBool b) |
| Logical or on single precision SIMD booleans. More...
|
|
static bool gmx_simdcall | anyTrue (SimdFBool a) |
| Returns non-zero if any of the boolean in SIMD a is True, otherwise 0. More...
|
|
static SimdFloat gmx_simdcall | selectByMask (SimdFloat a, SimdFBool mask) |
| Select from single precision SIMD variable where boolean is true. More...
|
|
static SimdFloat gmx_simdcall | selectByNotMask (SimdFloat a, SimdFBool mask) |
| Select from single precision SIMD variable where boolean is false. More...
|
|
static SimdFloat gmx_simdcall | blend (SimdFloat a, SimdFloat b, SimdFBool sel) |
| Vector-blend SIMD float selection. More...
|
|
|
static SimdFInt32 gmx_simdcall | operator<< (SimdFInt32 a, int n) |
| SIMD integer shift left logical, based on immediate value. More...
|
|
static SimdFInt32 gmx_simdcall | operator>> (SimdFInt32 a, int n) |
| SIMD integer shift right logical, based on immediate value. More...
|
|
static SimdFInt32 gmx_simdcall | operator& (SimdFInt32 a, SimdFInt32 b) |
| Integer SIMD bitwise and. More...
|
|
static SimdFInt32 gmx_simdcall | andNot (SimdFInt32 a, SimdFInt32 b) |
| Integer SIMD bitwise not/complement. More...
|
|
static SimdFInt32 gmx_simdcall | operator| (SimdFInt32 a, SimdFInt32 b) |
| Integer SIMD bitwise or. More...
|
|
static SimdFInt32 gmx_simdcall | operator^ (SimdFInt32 a, SimdFInt32 b) |
| Integer SIMD bitwise xor. More...
|
|
|
static SimdFInt32 gmx_simdcall | operator+ (SimdFInt32 a, SimdFInt32 b) |
| Add SIMD integers. More...
|
|
static SimdFInt32 gmx_simdcall | operator- (SimdFInt32 a, SimdFInt32 b) |
| Subtract SIMD integers. More...
|
|
static SimdFInt32 gmx_simdcall | operator* (SimdFInt32 a, SimdFInt32 b) |
| Multiply SIMD integers. More...
|
|
|
static SimdFIBool gmx_simdcall | operator== (SimdFInt32 a, SimdFInt32 b) |
| Equality comparison of two integers corresponding to float values. More...
|
|
static SimdFIBool gmx_simdcall | operator< (SimdFInt32 a, SimdFInt32 b) |
| Less-than comparison of two SIMD integers corresponding to float values. More...
|
|
static SimdFIBool gmx_simdcall | testBits (SimdFInt32 a) |
| Check if any bit is set in each element. More...
|
|
static SimdFIBool gmx_simdcall | operator&& (SimdFIBool a, SimdFIBool b) |
| Logical AND on SimdFIBool. More...
|
|
static SimdFIBool gmx_simdcall | operator|| (SimdFIBool a, SimdFIBool b) |
| Logical OR on SimdFIBool. More...
|
|
static bool gmx_simdcall | anyTrue (SimdFIBool a) |
| Returns true if any of the boolean in x is True, otherwise 0. More...
|
|
static SimdFInt32 gmx_simdcall | selectByMask (SimdFInt32 a, SimdFIBool mask) |
| Select from gmx::SimdFInt32 variable where boolean is true. More...
|
|
static SimdFInt32 gmx_simdcall | selectByNotMask (SimdFInt32 a, SimdFIBool mask) |
| Select from gmx::SimdFInt32 variable where boolean is false. More...
|
|
static SimdFInt32 gmx_simdcall | blend (SimdFInt32 a, SimdFInt32 b, SimdFIBool sel) |
| Vector-blend SIMD integer selection. More...
|
|
|
See the single-precision versions for documentation. Since double precision is typically half the width of single, this double version is likely only useful with 512-bit and larger implementations.
|
static SimdDouble gmx_simdcall | loadDualHsimd (const double *m0, const double *m1) |
| Load low & high parts of SIMD double from different locations. More...
|
|
static SimdDouble gmx_simdcall | loadDuplicateHsimd (const double *m) |
| Load half-SIMD-width double data, spread to both halves. More...
|
|
static SimdDouble gmx_simdcall | load1DualHsimd (const double *m) |
| Load two doubles, spread 1st in low half, 2nd in high half. More...
|
|
static void gmx_simdcall | storeDualHsimd (double *m0, double *m1, SimdDouble a) |
| Store low & high parts of SIMD double to different locations. More...
|
|
static void gmx_simdcall | incrDualHsimd (double *m0, double *m1, SimdDouble a) |
| Add each half of SIMD variable to separate memory adresses. More...
|
|
static void gmx_simdcall | decrHsimd (double *m, SimdDouble a) |
| Add the two halves of a SIMD double, subtract the sum from half-SIMD-width consecutive doubles in memory. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadTransposeHsimd (const double *base0, const double *base1, std::int32_t offset[], SimdDouble *v0, SimdDouble *v1) |
| Load 2 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH/2 offsets, transpose into SIMD double (low half from base0, high from base1). More...
|
|
static double gmx_simdcall | reduceIncr4ReturnSumHsimd (double *m, SimdDouble v0, SimdDouble v1) |
| Reduce the 4 half-SIMD-with doubles in 2 SIMD variables (sum halves), increment four consecutive doubles in memory, return sum. More...
|
|
|
These functions are optional. The are only useful for SIMD implementation where the width is 8 or larger, and where it would be inefficient to process 4*8, 8*8, or more, interactions in parallel.
Currently, only Intel provides very wide SIMD implementations, but these also come with excellent support for loading, storing, accessing and shuffling parts of the register in so-called 'lanes' of 4 bytes each. We can use this to load separate parts into the low/high halves of the register in the inner loop of the nonbonded kernel, which e.g. makes it possible to process 4*4 nonbonded interactions as a pattern of 2*8. We can also use implementations with width 16 or greater.
To make this more generic, when GMX_SIMD_HAVE_HSIMD_UTIL_REAL is 1, the SIMD implementation provides seven special routines that:
- Load the low/high parts of a SIMD variable from different pointers
- Load half the SIMD width from one pointer, and duplicate in low/high parts
- Load two reals, put 1st one in all low elements, and 2nd in all high ones.
- Store the low/high parts of a SIMD variable to different pointers
- Subtract both SIMD halves from a single half-SIMD-width memory location.
- Load aligned pairs (LJ parameters) from two base pointers, with a common offset list, and put these in the low/high SIMD halves.
- Reduce each half of two SIMD registers (i.e., 4 parts in total), increment four adjacent memory positions, and return the total sum.
Remember: this is ONLY used when the native SIMD width is large. You will just waste time if you implement it for normal 16-byte SIMD architectures.
This is part of the new C++ SIMD interface, so these functions are only available when using C++. Since some Gromacs code reliying on the SIMD module is still C (not C++), we have kept the C-style naming for now - this will change once we are entirely C++.
|
static SimdFloat gmx_simdcall | loadDualHsimd (const float *m0, const float *m1) |
| Load low & high parts of SIMD float from different locations. More...
|
|
static SimdFloat gmx_simdcall | loadDuplicateHsimd (const float *m) |
| Load half-SIMD-width float data, spread to both halves. More...
|
|
static SimdFloat gmx_simdcall | load1DualHsimd (const float *m) |
| Load two floats, spread 1st in low half, 2nd in high half. More...
|
|
static void gmx_simdcall | storeDualHsimd (float *m0, float *m1, SimdFloat a) |
| Store low & high parts of SIMD float to different locations. More...
|
|
static void gmx_simdcall | incrDualHsimd (float *m0, float *m1, SimdFloat a) |
| Add each half of SIMD variable to separate memory adresses. More...
|
|
static void gmx_simdcall | decrHsimd (float *m, SimdFloat a) |
| Add the two halves of a SIMD float, subtract the sum from half-SIMD-width consecutive floats in memory. More...
|
|
template<int align> |
static void gmx_simdcall | gatherLoadTransposeHsimd (const float *base0, const float *base1, const std::int32_t offset[], SimdFloat *v0, SimdFloat *v1) |
| Load 2 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH/2 offsets, transpose into SIMD float (low half from base0, high from base1). More...
|
|
static float gmx_simdcall | reduceIncr4ReturnSumHsimd (float *m, SimdFloat v0, SimdFloat v1) |
| Reduce the 4 half-SIMD-with floats in 2 SIMD variables (sum halves), increment four consecutive floats in memory, return sum. More...
|
|
|
static const
SimdLoadFProxyInternal
gmx_simdcall | load (const float *m) |
| Load function that returns proxy object for SimdFloat and float. More...
|
|
static const
SimdLoadUFProxyInternal
gmx_simdcall | loadU (const float *m) |
| LoadU function that returns proxy object for SimdFloat and float. More...
|
|
static const
SimdLoadDProxyInternal
gmx_simdcall | load (const double *m) |
| Load function that returns proxy object for SimdDouble and double. More...
|
|
static const
SimdLoadUDProxyInternal
gmx_simdcall | loadU (const double *m) |
| Load function that returns proxy object for SimdDouble and double. More...
|
|
static const
SimdLoadIProxyInternal
gmx_simdcall | load (const std::int32_t *m) |
| Integer load function (proxy object) for SimdFInt32, SImdDInt32, and int32. More...
|
|
static const
SimdLoadUIProxyInternal
gmx_simdcall | loadU (const std::int32_t *m) |
| Integer loadU function (proxy object) for SimdFInt32, SImdDInt32, and int32. More...
|
|
static const
SimdSetZeroProxyInternal
gmx_simdcall | setZero () |
| Proxy object to set any SIMD or scalar variable to zero. More...
|
|
|
- Note
- In most cases you should use the real-precision functions instead.
|
static SimdFloat gmx_simdcall | copysign (SimdFloat x, SimdFloat y) |
| Composes floating point value with the magnitude of x and the sign of y. More...
|
|
static SimdFloat gmx_simdcall | rsqrtIter (SimdFloat lu, SimdFloat x) |
| Perform one Newton-Raphson iteration to improve 1/sqrt(x) for SIMD float. More...
|
|
static SimdFloat gmx_simdcall | invsqrt (SimdFloat x) |
| Calculate 1/sqrt(x) for SIMD float. More...
|
|
static void gmx_simdcall | invsqrtPair (SimdFloat x0, SimdFloat x1, SimdFloat *out0, SimdFloat *out1) |
| Calculate 1/sqrt(x) for two SIMD floats. More...
|
|
static SimdFloat gmx_simdcall | rcpIter (SimdFloat lu, SimdFloat x) |
| Perform one Newton-Raphson iteration to improve 1/x for SIMD float. More...
|
|
static SimdFloat gmx_simdcall | inv (SimdFloat x) |
| Calculate 1/x for SIMD float. More...
|
|
static SimdFloat gmx_simdcall | operator/ (SimdFloat nom, SimdFloat denom) |
| Division for SIMD floats. More...
|
|
static SimdFloat | maskzInvsqrt (SimdFloat x, SimdFBool m) |
| Calculate 1/sqrt(x) for masked entries of SIMD float. More...
|
|
static SimdFloat gmx_simdcall | maskzInv (SimdFloat x, SimdFBool m) |
| Calculate 1/x for SIMD float, masked version. More...
|
|
static SimdFloat gmx_simdcall | sqrt (SimdFloat x) |
| Calculate sqrt(x) correctly for SIMD floats, including argument 0.0. More...
|
|
static SimdFloat gmx_simdcall | log (SimdFloat x) |
| SIMD float log(x). This is the natural logarithm. More...
|
|
static SimdFloat gmx_simdcall | exp2 (SimdFloat x) |
| SIMD float 2^x. More...
|
|
static SimdFloat gmx_simdcall | exp (SimdFloat x) |
| SIMD float exp(x). More...
|
|
static SimdFloat gmx_simdcall | erf (SimdFloat x) |
| SIMD float erf(x). More...
|
|
static SimdFloat gmx_simdcall | erfc (SimdFloat x) |
| SIMD float erfc(x). More...
|
|
static void gmx_simdcall | sincos (SimdFloat x, SimdFloat *sinval, SimdFloat *cosval) |
| SIMD float sin & cos. More...
|
|
static SimdFloat gmx_simdcall | sin (SimdFloat x) |
| SIMD float sin(x). More...
|
|
static SimdFloat gmx_simdcall | cos (SimdFloat x) |
| SIMD float cos(x). More...
|
|
static SimdFloat gmx_simdcall | tan (SimdFloat x) |
| SIMD float tan(x). More...
|
|
static SimdFloat gmx_simdcall | asin (SimdFloat x) |
| SIMD float asin(x). More...
|
|
static SimdFloat gmx_simdcall | acos (SimdFloat x) |
| SIMD float acos(x). More...
|
|
static SimdFloat gmx_simdcall | atan (SimdFloat x) |
| SIMD float asin(x). More...
|
|
static SimdFloat gmx_simdcall | atan2 (SimdFloat y, SimdFloat x) |
| SIMD float atan2(y,x). More...
|
|
static SimdFloat gmx_simdcall | pmeForceCorrection (SimdFloat z2) |
| Calculate the force correction due to PME analytically in SIMD float. More...
|
|
static SimdFloat gmx_simdcall | pmePotentialCorrection (SimdFloat z2) |
| Calculate the potential correction due to PME analytically in SIMD float. More...
|
|
|
- Note
- In most cases you should use the real-precision functions instead.
|
static SimdDouble gmx_simdcall | copysign (SimdDouble x, SimdDouble y) |
| Composes floating point value with the magnitude of x and the sign of y. More...
|
|
static SimdDouble gmx_simdcall | rsqrtIter (SimdDouble lu, SimdDouble x) |
| Perform one Newton-Raphson iteration to improve 1/sqrt(x) for SIMD double. More...
|
|
static SimdDouble gmx_simdcall | invsqrt (SimdDouble x) |
| Calculate 1/sqrt(x) for SIMD double. More...
|
|
static void gmx_simdcall | invsqrtPair (SimdDouble x0, SimdDouble x1, SimdDouble *out0, SimdDouble *out1) |
| Calculate 1/sqrt(x) for two SIMD doubles. More...
|
|
static SimdDouble gmx_simdcall | rcpIter (SimdDouble lu, SimdDouble x) |
| Perform one Newton-Raphson iteration to improve 1/x for SIMD double. More...
|
|
static SimdDouble gmx_simdcall | inv (SimdDouble x) |
| Calculate 1/x for SIMD double. More...
|
|
static SimdDouble gmx_simdcall | operator/ (SimdDouble nom, SimdDouble denom) |
| Division for SIMD doubles. More...
|
|
static SimdDouble | maskzInvsqrt (SimdDouble x, SimdDBool m) |
| Calculate 1/sqrt(x) for masked entries of SIMD double. More...
|
|
static SimdDouble gmx_simdcall | maskzInv (SimdDouble x, SimdDBool m) |
| Calculate 1/x for SIMD double, masked version. More...
|
|
static SimdDouble gmx_simdcall | sqrt (SimdDouble x) |
| Calculate sqrt(x) correctly for SIMD doubles, including argument 0.0. More...
|
|
static SimdDouble gmx_simdcall | log (SimdDouble x) |
| SIMD double log(x). This is the natural logarithm. More...
|
|
static SimdDouble gmx_simdcall | exp2 (SimdDouble x) |
| SIMD double 2^x. More...
|
|
static SimdDouble gmx_simdcall | exp (SimdDouble x) |
| SIMD double exp(x). More...
|
|
static SimdDouble gmx_simdcall | erf (SimdDouble x) |
| SIMD double erf(x). More...
|
|
static SimdDouble gmx_simdcall | erfc (SimdDouble x) |
| SIMD double erfc(x). More...
|
|
static void gmx_simdcall | sincos (SimdDouble x, SimdDouble *sinval, SimdDouble *cosval) |
| SIMD double sin & cos. More...
|
|
static SimdDouble gmx_simdcall | sin (SimdDouble x) |
| SIMD double sin(x). More...
|
|
static SimdDouble gmx_simdcall | cos (SimdDouble x) |
| SIMD double cos(x). More...
|
|
static SimdDouble gmx_simdcall | tan (SimdDouble x) |
| SIMD double tan(x). More...
|
|
static SimdDouble gmx_simdcall | asin (SimdDouble x) |
| SIMD double asin(x). More...
|
|
static SimdDouble gmx_simdcall | acos (SimdDouble x) |
| SIMD double acos(x). More...
|
|
static SimdDouble gmx_simdcall | atan (SimdDouble x) |
| SIMD double asin(x). More...
|
|
static SimdDouble gmx_simdcall | atan2 (SimdDouble y, SimdDouble x) |
| SIMD double atan2(y,x). More...
|
|
static SimdDouble gmx_simdcall | pmeForceCorrection (SimdDouble z2) |
| Calculate the force correction due to PME analytically in SIMD double. More...
|
|
static SimdDouble gmx_simdcall | pmePotentialCorrection (SimdDouble z2) |
| Calculate the potential correction due to PME analytically in SIMD double. More...
|
|
|
- Note
- In some cases we do not need full double accuracy of individual SIMD math functions, although the data is stored in double precision SIMD registers. This might be the case for special algorithms, or if the architecture does not support single precision. Since the full double precision evaluation of math functions typically require much more expensive polynomial approximations these functions implement the algorithms used in the single precision SIMD math functions, but they operate on double precision SIMD variables.
|
static SimdDouble gmx_simdcall | invsqrtSingleAccuracy (SimdDouble x) |
| Calculate 1/sqrt(x) for SIMD double, but in single accuracy. More...
|
|
static SimdDouble | maskzInvsqrtSingleAccuracy (SimdDouble x, SimdDBool m) |
| 1/sqrt(x) for masked-in entries of SIMD double, but in single accuracy. More...
|
|
static void gmx_simdcall | invsqrtPairSingleAccuracy (SimdDouble x0, SimdDouble x1, SimdDouble *out0, SimdDouble *out1) |
| Calculate 1/sqrt(x) for two SIMD doubles, but single accuracy. More...
|
|
static SimdDouble gmx_simdcall | invSingleAccuracy (SimdDouble x) |
| Calculate 1/x for SIMD double, but in single accuracy. More...
|
|
static SimdDouble gmx_simdcall | maskzInvSingleAccuracy (SimdDouble x, SimdDBool m) |
| 1/x for masked entries of SIMD double, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | sqrtSingleAccuracy (SimdDouble x) |
| Calculate sqrt(x) (correct for 0.0) for SIMD double, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | logSingleAccuracy (SimdDouble x) |
| SIMD log(x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | exp2SingleAccuracy (SimdDouble x) |
| SIMD 2^x. Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | expSingleAccuracy (SimdDouble x) |
| SIMD exp(x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | erfSingleAccuracy (SimdDouble x) |
| SIMD erf(x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | erfcSingleAccuracy (SimdDouble x) |
| SIMD erfc(x). Double precision SIMD data, single accuracy. More...
|
|
static void gmx_simdcall | sinCosSingleAccuracy (SimdDouble x, SimdDouble *sinval, SimdDouble *cosval) |
| SIMD sin & cos. Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | sinSingleAccuracy (SimdDouble x) |
| SIMD sin(x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | cosSingleAccuracy (SimdDouble x) |
| SIMD cos(x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | tanSingleAccuracy (SimdDouble x) |
| SIMD tan(x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | asinSingleAccuracy (SimdDouble x) |
| SIMD asin(x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | acosSingleAccuracy (SimdDouble x) |
| SIMD acos(x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | atanSingleAccuracy (SimdDouble x) |
| SIMD asin(x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | atan2SingleAccuracy (SimdDouble y, SimdDouble x) |
| SIMD atan2(y,x). Double precision SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | pmeForceCorrectionSingleAccuracy (SimdDouble z2) |
| Analytical PME force correction, double SIMD data, single accuracy. More...
|
|
static SimdDouble gmx_simdcall | pmePotentialCorrectionSingleAccuracy (SimdDouble z2) |
| Analytical PME potential correction, double SIMD data, single accuracy. More...
|
|
|
- Note
- Only a subset of the math functions are implemented for SIMD4.
|
static Simd4Float gmx_simdcall | rsqrtIter (Simd4Float lu, Simd4Float x) |
| Perform one Newton-Raphson iteration to improve 1/sqrt(x) for SIMD4 float. More...
|
|
static Simd4Float gmx_simdcall | invsqrt (Simd4Float x) |
| Calculate 1/sqrt(x) for SIMD4 float. More...
|
|
static Simd4Double gmx_simdcall | rsqrtIter (Simd4Double lu, Simd4Double x) |
| Perform one Newton-Raphson iteration to improve 1/sqrt(x) for SIMD4 double. More...
|
|
static Simd4Double gmx_simdcall | invsqrt (Simd4Double x) |
| Calculate 1/sqrt(x) for SIMD4 double. More...
|
|
static Simd4Double gmx_simdcall | invsqrtSingleAccuracy (Simd4Double x) |
| Calculate 1/sqrt(x) for SIMD4 double, but in single accuracy. More...
|
|