Merge remote-tracking branch 'gerrit/release-4-6'
[alexxy/gromacs.git] / src / gromacs / gmxlib / nonbonded / nb_kernel_sse2_single / nb_kernel332_sse2_single.h
1 /* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; c-file-style: "stroustrup"; -*- 
2  * 
3  * This file is part of Gromacs        Copyright (c) 1991-2004
4  * David van der Spoel, Erik Lindahl, University of Groningen.
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * To help us fund GROMACS development, we humbly ask that you cite
12  * the research papers on the package. Check out http://www.gromacs.org
13  * 
14  * And Hey:
15  * Gnomes, ROck Monsters And Chili Sauce
16  */
17 #ifndef _NB_KERNEL332_SSE2_SINGLE_H_
18 #define _NB_KERNEL332_SSE2_SINGLE_H_
19
20
21 /*! \file
22  *  \brief SSE-intrinsics ptimized versions of nonbonded kernel 332
23  *
24  *  \internal
25  */
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 #if 0
31 }
32 #endif
33
34 /*! \brief Nonbonded kernel 332 with forces, optimized for sse.
35  *
36  *  \internal
37  *
38  *  <b>Coulomb interaction:</b> Tabulated <br>
39  *  <b>VdW interaction:</b> Tabulated <br>
40  *  <b>Water optimization:</b> Pairs of SPC/TIP3P waters interaction <br>
41  *  <b>Forces calculated:</b> Yes <br>
42  *
43  *  \note All level1 and level2 nonbonded kernels use the same
44  *        call sequence. Parameters are documented in nb_kernel.h
45  */
46 void
47 nb_kernel332_sse2_single  (int *   nri,        int     iinr[],   int     jindex[],
48                        int     jjnr[],     int     shift[],  float   shiftvec[],
49                        float   fshift[],   int     gid[],    float   pos[],
50                        float   faction[],  float   charge[], float * facel,
51                        float * krf,        float * crf,      float   Vc[],
52                        int     type[],     int *   ntype,    float   vdwparam[],
53                        float   Vvdw[],     float * tabscale, float   VFtab[],
54                        float   invsqrta[], float   dvda[],   float * gbtabscale,
55                        float   GBtab[],    int *   nthreads, int *   count,
56                        void *  mtx,        int *   outeriter,int *   inneriter,
57                        float * work);
58
59
60
61 /*! \brief Nonbonded kernel 332 without forces, optimized for sse.
62  *
63  *  \internal
64  *
65  *  <b>Coulomb interaction:</b> Tabulated <br>
66  *  <b>VdW interaction:</b> Tabulated <br>
67  *  <b>Water optimization:</b> Pairs of SPC/TIP3P waters interaction <br>
68  *  <b>Forces calculated:</b> No <br>
69  *
70  *  \note All level1 and level2 nonbonded kernels use the same
71  *        call sequence. Parameters are documented in nb_kernel.h
72  */
73 void
74 nb_kernel332nf_sse2_single(int *   nri,        int     iinr[],   int     jindex[],
75                        int     jjnr[],     int     shift[],  float   shiftvec[],
76                        float   fshift[],   int     gid[],    float   pos[],
77                        float   faction[],  float   charge[], float * facel,
78                        float * krf,        float * crf,      float   Vc[],
79                        int     type[],     int *   ntype,    float   vdwparam[],
80                        float   Vvdw[],     float * tabscale, float   VFtab[],
81                        float   invsqrta[], float   dvda[],   float * gbtabscale,
82                        float   GBtab[],    int *   nthreads, int *   count,
83                        void *  mtx,        int *   outeriter,int *   inneriter,
84                        float * work);
85
86
87 #ifdef __cplusplus
88 }
89 #endif
90
91
92 #endif /* _NB_KERNEL332_SSE2_SINGLE_H_ */