nb_kernel214_ia32_sse.intel_syntax.s

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

S
2,167
字号
	mulps  xmm7, [esp + nb214_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 + nb214_dxH1H2]	mulps xmm1, [esp + nb214_dyH1H2]	mulps xmm2, [esp + nb214_dzH1H2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb214_fixH1]	addps xmm1, [esp + nb214_fiyH1]	addps xmm2, [esp + nb214_fizH1]	movaps [esp + nb214_fjxH2], xmm3	movaps [esp + nb214_fjyH2], xmm4	movaps [esp + nb214_fjzH2], xmm5	movaps [esp + nb214_fixH1], xmm0	movaps [esp + nb214_fiyH1], xmm1	movaps [esp + nb214_fizH1], xmm2	;# H1-M interaction  	movaps xmm0, [esp + nb214_rinvH1M]	movaps xmm7, xmm0	;# xmm7=Rinv 	movaps xmm5, [esp + nb214_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb214_rsqH1M] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb214_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb214_qqMH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb214_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb214_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 + nb214_dxH1M]	mulps xmm1, [esp + nb214_dyH1M]	mulps xmm2, [esp + nb214_dzH1M]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb214_fixH1]	addps xmm1, [esp + nb214_fiyH1]	addps xmm2, [esp + nb214_fizH1]	movaps [esp + nb214_fjxM], xmm3	movaps [esp + nb214_fjyM], xmm4	movaps [esp + nb214_fjzM], xmm5	movaps [esp + nb214_fixH1], xmm0	movaps [esp + nb214_fiyH1], xmm1	movaps [esp + nb214_fizH1], xmm2	;# H2-H1 interaction 	movaps xmm0, [esp + nb214_rinvH2H1]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb214_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb214_rsqH2H1] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb214_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb214_qqHH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb214_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb214_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 + nb214_fjxH1]	movaps xmm4, [esp + nb214_fjyH1]	movaps xmm5, [esp + nb214_fjzH1]	mulps xmm0, [esp + nb214_dxH2H1]	mulps xmm1, [esp + nb214_dyH2H1]	mulps xmm2, [esp + nb214_dzH2H1]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb214_fixH2]	addps xmm1, [esp + nb214_fiyH2]	addps xmm2, [esp + nb214_fizH2]	movaps [esp + nb214_fjxH1], xmm3	movaps [esp + nb214_fjyH1], xmm4	movaps [esp + nb214_fjzH1], xmm5	movaps [esp + nb214_fixH2], xmm0	movaps [esp + nb214_fiyH2], xmm1	movaps [esp + nb214_fizH2], xmm2	;# H2-H2 interaction 	movaps xmm0, [esp + nb214_rinvH2H2]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb214_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb214_rsqH2H2] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb214_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb214_qqHH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb214_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb214_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 + nb214_fjxH2]	movaps xmm4, [esp + nb214_fjyH2]	movaps xmm5, [esp + nb214_fjzH2]	mulps xmm0, [esp + nb214_dxH2H2]	mulps xmm1, [esp + nb214_dyH2H2]	mulps xmm2, [esp + nb214_dzH2H2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb214_fixH2]	addps xmm1, [esp + nb214_fiyH2]	addps xmm2, [esp + nb214_fizH2]	movaps [esp + nb214_fjxH2], xmm3	movaps [esp + nb214_fjyH2], xmm4	movaps [esp + nb214_fjzH2], xmm5	movaps [esp + nb214_fixH2], xmm0	movaps [esp + nb214_fiyH2], xmm1	movaps [esp + nb214_fizH2], xmm2	;# H2-M interaction 	movaps xmm0, [esp + nb214_rinvH2M]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb214_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb214_rsqH2M] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb214_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb214_qqMH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb214_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb214_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 + nb214_fjxM]	movaps xmm4, [esp + nb214_fjyM]	movaps xmm5, [esp + nb214_fjzM]	mulps xmm0, [esp + nb214_dxH2M]	mulps xmm1, [esp + nb214_dyH2M]	mulps xmm2, [esp + nb214_dzH2M]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb214_fixH2]	addps xmm1, [esp + nb214_fiyH2]	addps xmm2, [esp + nb214_fizH2]	movaps [esp + nb214_fjxM], xmm3	movaps [esp + nb214_fjyM], xmm4	movaps [esp + nb214_fjzM], xmm5	movaps [esp + nb214_fixH2], xmm0	movaps [esp + nb214_fiyH2], xmm1	movaps [esp + nb214_fizH2], xmm2	;# M-H1 interaction 	movaps xmm0, [esp + nb214_rinvMH1]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb214_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb214_rsqMH1] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb214_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb214_qqMH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb214_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb214_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 + nb214_fjxH1]	movaps xmm4, [esp + nb214_fjyH1]	movaps xmm5, [esp + nb214_fjzH1]	mulps xmm0, [esp + nb214_dxMH1]	mulps xmm1, [esp + nb214_dyMH1]	mulps xmm2, [esp + nb214_dzMH1]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb214_fixM]	addps xmm1, [esp + nb214_fiyM]	addps xmm2, [esp + nb214_fizM]	movaps [esp + nb214_fjxH1], xmm3	movaps [esp + nb214_fjyH1], xmm4	movaps [esp + nb214_fjzH1], xmm5	movaps [esp + nb214_fixM], xmm0	movaps [esp + nb214_fiyM], xmm1	movaps [esp + nb214_fizM], xmm2	;# M-H2 interaction 	movaps xmm0, [esp + nb214_rinvMH2]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb214_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb214_rsqMH2] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb214_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb214_qqMH] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb214_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb214_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 + nb214_fjxH2]	movaps xmm4, [esp + nb214_fjyH2]	movaps xmm5, [esp + nb214_fjzH2]	mulps xmm0, [esp + nb214_dxMH2]	mulps xmm1, [esp + nb214_dyMH2]	mulps xmm2, [esp + nb214_dzMH2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb214_fixM]	addps xmm1, [esp + nb214_fiyM]	addps xmm2, [esp + nb214_fizM]	movaps [esp + nb214_fjxH2], xmm3	movaps [esp + nb214_fjyH2], xmm4	movaps [esp + nb214_fjzH2], xmm5	movaps [esp + nb214_fixM], xmm0	movaps [esp + nb214_fiyM], xmm1	movaps [esp + nb214_fizM], xmm2	;# M-M interaction 	movaps xmm0, [esp + nb214_rinvMM]	movaps xmm7, xmm0	;# xmm7=rinv 	movaps xmm5, [esp + nb214_krf]		movaps xmm1, xmm0	mulps  xmm5, [esp + nb214_rsqMM] ;# xmm5=krsq 	movaps xmm4, xmm5	addps  xmm4, xmm7	;# xmm4=r inv+ krsq 	subps  xmm4, [esp + nb214_crf]	mulps xmm0, xmm0	mulps  xmm4, [esp + nb214_qqMM] ;# xmm4=voul=qq*(rinv+ krsq-crf) 	mulps  xmm5, [esp + nb214_two]	subps  xmm7, xmm5	;# xmm7=rinv-2*krsq 	mulps  xmm7, [esp + nb214_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 + nb214_vctot], xmm6	movaps xmm2, xmm0		movaps xmm3, [esp + nb214_fjxM]	movaps xmm4, [esp + nb214_fjyM]	movaps xmm5, [esp + nb214_fjzM]	mulps xmm0, [esp + nb214_dxMM]	mulps xmm1, [esp + nb214_dyMM]	mulps xmm2, [esp + nb214_dzMM]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb214_fixM]	addps xmm1, [esp + nb214_fiyM]	addps xmm2, [esp + nb214_fizM]	movaps [esp + nb214_fjxM], xmm3	movaps [esp + nb214_fjyM], xmm4	movaps [esp + nb214_fjzM], xmm5	movaps [esp + nb214_fixM], xmm0	movaps [esp + nb214_fiyM], xmm1	movaps [esp + nb214_fizM], xmm2	mov edi, [ebp + nb214_faction]	;# update j forces 	;# 4 j waters with four atoms each.	;# step 1 : transpose fjxO, fjyO, fjzO, fjxH1	movaps xmm0, [esp + nb214_fjxO]	movaps xmm1, [esp + nb214_fjyO]	movaps xmm2, [esp + nb214_fjzO]	movaps xmm3, [esp + nb214_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 + nb214_fjyH1]	movaps xmm1, [esp + nb214_fjzH1]	movaps xmm2, [esp + nb214_fjxH2]	movaps xmm3, [esp + nb214_fjyH2]	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 + 16]	movlps   xmm5, [edi + ebx*4 + 16]	movlps   xmm6, [edi + ecx*4 + 16]	movlps   xmm7, [edi + edx*4 + 16]	movhps   xmm1, [edi + eax*4 + 24]	movhps   xmm5, [edi + ebx*4 + 24]	movhps   xmm6, [edi + ecx*4 + 24]	movhps   xmm7, [edi + edx*4 + 24]	;# add	addps    xmm1, xmm4	addps    xmm5, xmm2	addps    xmm6, xmm0	addps    xmm7, xmm3	;# store back	movlps   [edi + eax*4 + 16], xmm1	movlps   [edi + ebx*4 + 16], xmm5	movlps   [edi + ecx*4 + 16], xmm6	movlps   [edi + edx*4 + 16], xmm7	movhps   [edi + eax*4 + 24], xmm1	movhps   [edi + ebx*4 + 24], xmm5	movhps   [edi + ecx*4 + 24], xmm6	movhps   [edi + edx*4 + 24], xmm7	;# step 3 : transpose fjzH2, fjxM, fjyM, fjzM. xmm4 is scratch	movaps xmm0, [esp + nb214_fjzH2]	movaps xmm1, [esp + nb214_fjxM]	movaps xmm2, [esp + nb214_fjyM]	movaps xmm3, [esp + nb214_fjzM]	        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 xmm0, xmm1, xmm2, xmm3	;# load the corresponding j forces from memory	movlps   xmm1, [edi + eax*4 + 32]	movlps   xmm5, [edi + ebx*4 + 32]	movlps   xmm6, [edi + ecx*4 + 32]	movlps   xmm7, [edi + edx*4 + 32]	movhps   xmm1, [edi + eax*4 + 40]	movhps   xmm5, [edi + ebx*4 + 40]	movhps   xmm6, [edi + ecx*4 + 40]	movhps   xmm7, [edi + edx*4 + 40]	;# add	addps    xmm1, xmm4	addps    xmm5, xmm2	addps    xmm6, xmm0	addps    xmm7, xmm3	;# store back	movlps   [edi + eax*4 + 32], xmm1	movlps   [edi + ebx*4 + 32], xmm5	movlps   [edi + ecx*4 + 32], xmm6	movlps   [edi + edx*4 + 32], xmm7	movhps   [edi + eax*4 + 40], xmm1	movhps   [edi + ebx*4 + 40], xmm5	movhps   [edi + ecx*4 + 40], xmm6	movhps   [edi + edx*4 + 40], xmm7		;# should we do one more iteration? 	sub dword ptr [esp + nb214_innerk],  4	jl    .nb214_single_check	jmp   .nb214_unroll_loop.nb214_single_check:

⌨️ 快捷键说明

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