nb_kernel102_ppc_altivec.c
来自「最著名最快的分子模拟软件」· C语言 代码 · 共 1,345 行 · 第 1/4 页
C
1,345 行
dz23 = vec_sub(iz2,jz3); dx31 = vec_sub(ix3,jx1); dx32 = vec_sub(ix3,jx2); dx33 = vec_sub(ix3,jx3); dy31 = vec_sub(iy3,jy1); dy32 = vec_sub(iy3,jy2); dy33 = vec_sub(iy3,jy3); dz31 = vec_sub(iz3,jz1); dz32 = vec_sub(iz3,jz2); dz33 = vec_sub(iz3,jz3); rsq11 = vec_madd(dx11,dx11,nul); rsq12 = vec_madd(dx12,dx12,nul); rsq13 = vec_madd(dx13,dx13,nul); rsq21 = vec_madd(dx21,dx21,nul); rsq22 = vec_madd(dx22,dx22,nul); rsq23 = vec_madd(dx23,dx23,nul); rsq31 = vec_madd(dx31,dx31,nul); rsq32 = vec_madd(dx32,dx32,nul); rsq33 = vec_madd(dx33,dx33,nul); rsq11 = vec_madd(dy11,dy11,rsq11); rsq12 = vec_madd(dy12,dy12,rsq12); rsq13 = vec_madd(dy13,dy13,rsq13); rsq21 = vec_madd(dy21,dy21,rsq21); rsq22 = vec_madd(dy22,dy22,rsq22); rsq23 = vec_madd(dy23,dy23,rsq23); rsq31 = vec_madd(dy31,dy31,rsq31); rsq32 = vec_madd(dy32,dy32,rsq32); rsq33 = vec_madd(dy33,dy33,rsq33); rsq11 = vec_madd(dz11,dz11,rsq11); rsq12 = vec_madd(dz12,dz12,rsq12); rsq13 = vec_madd(dz13,dz13,rsq13); rsq21 = vec_madd(dz21,dz21,rsq21); rsq22 = vec_madd(dz22,dz22,rsq22); rsq23 = vec_madd(dz23,dz23,rsq23); rsq31 = vec_madd(dz31,dz31,rsq31); rsq32 = vec_madd(dz32,dz32,rsq32); rsq33 = vec_madd(dz33,dz33,rsq33); do_9_invsqrt(rsq11,rsq12,rsq13, rsq21,rsq22,rsq23, rsq31,rsq32,rsq33, &rinv11,&rinv12,&rinv13, &rinv21,&rinv22,&rinv23, &rinv31,&rinv32,&rinv33); vctot = vec_madd(rinv11,qqOO,vctot); vctot = vec_madd(rinv12,qqOH,vctot); vctot = vec_madd(rinv13,qqOH,vctot); vctot = vec_madd(rinv21,qqOH,vctot); vctot = vec_madd(rinv22,qqHH,vctot); vctot = vec_madd(rinv23,qqHH,vctot); vctot = vec_madd(rinv31,qqOH,vctot); vctot = vec_madd(rinv32,qqHH,vctot); vctot = vec_madd(rinv33,qqHH,vctot); } if(k<(nj1-2)) { jnra = jjnr[k]; jnrb = jjnr[k+1]; jnrc = jjnr[k+2]; j3a = 3*jnra; j3b = 3*jnrb; j3c = 3*jnrc; load_3_3atoms(pos+j3a,pos+j3b,pos+j3c, &jx1,&jy1,&jz1,&jx2,&jy2,&jz2,&jx3,&jy3,&jz3); qqOOt = vec_sld(qqOO,nul,4); qqOHt = vec_sld(qqOH,nul,4); qqHHt = vec_sld(qqHH,nul,4); dx11 = vec_sub(ix1,jx1); dx12 = vec_sub(ix1,jx2); dx13 = vec_sub(ix1,jx3); dy11 = vec_sub(iy1,jy1); dy12 = vec_sub(iy1,jy2); dy13 = vec_sub(iy1,jy3); dz11 = vec_sub(iz1,jz1); dz12 = vec_sub(iz1,jz2); dz13 = vec_sub(iz1,jz3); dx21 = vec_sub(ix2,jx1); dx22 = vec_sub(ix2,jx2); dx23 = vec_sub(ix2,jx3); dy21 = vec_sub(iy2,jy1); dy22 = vec_sub(iy2,jy2); dy23 = vec_sub(iy2,jy3); dz21 = vec_sub(iz2,jz1); dz22 = vec_sub(iz2,jz2); dz23 = vec_sub(iz2,jz3); dx31 = vec_sub(ix3,jx1); dx32 = vec_sub(ix3,jx2); dx33 = vec_sub(ix3,jx3); dy31 = vec_sub(iy3,jy1); dy32 = vec_sub(iy3,jy2); dy33 = vec_sub(iy3,jy3); dz31 = vec_sub(iz3,jz1); dz32 = vec_sub(iz3,jz2); dz33 = vec_sub(iz3,jz3); rsq11 = vec_madd(dx11,dx11,nul); rsq12 = vec_madd(dx12,dx12,nul); rsq13 = vec_madd(dx13,dx13,nul); rsq21 = vec_madd(dx21,dx21,nul); rsq22 = vec_madd(dx22,dx22,nul); rsq23 = vec_madd(dx23,dx23,nul); rsq31 = vec_madd(dx31,dx31,nul); rsq32 = vec_madd(dx32,dx32,nul); rsq33 = vec_madd(dx33,dx33,nul); rsq11 = vec_madd(dy11,dy11,rsq11); rsq12 = vec_madd(dy12,dy12,rsq12); rsq13 = vec_madd(dy13,dy13,rsq13); rsq21 = vec_madd(dy21,dy21,rsq21); rsq22 = vec_madd(dy22,dy22,rsq22); rsq23 = vec_madd(dy23,dy23,rsq23); rsq31 = vec_madd(dy31,dy31,rsq31); rsq32 = vec_madd(dy32,dy32,rsq32); rsq33 = vec_madd(dy33,dy33,rsq33); rsq11 = vec_madd(dz11,dz11,rsq11); rsq12 = vec_madd(dz12,dz12,rsq12); rsq13 = vec_madd(dz13,dz13,rsq13); rsq21 = vec_madd(dz21,dz21,rsq21); rsq22 = vec_madd(dz22,dz22,rsq22); rsq23 = vec_madd(dz23,dz23,rsq23); rsq31 = vec_madd(dz31,dz31,rsq31); rsq32 = vec_madd(dz32,dz32,rsq32); rsq33 = vec_madd(dz33,dz33,rsq33); do_9_invsqrt(rsq11,rsq12,rsq13, rsq21,rsq22,rsq23, rsq31,rsq32,rsq33, &rinv11,&rinv12,&rinv13, &rinv21,&rinv22,&rinv23, &rinv31,&rinv32,&rinv33); zero_highest_element_in_9_vectors(&rinv11,&rinv12,&rinv13, &rinv21,&rinv22,&rinv23, &rinv31,&rinv32,&rinv33); vctot = vec_madd(rinv11,qqOOt,vctot); vctot = vec_madd(rinv12,qqOHt,vctot); vctot = vec_madd(rinv13,qqOHt,vctot); vctot = vec_madd(rinv21,qqOHt,vctot); vctot = vec_madd(rinv22,qqHHt,vctot); vctot = vec_madd(rinv23,qqHHt,vctot); vctot = vec_madd(rinv31,qqOHt,vctot); vctot = vec_madd(rinv32,qqHHt,vctot); vctot = vec_madd(rinv33,qqHHt,vctot); } else if(k<(nj1-1)) { jnra = jjnr[k]; jnrb = jjnr[k+1]; j3a = 3*jnra; j3b = 3*jnrb; load_2_3atoms(pos+j3a,pos+j3b, &jx1,&jy1,&jz1,&jx2,&jy2,&jz2,&jx3,&jy3,&jz3); qqOOt = vec_sld(qqOO,nul,8); qqOHt = vec_sld(qqOH,nul,8); qqHHt = vec_sld(qqHH,nul,8); dx11 = vec_sub(ix1,jx1); dx12 = vec_sub(ix1,jx2); dx13 = vec_sub(ix1,jx3); dy11 = vec_sub(iy1,jy1); dy12 = vec_sub(iy1,jy2); dy13 = vec_sub(iy1,jy3); dz11 = vec_sub(iz1,jz1); dz12 = vec_sub(iz1,jz2); dz13 = vec_sub(iz1,jz3); dx21 = vec_sub(ix2,jx1); dx22 = vec_sub(ix2,jx2); dx23 = vec_sub(ix2,jx3); dy21 = vec_sub(iy2,jy1); dy22 = vec_sub(iy2,jy2); dy23 = vec_sub(iy2,jy3); dz21 = vec_sub(iz2,jz1); dz22 = vec_sub(iz2,jz2); dz23 = vec_sub(iz2,jz3); dx31 = vec_sub(ix3,jx1); dx32 = vec_sub(ix3,jx2); dx33 = vec_sub(ix3,jx3); dy31 = vec_sub(iy3,jy1); dy32 = vec_sub(iy3,jy2); dy33 = vec_sub(iy3,jy3); dz31 = vec_sub(iz3,jz1); dz32 = vec_sub(iz3,jz2); dz33 = vec_sub(iz3,jz3); rsq11 = vec_madd(dx11,dx11,nul); rsq12 = vec_madd(dx12,dx12,nul); rsq13 = vec_madd(dx13,dx13,nul); rsq21 = vec_madd(dx21,dx21,nul); rsq22 = vec_madd(dx22,dx22,nul); rsq23 = vec_madd(dx23,dx23,nul); rsq31 = vec_madd(dx31,dx31,nul); rsq32 = vec_madd(dx32,dx32,nul); rsq33 = vec_madd(dx33,dx33,nul); rsq11 = vec_madd(dy11,dy11,rsq11); rsq12 = vec_madd(dy12,dy12,rsq12); rsq13 = vec_madd(dy13,dy13,rsq13); rsq21 = vec_madd(dy21,dy21,rsq21); rsq22 = vec_madd(dy22,dy22,rsq22); rsq23 = vec_madd(dy23,dy23,rsq23); rsq31 = vec_madd(dy31,dy31,rsq31); rsq32 = vec_madd(dy32,dy32,rsq32); rsq33 = vec_madd(dy33,dy33,rsq33); rsq11 = vec_madd(dz11,dz11,rsq11); rsq12 = vec_madd(dz12,dz12,rsq12); rsq13 = vec_madd(dz13,dz13,rsq13); rsq21 = vec_madd(dz21,dz21,rsq21); rsq22 = vec_madd(dz22,dz22,rsq22); rsq23 = vec_madd(dz23,dz23,rsq23); rsq31 = vec_madd(dz31,dz31,rsq31); rsq32 = vec_madd(dz32,dz32,rsq32); rsq33 = vec_madd(dz33,dz33,rsq33); do_9_invsqrt(rsq11,rsq12,rsq13, rsq21,rsq22,rsq23, rsq31,rsq32,rsq33, &rinv11,&rinv12,&rinv13, &rinv21,&rinv22,&rinv23, &rinv31,&rinv32,&rinv33); zero_highest_2_elements_in_9_vectors(&rinv11,&rinv12,&rinv13, &rinv21,&rinv22,&rinv23, &rinv31,&rinv32,&rinv33); vctot = vec_madd(rinv11,qqOOt,vctot); vctot = vec_madd(rinv12,qqOHt,vctot); vctot = vec_madd(rinv13,qqOHt,vctot); vctot = vec_madd(rinv21,qqOHt,vctot); vctot = vec_madd(rinv22,qqHHt,vctot); vctot = vec_madd(rinv23,qqHHt,vctot); vctot = vec_madd(rinv31,qqOHt,vctot); vctot = vec_madd(rinv32,qqHHt,vctot); vctot = vec_madd(rinv33,qqHHt,vctot); } else if(k<nj1) { jnra = jjnr[k]; j3a = 3*jnra; load_1_3atoms(pos+j3a, &jx1,&jy1,&jz1,&jx2,&jy2,&jz2,&jx3,&jy3,&jz3); qqOOt = vec_sld(qqOO,nul,12); qqOHt = vec_sld(qqOH,nul,12); qqHHt = vec_sld(qqHH,nul,12); dx11 = vec_sub(ix1,jx1); dx12 = vec_sub(ix1,jx2); dx13 = vec_sub(ix1,jx3); dy11 = vec_sub(iy1,jy1); dy12 = vec_sub(iy1,jy2); dy13 = vec_sub(iy1,jy3); dz11 = vec_sub(iz1,jz1); dz12 = vec_sub(iz1,jz2); dz13 = vec_sub(iz1,jz3); dx21 = vec_sub(ix2,jx1); dx22 = vec_sub(ix2,jx2); dx23 = vec_sub(ix2,jx3); dy21 = vec_sub(iy2,jy1); dy22 = vec_sub(iy2,jy2); dy23 = vec_sub(iy2,jy3); dz21 = vec_sub(iz2,jz1); dz22 = vec_sub(iz2,jz2); dz23 = vec_sub(iz2,jz3); dx31 = vec_sub(ix3,jx1); dx32 = vec_sub(ix3,jx2); dx33 = vec_sub(ix3,jx3); dy31 = vec_sub(iy3,jy1); dy32 = vec_sub(iy3,jy2); dy33 = vec_sub(iy3,jy3); dz31 = vec_sub(iz3,jz1); dz32 = vec_sub(iz3,jz2); dz33 = vec_sub(iz3,jz3); rsq11 = vec_madd(dx11,dx11,nul); rsq12 = vec_madd(dx12,dx12,nul); rsq13 = vec_madd(dx13,dx13,nul); rsq21 = vec_madd(dx21,dx21,nul); rsq22 = vec_madd(dx22,dx22,nul); rsq23 = vec_madd(dx23,dx23,nul); rsq31 = vec_madd(dx31,dx31,nul); rsq32 = vec_madd(dx32,dx32,nul); rsq33 = vec_madd(dx33,dx33,nul); rsq11 = vec_madd(dy11,dy11,rsq11); rsq12 = vec_madd(dy12,dy12,rsq12); rsq13 = vec_madd(dy13,dy13,rsq13); rsq21 = vec_madd(dy21,dy21,rsq21); rsq22 = vec_madd(dy22,dy22,rsq22); rsq23 = vec_madd(dy23,dy23,rsq23); rsq31 = vec_madd(dy31,dy31,rsq31); rsq32 = vec_madd(dy32,dy32,rsq32); rsq33 = vec_madd(dy33,dy33,rsq33); rsq11 = vec_madd(dz11,dz11,rsq11); rsq12 = vec_madd(dz12,dz12,rsq12); rsq13 = vec_madd(dz13,dz13,rsq13); rsq21 = vec_madd(dz21,dz21,rsq21); rsq22 = vec_madd(dz22,dz22,rsq22); rsq23 = vec_madd(dz23,dz23,rsq23); rsq31 = vec_madd(dz31,dz31,rsq31); rsq32 = vec_madd(dz32,dz32,rsq32); rsq33 = vec_madd(dz33,dz33,rsq33); do_9_invsqrt(rsq11,rsq12,rsq13, rsq21,rsq22,rsq23, rsq31,rsq32,rsq33, &rinv11,&rinv12,&rinv13, &rinv21,&rinv22,&rinv23, &rinv31,&rinv32,&rinv33); zero_highest_3_elements_in_9_vectors(&rinv11,&rinv12,&rinv13, &rinv21,&rinv22,&rinv23, &rinv31,&rinv32,&rinv33); vctot = vec_madd(rinv11,qqOOt,vctot); vctot = vec_madd(rinv12,qqOHt,vctot); vctot = vec_madd(rinv13,qqOHt,vctot); vctot = vec_madd(rinv21,qqOHt,vctot); vctot = vec_madd(rinv22,qqHHt,vctot); vctot = vec_madd(rinv23,qqHHt,vctot); vctot = vec_madd(rinv31,qqOHt,vctot); vctot = vec_madd(rinv32,qqHHt,vctot); vctot = vec_madd(rinv33,qqHHt,vctot); } /* update outer data */ add_vector_to_float(Vc+gid[n],vctot); ninner += nj1 - nj0; }#ifdef GMX_THREADS nouter += nn1 - nn0; } while (nn1<nri);#else nouter = nri;#endif *outeriter = nouter; *inneriter = ninner;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?