nb_kernel234_ia32_sse.intel_syntax.s

来自「最著名最快的分子模拟软件」· S 代码 · 共 2,176 行 · 第 1/5 页

S
2,176
字号
    mulps  xmm7, xmm4 ;# fijR     mulps  xmm5, xmm4 ;# Vvdw12     addps  xmm7, [esp + nb234_fstmp]     mulps xmm7, [esp + nb234_tsc]    addps  xmm5, [esp + nb234_Vvdwtot]    movaps [esp + nb234_Vvdwtot], xmm5	xorps xmm2, xmm2	mulps  xmm7, xmm0	subps xmm2, xmm7	movaps xmm0, xmm2	movaps xmm1, xmm2	    movd  eax, mm0    movd  ebx, mm1    movd  ecx, mm2    movd  edx, mm3	xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb234_dxOO]	mulps xmm1, [esp + nb234_dyOO]	mulps xmm2, [esp + nb234_dzOO]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixO]	addps xmm1, [esp + nb234_fiyO]	addps xmm2, [esp + nb234_fizO]	movaps [esp + nb234_fjxO], xmm3	movaps [esp + nb234_fjyO], xmm4	movaps [esp + nb234_fjzO], xmm5	movaps [esp + nb234_fixO], xmm0	movaps [esp + nb234_fiyO], xmm1	movaps [esp + nb234_fizO], xmm2	;# Coulomb interactions 	;# start with H1-H1 interaction 	movaps xmm0, [esp + nb234_rinvH1H1]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb234_krf]	mulps  xmm0, xmm0	;# xmm0=rinvsq 	mulps  xmm5, [esp + nb234_rsqH1H1] ;# xmm5=krsq 	movaps xmm6, xmm5	addps  xmm6, xmm7	;# xmm6=rinv+ krsq 	subps  xmm6, [esp + nb234_crf]	mulps  xmm6, [esp + nb234_qqHH] ;# xmm6=voul=qq*(rinv+ krsq-crf) 	mulps xmm5, [esp + nb234_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb234_qqHH] ;# xmm7 = coul part of fscal 		addps  xmm6, [esp + nb234_vctot] ;# local vctot summation variable 	mulps  xmm0, xmm7		movaps xmm1, xmm0	movaps xmm2, xmm0	xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb234_dxH1H1]	mulps xmm1, [esp + nb234_dyH1H1]	mulps xmm2, [esp + nb234_dzH1H1]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixH1]	addps xmm1, [esp + nb234_fiyH1]	addps xmm2, [esp + nb234_fizH1]	movaps [esp + nb234_fjxH1], xmm3	movaps [esp + nb234_fjyH1], xmm4	movaps [esp + nb234_fjzH1], xmm5	movaps [esp + nb234_fixH1], xmm0	movaps [esp + nb234_fiyH1], xmm1	movaps [esp + nb234_fizH1], xmm2	;# H1-H2 interaction 	movaps xmm0, [esp + nb234_rinvH1H2]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb234_krf]	movaps xmm1, xmm0	mulps  xmm5, [esp + nb234_rsqH1H2] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb234_crf]	mulps  xmm0, xmm0	mulps  xmm4, [esp + nb234_qqHH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb234_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb234_qqHH] ;# xmm7 = coul part of fscal 	addps  xmm6, xmm4	;# add to local vctot 	mulps xmm0, xmm7	;# fsOH1  	movaps xmm1, xmm0	movaps xmm2, xmm0		xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb234_dxH1H2]	mulps xmm1, [esp + nb234_dyH1H2]	mulps xmm2, [esp + nb234_dzH1H2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixH1]	addps xmm1, [esp + nb234_fiyH1]	addps xmm2, [esp + nb234_fizH1]	movaps [esp + nb234_fjxH2], xmm3	movaps [esp + nb234_fjyH2], xmm4	movaps [esp + nb234_fjzH2], xmm5	movaps [esp + nb234_fixH1], xmm0	movaps [esp + nb234_fiyH1], xmm1	movaps [esp + nb234_fizH1], xmm2	;# H1-M interaction  	movaps xmm0, [esp + nb234_rinvH1M]	movaps xmm7, xmm0	;# xmm7=Rinv 	movaps xmm5, [esp + nb234_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb234_rsqH1M] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb234_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb234_qqMH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb234_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb234_qqMH] ;# xmm7 = coul part of fscal 	addps  xmm6, xmm4	;# add to local vctot 	mulps xmm0, xmm7	;# fsOH2 	movaps xmm1, xmm0	movaps xmm2, xmm0	xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb234_dxH1M]	mulps xmm1, [esp + nb234_dyH1M]	mulps xmm2, [esp + nb234_dzH1M]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixH1]	addps xmm1, [esp + nb234_fiyH1]	addps xmm2, [esp + nb234_fizH1]	movaps [esp + nb234_fjxM], xmm3	movaps [esp + nb234_fjyM], xmm4	movaps [esp + nb234_fjzM], xmm5	movaps [esp + nb234_fixH1], xmm0	movaps [esp + nb234_fiyH1], xmm1	movaps [esp + nb234_fizH1], xmm2	;# H2-H1 interaction 	movaps xmm0, [esp + nb234_rinvH2H1]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb234_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb234_rsqH2H1] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb234_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb234_qqHH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb234_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb234_qqHH] ;# xmm7 = coul part of fscal 	addps  xmm6, xmm4	;# add to local vctot 	mulps xmm0, xmm7	;# fsOH2 	movaps xmm1, xmm0	movaps xmm2, xmm0	movaps xmm3, [esp + nb234_fjxH1]	movaps xmm4, [esp + nb234_fjyH1]	movaps xmm5, [esp + nb234_fjzH1]	mulps xmm0, [esp + nb234_dxH2H1]	mulps xmm1, [esp + nb234_dyH2H1]	mulps xmm2, [esp + nb234_dzH2H1]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixH2]	addps xmm1, [esp + nb234_fiyH2]	addps xmm2, [esp + nb234_fizH2]	movaps [esp + nb234_fjxH1], xmm3	movaps [esp + nb234_fjyH1], xmm4	movaps [esp + nb234_fjzH1], xmm5	movaps [esp + nb234_fixH2], xmm0	movaps [esp + nb234_fiyH2], xmm1	movaps [esp + nb234_fizH2], xmm2	;# H2-H2 interaction 	movaps xmm0, [esp + nb234_rinvH2H2]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb234_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb234_rsqH2H2] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb234_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb234_qqHH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb234_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb234_qqHH] ;# xmm7 = coul part of fscal 	addps  xmm6, xmm4	;# add to local vctot 	mulps xmm0, xmm7	;# fsOH2 	movaps xmm1, xmm0	movaps xmm2, xmm0	movaps xmm3, [esp + nb234_fjxH2]	movaps xmm4, [esp + nb234_fjyH2]	movaps xmm5, [esp + nb234_fjzH2]	mulps xmm0, [esp + nb234_dxH2H2]	mulps xmm1, [esp + nb234_dyH2H2]	mulps xmm2, [esp + nb234_dzH2H2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixH2]	addps xmm1, [esp + nb234_fiyH2]	addps xmm2, [esp + nb234_fizH2]	movaps [esp + nb234_fjxH2], xmm3	movaps [esp + nb234_fjyH2], xmm4	movaps [esp + nb234_fjzH2], xmm5	movaps [esp + nb234_fixH2], xmm0	movaps [esp + nb234_fiyH2], xmm1	movaps [esp + nb234_fizH2], xmm2	;# H2-M interaction 	movaps xmm0, [esp + nb234_rinvH2M]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb234_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb234_rsqH2M] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb234_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb234_qqMH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb234_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb234_qqMH] ;# xmm7 = coul part of fscal 	addps  xmm6, xmm4	;# add to local vctot 	mulps xmm0, xmm7	;# fsOH2 	movaps xmm1, xmm0	movaps xmm2, xmm0		movaps xmm3, [esp + nb234_fjxM]	movaps xmm4, [esp + nb234_fjyM]	movaps xmm5, [esp + nb234_fjzM]	mulps xmm0, [esp + nb234_dxH2M]	mulps xmm1, [esp + nb234_dyH2M]	mulps xmm2, [esp + nb234_dzH2M]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixH2]	addps xmm1, [esp + nb234_fiyH2]	addps xmm2, [esp + nb234_fizH2]	movaps [esp + nb234_fjxM], xmm3	movaps [esp + nb234_fjyM], xmm4	movaps [esp + nb234_fjzM], xmm5	movaps [esp + nb234_fixH2], xmm0	movaps [esp + nb234_fiyH2], xmm1	movaps [esp + nb234_fizH2], xmm2	;# M-H1 interaction 	movaps xmm0, [esp + nb234_rinvMH1]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb234_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb234_rsqMH1] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb234_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb234_qqMH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb234_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb234_qqMH] ;# xmm7 = coul part of fscal 	addps  xmm6, xmm4	;# add to local vctot 	mulps xmm0, xmm7	;# fsOH2 	movaps xmm1, xmm0	movaps xmm2, xmm0	movaps xmm3, [esp + nb234_fjxH1]	movaps xmm4, [esp + nb234_fjyH1]	movaps xmm5, [esp + nb234_fjzH1]	mulps xmm0, [esp + nb234_dxMH1]	mulps xmm1, [esp + nb234_dyMH1]	mulps xmm2, [esp + nb234_dzMH1]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixM]	addps xmm1, [esp + nb234_fiyM]	addps xmm2, [esp + nb234_fizM]	movaps [esp + nb234_fjxH1], xmm3	movaps [esp + nb234_fjyH1], xmm4	movaps [esp + nb234_fjzH1], xmm5	movaps [esp + nb234_fixM], xmm0	movaps [esp + nb234_fiyM], xmm1	movaps [esp + nb234_fizM], xmm2	;# M-H2 interaction 	movaps xmm0, [esp + nb234_rinvMH2]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb234_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb234_rsqMH2] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb234_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb234_qqMH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb234_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb234_qqMH] ;# xmm7 = coul part of fscal 	addps  xmm6, xmm4	;# add to local vctot 	mulps xmm0, xmm7	;# fsOH2 	movaps xmm1, xmm0	movaps xmm2, xmm0	movaps xmm3, [esp + nb234_fjxH2]	movaps xmm4, [esp + nb234_fjyH2]	movaps xmm5, [esp + nb234_fjzH2]	mulps xmm0, [esp + nb234_dxMH2]	mulps xmm1, [esp + nb234_dyMH2]	mulps xmm2, [esp + nb234_dzMH2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixM]	addps xmm1, [esp + nb234_fiyM]	addps xmm2, [esp + nb234_fizM]	movaps [esp + nb234_fjxH2], xmm3	movaps [esp + nb234_fjyH2], xmm4	movaps [esp + nb234_fjzH2], xmm5	movaps [esp + nb234_fixM], xmm0	movaps [esp + nb234_fiyM], xmm1	movaps [esp + nb234_fizM], xmm2	;# M-M interaction 	movaps xmm0, [esp + nb234_rinvMM]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb234_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb234_rsqMM] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb234_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb234_qqMM] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb234_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb234_qqMM] ;# xmm7 = coul part of fscal 	addps  xmm6, xmm4	;# add to local vctot 	mulps xmm0, xmm7	;# fsOH2 	movaps xmm1, xmm0	movaps xmm2, xmm0	movaps xmm1, xmm0	movaps [esp + nb234_vctot], xmm6	movaps xmm2, xmm0		movaps xmm3, [esp + nb234_fjxM]	movaps xmm4, [esp + nb234_fjyM]	movaps xmm5, [esp + nb234_fjzM]	mulps xmm0, [esp + nb234_dxMM]	mulps xmm1, [esp + nb234_dyMM]	mulps xmm2, [esp + nb234_dzMM]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb234_fixM]	addps xmm1, [esp + nb234_fiyM]	addps xmm2, [esp + nb234_fizM]	movaps [esp + nb234_fjxM], xmm3	movaps [esp + nb234_fjyM], xmm4	movaps [esp + nb234_fjzM], xmm5	movaps [esp + nb234_fixM], xmm0	movaps [esp + nb234_fiyM], xmm1	movaps [esp + nb234_fizM], xmm2	mov edi, [ebp + nb234_faction]	;# update j forces 	;# 4 j waters with four atoms each.	;# step 1 : transpose fjxO, fjyO, fjzO, fjxH1	movaps xmm0, [esp + nb234_fjxO]	movaps xmm1, [esp + nb234_fjyO]	movaps xmm2, [esp + nb234_fjzO]	movaps xmm3, [esp + nb234_fjxH1]	movaps xmm4, xmm0	movaps xmm5, xmm1	unpcklps xmm4, xmm2 		unpcklps xmm5, xmm3		unpckhps xmm0, xmm2 	unpckhps xmm1, xmm3 	movaps xmm2, xmm4	movaps xmm3, xmm0	unpcklps xmm4, xmm5 	unpckhps xmm2, xmm5 	unpcklps xmm0, xmm1 	unpckhps xmm3, xmm1 	;# results are now in xmm4, xmm2, xmm0, xmm3	;# load the corresponding j forces from memory	movlps   xmm1, [edi + eax*4]	movlps   xmm5, [edi + ebx*4]	movlps   xmm6, [edi + ecx*4]	movlps   xmm7, [edi + edx*4]	movhps   xmm1, [edi + eax*4 + 8]	movhps   xmm5, [edi + ebx*4 + 8]	movhps   xmm6, [edi + ecx*4 + 8]	movhps   xmm7, [edi + edx*4 + 8]	;# add	addps    xmm1, xmm4	addps    xmm5, xmm2	addps    xmm6, xmm0	addps    xmm7, xmm3	;# store back	movlps   [edi + eax*4], xmm1	movlps   [edi + ebx*4], xmm5	movlps   [edi + ecx*4], xmm6	movlps   [edi + edx*4], xmm7	movhps   [edi + eax*4 + 8], xmm1	movhps   [edi + ebx*4 + 8], xmm5	movhps   [edi + ecx*4 + 8], xmm6	movhps   [edi + edx*4 + 8], xmm7	;# step 2 : transpose fjyH1, fjzH1, fjxH2, fjyH2	movaps xmm0, [esp + nb234_fjyH1]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?