nb_kernel114_ia32_sse2.intel_syntax.s

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

S
2,222
字号
	movsd [esp + nb114_vctot], xmm7		movapd xmm1, xmm0	movapd xmm2, xmm0		xorpd xmm3, xmm3	movapd xmm4, xmm3	movapd xmm5, xmm3	mulsd xmm0, [esp + nb114_dxH1H2]	mulsd xmm1, [esp + nb114_dyH1H2]	mulsd xmm2, [esp + nb114_dzH1H2]	subsd xmm3, xmm0	subsd xmm4, xmm1	subsd xmm5, xmm2	addsd xmm0, [esp + nb114_fixH1]	addsd xmm1, [esp + nb114_fiyH1]	addsd xmm2, [esp + nb114_fizH1]	movsd [esp + nb114_fjxH2], xmm3	movsd [esp + nb114_fjyH2], xmm4	movsd [esp + nb114_fjzH2], xmm5	movsd [esp + nb114_fixH1], xmm0	movsd [esp + nb114_fiyH1], xmm1	movsd [esp + nb114_fizH1], xmm2	;# H1-M interaction 	movsd xmm0, [esp + nb114_rinvH1M]	movsd xmm7, xmm0	;# xmm7=rinv 	mulsd  xmm0, xmm0	;# xmm0=rinvsq 	mulsd  xmm7, [esp + nb114_qqMH] ;# vcoul		mulsd  xmm0, xmm7	addsd  xmm7, [esp + nb114_vctot] 	movsd [esp + nb114_vctot], xmm7	movapd xmm1, xmm0	movapd xmm2, xmm0		xorpd xmm3, xmm3	movapd xmm4, xmm3	movapd xmm5, xmm3	mulsd xmm0, [esp + nb114_dxH1M]	mulsd xmm1, [esp + nb114_dyH1M]	mulsd xmm2, [esp + nb114_dzH1M]	subsd xmm3, xmm0	subsd xmm4, xmm1	subsd xmm5, xmm2	addsd xmm0, [esp + nb114_fixH1]	addsd xmm1, [esp + nb114_fiyH1]	addsd xmm2, [esp + nb114_fizH1]	movsd [esp + nb114_fjxM], xmm3	movsd [esp + nb114_fjyM], xmm4	movsd [esp + nb114_fjzM], xmm5	movsd [esp + nb114_fixH1], xmm0	movsd [esp + nb114_fiyH1], xmm1	movsd [esp + nb114_fizH1], xmm2	;# H2-H1 interaction 	movsd xmm0, [esp + nb114_rinvH2H1]	movsd xmm7, xmm0	;# xmm7=rinv 	mulsd  xmm0, xmm0	;# xmm0=rinvsq 	mulsd  xmm7, [esp + nb114_qqHH] ;# vcoul		mulsd  xmm0, xmm7	addsd  xmm7, [esp + nb114_vctot] 	movsd [esp + nb114_vctot], xmm7		movapd xmm1, xmm0	movapd xmm2, xmm0		movapd xmm3, [esp + nb114_fjxH1]	movapd xmm4, [esp + nb114_fjyH1]	movapd xmm5, [esp + nb114_fjzH1]	mulsd xmm0, [esp + nb114_dxH2H1]	mulsd xmm1, [esp + nb114_dyH2H1]	mulsd xmm2, [esp + nb114_dzH2H1]	subsd xmm3, xmm0	subsd xmm4, xmm1	subsd xmm5, xmm2	addsd xmm0, [esp + nb114_fixH2]	addsd xmm1, [esp + nb114_fiyH2]	addsd xmm2, [esp + nb114_fizH2]	movsd [esp + nb114_fjxH1], xmm3	movsd [esp + nb114_fjyH1], xmm4	movsd [esp + nb114_fjzH1], xmm5	movsd [esp + nb114_fixH2], xmm0	movsd [esp + nb114_fiyH2], xmm1	movsd [esp + nb114_fizH2], xmm2	;# H2-H2 interaction 	movsd xmm0, [esp + nb114_rinvH2H2]	movsd xmm7, xmm0	;# xmm7=rinv 	mulsd  xmm0, xmm0	;# xmm0=rinvsq 	mulsd  xmm7, [esp + nb114_qqHH] ;# vcoul		mulsd  xmm0, xmm7	addsd  xmm7, [esp + nb114_vctot] 	movsd [esp + nb114_vctot], xmm7		movsd xmm1, xmm0	movsd xmm2, xmm0	movsd xmm3, [esp + nb114_fjxH2]	movsd xmm4, [esp + nb114_fjyH2]	movsd xmm5, [esp + nb114_fjzH2]	mulsd xmm0, [esp + nb114_dxH2H2]	mulsd xmm1, [esp + nb114_dyH2H2]	mulsd xmm2, [esp + nb114_dzH2H2]	subsd xmm3, xmm0	subsd xmm4, xmm1	subsd xmm5, xmm2	addsd xmm0, [esp + nb114_fixH2]	addsd xmm1, [esp + nb114_fiyH2]	addsd xmm2, [esp + nb114_fizH2]	movsd [esp + nb114_fjxH2], xmm3	movsd [esp + nb114_fjyH2], xmm4	movsd [esp + nb114_fjzH2], xmm5	movsd [esp + nb114_fixH2], xmm0	movsd [esp + nb114_fiyH2], xmm1	movsd [esp + nb114_fizH2], xmm2	;# H2-M interaction 	movsd xmm0, [esp + nb114_rinvH2M]	movsd xmm7, xmm0	;# xmm7=rinv 	mulsd  xmm0, xmm0	;# xmm0=rinvsq 	mulsd  xmm7, [esp + nb114_qqMH] 		mulsd  xmm0, xmm7	addsd  xmm7, [esp + nb114_vctot] 	movsd [esp + nb114_vctot], xmm7		movapd xmm1, xmm0	movapd xmm2, xmm0	movapd xmm3, [esp + nb114_fjxM]	movapd xmm4, [esp + nb114_fjyM]	movapd xmm5, [esp + nb114_fjzM]	mulsd xmm0, [esp + nb114_dxH2M]	mulsd xmm1, [esp + nb114_dyH2M]	mulsd xmm2, [esp + nb114_dzH2M]	subsd xmm3, xmm0	subsd xmm4, xmm1	subsd xmm5, xmm2	addsd xmm0, [esp + nb114_fixH2]	addsd xmm1, [esp + nb114_fiyH2]	addsd xmm2, [esp + nb114_fizH2]	movsd [esp + nb114_fjxM], xmm3	movsd [esp + nb114_fjyM], xmm4	movsd [esp + nb114_fjzM], xmm5	movsd [esp + nb114_fixH2], xmm0	movsd [esp + nb114_fiyH2], xmm1	movsd [esp + nb114_fizH2], xmm2	;# M-H1 interaction 	movsd xmm0, [esp + nb114_rinvMH1]	movsd xmm7, xmm0	;# xmm7=rinv 	mulsd  xmm0, xmm0	;# xmm0=rinvsq 	mulsd  xmm7, [esp + nb114_qqMH] 		mulsd  xmm0, xmm7	addsd  xmm7, [esp + nb114_vctot] ;# local vctot summation variable 	movsd [esp + nb114_vctot], xmm7		movapd xmm1, xmm0	movapd xmm2, xmm0	movapd xmm3, [esp + nb114_fjxH1]	movapd xmm4, [esp + nb114_fjyH1]	movapd xmm5, [esp + nb114_fjzH1]	mulsd xmm0, [esp + nb114_dxMH1]	mulsd xmm1, [esp + nb114_dyMH1]	mulsd xmm2, [esp + nb114_dzMH1]	subsd xmm3, xmm0	subsd xmm4, xmm1	subsd xmm5, xmm2	addsd xmm0, [esp + nb114_fixM]	addsd xmm1, [esp + nb114_fiyM]	addsd xmm2, [esp + nb114_fizM]	movsd [esp + nb114_fjxH1], xmm3	movsd [esp + nb114_fjyH1], xmm4	movsd [esp + nb114_fjzH1], xmm5	movsd [esp + nb114_fixM], xmm0	movsd [esp + nb114_fiyM], xmm1	movsd [esp + nb114_fizM], xmm2	;# M-H2 interaction 	movsd xmm0, [esp + nb114_rinvMH2]	movsd xmm7, xmm0	;# xmm7=rinv 	mulsd  xmm0, xmm0	;# xmm0=rinvsq 	mulsd  xmm7, [esp + nb114_qqMH] 		mulsd  xmm0, xmm7	addsd  xmm7, [esp + nb114_vctot]	movsd [esp + nb114_vctot], xmm7		movapd xmm1, xmm0	movapd xmm2, xmm0		movapd xmm3, [esp + nb114_fjxH2]	movapd xmm4, [esp + nb114_fjyH2]	movapd xmm5, [esp + nb114_fjzH2]	mulsd xmm0, [esp + nb114_dxMH2]	mulsd xmm1, [esp + nb114_dyMH2]	mulsd xmm2, [esp + nb114_dzMH2]	subsd xmm3, xmm0	subsd xmm4, xmm1	subsd xmm5, xmm2	addsd xmm0, [esp + nb114_fixM]	addsd xmm1, [esp + nb114_fiyM]	addsd xmm2, [esp + nb114_fizM]	movsd [esp + nb114_fjxH2], xmm3	movsd [esp + nb114_fjyH2], xmm4	movsd [esp + nb114_fjzH2], xmm5	movsd [esp + nb114_fixM], xmm0	movsd [esp + nb114_fiyM], xmm1	movsd [esp + nb114_fizM], xmm2	;# M-M interaction 	movsd xmm0, [esp + nb114_rinvMM]	movsd xmm7, xmm0	;# xmm7=rinv 	mulsd  xmm0, xmm0	;# xmm0=rinvsq 	mulsd  xmm7, [esp + nb114_qqMM] 		mulsd  xmm0, xmm7	addsd  xmm7, [esp + nb114_vctot] 	movsd [esp + nb114_vctot], xmm7		movapd xmm1, xmm0	movapd xmm2, xmm0	movapd xmm3, [esp + nb114_fjxM]	movapd xmm4, [esp + nb114_fjyM]	movapd xmm5, [esp + nb114_fjzM]	mulsd xmm0, [esp + nb114_dxMM]	mulsd xmm1, [esp + nb114_dyMM]	mulsd xmm2, [esp + nb114_dzMM]	subsd xmm3, xmm0	subsd xmm4, xmm1	subsd xmm5, xmm2	addsd xmm0, [esp + nb114_fixM]	addsd xmm1, [esp + nb114_fiyM]	addsd xmm2, [esp + nb114_fizM]	movsd [esp + nb114_fjxM], xmm3	movsd [esp + nb114_fjyM], xmm4	movsd [esp + nb114_fjzM], xmm5	movsd [esp + nb114_fixM], xmm0	movsd [esp + nb114_fiyM], xmm1	movsd [esp + nb114_fizM], xmm2	mov edi, [ebp + nb114_faction]	;# Did all interactions - now update j forces 	;# Step1 - merge forces	movlpd xmm0, [esp + nb114_fjxO]	movlpd xmm1, [esp + nb114_fjzO]	movlpd xmm2, [esp + nb114_fjyH1]	movlpd xmm3, [esp + nb114_fjxH2]	movlpd xmm4, [esp + nb114_fjzH2]	movlpd xmm5, [esp + nb114_fjyM]	movhpd xmm0, [esp + nb114_fjyO]	movhpd xmm1, [esp + nb114_fjxH1]	movhpd xmm2, [esp + nb114_fjzH1]	movhpd xmm3, [esp + nb114_fjyH2]	movhpd xmm4, [esp + nb114_fjxM]	movhpd xmm5, [esp + nb114_fjzM]	movlps xmm6, [edi + eax*8]	movhps xmm6, [edi + eax*8 + 8]	movlps xmm7, [edi + eax*8 + 16]	movhps xmm7, [edi + eax*8 + 24]	addpd  xmm0, xmm6	addpd  xmm1, xmm7	movlps xmm6, [edi + eax*8 + 32]	movhps xmm6, [edi + eax*8 + 40]	movlps xmm7, [edi + eax*8 + 48]	movhps xmm7, [edi + eax*8 + 56]	addpd  xmm2, xmm6	addpd  xmm3, xmm7	movlps xmm6, [edi + eax*8 + 64]	movhps xmm6, [edi + eax*8 + 72]	movlps xmm7, [edi + eax*8 + 80]	movhps xmm7, [edi + eax*8 + 88]	addpd  xmm4, xmm6	addpd  xmm5, xmm7		movlps [edi + eax*8],      xmm0	movhps [edi + eax*8 + 8],  xmm0	movlps [edi + eax*8 + 16], xmm1	movhps [edi + eax*8 + 24], xmm1	movlps [edi + eax*8 + 32], xmm2	movhps [edi + eax*8 + 40], xmm2	movlps [edi + eax*8 + 48], xmm3	movhps [edi + eax*8 + 56], xmm3	movlps [edi + eax*8 + 64], xmm4	movhps [edi + eax*8 + 72], xmm4	movlps [edi + eax*8 + 80], xmm5	movhps [edi + eax*8 + 88], xmm5	.nb114_updateouterdata:	mov   ecx, [esp + nb114_ii3]	mov   edi, [ebp + nb114_faction]	mov   esi, [ebp + nb114_fshift]	mov   edx, [esp + nb114_is3]	;# accumulate  Oi forces in xmm0, xmm1, xmm2 	movapd xmm0, [esp + nb114_fixO]	movapd xmm1, [esp + nb114_fiyO]	movapd xmm2, [esp + nb114_fizO]	movhlps xmm3, xmm0	movhlps xmm4, xmm1	movhlps xmm5, xmm2	addsd  xmm0, xmm3	addsd  xmm1, xmm4	addsd  xmm2, xmm5 ;# sum is in low xmm0-xmm2 	movapd xmm3, xmm0		movapd xmm4, xmm1		movapd xmm5, xmm2		;# increment i force 	movsd  xmm3, [edi + ecx*8]	movsd  xmm4, [edi + ecx*8 + 8]	movsd  xmm5, [edi + ecx*8 + 16]	addsd  xmm3, xmm0	addsd  xmm4, xmm1	addsd  xmm5, xmm2	movsd  [edi + ecx*8],     xmm3	movsd  [edi + ecx*8 + 8], xmm4	movsd  [edi + ecx*8 + 16], xmm5	;# accumulate force in xmm6/xmm7 for fshift 	movapd xmm6, xmm0	movsd xmm7, xmm2	unpcklpd xmm6, xmm1	;# accumulate H1i forces in xmm0, xmm1, xmm2 	movapd xmm0, [esp + nb114_fixH1]	movapd xmm1, [esp + nb114_fiyH1]	movapd xmm2, [esp + nb114_fizH1]	movhlps xmm3, xmm0	movhlps xmm4, xmm1	movhlps xmm5, xmm2	addsd  xmm0, xmm3	addsd  xmm1, xmm4	addsd  xmm2, xmm5 ;# sum is in low xmm0-xmm2 	;# increment i force 	movsd  xmm3, [edi + ecx*8 + 24]	movsd  xmm4, [edi + ecx*8 + 32]	movsd  xmm5, [edi + ecx*8 + 40]	addsd  xmm3, xmm0	addsd  xmm4, xmm1	addsd  xmm5, xmm2	movsd  [edi + ecx*8 + 24], xmm3	movsd  [edi + ecx*8 + 32], xmm4	movsd  [edi + ecx*8 + 40], xmm5	;# accumulate force in xmm6/xmm7 for fshift 	addsd xmm7, xmm2	unpcklpd xmm0, xmm1	addpd xmm6, xmm0	;# accumulate H2i forces in xmm0, xmm1, xmm2 	movapd xmm0, [esp + nb114_fixH2]	movapd xmm1, [esp + nb114_fiyH2]	movapd xmm2, [esp + nb114_fizH2]	movhlps xmm3, xmm0	movhlps xmm4, xmm1	movhlps xmm5, xmm2	addsd  xmm0, xmm3	addsd  xmm1, xmm4	addsd  xmm2, xmm5 ;# sum is in low xmm0-xmm2 	movapd xmm3, xmm0		movapd xmm4, xmm1		movapd xmm5, xmm2		;# increment i force 	movsd  xmm3, [edi + ecx*8 + 48]	movsd  xmm4, [edi + ecx*8 + 56]	movsd  xmm5, [edi + ecx*8 + 64]	addsd  xmm3, xmm0	addsd  xmm4, xmm1	addsd  xmm5, xmm2	movsd  [edi + ecx*8 + 48], xmm3	movsd  [edi + ecx*8 + 56], xmm4	movsd  [edi + ecx*8 + 64], xmm5	;# accumulate force in xmm6/xmm7 for fshift 	addsd xmm7, xmm2	unpcklpd xmm0, xmm1	addpd xmm6, xmm0	;# accumulate Mi forces in xmm0, xmm1, xmm2 	movapd xmm0, [esp + nb114_fixM]	movapd xmm1, [esp + nb114_fiyM]	movapd xmm2, [esp + nb114_fizM]	movhlps xmm3, xmm0	movhlps xmm4, xmm1	movhlps xmm5, xmm2	addsd  xmm0, xmm3	addsd  xmm1, xmm4	addsd  xmm2, xmm5 ;# sum is in low xmm0-xmm2 	movapd xmm3, xmm0		movapd xmm4, xmm1		movapd xmm5, xmm2		;# increment i force 	movsd  xmm3, [edi + ecx*8 + 72]	movsd  xmm4, [edi + ecx*8 + 80]	movsd  xmm5, [edi + ecx*8 + 88]	addsd  xmm3, xmm0	addsd  xmm4, xmm1	addsd  xmm5, xmm2	movsd  [edi + ecx*8 + 72], xmm3	movsd  [edi + ecx*8 + 80], xmm4	movsd  [edi + ecx*8 + 88], xmm5	;# accumulate force in xmm6/xmm7 for fshift 	addsd xmm7, xmm2	unpcklpd xmm0, xmm1	addpd xmm6, xmm0	;# increment fshift force 	movlpd xmm3, [esi + edx*8]	movhpd xmm3, [esi + edx*8 + 8]	movsd  xmm4, [esi + edx*8 + 16]	addpd  xmm3, xmm6	addsd  xmm4, xmm7	movlpd [esi + edx*8],      xmm3	movhpd [esi + edx*8 + 8],  xmm3	movsd  [esi + edx*8 + 16], xmm4	;# get n from stack	mov esi, [esp + nb11

⌨️ 快捷键说明

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