Added Michael Shirts long-range dispersion and repulsion corrections that are correct...
[gromacs.git] / include / x86_sse2.h
blobb565e28a4607c29fb6e117eb1a2c2fd763a42a64
1 /*
2 * $Id$
3 *
4 * This source code is part of
5 *
6 * G R O M A C S
7 *
8 * GROningen MAchine for Chemical Simulations
9 *
10 * VERSION 3.2.0
11 * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
12 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
13 * Copyright (c) 2001-2004, The GROMACS development team,
14 * check out http://www.gromacs.org for more information.
16 * This program is free software; you can redistribute it and/or
17 * modify it under the terms of the GNU General Public License
18 * as published by the Free Software Foundation; either version 2
19 * of the License, or (at your option) any later version.
21 * If you want to redistribute modifications, please consider that
22 * scientific software is very special. Version control is crucial -
23 * bugs must be traceable. We will be happy to consider code for
24 * inclusion in the official distribution, but derived work must not
25 * be called official GROMACS. Details are found in the README & COPYING
26 * files - if they are missing, get the official version at www.gromacs.org.
28 * To help us fund GROMACS development, we humbly ask that you cite
29 * the papers on the package - you can find them in the top README file.
31 * For more info, check our website at http://www.gromacs.org
33 * And Hey:
34 * Gromacs Runs On Most of All Computer Systems
37 #ifndef _x86_sse2_h
38 #define _x86_sse2_h
40 #ifdef HAVE_CONFIG_H
41 #include <config.h>
42 #endif
44 #if (defined USE_X86_SSE2 && defined DOUBLE)
46 void checksse2();
47 void vecinvsqrt_sse2(double in[],double out[],int n);
48 void vecrecip_sse2(double in[],double out[],int n);
50 void inl0100_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
51 double shiftvec[],double fshift[],int gid[],double pos[],
52 double faction[],int type[],int ntype,double nbfp[],
53 double Vnb[]);
54 void inl0300_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
55 double shiftvec[],double fshift[],int gid[],double pos[],
56 double faction[],int type[],int ntype,double nbfp[],
57 double Vnb[],double tabscale,double VFtab[]);
58 void inl1000_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
59 double shiftvec[],double fshift[],int gid[],double pos[],
60 double faction[],double charge[],double facel,double Vc[]);
61 void inl1020_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
62 double shiftvec[],double fshift[],int gid[],double pos[],
63 double faction[],double charge[],double facel,double Vc[]);
64 void inl1030_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
65 double shiftvec[],double fshift[],int gid[],double pos[],
66 double faction[],double charge[],double facel,double Vc[]);
67 void inl1100_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
68 double shiftvec[],double fshift[],int gid[],double pos[],
69 double faction[],double charge[],double facel,double Vc[],
70 int type[],int ntype,double nbfp[],double Vnb[]);
71 void inl2000_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
72 double shiftvec[],double fshift[],int gid[],double pos[],
73 double faction[],double charge[],double facel,double Vc[],
74 double krf, double crf);
75 void inl2100_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
76 double shiftvec[],double fshift[],int gid[],double pos[],
77 double faction[],double charge[],double facel,double Vc[],
78 double krf, double crf, int type[],int ntype,
79 double nbfp[],double Vnb[]);
80 void inl1120_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
81 double shiftvec[],double fshift[],int gid[],double pos[],
82 double faction[],double charge[],double facel,double Vc[],
83 int type[],int ntype,double nbfp[],double Vnb[]);
84 void inl2020_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
85 double shiftvec[],double fshift[],int gid[],double pos[],
86 double faction[],double charge[],double facel,double Vc[],
87 double krf, double crf);
88 void inl2120_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
89 double shiftvec[],double fshift[],int gid[],double pos[],
90 double faction[],double charge[],double facel,double Vc[],
91 double krf, double crf, int type[],int ntype,
92 double nbfp[],double Vnb[]);
93 void inl1130_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
94 double shiftvec[],double fshift[],int gid[],double pos[],
95 double faction[],double charge[],double facel,double Vc[],
96 int type[],int ntype,double nbfp[],double Vnb[]);
97 void inl2030_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
98 double shiftvec[],double fshift[],int gid[],double pos[],
99 double faction[],double charge[],double facel,double Vc[],
100 double krf, double crf);
101 void inl2130_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
102 double shiftvec[],double fshift[],int gid[],double pos[],
103 double faction[],double charge[],double facel,double Vc[],
104 double krf, double crf, int type[],int ntype,
105 double nbfp[],double Vnb[]);
106 void inl3000_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
107 double shiftvec[],double fshift[],int gid[],double pos[],
108 double faction[],double charge[],double facel,double Vc[],
109 double tabscale,double VFtab[]);
110 void inl3020_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
111 double shiftvec[],double fshift[],int gid[],double pos[],
112 double faction[],double charge[],double facel,double Vc[],
113 double tabscale,double VFtab[]);
114 void inl3030_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
115 double shiftvec[],double fshift[],int gid[],double pos[],
116 double faction[],double charge[],double facel,double Vc[],
117 double tabscale,double VFtab[]);
118 void inl3100_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
119 double shiftvec[],double fshift[],int gid[],double pos[],
120 double faction[],double charge[],double facel,double Vc[],
121 int type[],int ntype,double nbfp[],double Vnb[],
122 double tabscale, double VFtab[]);
123 void inl3120_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
124 double shiftvec[],double fshift[],int gid[],double pos[],
125 double faction[],double charge[],double facel,double Vc[],
126 int type[],int ntype,double nbfp[],double Vnb[],
127 double tabscale, double VFtab[]);
128 void inl3130_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
129 double shiftvec[],double fshift[],int gid[],double pos[],
130 double faction[],double charge[],double facel,double Vc[],
131 int type[],int ntype,double nbfp[],double Vnb[],
132 double tabscale, double VFtab[]);
133 void inl3300_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
134 double shiftvec[],double fshift[],int gid[],double pos[],
135 double faction[],double charge[],double facel,double Vc[],
136 int type[],int ntype,double nbfp[],double Vnb[],
137 double tabscale,double VFtab[]);
138 void inl3320_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
139 double shiftvec[],double fshift[],int gid[],double pos[],
140 double faction[],double charge[],double facel,double Vc[],
141 int type[],int ntype,double nbfp[],double Vnb[],
142 double tabscale,double VFtab[]);
143 void inl3330_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
144 double shiftvec[],double fshift[],int gid[],double pos[],
145 double faction[],double charge[],double facel,double Vc[],
146 int type[],int ntype,double nbfp[],double Vnb[],
147 double tabscale,double VFtab[]);
149 void mcinl0100_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
150 double shiftvec[],int gid[],double pos[],
151 int type[],int ntype,double nbfp[],
152 double Vnb[]);
153 void mcinl0300_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
154 double shiftvec[],int gid[],double pos[],
155 int type[],int ntype,double nbfp[],
156 double Vnb[],double tabscale,double VFtab[]);
157 void mcinl1000_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
158 double shiftvec[],int gid[],double pos[],
159 double charge[],double facel,double Vc[]);
160 void mcinl1020_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
161 double shiftvec[],int gid[],double pos[],
162 double charge[],double facel,double Vc[]);
163 void mcinl1030_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
164 double shiftvec[],int gid[],double pos[],
165 double charge[],double facel,double Vc[]);
166 void mcinl1100_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
167 double shiftvec[],int gid[],double pos[],
168 double charge[],double facel,double Vc[],
169 int type[],int ntype,double nbfp[],double Vnb[]);
170 void mcinl2000_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
171 double shiftvec[],int gid[],double pos[],
172 double charge[],double facel,double Vc[],
173 double krf, double crf);
174 void mcinl2100_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
175 double shiftvec[],int gid[],double pos[],
176 double charge[],double facel,double Vc[],
177 double krf, double crf, int type[],int ntype,
178 double nbfp[],double Vnb[]);
179 void mcinl1120_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
180 double shiftvec[],int gid[],double pos[],
181 double charge[],double facel,double Vc[],
182 int type[],int ntype,double nbfp[],double Vnb[]);
183 void mcinl2020_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
184 double shiftvec[],int gid[],double pos[],
185 double charge[],double facel,double Vc[],
186 double krf, double crf);
187 void mcinl2120_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
188 double shiftvec[],int gid[],double pos[],
189 double charge[],double facel,double Vc[],
190 double krf, double crf, int type[],int ntype,
191 double nbfp[],double Vnb[]);
192 void mcinl1130_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
193 double shiftvec[],int gid[],double pos[],
194 double charge[],double facel,double Vc[],
195 int type[],int ntype,double nbfp[],double Vnb[]);
196 void mcinl2030_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
197 double shiftvec[],int gid[],double pos[],
198 double charge[],double facel,double Vc[],
199 double krf, double crf);
200 void mcinl2130_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
201 double shiftvec[],int gid[],double pos[],
202 double charge[],double facel,double Vc[],
203 double krf, double crf, int type[],int ntype,
204 double nbfp[],double Vnb[]);
205 void mcinl3000_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
206 double shiftvec[],int gid[],double pos[],
207 double charge[],double facel,double Vc[],
208 double tabscale,double VFtab[]);
209 void mcinl3020_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
210 double shiftvec[],int gid[],double pos[],
211 double charge[],double facel,double Vc[],
212 double tabscale,double VFtab[]);
213 void mcinl3030_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
214 double shiftvec[],int gid[],double pos[],
215 double charge[],double facel,double Vc[],
216 double tabscale,double VFtab[]);
217 void mcinl3100_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
218 double shiftvec[],int gid[],double pos[],
219 double charge[],double facel,double Vc[],
220 int type[],int ntype,double nbfp[],double Vnb[],
221 double tabscale, double VFtab[]);
222 void mcinl3120_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
223 double shiftvec[],int gid[],double pos[],
224 double charge[],double facel,double Vc[],
225 int type[],int ntype,double nbfp[],double Vnb[],
226 double tabscale, double VFtab[]);
227 void mcinl3130_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
228 double shiftvec[],int gid[],double pos[],
229 double charge[],double facel,double Vc[],
230 int type[],int ntype,double nbfp[],double Vnb[],
231 double tabscale, double VFtab[]);
232 void mcinl3300_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
233 double shiftvec[],int gid[],double pos[],
234 double charge[],double facel,double Vc[],
235 int type[],int ntype,double nbfp[],double Vnb[],
236 double tabscale,double VFtab[]);
237 void mcinl3320_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
238 double shiftvec[],int gid[],double pos[],
239 double charge[],double facel,double Vc[],
240 int type[],int ntype,double nbfp[],double Vnb[],
241 double tabscale,double VFtab[]);
242 void mcinl3330_sse2(int nri,int iinr[],int jindex[],int jjnr[],int shift[],
243 double shiftvec[],int gid[],double pos[],
244 double charge[],double facel,double Vc[],
245 int type[],int ntype,double nbfp[],double Vnb[],
246 double tabscale,double VFtab[]);
248 #endif
249 #endif