Gromacs
2026.0-dev-20241204-d69d709
|
#include "config.h"
#include "gromacs/math/vectypes.h"
#include "gromacs/simd/simd.h"
#include "gromacs/utility/real.h"
Defines functions to load data to and store data from SIMD registers for the SIMD 4xM and 2xMM kernels.
Typedefs | |
typedef SimdReal | gmx::SimdBitMask |
Define SimdBitMask as a real SIMD register. | |
Functions | |
template<KernelLayoutClusterRatio clusterRatio> | |
static int | gmx::cjFromCi (const int iCluster) |
Returns the j-cluster index for the given i-cluster index. More... | |
template<KernelLayout kernelLayout> | |
std::enable_if_t< kernelLayout==KernelLayout::r4xM, SimdReal > | gmx::loadIAtomData (const real *ptr, const int offset, const int iRegister) |
Load a single real for an i-atom into iRegister . | |
template<KernelLayout kernelLayout> | |
std::enable_if_t< kernelLayout==KernelLayout::r2xMM, SimdReal > | gmx::loadIAtomData (const real *ptr, const int offset, const int iRegister) |
Load a pair of consecutive reals for two i-atom into the respective halves of iRegister . | |
template<KernelLayout kernelLayout> | |
std::enable_if_t< kernelLayout==KernelLayout::r4xM, SimdReal > | gmx::loadJAtomData (const real *ptr, const int offset) |
Returns a SIMD register containing GMX_SIMD_REAL_WIDTH reals loaded from ptr + offset. | |
template<KernelLayout kernelLayout> | |
std::enable_if_t< kernelLayout==KernelLayout::r2xMM, SimdReal > | gmx::loadJAtomData (const real *ptr, const int offset) |
Returns a SIMD register containing a duplicate sequence of GMX_SIMD_REAL_WIDTH/2 reals loaded from ptr + offset. | |
template<bool loadMasks, KernelLayout kernelLayout> | |
std::enable_if_t<!loadMasks, std::array< SimdBool, 0 > > | gmx::loadSimdPairInteractionMasks (const int excl, SimdBitMask *filterBitMasksV) |
Loads no interaction masks, returns an empty array. | |
template<bool loadMasks, KernelLayout kernelLayout> | |
std::enable_if_t< loadMasks &&kernelLayout==KernelLayout::r4xM, std::array< SimdBool, sc_iClusterSize(kernelLayout)> > | gmx::loadSimdPairInteractionMasks (const int excl, SimdBitMask *filterBitMasksV) |
Loads interaction masks for a cluster pair for 4xM kernel layout. | |
template<bool loadMasks, KernelLayout kernelLayout> | |
std::enable_if_t< loadMasks &&kernelLayout==KernelLayout::r2xMM, std::array< SimdBool, sc_iClusterSize(kernelLayout)/2 > > | gmx::loadSimdPairInteractionMasks (const int excl, SimdBitMask *filterBitMasksV) |
Loads interaction masks for a cluster pair for 2xMM kernel layout. | |
template<int nR> | |
int | gmx::pairCountWithinCutoff (SimdReal rSquaredV[nR], SimdReal cutoffSquared) |
Return the number of atoms pairs that are within the cut-off distance. | |