nb_kernel334_ppc_altivec.c
来自「最著名最快的分子模拟软件」· C语言 代码 · 共 1,610 行 · 第 1/5 页
C
1,610 行
rsq11 = vec_madd(dy11,dy11,rsq11); rsq22 = vec_madd(dy22,dy22,rsq22); rsq23 = vec_madd(dy23,dy23,rsq23); rsq24 = vec_madd(dy24,dy24,rsq24); rsq32 = vec_madd(dy32,dy32,rsq32); rsq33 = vec_madd(dy33,dy33,rsq33); rsq34 = vec_madd(dy34,dy34,rsq34); rsq42 = vec_madd(dy42,dy42,rsq42); rsq43 = vec_madd(dy43,dy43,rsq43); rsq44 = vec_madd(dy44,dy44,rsq44); rsq11 = vec_madd(dz11,dz11,rsq11); rsq22 = vec_madd(dz22,dz22,rsq22); rsq23 = vec_madd(dz23,dz23,rsq23); rsq24 = vec_madd(dz24,dz24,rsq24); rsq32 = vec_madd(dz32,dz32,rsq32); rsq33 = vec_madd(dz33,dz33,rsq33); rsq34 = vec_madd(dz34,dz34,rsq34); rsq42 = vec_madd(dz42,dz42,rsq42); rsq43 = vec_madd(dz43,dz43,rsq43); rsq44 = vec_madd(dz44,dz44,rsq44); rinv11 = do_invsqrt(rsq11); do_9_invsqrt(rsq22,rsq23,rsq24, rsq32,rsq33,rsq34, rsq42,rsq43,rsq44, &rinv22,&rinv23,&rinv24, &rinv32,&rinv33,&rinv34, &rinv42,&rinv43,&rinv44); r11 = vec_madd(rsq11,rinv11,nul); r22 = vec_madd(rsq22,rinv22,nul); r23 = vec_madd(rsq23,rinv23,nul); r24 = vec_madd(rsq24,rinv24,nul); r32 = vec_madd(rsq32,rinv32,nul); r33 = vec_madd(rsq33,rinv33,nul); r34 = vec_madd(rsq34,rinv34,nul); r42 = vec_madd(rsq42,rinv42,nul); r43 = vec_madd(rsq43,rinv43,nul); r44 = vec_madd(rsq44,rinv44,nul); do_vonly_4_ljctable_lj(VFtab,vec_madd(r11,tsc,nul),&VVd,&VVr); do_vonly_4_ljctable_coul(VFtab,vec_madd(r22,tsc,nul),&VV22c); do_vonly_4_ljctable_coul(VFtab,vec_madd(r23,tsc,nul),&VV23c); do_vonly_4_ljctable_coul(VFtab,vec_madd(r24,tsc,nul),&VV24c); do_vonly_4_ljctable_coul(VFtab,vec_madd(r32,tsc,nul),&VV32c); do_vonly_4_ljctable_coul(VFtab,vec_madd(r33,tsc,nul),&VV33c); do_vonly_4_ljctable_coul(VFtab,vec_madd(r34,tsc,nul),&VV34c); do_vonly_4_ljctable_coul(VFtab,vec_madd(r42,tsc,nul),&VV42c); do_vonly_4_ljctable_coul(VFtab,vec_madd(r43,tsc,nul),&VV43c); do_vonly_4_ljctable_coul(VFtab,vec_madd(r44,tsc,nul),&VV44c); Vvdwtot = vec_madd(c6,VVd,Vvdwtot); Vvdwtot = vec_madd(c12,VVr,Vvdwtot); vctot = vec_madd(qqHH,VV22c,vctot); vctot = vec_madd(qqHH,VV23c,vctot); vctot = vec_madd(qqMH,VV24c,vctot); vctot = vec_madd(qqHH,VV32c,vctot); vctot = vec_madd(qqHH,VV33c,vctot); vctot = vec_madd(qqMH,VV34c,vctot); vctot = vec_madd(qqMH,VV42c,vctot); vctot = vec_madd(qqMH,VV43c,vctot); vctot = vec_madd(qqMM,VV44c,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_4atoms(pos+j3a,pos+j3b,pos+j3c, &jx1,&jy1,&jz1,&jx2,&jy2,&jz2, &jx3,&jy3,&jz3,&jx4,&jy4,&jz4); qqMMt = vec_sld(qqMM,nul,4); qqMHt = vec_sld(qqMH,nul,4); qqHHt = vec_sld(qqHH,nul,4); c6t = vec_sld(c6,nul,4); c12t = vec_sld(c12,nul,4); dx11 = vec_sub(ix1,jx1); dy11 = vec_sub(iy1,jy1); dz11 = vec_sub(iz1,jz1); dx22 = vec_sub(ix2,jx2); dy22 = vec_sub(iy2,jy2); dz22 = vec_sub(iz2,jz2); dx23 = vec_sub(ix2,jx3); dy23 = vec_sub(iy2,jy3); dz23 = vec_sub(iz2,jz3); dx24 = vec_sub(ix2,jx4); dy24 = vec_sub(iy2,jy4); dz24 = vec_sub(iz2,jz4); dx32 = vec_sub(ix3,jx2); dy32 = vec_sub(iy3,jy2); dz32 = vec_sub(iz3,jz2); dx33 = vec_sub(ix3,jx3); dy33 = vec_sub(iy3,jy3); dz33 = vec_sub(iz3,jz3); dx34 = vec_sub(ix3,jx4); dy34 = vec_sub(iy3,jy4); dz34 = vec_sub(iz3,jz4); dx42 = vec_sub(ix4,jx2); dy42 = vec_sub(iy4,jy2); dz42 = vec_sub(iz4,jz2); dx43 = vec_sub(ix4,jx3); dy43 = vec_sub(iy4,jy3); dz43 = vec_sub(iz4,jz3); dx44 = vec_sub(ix4,jx4); dy44 = vec_sub(iy4,jy4); dz44 = vec_sub(iz4,jz4); rsq11 = vec_madd(dx11,dx11,nul); rsq22 = vec_madd(dx22,dx22,nul); rsq23 = vec_madd(dx23,dx23,nul); rsq24 = vec_madd(dx24,dx24,nul); rsq32 = vec_madd(dx32,dx32,nul); rsq33 = vec_madd(dx33,dx33,nul); rsq34 = vec_madd(dx34,dx34,nul); rsq42 = vec_madd(dx42,dx42,nul); rsq43 = vec_madd(dx43,dx43,nul); rsq44 = vec_madd(dx44,dx44,nul); rsq11 = vec_madd(dy11,dy11,rsq11); rsq22 = vec_madd(dy22,dy22,rsq22); rsq23 = vec_madd(dy23,dy23,rsq23); rsq24 = vec_madd(dy24,dy24,rsq24); rsq32 = vec_madd(dy32,dy32,rsq32); rsq33 = vec_madd(dy33,dy33,rsq33); rsq34 = vec_madd(dy34,dy34,rsq34); rsq42 = vec_madd(dy42,dy42,rsq42); rsq43 = vec_madd(dy43,dy43,rsq43); rsq44 = vec_madd(dy44,dy44,rsq44); rsq11 = vec_madd(dz11,dz11,rsq11); rsq22 = vec_madd(dz22,dz22,rsq22); rsq23 = vec_madd(dz23,dz23,rsq23); rsq24 = vec_madd(dz24,dz24,rsq24); rsq32 = vec_madd(dz32,dz32,rsq32); rsq33 = vec_madd(dz33,dz33,rsq33); rsq34 = vec_madd(dz34,dz34,rsq34); rsq42 = vec_madd(dz42,dz42,rsq42); rsq43 = vec_madd(dz43,dz43,rsq43); rsq44 = vec_madd(dz44,dz44,rsq44); zero_highest_element_in_vector(&rsq11); zero_highest_element_in_9_vectors(&rsq22,&rsq23,&rsq24, &rsq32,&rsq33,&rsq34, &rsq42,&rsq43,&rsq44); rinv11 = do_invsqrt(rsq11); do_9_invsqrt(rsq22,rsq23,rsq24, rsq32,rsq33,rsq34, rsq42,rsq43,rsq44, &rinv22,&rinv23,&rinv24, &rinv32,&rinv33,&rinv34, &rinv42,&rinv43,&rinv44); zero_highest_element_in_vector(&rinv11); zero_highest_element_in_9_vectors(&rinv22,&rinv23,&rinv24, &rinv32,&rinv33,&rinv34, &rinv42,&rinv43,&rinv44); r11 = vec_madd(rsq11,rinv11,nul); r22 = vec_madd(rsq22,rinv22,nul); r23 = vec_madd(rsq23,rinv23,nul); r24 = vec_madd(rsq24,rinv24,nul); r32 = vec_madd(rsq32,rinv32,nul); r33 = vec_madd(rsq33,rinv33,nul); r34 = vec_madd(rsq34,rinv34,nul); r42 = vec_madd(rsq42,rinv42,nul); r43 = vec_madd(rsq43,rinv43,nul); r44 = vec_madd(rsq44,rinv44,nul); do_vonly_3_ljctable_lj(VFtab,vec_madd(r11,tsc,nul),&VVd,&VVr); do_vonly_3_ljctable_coul(VFtab,vec_madd(r22,tsc,nul),&VV22c); do_vonly_3_ljctable_coul(VFtab,vec_madd(r23,tsc,nul),&VV23c); do_vonly_3_ljctable_coul(VFtab,vec_madd(r24,tsc,nul),&VV24c); do_vonly_3_ljctable_coul(VFtab,vec_madd(r32,tsc,nul),&VV32c); do_vonly_3_ljctable_coul(VFtab,vec_madd(r33,tsc,nul),&VV33c); do_vonly_3_ljctable_coul(VFtab,vec_madd(r34,tsc,nul),&VV34c); do_vonly_3_ljctable_coul(VFtab,vec_madd(r42,tsc,nul),&VV42c); do_vonly_3_ljctable_coul(VFtab,vec_madd(r43,tsc,nul),&VV43c); do_vonly_3_ljctable_coul(VFtab,vec_madd(r44,tsc,nul),&VV44c); Vvdwtot = vec_madd(c6t,VVd,Vvdwtot); Vvdwtot = vec_madd(c12t,VVr,Vvdwtot); vctot = vec_madd(qqHHt,VV22c,vctot); vctot = vec_madd(qqHHt,VV23c,vctot); vctot = vec_madd(qqMHt,VV24c,vctot); vctot = vec_madd(qqHHt,VV32c,vctot); vctot = vec_madd(qqHHt,VV33c,vctot); vctot = vec_madd(qqMHt,VV34c,vctot); vctot = vec_madd(qqMHt,VV42c,vctot); vctot = vec_madd(qqMHt,VV43c,vctot); vctot = vec_madd(qqMMt,VV44c,vctot); } else if(k<(nj1-1)) { jnra = jjnr[k]; jnrb = jjnr[k+1]; j3a = 3*jnra; j3b = 3*jnrb; load_2_4atoms(pos+j3a,pos+j3b, &jx1,&jy1,&jz1,&jx2,&jy2,&jz2, &jx3,&jy3,&jz3,&jx4,&jy4,&jz4); qqMMt = vec_sld(qqMM,nul,8); qqMHt = vec_sld(qqMH,nul,8); qqHHt = vec_sld(qqHH,nul,8); c6t = vec_sld(c6,nul,8); c12t = vec_sld(c12,nul,8); dx11 = vec_sub(ix1,jx1); dy11 = vec_sub(iy1,jy1); dz11 = vec_sub(iz1,jz1); dx22 = vec_sub(ix2,jx2); dy22 = vec_sub(iy2,jy2); dz22 = vec_sub(iz2,jz2); dx23 = vec_sub(ix2,jx3); dy23 = vec_sub(iy2,jy3); dz23 = vec_sub(iz2,jz3); dx24 = vec_sub(ix2,jx4); dy24 = vec_sub(iy2,jy4); dz24 = vec_sub(iz2,jz4); dx32 = vec_sub(ix3,jx2); dy32 = vec_sub(iy3,jy2); dz32 = vec_sub(iz3,jz2); dx33 = vec_sub(ix3,jx3); dy33 = vec_sub(iy3,jy3); dz33 = vec_sub(iz3,jz3); dx34 = vec_sub(ix3,jx4); dy34 = vec_sub(iy3,jy4); dz34 = vec_sub(iz3,jz4); dx42 = vec_sub(ix4,jx2); dy42 = vec_sub(iy4,jy2); dz42 = vec_sub(iz4,jz2); dx43 = vec_sub(ix4,jx3); dy43 = vec_sub(iy4,jy3); dz43 = vec_sub(iz4,jz3); dx44 = vec_sub(ix4,jx4); dy44 = vec_sub(iy4,jy4); dz44 = vec_sub(iz4,jz4); rsq11 = vec_madd(dx11,dx11,nul); rsq22 = vec_madd(dx22,dx22,nul); rsq23 = vec_madd(dx23,dx23,nul); rsq24 = vec_madd(dx24,dx24,nul); rsq32 = vec_madd(dx32,dx32,nul); rsq33 = vec_madd(dx33,dx33,nul); rsq34 = vec_madd(dx34,dx34,nul); rsq42 = vec_madd(dx42,dx42,nul); rsq43 = vec_madd(dx43,dx43,nul); rsq44 = vec_madd(dx44,dx44,nul); rsq11 = vec_madd(dy11,dy11,rsq11); rsq22 = vec_madd(dy22,dy22,rsq22); rsq23 = vec_madd(dy23,dy23,rsq23); rsq24 = vec_madd(dy24,dy24,rsq24); rsq32 = vec_madd(dy32,dy32,rsq32); rsq33 = vec_madd(dy33,dy33,rsq33); rsq34 = vec_madd(dy34,dy34,rsq34); rsq42 = vec_madd(dy42,dy42,rsq42); rsq43 = vec_madd(dy43,dy43,rsq43); rsq44 = vec_madd(dy44,dy44,rsq44); rsq11 = vec_madd(dz11,dz11,rsq11); rsq22 = vec_madd(dz22,dz22,rsq22); rsq23 = vec_madd(dz23,dz23,rsq23); rsq24 = vec_madd(dz24,dz24,rsq24); rsq32 = vec_madd(dz32,dz32,rsq32); rsq33 = vec_madd(dz33,dz33,rsq33); rsq34 = vec_madd(dz34,dz34,rsq34); rsq42 = vec_madd(dz42,dz42,rsq42); rsq43 = vec_madd(dz43,dz43,rsq43); rsq44 = vec_madd(dz44,dz44,rsq44); zero_highest_2_elements_in_vector(&rsq11); zero_highest_2_elements_in_9_vectors(&rsq22,&rsq23,&rsq24, &rsq32,&rsq33,&rsq34, &rsq42,&rsq43,&rsq44); rinv11 = do_invsqrt(rsq11); do_9_invsqrt(rsq22,rsq23,rsq24, rsq32,rsq33,rsq34, rsq42,rsq43,rsq44, &rinv22,&rinv23,&rinv24, &rinv32,&rinv33,&rinv34, &rinv42,&rinv43,&rinv44); zero_highest_2_elements_in_vector(&rinv11); zero_highest_2_elements_in_9_vectors(&rinv22,&rinv23,&rinv24, &rinv32,&rinv33,&rinv34, &rinv42,&rinv43,&rinv44); r11 = vec_madd(rsq11,rinv11,nul); r22 = vec_madd(rsq22,rinv22,nul); r23 = vec_madd(rsq23,rinv23,nul); r24 = vec_madd(rsq24,rinv24,nul); r32 = vec_madd(rsq32,rinv32,nul); r33 = vec_madd(rsq33,rinv33,nul); r34 = vec_madd(rsq34,rinv34,nul); r42 = vec_madd(rsq42,rinv42,nul); r43 = vec_madd(rsq43,rinv43,nul); r44 = vec_madd(rsq44,rinv44,nul); do_vonly_2_ljctable_lj(VFtab,vec_madd(r11,tsc,nul),&VVd,&VVr); do_vonly_2_ljctable_coul(VFtab,vec_madd(r22,tsc,nul),&VV22c); do_vonly_2_ljctable_coul(VFtab,vec_madd(r23,tsc,nul),&VV23c); do_vonly_2_ljctable_coul(VFtab,vec_madd(r24,tsc,nul),&VV24c); do_vonly_2_ljctable_coul(VFtab,vec_madd(r32,tsc,nul),&VV32c); do_vonly_2_ljctable_coul(VFtab,vec_madd(r33,tsc,nul),&VV33c); do_vonly_2_ljctable_coul(VFtab,vec_madd(r34,tsc,nul),&VV34c); do_vonly_2_ljctable_coul(VFtab,vec_madd(r42,tsc,nul),&VV42c); do_vonly_2_ljctable_coul(VFtab,vec_madd(r43,tsc,nul),&VV43c); do_vonly_2_ljctable_coul(VFtab,vec_madd(r44,tsc,nul),&VV44c); Vvdwtot = vec_madd(c6t,VVd,Vvdwtot); Vvdwtot = vec_madd(c12t,VVr,Vvdwtot); vctot = vec_madd(qqHHt,VV22c,vctot); vctot = vec_madd(qqHHt,VV23c,vctot); vctot = vec_madd(qqMHt,VV24c,vctot); vctot = vec_madd(qqHHt,VV32c,vctot); vctot = vec_madd(qqHHt,VV33c,vctot); vctot
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?