nb_kernel114_ia32_sse.intel_syntax.s

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

S
2,191
字号
	mov esi, [ebp + nb114_pos]   	;# base of pos[] 	lea   eax, [eax + eax*2] 	;# replace jnr with j3 	lea   ebx, [ebx + ebx*2]		lea   ecx, [ecx + ecx*2] 	;# replace jnr with j3 	lea   edx, [edx + edx*2]			;# move j coordinates to local temp variables.	;# Load Ox Oy Oz H1x	movlps xmm1, [esi + eax*4]	;#  Oxa   Oya    -    -	movlps xmm4, [esi + ecx*4]	;#  Oxc   Oyc    -    -	movhps xmm1, [esi + ebx*4]	;#  Oxa   Oya   Oxb   Oyb 	movhps xmm4, [esi + edx*4]	;#  Oxc   Oyc   Oxd   Oyd 	movaps xmm0, xmm1		;#  Oxa   Oya   Oxb   Oyb 	shufps xmm0, xmm4, 0x88		;#  Oxa   Oxb   Oxc   Oxd	shufps xmm1, xmm4, 0xDD		;#  Oya   Oyb   Oyc   Oyd	movlps xmm3, [esi + eax*4 + 8]	;#  Oza  H1xa    -    -	movlps xmm5, [esi + ecx*4 + 8]	;#  Ozc  H1xc    -    -	movhps xmm3, [esi + ebx*4 + 8]	;#  Oza  H1xa   Ozb  H1xb 	movhps xmm5, [esi + edx*4 + 8]	;#  Ozc  H1xc   Ozd  H1xd 	movaps xmm2, xmm3		;#  Oza  H1xa   Ozb  H1xb 	shufps xmm2, xmm5, 0x88		;#  Oza   Ozb   Ozc   Ozd	shufps xmm3, xmm5, 0xDD		;# H1xa  H1xb  H1xc  H1xd	;# coordinates in xmm0-xmm3		;# store	movaps [esp + nb114_jxO], xmm0	movaps [esp + nb114_jyO], xmm1	movaps [esp + nb114_jzO], xmm2	movaps [esp + nb114_jxH1], xmm3	;# Load H1y H1z H2x H2y 	movlps xmm1, [esi + eax*4 + 16]		movlps xmm4, [esi + ecx*4 + 16]		movhps xmm1, [esi + ebx*4 + 16]		movhps xmm4, [esi + edx*4 + 16]		movaps xmm0, xmm1			shufps xmm0, xmm4, 0x88			shufps xmm1, xmm4, 0xDD			movlps xmm3, [esi + eax*4 + 24]		movlps xmm5, [esi + ecx*4 + 24]		movhps xmm3, [esi + ebx*4 + 24]		movhps xmm5, [esi + edx*4 + 24]		movaps xmm2, xmm3			shufps xmm2, xmm5, 0x88			shufps xmm3, xmm5, 0xDD			;# coordinates in xmm0-xmm3		;# store	movaps [esp + nb114_jyH1], xmm0	movaps [esp + nb114_jzH1], xmm1	movaps [esp + nb114_jxH2], xmm2	movaps [esp + nb114_jyH2], xmm3	;# Load H2z Mx My Mz 	movlps xmm1, [esi + eax*4 + 32]		movlps xmm4, [esi + ecx*4 + 32]		movhps xmm1, [esi + ebx*4 + 32]		movhps xmm4, [esi + edx*4 + 32]		movaps xmm0, xmm1			shufps xmm0, xmm4, 0x88			shufps xmm1, xmm4, 0xDD			movlps xmm3, [esi + eax*4 + 40]		movlps xmm5, [esi + ecx*4 + 40]		movhps xmm3, [esi + ebx*4 + 40]		movhps xmm5, [esi + edx*4 + 40]		movaps xmm2, xmm3			shufps xmm2, xmm5, 0x88			shufps xmm3, xmm5, 0xDD			;# coordinates in xmm0-xmm3		;# store	movaps [esp + nb114_jzH2], xmm0	movaps [esp + nb114_jxM], xmm1	movaps [esp + nb114_jyM], xmm2	movaps [esp + nb114_jzM], xmm3		;# start calculating pairwise distances	movaps xmm0, [esp + nb114_ixO]	movaps xmm1, [esp + nb114_iyO]	movaps xmm2, [esp + nb114_izO]	movaps xmm3, [esp + nb114_ixH1]	movaps xmm4, [esp + nb114_iyH1]	movaps xmm5, [esp + nb114_izH1]	subps  xmm0, [esp + nb114_jxO]	subps  xmm1, [esp + nb114_jyO]	subps  xmm2, [esp + nb114_jzO]	subps  xmm3, [esp + nb114_jxH1]	subps  xmm4, [esp + nb114_jyH1]	subps  xmm5, [esp + nb114_jzH1]	movaps [esp + nb114_dxOO], xmm0	movaps [esp + nb114_dyOO], xmm1	movaps [esp + nb114_dzOO], xmm2	mulps  xmm0, xmm0	mulps  xmm1, xmm1	mulps  xmm2, xmm2	movaps [esp + nb114_dxH1H1], xmm3	movaps [esp + nb114_dyH1H1], xmm4	movaps [esp + nb114_dzH1H1], xmm5	mulps  xmm3, xmm3	mulps  xmm4, xmm4	mulps  xmm5, xmm5	addps  xmm0, xmm1	addps  xmm0, xmm2	addps  xmm3, xmm4	addps  xmm3, xmm5	movaps [esp + nb114_rsqOO], xmm0	movaps [esp + nb114_rsqH1H1], xmm3	movaps xmm0, [esp + nb114_ixH1]	movaps xmm1, [esp + nb114_iyH1]	movaps xmm2, [esp + nb114_izH1]	movaps xmm3, xmm0	movaps xmm4, xmm1	movaps xmm5, xmm2	subps  xmm0, [esp + nb114_jxH2]	subps  xmm1, [esp + nb114_jyH2]	subps  xmm2, [esp + nb114_jzH2]	subps  xmm3, [esp + nb114_jxM]	subps  xmm4, [esp + nb114_jyM]	subps  xmm5, [esp + nb114_jzM]	movaps [esp + nb114_dxH1H2], xmm0	movaps [esp + nb114_dyH1H2], xmm1	movaps [esp + nb114_dzH1H2], xmm2	mulps  xmm0, xmm0	mulps  xmm1, xmm1	mulps  xmm2, xmm2	movaps [esp + nb114_dxH1M], xmm3	movaps [esp + nb114_dyH1M], xmm4	movaps [esp + nb114_dzH1M], xmm5	mulps  xmm3, xmm3	mulps  xmm4, xmm4	mulps  xmm5, xmm5	addps  xmm0, xmm1	addps  xmm0, xmm2	addps  xmm3, xmm4	addps  xmm3, xmm5	movaps [esp + nb114_rsqH1H2], xmm0	movaps [esp + nb114_rsqH1M], xmm3	movaps xmm0, [esp + nb114_ixH2]	movaps xmm1, [esp + nb114_iyH2]	movaps xmm2, [esp + nb114_izH2]	movaps xmm3, xmm0	movaps xmm4, xmm1	movaps xmm5, xmm2	subps  xmm0, [esp + nb114_jxH1]	subps  xmm1, [esp + nb114_jyH1]	subps  xmm2, [esp + nb114_jzH1]	subps  xmm3, [esp + nb114_jxH2]	subps  xmm4, [esp + nb114_jyH2]	subps  xmm5, [esp + nb114_jzH2]	movaps [esp + nb114_dxH2H1], xmm0	movaps [esp + nb114_dyH2H1], xmm1	movaps [esp + nb114_dzH2H1], xmm2	mulps  xmm0, xmm0	mulps  xmm1, xmm1	mulps  xmm2, xmm2	movaps [esp + nb114_dxH2H2], xmm3	movaps [esp + nb114_dyH2H2], xmm4	movaps [esp + nb114_dzH2H2], xmm5	mulps  xmm3, xmm3	mulps  xmm4, xmm4	mulps  xmm5, xmm5	addps  xmm0, xmm1	addps  xmm0, xmm2	addps  xmm3, xmm4	addps  xmm3, xmm5	movaps [esp + nb114_rsqH2H1], xmm0	movaps [esp + nb114_rsqH2H2], xmm3	movaps xmm0, [esp + nb114_ixH2]	movaps xmm1, [esp + nb114_iyH2]	movaps xmm2, [esp + nb114_izH2]	movaps xmm3, [esp + nb114_ixM]	movaps xmm4, [esp + nb114_iyM]	movaps xmm5, [esp + nb114_izM]	subps  xmm0, [esp + nb114_jxM]	subps  xmm1, [esp + nb114_jyM]	subps  xmm2, [esp + nb114_jzM]	subps  xmm3, [esp + nb114_jxH1]	subps  xmm4, [esp + nb114_jyH1]	subps  xmm5, [esp + nb114_jzH1]	movaps [esp + nb114_dxH2M], xmm0	movaps [esp + nb114_dyH2M], xmm1	movaps [esp + nb114_dzH2M], xmm2	mulps  xmm0, xmm0	mulps  xmm1, xmm1	mulps  xmm2, xmm2	movaps [esp + nb114_dxMH1], xmm3	movaps [esp + nb114_dyMH1], xmm4	movaps [esp + nb114_dzMH1], xmm5	mulps  xmm3, xmm3	mulps  xmm4, xmm4	mulps  xmm5, xmm5	addps  xmm0, xmm1	addps  xmm0, xmm2	addps  xmm4, xmm3	addps  xmm4, xmm5	movaps [esp + nb114_rsqH2M], xmm0	movaps [esp + nb114_rsqMH1], xmm4	movaps xmm0, [esp + nb114_ixM]	movaps xmm1, [esp + nb114_iyM]	movaps xmm2, [esp + nb114_izM]	movaps xmm3, xmm0	movaps xmm4, xmm1	movaps xmm5, xmm2	subps  xmm0, [esp + nb114_jxH2]	subps  xmm1, [esp + nb114_jyH2]	subps  xmm2, [esp + nb114_jzH2]	subps  xmm3, [esp + nb114_jxM]	subps  xmm4, [esp + nb114_jyM]	subps  xmm5, [esp + nb114_jzM]	movaps [esp + nb114_dxMH2], xmm0	movaps [esp + nb114_dyMH2], xmm1	movaps [esp + nb114_dzMH2], xmm2	mulps  xmm0, xmm0	mulps  xmm1, xmm1	mulps  xmm2, xmm2	movaps [esp + nb114_dxMM], xmm3	movaps [esp + nb114_dyMM], xmm4	movaps [esp + nb114_dzMM], xmm5	mulps  xmm3, xmm3	mulps  xmm4, xmm4	mulps  xmm5, xmm5	addps  xmm0, xmm1	addps  xmm0, xmm2	addps  xmm4, xmm3	addps  xmm4, xmm5	movaps [esp + nb114_rsqMH2], xmm0	movaps [esp + nb114_rsqMM], xmm4	;# start by doing reciprocal for OO	movaps  xmm7, [esp + nb114_rsqOO]	rcpps   xmm2, xmm7	movaps  xmm1, [esp + nb114_two]	mulps   xmm7, xmm2	subps   xmm1, xmm7	mulps   xmm2, xmm1 ;# rinvsq 	movaps [esp + nb114_rinvsqOO], xmm2		;# next step is invsqrt - do two at a time.	rsqrtps xmm1, [esp + nb114_rsqH1H1]	rsqrtps xmm5, [esp + nb114_rsqH1H2]	movaps  xmm2, xmm1	movaps  xmm6, xmm5	mulps   xmm1, xmm1	mulps   xmm5, xmm5	movaps  xmm3, [esp + nb114_three]	movaps  xmm7, xmm3	mulps   xmm1, [esp + nb114_rsqH1H1]	mulps   xmm5, [esp + nb114_rsqH1H2]	subps   xmm3, xmm1	subps   xmm7, xmm5	mulps   xmm3, xmm2	mulps   xmm7, xmm6	mulps   xmm3, [esp + nb114_half] ;# rinvH1H1 	mulps   xmm7, [esp + nb114_half] ;# rinvH1H2 	movaps  [esp + nb114_rinvH1H1], xmm3	movaps  [esp + nb114_rinvH1H2], xmm7				rsqrtps xmm1, [esp + nb114_rsqH1M]	rsqrtps xmm5, [esp + nb114_rsqH2H1]	movaps  xmm2, xmm1	movaps  xmm6, xmm5	mulps   xmm1, xmm1	mulps   xmm5, xmm5	movaps  xmm3, [esp + nb114_three]	movaps  xmm7, xmm3	mulps   xmm1, [esp + nb114_rsqH1M]	mulps   xmm5, [esp + nb114_rsqH2H1]	subps   xmm3, xmm1	subps   xmm7, xmm5	mulps   xmm3, xmm2	mulps   xmm7, xmm6	mulps   xmm3, [esp + nb114_half] 	mulps   xmm7, [esp + nb114_half]	movaps  [esp + nb114_rinvH1M], xmm3	movaps  [esp + nb114_rinvH2H1], xmm7				rsqrtps xmm1, [esp + nb114_rsqH2H2]	rsqrtps xmm5, [esp + nb114_rsqH2M]	movaps  xmm2, xmm1	movaps  xmm6, xmm5	mulps   xmm1, xmm1	mulps   xmm5, xmm5	movaps  xmm3, [esp + nb114_three]	movaps  xmm7, xmm3	mulps   xmm1, [esp + nb114_rsqH2H2]	mulps   xmm5, [esp + nb114_rsqH2M]	subps   xmm3, xmm1	subps   xmm7, xmm5	mulps   xmm3, xmm2	mulps   xmm7, xmm6	mulps   xmm3, [esp + nb114_half] 	mulps   xmm7, [esp + nb114_half]	movaps  [esp + nb114_rinvH2H2], xmm3	movaps  [esp + nb114_rinvH2M], xmm7		rsqrtps xmm1, [esp + nb114_rsqMH1]	rsqrtps xmm5, [esp + nb114_rsqMH2]	movaps  xmm2, xmm1	movaps  xmm6, xmm5	mulps   xmm1, xmm1	mulps   xmm5, xmm5	movaps  xmm3, [esp + nb114_three]	movaps  xmm7, xmm3	mulps   xmm1, [esp + nb114_rsqMH1]	mulps   xmm5, [esp + nb114_rsqMH2]	subps   xmm3, xmm1	subps   xmm7, xmm5	mulps   xmm3, xmm2	mulps   xmm7, xmm6	mulps   xmm3, [esp + nb114_half] 	mulps   xmm7, [esp + nb114_half]	movaps  [esp + nb114_rinvMH1], xmm3	movaps  [esp + nb114_rinvMH2], xmm7        			rsqrtps xmm1, [esp + nb114_rsqMM]	movaps  xmm2, xmm1	mulps   xmm1, xmm1	movaps  xmm3, [esp + nb114_three]	mulps   xmm1, [esp + nb114_rsqMM]	subps   xmm3, xmm1	mulps   xmm3, xmm2	mulps   xmm3, [esp + nb114_half] 	movaps  [esp + nb114_rinvMM], xmm3		;# start with OO LJ interaction	movaps xmm0, [esp + nb114_rinvsqOO]	movaps xmm1, xmm0	mulps  xmm1, xmm1	;# rinv4	mulps  xmm1, xmm0	;# xmm1=rinvsix 	movaps xmm2, xmm1	mulps  xmm2, xmm2	;# xmm2=rinvtwelve 	mulps  xmm1, [esp + nb114_c6]	mulps  xmm2, [esp + nb114_c12]	movaps xmm4, xmm2	subps  xmm4, xmm1	addps  xmm4, [esp + nb114_Vvdwtot]	mulps  xmm1, [esp + nb114_six]	mulps  xmm2, [esp + nb114_twelve]	movaps [esp + nb114_Vvdwtot], xmm4	subps  xmm2, xmm1	mulps  xmm0, xmm2 	;# fscal 	movaps xmm1, xmm0	movaps xmm2, xmm0			xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb114_dxOO]	mulps xmm1, [esp + nb114_dyOO]	mulps xmm2, [esp + nb114_dzOO]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb114_fixO]	addps xmm1, [esp + nb114_fiyO]	addps xmm2, [esp + nb114_fizO]	movaps [esp + nb114_fjxO], xmm3	movaps [esp + nb114_fjyO], xmm4	movaps [esp + nb114_fjzO], xmm5	movaps [esp + nb114_fixO], xmm0	movaps [esp + nb114_fiyO], xmm1	movaps [esp + nb114_fizO], xmm2	;# Coulomb interactions 	;# start with H1-H1 interaction 	movaps xmm0, [esp + nb114_rinvH1H1]	movaps xmm7, xmm0	mulps  xmm0, xmm0	mulps  xmm7, [esp + nb114_qqHH]	mulps  xmm0, xmm7		addps  xmm7, [esp + nb114_vctot] 	movaps xmm1, xmm0	movaps xmm2, xmm0	xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb114_dxH1H1]	mulps xmm1, [esp + nb114_dyH1H1]	mulps xmm2, [esp + nb114_dzH1H1]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb114_fixH1]	addps xmm1, [esp + nb114_fiyH1]	addps xmm2, [esp + nb114_fizH1]	movaps [esp + nb114_fjxH1], xmm3	movaps [esp + nb114_fjyH1], xmm4	movaps [esp + nb114_fjzH1], xmm5	movaps [esp + nb114_fixH1], xmm0	movaps [esp + nb114_fiyH1], xmm1	movaps [esp + nb114_fizH1], xmm2	;# H1-H2 interaction 	movaps xmm0, [esp + nb114_rinvH1H2]	movaps xmm1, xmm0	mulps xmm0, xmm0	mulps xmm1, [esp + nb114_qqHH]	mulps xmm0, xmm1	;# fs H1-H2  	addps xmm7, xmm1	;# add to local vctot 	movaps xmm1, xmm0	movaps xmm2, xmm0		xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb114_dxH1H2]	mulps xmm1, [esp + nb114_dyH1H2]	mulps xmm2, [esp + nb114_dzH1H2]	subps xmm3, xmm0	subps xmm4, xmm1	subps xmm5, xmm2	addps xmm0, [esp + nb114_fixH1]	addps xmm1, [esp + nb114_fiyH1]	addps xmm2, [esp + nb114_fizH1]	movaps [esp + nb114_fjxH2], xmm3	movaps [esp + nb114_fjyH2], xmm4	movaps [esp + nb114_fjzH2], xmm5	movaps [esp + nb114_fixH1], xmm0	movaps [esp + nb114_fiyH1], xmm1	movaps [esp + nb114_fizH1], xmm2	;# H1-M interaction  	movaps xmm0, [esp + nb114_rinvH1M]	movaps xmm1, xmm0	mulps xmm0, xmm0	mulps xmm1, [esp + nb114_qqMH]	mulps xmm0, xmm1	;# fs H1-M  	addps xmm7, xmm1	;# add to local vctot 	movaps xmm1, xmm0	movaps xmm2, xmm0		xorps xmm3, xmm3	movaps xmm4, xmm3	movaps xmm5, xmm3	mulps xmm0, [esp + nb114_dxH1M]

⌨️ 快捷键说明

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