Add 32-bit ARM Neon SIMD support
[alexxy/gromacs.git] / src / gromacs / simd / simd.h
index 0e8716a9929175fa7053ba0a345fa4c2013c3df5..3b3a2d852e60365dc5a0e2f51a147da36c002acd 100644 (file)
  */
 
 /*! \libinternal
- *  \defgroup module_simd SIMD intrinsics interface (simd)
- *  \ingroup group_utilitymodules
+ * \defgroup module_simd SIMD intrinsics interface (simd)
+ * \ingroup group_utilitymodules
  *
- *  \brief Provides an architecture-independent way of doing SIMD coding.
+ * \brief Provides an architecture-independent way of doing SIMD coding.
  *
- *  Start by consulting the overview Doxygen SIMD module documentation which is
- *  available in the internal library documentation (but not the public API),
- *  and then the details are documented in simd.h and the reference
- *  implementation impl_reference.h.
+ * Overview of the SIMD implementation is provided in \ref page_simd.
+ * The details are documented in simd.h and the reference implementation
+ * impl_reference.h.
  *
- *  \author Erik Lindahl <erik.lindahl@scilifelab.se>
+ * \author Erik Lindahl <erik.lindahl@scilifelab.se>
  */
 
 #ifndef GMX_SIMD_SIMD_H
  * \ingroup module_simd
  */
 
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+#include "config.h"
 
 #include <stddef.h>
-#include "gromacs/legacyheaders/types/simple.h"
+
+#include "gromacs/utility/basedefinitions.h"
 
 /* Forward declarations so memory allocation can be used in implementations */
 static gmx_inline float *  gmx_simd_align_f(float *p);
@@ -125,8 +123,12 @@ static gmx_inline double * gmx_simd4_align_d(double *p);
 #    include "gromacs/simd/impl_x86_sse4_1/impl_x86_sse4_1.h"
 #elif defined GMX_SIMD_X86_SSE2
 #    include "gromacs/simd/impl_x86_sse2/impl_x86_sse2.h"
+#elif defined GMX_SIMD_ARM_NEON
+#    include "gromacs/simd/impl_arm_neon/impl_arm_neon.h"
 #elif defined GMX_SIMD_IBM_QPX
 #    include "gromacs/simd/impl_ibm_qpx/impl_ibm_qpx.h"
+#elif defined GMX_SIMD_SPARC64_HPC_ACE
+#    include "gromacs/simd/impl_sparc64_hpc_ace/impl_sparc64_hpc_ace.h"
 #elif (defined GMX_SIMD_REFERENCE) || (defined DOXYGEN)
 /* Plain C SIMD reference implementation, also serves as documentation.
  * For now this code path will also be taken for Sparc64_HPC_ACE since we have
@@ -1502,7 +1504,7 @@ gmx_simd4_align_d(double *p)
  */
 #    define gmx_simd4_reduce_r               gmx_simd4_reduce_f
 
-/*! Align real memory for SIMD4 usage.
+/*! \brief Align real memory for SIMD4 usage.
  *
  * \copydetails gmx_simd4_align_f
  */