nb_kernel134_ia32_sse.intel_syntax.s

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

S
2,207
字号
	movaps xmm5, xmm3	mulps xmm0, [esp + nb134_dxOO]	mulps xmm1, [esp + nb134_dyOO]	mulps xmm2, [esp + nb134_dzOO]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixO]	addps xmm1, [esp + nb134_fiyO]	addps xmm2, [esp + nb134_fizO]	movaps [esp + nb134_fjxO], xmm3	movaps [esp + nb134_fjyO], xmm4	movaps [esp + nb134_fjzO], xmm5	movaps [esp + nb134_fixO], xmm0	movaps [esp + nb134_fiyO], xmm1	movaps [esp + nb134_fizO], xmm2	;# Coulomb interactions 	;# start with H1-H1 interaction 	movaps  xmm7, [esp + nb134_rinvH1H1]	movaps  xmm0, xmm7		mulps   xmm0, xmm0	;# xmm7=rinv, xmm0=rinvsq	mulps  xmm7, [esp + nb134_qqHH]	mulps  xmm0, xmm7	;# total fs H1 in xmm0 	movaps xmm6, xmm7  ;# local vctot summation variable		movaps xmm1, xmm0	movaps xmm2, xmm0	xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb134_dxH1H1]	mulps xmm1, [esp + nb134_dyH1H1]	mulps xmm2, [esp + nb134_dzH1H1]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixH1]	addps xmm1, [esp + nb134_fiyH1]	addps xmm2, [esp + nb134_fizH1]	movaps [esp + nb134_fjxH1], xmm3	movaps [esp + nb134_fjyH1], xmm4	movaps [esp + nb134_fjzH1], xmm5	movaps [esp + nb134_fixH1], xmm0	movaps [esp + nb134_fiyH1], xmm1	movaps [esp + nb134_fizH1], xmm2	;# H1-H2 interaction 	movaps  xmm7, [esp + nb134_rinvH1H2]	movaps  xmm0, xmm7		mulps   xmm0, xmm0	;# xmm7=rinv, xmm0=rinvsq	mulps  xmm7, [esp + nb134_qqHH]	mulps  xmm0, xmm7	;# total fs H1 in xmm0 	addps  xmm6, xmm7  ;# local vctot summation variable		movaps xmm1, xmm0	movaps xmm2, xmm0		xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb134_dxH1H2]	mulps xmm1, [esp + nb134_dyH1H2]	mulps xmm2, [esp + nb134_dzH1H2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixH1]	addps xmm1, [esp + nb134_fiyH1]	addps xmm2, [esp + nb134_fizH1]	movaps [esp + nb134_fjxH2], xmm3	movaps [esp + nb134_fjyH2], xmm4	movaps [esp + nb134_fjzH2], xmm5	movaps [esp + nb134_fixH1], xmm0	movaps [esp + nb134_fiyH1], xmm1	movaps [esp + nb134_fizH1], xmm2	;# H1-M interaction  	movaps  xmm7, [esp + nb134_rinvH1M]	movaps  xmm0, xmm7		mulps   xmm0, xmm0	;# xmm7=rinv, xmm0=rinvsq	mulps  xmm7, [esp + nb134_qqMH]	mulps  xmm0, xmm7	;# total fs H1 in xmm0 	addps  xmm6, xmm7  ;# local vctot summation variable		movaps xmm1, xmm0	movaps xmm2, xmm0		xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb134_dxH1M]	mulps xmm1, [esp + nb134_dyH1M]	mulps xmm2, [esp + nb134_dzH1M]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixH1]	addps xmm1, [esp + nb134_fiyH1]	addps xmm2, [esp + nb134_fizH1]	movaps [esp + nb134_fjxM], xmm3	movaps [esp + nb134_fjyM], xmm4	movaps [esp + nb134_fjzM], xmm5	movaps [esp + nb134_fixH1], xmm0	movaps [esp + nb134_fiyH1], xmm1	movaps [esp + nb134_fizH1], xmm2	;# H2-H1 interaction 	movaps  xmm7, [esp + nb134_rinvH2H1]	movaps  xmm0, xmm7		mulps   xmm0, xmm0	;# xmm7=rinv, xmm0=rinvsq	mulps  xmm7, [esp + nb134_qqHH]	mulps  xmm0, xmm7	;# total fs H1 in xmm0 	addps  xmm6, xmm7  ;# local vctot summation variable		movaps xmm1, xmm0	movaps xmm2, xmm0		movaps xmm3, [esp + nb134_fjxH1]	movaps xmm4, [esp + nb134_fjyH1]	movaps xmm5, [esp + nb134_fjzH1]	mulps xmm0, [esp + nb134_dxH2H1]	mulps xmm1, [esp + nb134_dyH2H1]	mulps xmm2, [esp + nb134_dzH2H1]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixH2]	addps xmm1, [esp + nb134_fiyH2]	addps xmm2, [esp + nb134_fizH2]	movaps [esp + nb134_fjxH1], xmm3	movaps [esp + nb134_fjyH1], xmm4	movaps [esp + nb134_fjzH1], xmm5	movaps [esp + nb134_fixH2], xmm0	movaps [esp + nb134_fiyH2], xmm1	movaps [esp + nb134_fizH2], xmm2	;# H2-H2 interaction 	movaps  xmm7, [esp + nb134_rinvH2H2]	movaps  xmm0, xmm7		mulps   xmm0, xmm0	;# xmm7=rinv, xmm0=rinvsq	mulps  xmm7, [esp + nb134_qqHH]	mulps  xmm0, xmm7	;# total fs H1 in xmm0 	addps  xmm6, xmm7  ;# local vctot summation variable		movaps xmm1, xmm0	movaps xmm2, xmm0		movaps xmm3, [esp + nb134_fjxH2]	movaps xmm4, [esp + nb134_fjyH2]	movaps xmm5, [esp + nb134_fjzH2]	mulps xmm0, [esp + nb134_dxH2H2]	mulps xmm1, [esp + nb134_dyH2H2]	mulps xmm2, [esp + nb134_dzH2H2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixH2]	addps xmm1, [esp + nb134_fiyH2]	addps xmm2, [esp + nb134_fizH2]	movaps [esp + nb134_fjxH2], xmm3	movaps [esp + nb134_fjyH2], xmm4	movaps [esp + nb134_fjzH2], xmm5	movaps [esp + nb134_fixH2], xmm0	movaps [esp + nb134_fiyH2], xmm1	movaps [esp + nb134_fizH2], xmm2	;# H2-M interaction 	movaps  xmm7, [esp + nb134_rinvH2M]	movaps  xmm0, xmm7		mulps   xmm0, xmm0	;# xmm7=rinv, xmm0=rinvsq	mulps  xmm7, [esp + nb134_qqMH]	mulps  xmm0, xmm7	;# total fs H1 in xmm0 	addps  xmm6, xmm7  ;# local vctot summation variable		movaps xmm1, xmm0	movaps xmm2, xmm0		movaps xmm3, [esp + nb134_fjxM]	movaps xmm4, [esp + nb134_fjyM]	movaps xmm5, [esp + nb134_fjzM]	mulps xmm0, [esp + nb134_dxH2M]	mulps xmm1, [esp + nb134_dyH2M]	mulps xmm2, [esp + nb134_dzH2M]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixH2]	addps xmm1, [esp + nb134_fiyH2]	addps xmm2, [esp + nb134_fizH2]	movaps [esp + nb134_fjxM], xmm3	movaps [esp + nb134_fjyM], xmm4	movaps [esp + nb134_fjzM], xmm5	movaps [esp + nb134_fixH2], xmm0	movaps [esp + nb134_fiyH2], xmm1	movaps [esp + nb134_fizH2], xmm2	;# M-H1 interaction 	movaps  xmm7, [esp + nb134_rinvMH1]	movaps  xmm0, xmm7		mulps   xmm0, xmm0	;# xmm7=rinv, xmm0=rinvsq	mulps  xmm7, [esp + nb134_qqMH]	mulps  xmm0, xmm7	;# total fs in xmm0 	addps  xmm6, xmm7  ;# local vctot summation variable		movaps xmm1, xmm0	movaps xmm2, xmm0		movaps xmm3, [esp + nb134_fjxH1]	movaps xmm4, [esp + nb134_fjyH1]	movaps xmm5, [esp + nb134_fjzH1]	mulps xmm0, [esp + nb134_dxMH1]	mulps xmm1, [esp + nb134_dyMH1]	mulps xmm2, [esp + nb134_dzMH1]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixM]	addps xmm1, [esp + nb134_fiyM]	addps xmm2, [esp + nb134_fizM]	movaps [esp + nb134_fjxH1], xmm3	movaps [esp + nb134_fjyH1], xmm4	movaps [esp + nb134_fjzH1], xmm5	movaps [esp + nb134_fixM], xmm0	movaps [esp + nb134_fiyM], xmm1	movaps [esp + nb134_fizM], xmm2	;# M-H2 interaction 	movaps  xmm7, [esp + nb134_rinvMH2]	movaps  xmm0, xmm7		mulps   xmm0, xmm0	;# xmm7=rinv, xmm0=rinvsq	mulps  xmm7, [esp + nb134_qqMH]	mulps  xmm0, xmm7	;# total fs in xmm0 	addps  xmm6, xmm7  ;# local vctot summation variable		movaps xmm1, xmm0	movaps xmm2, xmm0		movaps xmm3, [esp + nb134_fjxH2]	movaps xmm4, [esp + nb134_fjyH2]	movaps xmm5, [esp + nb134_fjzH2]	mulps xmm0, [esp + nb134_dxMH2]	mulps xmm1, [esp + nb134_dyMH2]	mulps xmm2, [esp + nb134_dzMH2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixM]	addps xmm1, [esp + nb134_fiyM]	addps xmm2, [esp + nb134_fizM]	movaps [esp + nb134_fjxH2], xmm3	movaps [esp + nb134_fjyH2], xmm4	movaps [esp + nb134_fjzH2], xmm5	movaps [esp + nb134_fixM], xmm0	movaps [esp + nb134_fiyM], xmm1	movaps [esp + nb134_fizM], xmm2	;# M-M interaction 	movaps  xmm7, [esp + nb134_rinvMM]	movaps  xmm0, xmm7		mulps   xmm0, xmm0	;# xmm7=rinv, xmm0=rinvsq	mulps  xmm7, [esp + nb134_qqMM]	mulps  xmm0, xmm7	;# total fs in xmm0 	addps  xmm6, xmm7  ;# local vctot summation variable		movaps xmm1, xmm0	addps  xmm6, [esp + nb134_vctot]	movaps [esp + nb134_vctot], xmm6	movaps xmm2, xmm0		movaps xmm3, [esp + nb134_fjxM]	movaps xmm4, [esp + nb134_fjyM]	movaps xmm5, [esp + nb134_fjzM]	mulps xmm0, [esp + nb134_dxMM]	mulps xmm1, [esp + nb134_dyMM]	mulps xmm2, [esp + nb134_dzMM]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb134_fixM]	addps xmm1, [esp + nb134_fiyM]	addps xmm2, [esp + nb134_fizM]	movaps [esp + nb134_fjxM], xmm3	movaps [esp + nb134_fjyM], xmm4	movaps [esp + nb134_fjzM], xmm5	movaps [esp + nb134_fixM], xmm0	movaps [esp + nb134_fiyM], xmm1	movaps [esp + nb134_fizM], xmm2	mov edi, [ebp + nb134_faction]	;# update j forces 	;# 4 j waters with four atoms each.	;# step 1 : transpose fjxO, fjyO, fjzO, fjxH1	movaps xmm0, [esp + nb134_fjxO]	movaps xmm1, [esp + nb134_fjyO]	movaps xmm2, [esp + nb134_fjzO]	movaps xmm3, [esp + nb134_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 + nb134_fjyH1]	movaps xmm1, [esp + nb134_fjzH1]	movaps xmm2, [esp + nb134_fjxH2]	movaps xmm3, [esp + nb134_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 + nb134_fjzH2]	movaps xmm1, [esp + nb134_fjxM]	movaps xmm2, [esp + nb134_fjyM]	movaps xmm3, [esp + nb134_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 + nb134_innerk],  4	jl    .nb134_single_check	jmp   .nb134_unroll_loop.nb134_single_check:	add dword ptr [esp + nb134_innerk],  4	jnz   .nb134_single_loop	jmp   .nb134_updateouterdata.nb134_single_loop:

⌨️ 快捷键说明

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