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 + -
显示快捷键?