nb_kernel332_ia32_sse.intel_syntax.s

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

S
2,165
字号
	;# xmm3= jxH1a jyH1a jxH1c jyH1c 	;# xmm4= jxH2a jyH2a jxH2c jyH2c 	;# xmm5= jxOb  jyOb  jxOd  jyOd 	;# xmm6= jxH1b jyH1b jxH1d jyH1d 	;# xmm7= jxH2b jyH2b jxH2d jyH2d 		movaps xmm0, xmm2	movaps xmm1, xmm3	unpcklps xmm0, xmm5	;# xmm0= jxOa  jxOb  jyOa  jyOb 	unpcklps xmm1, xmm6	;# xmm1= jxH1a jxH1b jyH1a jyH1b 	unpckhps xmm2, xmm5	;# xmm2= jxOc  jxOd  jyOc  jyOd 	unpckhps xmm3, xmm6	;# xmm3= jxH1c jxH1d jyH1c jyH1d  	movaps xmm5, xmm4	movaps   xmm6, xmm0	unpcklps xmm4, xmm7	;# xmm4= jxH2a jxH2b jyH2a jyH2b 			unpckhps xmm5, xmm7	;# xmm5= jxH2c jxH2d jyH2c jyH2d 	movaps   xmm7, xmm1	movlhps  xmm0, xmm2	;# xmm0= jxOa  jxOb  jxOc  jxOd  	movaps [esp + nb332_jxO], xmm0	movhlps  xmm2, xmm6	;# xmm2= jyOa  jyOb  jyOc  jyOd 	movaps [esp + nb332_jyO], xmm2	movlhps  xmm1, xmm3	movaps [esp + nb332_jxH1], xmm1	movhlps  xmm3, xmm7	movaps   xmm6, xmm4	movaps [esp + nb332_jyH1], xmm3	movlhps  xmm4, xmm5	movaps [esp + nb332_jxH2], xmm4	movhlps  xmm5, xmm6	movaps [esp + nb332_jyH2], xmm5	movss  xmm0, [esi + eax*4 + 8]	movss  xmm1, [esi + eax*4 + 20]	movss  xmm2, [esi + eax*4 + 32]	movss  xmm3, [esi + ecx*4 + 8]	movss  xmm4, [esi + ecx*4 + 20]	movss  xmm5, [esi + ecx*4 + 32]	movhps xmm0, [esi + ebx*4 + 4]	movhps xmm1, [esi + ebx*4 + 16]	movhps xmm2, [esi + ebx*4 + 28]		movhps xmm3, [esi + edx*4 + 4]	movhps xmm4, [esi + edx*4 + 16]	movhps xmm5, [esi + edx*4 + 28]		shufps xmm0, xmm3, 204  ;# constant 11001100	shufps xmm1, xmm4, 204  ;# constant 11001100	shufps xmm2, xmm5, 204  ;# constant 11001100	movaps [esp + nb332_jzO],  xmm0	movaps [esp + nb332_jzH1],  xmm1	movaps [esp + nb332_jzH2],  xmm2	movaps xmm0, [esp + nb332_ixO]	movaps xmm1, [esp + nb332_iyO]	movaps xmm2, [esp + nb332_izO]	movaps xmm3, [esp + nb332_ixO]	movaps xmm4, [esp + nb332_iyO]	movaps xmm5, [esp + nb332_izO]	subps  xmm0, [esp + nb332_jxO]	subps  xmm1, [esp + nb332_jyO]	subps  xmm2, [esp + nb332_jzO]	subps  xmm3, [esp + nb332_jxH1]	subps  xmm4, [esp + nb332_jyH1]	subps  xmm5, [esp + nb332_jzH1]	movaps [esp + nb332_dxOO], xmm0	movaps [esp + nb332_dyOO], xmm1	movaps [esp + nb332_dzOO], xmm2	mulps  xmm0, xmm0	mulps  xmm1, xmm1	mulps  xmm2, xmm2	movaps [esp + nb332_dxOH1], xmm3	movaps [esp + nb332_dyOH1], xmm4	movaps [esp + nb332_dzOH1], xmm5	mulps  xmm3, xmm3	mulps  xmm4, xmm4	mulps  xmm5, xmm5	addps  xmm0, xmm1	addps  xmm0, xmm2	addps  xmm3, xmm4	addps  xmm3, xmm5	movaps [esp + nb332_rsqOO], xmm0	movaps [esp + nb332_rsqOH1], xmm3	movaps xmm0, [esp + nb332_ixO]	movaps xmm1, [esp + nb332_iyO]	movaps xmm2, [esp + nb332_izO]	movaps xmm3, [esp + nb332_ixH1]	movaps xmm4, [esp + nb332_iyH1]	movaps xmm5, [esp + nb332_izH1]	subps  xmm0, [esp + nb332_jxH2]	subps  xmm1, [esp + nb332_jyH2]	subps  xmm2, [esp + nb332_jzH2]	subps  xmm3, [esp + nb332_jxO]	subps  xmm4, [esp + nb332_jyO]	subps  xmm5, [esp + nb332_jzO]	movaps [esp + nb332_dxOH2], xmm0	movaps [esp + nb332_dyOH2], xmm1	movaps [esp + nb332_dzOH2], xmm2	mulps  xmm0, xmm0	mulps  xmm1, xmm1	mulps  xmm2, xmm2	movaps [esp + nb332_dxH1O], xmm3	movaps [esp + nb332_dyH1O], xmm4	movaps [esp + nb332_dzH1O], xmm5	mulps  xmm3, xmm3	mulps  xmm4, xmm4	mulps  xmm5, xmm5	addps  xmm0, xmm1	addps  xmm0, xmm2	addps  xmm3, xmm4	addps  xmm3, xmm5	movaps [esp + nb332_rsqOH2], xmm0	movaps [esp + nb332_rsqH1O], xmm3	movaps xmm0, [esp + nb332_ixH1]	movaps xmm1, [esp + nb332_iyH1]	movaps xmm2, [esp + nb332_izH1]	movaps xmm3, [esp + nb332_ixH1]	movaps xmm4, [esp + nb332_iyH1]	movaps xmm5, [esp + nb332_izH1]	subps  xmm0, [esp + nb332_jxH1]	subps  xmm1, [esp + nb332_jyH1]	subps  xmm2, [esp + nb332_jzH1]	subps  xmm3, [esp + nb332_jxH2]	subps  xmm4, [esp + nb332_jyH2]	subps  xmm5, [esp + nb332_jzH2]	movaps [esp + nb332_dxH1H1], xmm0	movaps [esp + nb332_dyH1H1], xmm1	movaps [esp + nb332_dzH1H1], xmm2	mulps  xmm0, xmm0	mulps  xmm1, xmm1	mulps  xmm2, xmm2	movaps [esp + nb332_dxH1H2], xmm3	movaps [esp + nb332_dyH1H2], xmm4	movaps [esp + nb332_dzH1H2], xmm5	mulps  xmm3, xmm3	mulps  xmm4, xmm4	mulps  xmm5, xmm5	addps  xmm0, xmm1	addps  xmm0, xmm2	addps  xmm3, xmm4	addps  xmm3, xmm5	movaps [esp + nb332_rsqH1H1], xmm0	movaps [esp + nb332_rsqH1H2], xmm3	movaps xmm0, [esp + nb332_ixH2]	movaps xmm1, [esp + nb332_iyH2]	movaps xmm2, [esp + nb332_izH2]	movaps xmm3, [esp + nb332_ixH2]	movaps xmm4, [esp + nb332_iyH2]	movaps xmm5, [esp + nb332_izH2]	subps  xmm0, [esp + nb332_jxO]	subps  xmm1, [esp + nb332_jyO]	subps  xmm2, [esp + nb332_jzO]	subps  xmm3, [esp + nb332_jxH1]	subps  xmm4, [esp + nb332_jyH1]	subps  xmm5, [esp + nb332_jzH1]	movaps [esp + nb332_dxH2O], xmm0	movaps [esp + nb332_dyH2O], xmm1	movaps [esp + nb332_dzH2O], xmm2	mulps  xmm0, xmm0	mulps  xmm1, xmm1	mulps  xmm2, xmm2	movaps [esp + nb332_dxH2H1], xmm3	movaps [esp + nb332_dyH2H1], xmm4	movaps [esp + nb332_dzH2H1], xmm5	mulps  xmm3, xmm3	mulps  xmm4, xmm4	mulps  xmm5, xmm5	addps  xmm0, xmm1	addps  xmm0, xmm2	addps  xmm4, xmm3	addps  xmm4, xmm5	movaps [esp + nb332_rsqH2O], xmm0	movaps [esp + nb332_rsqH2H1], xmm4	movaps xmm0, [esp + nb332_ixH2]	movaps xmm1, [esp + nb332_iyH2]	movaps xmm2, [esp + nb332_izH2]	subps  xmm0, [esp + nb332_jxH2]	subps  xmm1, [esp + nb332_jyH2]	subps  xmm2, [esp + nb332_jzH2]	movaps [esp + nb332_dxH2H2], xmm0	movaps [esp + nb332_dyH2H2], xmm1	movaps [esp + nb332_dzH2H2], xmm2	mulps xmm0, xmm0	mulps xmm1, xmm1	mulps xmm2, xmm2	addps xmm0, xmm1	addps xmm0, xmm2	movaps [esp + nb332_rsqH2H2], xmm0			;# start doing invsqrt use rsq values in xmm0, xmm4 	rsqrtps xmm1, xmm0	rsqrtps xmm5, xmm4	movaps  xmm2, xmm1	movaps  xmm6, xmm5	mulps   xmm1, xmm1	mulps   xmm5, xmm5	movaps  xmm3, [esp + nb332_three]	movaps  xmm7, xmm3	mulps   xmm1, xmm0	mulps   xmm5, xmm4	subps   xmm3, xmm1	subps   xmm7, xmm5	mulps   xmm3, xmm2	mulps   xmm7, xmm6	mulps   xmm3, [esp + nb332_half] ;# rinvH2H2 	mulps   xmm7, [esp + nb332_half] ;# rinvH2H1 	movaps  [esp + nb332_rinvH2H2], xmm3	movaps  [esp + nb332_rinvH2H1], xmm7			rsqrtps xmm1, [esp + nb332_rsqOO]	rsqrtps xmm5, [esp + nb332_rsqOH1]	movaps  xmm2, xmm1	movaps  xmm6, xmm5	mulps   xmm1, xmm1	mulps   xmm5, xmm5	movaps  xmm3, [esp + nb332_three]	movaps  xmm7, xmm3	mulps   xmm1, [esp + nb332_rsqOO]	mulps   xmm5, [esp + nb332_rsqOH1]	subps   xmm3, xmm1	subps   xmm7, xmm5	mulps   xmm3, xmm2	mulps   xmm7, xmm6	mulps   xmm3, [esp + nb332_half] 	mulps   xmm7, [esp + nb332_half]	movaps  [esp + nb332_rinvOO], xmm3	movaps  [esp + nb332_rinvOH1], xmm7		rsqrtps xmm1, [esp + nb332_rsqOH2]	rsqrtps xmm5, [esp + nb332_rsqH1O]	movaps  xmm2, xmm1	movaps  xmm6, xmm5	mulps   xmm1, xmm1	mulps   xmm5, xmm5	movaps  xmm3, [esp + nb332_three]	movaps  xmm7, xmm3	mulps   xmm1, [esp + nb332_rsqOH2]	mulps   xmm5, [esp + nb332_rsqH1O]	subps   xmm3, xmm1	subps   xmm7, xmm5	mulps   xmm3, xmm2	mulps   xmm7, xmm6	mulps   xmm3, [esp + nb332_half] 	mulps   xmm7, [esp + nb332_half]	movaps  [esp + nb332_rinvOH2], xmm3	movaps  [esp + nb332_rinvH1O], xmm7		rsqrtps xmm1, [esp + nb332_rsqH1H1]	rsqrtps xmm5, [esp + nb332_rsqH1H2]	movaps  xmm2, xmm1	movaps  xmm6, xmm5	mulps   xmm1, xmm1	mulps   xmm5, xmm5	movaps  xmm3, [esp + nb332_three]	movaps  xmm7, xmm3	mulps   xmm1, [esp + nb332_rsqH1H1]	mulps   xmm5, [esp + nb332_rsqH1H2]	subps   xmm3, xmm1	subps   xmm7, xmm5	mulps   xmm3, xmm2	mulps   xmm7, xmm6	mulps   xmm3, [esp + nb332_half] 	mulps   xmm7, [esp + nb332_half]	movaps  [esp + nb332_rinvH1H1], xmm3	movaps  [esp + nb332_rinvH1H2], xmm7		rsqrtps xmm1, [esp + nb332_rsqH2O]	movaps  xmm2, xmm1	mulps   xmm1, xmm1	movaps  xmm3, [esp + nb332_three]	mulps   xmm1, [esp + nb332_rsqH2O]	subps   xmm3, xmm1	mulps   xmm3, xmm2	mulps   xmm3, [esp + nb332_half] 	movaps  [esp + nb332_rinvH2O], xmm3	;# start with OO interaction 	movaps xmm0, [esp + nb332_rinvOO]	movaps xmm1, xmm0	mulps  xmm1, [esp + nb332_rsqOO] ;# xmm1=r 	mulps  xmm1, [esp + nb332_tsc]			movhlps xmm2, xmm1    cvttps2pi mm6, xmm1    cvttps2pi mm7, xmm2     ;# mm6/mm7 contain lu indices     cvtpi2ps xmm3, mm6    cvtpi2ps xmm2, mm7	movlhps  xmm3, xmm2	subps    xmm1, xmm3	;# xmm1=eps     movaps xmm2, xmm1    mulps  xmm2, xmm2       ;# xmm2=eps2     pslld mm6, 2    pslld mm7, 2	    movd mm0, eax    movd mm1, ebx    movd mm2, ecx    movd mm3, edx    mov  esi, [ebp + nb332_VFtab]    movd eax, mm6    psrlq mm6, 32    movd ecx, mm7    psrlq mm7, 32    movd ebx, mm6    movd edx, mm7    lea   eax, [eax + eax*2]    lea   ebx, [ebx + ebx*2]    lea   ecx, [ecx + ecx*2]    lea   edx, [edx + edx*2]    movlps xmm5, [esi + eax*4]    movlps xmm7, [esi + ecx*4]    movhps xmm5, [esi + ebx*4]    movhps xmm7, [esi + edx*4] ;# got half coulomb table     movaps xmm4, xmm5    shufps xmm4, xmm7, 136  ;# constant 10001000    shufps xmm5, xmm7, 221  ;# constant 11011101    movlps xmm7, [esi + eax*4 + 8]    movlps xmm3, [esi + ecx*4 + 8]    movhps xmm7, [esi + ebx*4 + 8]    movhps xmm3, [esi + edx*4 + 8] ;# other half of coulomb table      movaps xmm6, xmm7    shufps xmm6, xmm3, 136  ;# constant 10001000    shufps xmm7, xmm3, 221  ;# constant 11011101    ;# coulomb table ready, in xmm4-xmm7      mulps  xmm6, xmm1       ;# xmm6=Geps     mulps  xmm7, xmm2       ;# xmm7=Heps2     addps  xmm5, xmm6    addps  xmm5, xmm7       ;# xmm5=Fp     mulps  xmm7, [esp + nb332_two]       ;# two*Heps2     movaps xmm3, [esp + nb332_qqOO]    addps  xmm7, xmm6    addps  xmm7, xmm5 ;# xmm7=FF     mulps  xmm5, xmm1 ;# xmm5=eps*Fp     addps  xmm5, xmm4 ;# xmm5=VV     mulps  xmm5, xmm3 ;# vcoul=qq*VV      mulps  xmm3, xmm7 ;# fijC=FF*qq     ;# at this point mm5 contains vcoul and mm3 fijC     ;# increment vcoul - then we can get rid of mm5     ;# update vctot     addps  xmm5, [esp + nb332_vctot]    movaps [esp + nb332_vctot], xmm5     ;# put scalar force on stack temporarily     movaps [esp + nb332_fstmp], xmm3    ;# dispersion     movlps xmm5, [esi + eax*4 + 16]    movlps xmm7, [esi + ecx*4 + 16]    movhps xmm5, [esi + ebx*4 + 16]    movhps xmm7, [esi + edx*4 + 16] ;# got half dispersion table     movaps xmm4, xmm5    shufps xmm4, xmm7, 136  ;# constant 10001000    shufps xmm5, xmm7, 221  ;# constant 11011101    movlps xmm7, [esi + eax*4 + 24]    movlps xmm3, [esi + ecx*4 + 24]    movhps xmm7, [esi + ebx*4 + 24]    movhps xmm3, [esi + edx*4 + 24] ;# other half of dispersion table     movaps xmm6, xmm7    shufps xmm6, xmm3, 136  ;# constant 10001000    shufps xmm7, xmm3, 221  ;# constant 11011101    ;# dispersion table ready, in xmm4-xmm7     mulps  xmm6, xmm1       ;# xmm6=Geps     mulps  xmm7, xmm2       ;# xmm7=Heps2     addps  xmm5, xmm6    addps  xmm5, xmm7       ;# xmm5=Fp     mulps  xmm7, [esp + nb332_two]       ;# two*Heps2     addps  xmm7, xmm6    addps  xmm7, xmm5 ;# xmm7=FF     mulps  xmm5, xmm1 ;# xmm5=eps*Fp     addps  xmm5, xmm4 ;# xmm5=VV     movaps xmm4, [esp + nb332_c6]    mulps  xmm7, xmm4    ;# fijD     mulps  xmm5, xmm4    ;# Vvdw6     addps  xmm7, [esp + nb332_fstmp] ;# add to fscal     ;# put scalar force on stack Update Vvdwtot directly     addps  xmm5, [esp + nb332_Vvdwtot]    movaps [esp + nb332_fstmp], xmm7    movaps [esp + nb332_Vvdwtot], xmm5    ;# repulsion     movlps xmm5, [esi + eax*4 + 32]    movlps xmm7, [esi + ecx*4 + 32]    movhps xmm5, [esi + ebx*4 + 32]    movhps xmm7, [esi + edx*4 + 32] ;# got half repulsion table     movaps xmm4, xmm5    shufps xmm4, xmm7, 136  ;# constant 10001000    shufps xmm5, xmm7, 221  ;# constant 11011101    movlps xmm7, [esi + eax*4 + 40]    movlps xmm3, [esi + ecx*4 + 40]    movhps xmm7, [esi + ebx*4 + 40]    movhps xmm3, [esi + edx*4 + 40] ;# other half of repulsion table     movaps xmm6, xmm7    shufps xmm6, xmm3, 136  ;# constant 10001000    shufps xmm7, xmm3, 221  ;# constant 11011101    ;# table ready, in xmm4-xmm7     mulps  xmm6, xmm1       ;# xmm6=Geps     mulps  xmm7, xmm2       ;# xmm7=Heps2     addps  xmm5, xmm6    addps  xmm5, xmm7       ;# xmm5=Fp     mulps  xmm7, [esp + nb332_two]       ;# two*Heps2     addps  xmm7, xmm6    addps  xmm7, xmm5 ;# xmm7=FF     mulps  xmm5, xmm1 ;# xmm5=eps*Fp     addps  xmm5, xmm4 ;# xmm5=VV      movaps xmm4, [esp + nb332_c12]    mulps  xmm7, xmm4 ;# fijR     mulps  xmm5, xmm4 ;# Vvdw12     addps  xmm7, [esp + nb332_fstmp]     addps  xmm5, [esp + nb332_Vvdwtot]    movaps [esp + nb332_Vvdwtot], xmm5    xorps  xmm1, xmm1    mulps xmm7, [esp + nb332_tsc]    mulps xmm7, xmm0    subps  xmm1, xmm7

⌨️ 快捷键说明

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