nb_kernel232_ppc_altivec.c
来自「最著名最快的分子模拟软件」· C语言 代码 · 共 1,619 行 · 第 1/5 页
C
1,619 行
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); zero_highest_2_elements_in_9_vectors(&rsq11,&rsq12,&rsq13, &rsq21,&rsq22,&rsq23, &rsq31,&rsq32,&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); r = vec_madd(rinv11,rsq11,nul); do_2_ljtable_lj(VFtab,vec_madd(r,tsc,nul),&VVd,&FFd,&VVr,&FFr); Vvdwtot = vec_madd(c6t,VVd,Vvdwtot); fstmp = vec_nmsub(c6t,FFd,nul); Vvdwtot = vec_madd(c12t,VVr,Vvdwtot); fstmp = vec_nmsub(c12t,FFr,fstmp); fstmp = vec_madd(fstmp,tsc,nul); krsq11 = vec_madd(vkrf,rsq11,nul); krsq12 = vec_madd(vkrf,rsq12,nul); krsq13 = vec_madd(vkrf,rsq13,nul); krsq21 = vec_madd(vkrf,rsq21,nul); krsq22 = vec_madd(vkrf,rsq22,nul); krsq23 = vec_madd(vkrf,rsq23,nul); krsq31 = vec_madd(vkrf,rsq31,nul); krsq32 = vec_madd(vkrf,rsq32,nul); krsq33 = vec_madd(vkrf,rsq33,nul); rinvsq12 = vec_madd(rinv12,rinv12,nul); rinvsq13 = vec_madd(rinv13,rinv13,nul); rinvsq21 = vec_madd(rinv21,rinv21,nul); rinvsq22 = vec_madd(rinv22,rinv22,nul); rinvsq23 = vec_madd(rinv23,rinv23,nul); rinvsq31 = vec_madd(rinv31,rinv31,nul); rinvsq32 = vec_madd(rinv32,rinv32,nul); rinvsq33 = vec_madd(rinv33,rinv33,nul); fs11 = vec_nmsub(vec_two(),krsq11,rinv11); vc11 = vec_add(rinv11,krsq11); vc12 = vec_add(rinv12,krsq12); vc13 = vec_add(rinv13,krsq13); vc21 = vec_add(rinv21,krsq21); vc22 = vec_add(rinv22,krsq22); vc23 = vec_add(rinv23,krsq23); vc31 = vec_add(rinv31,krsq31); vc32 = vec_add(rinv32,krsq32); vc33 = vec_add(rinv33,krsq33); fs11 = vec_madd(qqOOt,fs11,nul); vc11 = vec_sub(vc11,vcrf); vc12 = vec_sub(vc12,vcrf); vc13 = vec_sub(vc13,vcrf); vc21 = vec_sub(vc21,vcrf); vc22 = vec_sub(vc22,vcrf); vc23 = vec_sub(vc23,vcrf); vc31 = vec_sub(vc31,vcrf); vc32 = vec_sub(vc32,vcrf); vc33 = vec_sub(vc33,vcrf); fs11 = vec_madd(fs11,rinv11,fstmp); fs11 = vec_madd(fs11,rinv11,nul); fs12 = vec_nmsub(vec_two(),krsq12,rinv12); fs13 = vec_nmsub(vec_two(),krsq13,rinv13); fs21 = vec_nmsub(vec_two(),krsq21,rinv21); fs22 = vec_nmsub(vec_two(),krsq22,rinv22); fs23 = vec_nmsub(vec_two(),krsq23,rinv23); fs31 = vec_nmsub(vec_two(),krsq31,rinv31); fs32 = vec_nmsub(vec_two(),krsq32,rinv32); fs33 = vec_nmsub(vec_two(),krsq33,rinv33); fs12 = vec_madd(fs12,qqOHt,nul); fs13 = vec_madd(fs13,qqOHt,nul); fs21 = vec_madd(fs21,qqOHt,nul); fs22 = vec_madd(fs22,qqHHt,nul); fs23 = vec_madd(fs23,qqHHt,nul); fs31 = vec_madd(fs31,qqOHt,nul); fs32 = vec_madd(fs32,qqHHt,nul); fs33 = vec_madd(fs33,qqHHt,nul); fs12 = vec_madd(fs12,rinvsq12,nul); fs13 = vec_madd(fs13,rinvsq13,nul); fs21 = vec_madd(fs21,rinvsq21,nul); fs22 = vec_madd(fs22,rinvsq22,nul); fs23 = vec_madd(fs23,rinvsq23,nul); fs31 = vec_madd(fs31,rinvsq31,nul); fs32 = vec_madd(fs32,rinvsq32,nul); fs33 = vec_madd(fs33,rinvsq33,nul); vctot = vec_madd(qqOOt,vc11,vctot); vctot = vec_madd(qqOHt,vc12,vctot); vctot = vec_madd(qqOHt,vc13,vctot); vctot = vec_madd(qqOHt,vc21,vctot); vctot = vec_madd(qqHHt,vc22,vctot); vctot = vec_madd(qqHHt,vc23,vctot); vctot = vec_madd(qqOHt,vc31,vctot); vctot = vec_madd(qqHHt,vc32,vctot); vctot = vec_madd(qqHHt,vc33,vctot); fix1 = vec_madd(fs11,dx11,fix1); fiy1 = vec_madd(fs11,dy11,fiy1); fiz1 = vec_madd(fs11,dz11,fiz1); fix2 = vec_madd(fs21,dx21,fix2); fiy2 = vec_madd(fs21,dy21,fiy2); fiz2 = vec_madd(fs21,dz21,fiz2); fix3 = vec_madd(fs31,dx31,fix3); fiy3 = vec_madd(fs31,dy31,fiy3); fiz3 = vec_madd(fs31,dz31,fiz3); fix1 = vec_madd(fs12,dx12,fix1); fiy1 = vec_madd(fs12,dy12,fiy1); fiz1 = vec_madd(fs12,dz12,fiz1); fix2 = vec_madd(fs22,dx22,fix2); fiy2 = vec_madd(fs22,dy22,fiy2); fiz2 = vec_madd(fs22,dz22,fiz2); fix3 = vec_madd(fs32,dx32,fix3); fiy3 = vec_madd(fs32,dy32,fiy3); fiz3 = vec_madd(fs32,dz32,fiz3); fix1 = vec_madd(fs13,dx13,fix1); fiy1 = vec_madd(fs13,dy13,fiy1); fiz1 = vec_madd(fs13,dz13,fiz1); fix2 = vec_madd(fs23,dx23,fix2); fiy2 = vec_madd(fs23,dy23,fiy2); fiz2 = vec_madd(fs23,dz23,fiz2); fix3 = vec_madd(fs33,dx33,fix3); fiy3 = vec_madd(fs33,dy33,fiy3); fiz3 = vec_madd(fs33,dz33,fiz3); fjx1 = vec_nmsub(fs11,dx11,nul); fjy1 = vec_nmsub(fs11,dy11,nul); fjz1 = vec_nmsub(fs11,dz11,nul); fjx2 = vec_nmsub(fs12,dx12,nul); fjy2 = vec_nmsub(fs12,dy12,nul); fjz2 = vec_nmsub(fs12,dz12,nul); fjx3 = vec_nmsub(fs13,dx13,nul); fjy3 = vec_nmsub(fs13,dy13,nul); fjz3 = vec_nmsub(fs13,dz13,nul); fjx1 = vec_nmsub(fs21,dx21,fjx1); fjy1 = vec_nmsub(fs21,dy21,fjy1); fjz1 = vec_nmsub(fs21,dz21,fjz1); fjx2 = vec_nmsub(fs22,dx22,fjx2); fjy2 = vec_nmsub(fs22,dy22,fjy2); fjz2 = vec_nmsub(fs22,dz22,fjz2); fjx3 = vec_nmsub(fs23,dx23,fjx3); fjy3 = vec_nmsub(fs23,dy23,fjy3); fjz3 = vec_nmsub(fs23,dz23,fjz3); fjx1 = vec_nmsub(fs31,dx31,fjx1); fjy1 = vec_nmsub(fs31,dy31,fjy1); fjz1 = vec_nmsub(fs31,dz31,fjz1); fjx2 = vec_nmsub(fs32,dx32,fjx2); fjy2 = vec_nmsub(fs32,dy32,fjy2); fjz2 = vec_nmsub(fs32,dz32,fjz2); fjx3 = vec_nmsub(fs33,dx33,fjx3); fjy3 = vec_nmsub(fs33,dy33,fjy3); fjz3 = vec_nmsub(fs33,dz33,fjz3); add_force_to_2_3atoms(faction+j3a,faction+j3b, fjx1,fjy1,fjz1,fjx2,fjy2,fjz2, fjx3,fjy3,fjz3); } 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); c6t = vec_sld(c6,nul,12); c12t = vec_sld(c12,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); zero_highest_3_elements_in_9_vectors(&rsq11,&rsq12,&rsq13, &rsq21,&rsq22,&rsq23, &rsq31,&rsq32,&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); r = vec_madd(rinv11,rsq11,nul); do_1_ljtable_lj(VFtab,vec_madd(r,tsc,nul),&VVd,&FFd,&VVr,&FFr); Vvdwtot = vec_madd(c6t,VVd,Vvdwtot); fstmp = vec_nmsub(c6t,FFd,nul); Vvdwtot = vec_madd(c12t,VVr,Vvdwtot); fstmp = vec_nmsub(c12t,FFr,fstmp); fstmp = vec_madd(fstmp,tsc,nul); krsq11 = vec_madd(vkrf,rsq11,nul); krsq12 = vec_madd(vkrf,rsq12,nul); krsq13 = vec_madd(vkrf,rsq13,nul); krsq21 = vec_madd(vkrf,rsq21,nul); krsq22 = vec_madd(vkrf,rsq22,nul); krsq23 = vec_madd(vkrf,rsq23,nul); krsq31 = vec_madd(vkrf,rsq31,nul); krsq32 = vec_madd(vkrf,rsq32,nul); krsq33 = vec_madd(vkrf,rsq33,nul); rinvsq12 = vec_madd(rinv12,rinv12,nul); rinvsq13 = vec_madd(rinv13,rinv13,nul); rinvsq21 = vec_madd(rinv21,rinv21,nul); rinvsq22 = vec_madd(rinv22,rinv22,nul); rinvsq23 = vec_madd(rinv23,rinv23,nul); rinvsq31 = vec_madd(rinv31,rinv31,nul); rinvsq32 = vec_madd(rinv32,rinv32,nul); rinvsq33 = vec_madd(rinv33,rinv33,nul); fs11 = vec_nmsub(vec_two(),krsq11,rinv11); vc11 = vec_add(rinv11,krsq11); vc12 = vec_add(rinv12,krsq12); vc13 = vec_add(rinv13,krsq13); vc21 = vec_add(rinv21,krsq21); vc22 = vec_add(rinv22,krsq22); vc23 = vec_add(rinv23,krsq23); vc31 = vec_add(rinv31,krsq31); vc32 = vec_add(rinv32,krsq32);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?