nb_kernel134_ia32_sse.s

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

S
2,068
字号
    mulps  nb134_two(%esp),%xmm7         ## two*Heps2     addps  %xmm6,%xmm7    addps  %xmm5,%xmm7 ## xmm7=FF     mulps  %xmm1,%xmm5 ## xmm5=eps*Fp     addps  %xmm4,%xmm5 ## xmm5=VV     movaps nb134_c12(%esp),%xmm4    mulps  %xmm4,%xmm7 ## fijR     mulps  %xmm4,%xmm5 ## Vvdw12     addps  nb134_fstmp(%esp),%xmm7    mulps nb134_tsc(%esp),%xmm7    addps  nb134_Vvdwtot(%esp),%xmm5    movaps %xmm5,nb134_Vvdwtot(%esp)        xorps %xmm2,%xmm2        mulps  %xmm0,%xmm7        subps %xmm7,%xmm2        movaps %xmm2,%xmm0        movaps %xmm2,%xmm1    movd  %mm0,%eax    movd  %mm1,%ebx    movd  %mm2,%ecx    movd  %mm3,%edx        xorps %xmm3,%xmm3        movaps %xmm3,%xmm4        movaps %xmm3,%xmm5        mulps nb134_dxOO(%esp),%xmm0        mulps nb134_dyOO(%esp),%xmm1        mulps nb134_dzOO(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixO(%esp),%xmm0        addps nb134_fiyO(%esp),%xmm1        addps nb134_fizO(%esp),%xmm2        movaps %xmm3,nb134_fjxO(%esp)        movaps %xmm4,nb134_fjyO(%esp)        movaps %xmm5,nb134_fjzO(%esp)        movaps %xmm0,nb134_fixO(%esp)        movaps %xmm1,nb134_fiyO(%esp)        movaps %xmm2,nb134_fizO(%esp)        ## Coulomb interactions         ## start with H1-H1 interaction         movaps  nb134_rinvH1H1(%esp),%xmm7        movaps  %xmm7,%xmm0        mulps   %xmm0,%xmm0     ## xmm7=rinv, xmm0=rinvsq        mulps  nb134_qqHH(%esp),%xmm7        mulps  %xmm7,%xmm0      ## total fs H1 in xmm0         movaps %xmm7,%xmm6 ## local vctot summation variable        movaps %xmm0,%xmm1        movaps %xmm0,%xmm2        xorps %xmm3,%xmm3        movaps %xmm3,%xmm4        movaps %xmm3,%xmm5        mulps nb134_dxH1H1(%esp),%xmm0        mulps nb134_dyH1H1(%esp),%xmm1        mulps nb134_dzH1H1(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixH1(%esp),%xmm0        addps nb134_fiyH1(%esp),%xmm1        addps nb134_fizH1(%esp),%xmm2        movaps %xmm3,nb134_fjxH1(%esp)        movaps %xmm4,nb134_fjyH1(%esp)        movaps %xmm5,nb134_fjzH1(%esp)        movaps %xmm0,nb134_fixH1(%esp)        movaps %xmm1,nb134_fiyH1(%esp)        movaps %xmm2,nb134_fizH1(%esp)        ## H1-H2 interaction         movaps  nb134_rinvH1H2(%esp),%xmm7        movaps  %xmm7,%xmm0        mulps   %xmm0,%xmm0     ## xmm7=rinv, xmm0=rinvsq        mulps  nb134_qqHH(%esp),%xmm7        mulps  %xmm7,%xmm0      ## total fs H1 in xmm0         addps  %xmm7,%xmm6 ## local vctot summation variable        movaps %xmm0,%xmm1        movaps %xmm0,%xmm2        xorps %xmm3,%xmm3        movaps %xmm3,%xmm4        movaps %xmm3,%xmm5        mulps nb134_dxH1H2(%esp),%xmm0        mulps nb134_dyH1H2(%esp),%xmm1        mulps nb134_dzH1H2(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixH1(%esp),%xmm0        addps nb134_fiyH1(%esp),%xmm1        addps nb134_fizH1(%esp),%xmm2        movaps %xmm3,nb134_fjxH2(%esp)        movaps %xmm4,nb134_fjyH2(%esp)        movaps %xmm5,nb134_fjzH2(%esp)        movaps %xmm0,nb134_fixH1(%esp)        movaps %xmm1,nb134_fiyH1(%esp)        movaps %xmm2,nb134_fizH1(%esp)        ## H1-M interaction          movaps  nb134_rinvH1M(%esp),%xmm7        movaps  %xmm7,%xmm0        mulps   %xmm0,%xmm0     ## xmm7=rinv, xmm0=rinvsq        mulps  nb134_qqMH(%esp),%xmm7        mulps  %xmm7,%xmm0      ## total fs H1 in xmm0         addps  %xmm7,%xmm6 ## local vctot summation variable        movaps %xmm0,%xmm1        movaps %xmm0,%xmm2        xorps %xmm3,%xmm3        movaps %xmm3,%xmm4        movaps %xmm3,%xmm5        mulps nb134_dxH1M(%esp),%xmm0        mulps nb134_dyH1M(%esp),%xmm1        mulps nb134_dzH1M(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixH1(%esp),%xmm0        addps nb134_fiyH1(%esp),%xmm1        addps nb134_fizH1(%esp),%xmm2        movaps %xmm3,nb134_fjxM(%esp)        movaps %xmm4,nb134_fjyM(%esp)        movaps %xmm5,nb134_fjzM(%esp)        movaps %xmm0,nb134_fixH1(%esp)        movaps %xmm1,nb134_fiyH1(%esp)        movaps %xmm2,nb134_fizH1(%esp)        ## H2-H1 interaction         movaps  nb134_rinvH2H1(%esp),%xmm7        movaps  %xmm7,%xmm0        mulps   %xmm0,%xmm0     ## xmm7=rinv, xmm0=rinvsq        mulps  nb134_qqHH(%esp),%xmm7        mulps  %xmm7,%xmm0      ## total fs H1 in xmm0         addps  %xmm7,%xmm6 ## local vctot summation variable        movaps %xmm0,%xmm1        movaps %xmm0,%xmm2        movaps nb134_fjxH1(%esp),%xmm3        movaps nb134_fjyH1(%esp),%xmm4        movaps nb134_fjzH1(%esp),%xmm5        mulps nb134_dxH2H1(%esp),%xmm0        mulps nb134_dyH2H1(%esp),%xmm1        mulps nb134_dzH2H1(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixH2(%esp),%xmm0        addps nb134_fiyH2(%esp),%xmm1        addps nb134_fizH2(%esp),%xmm2        movaps %xmm3,nb134_fjxH1(%esp)        movaps %xmm4,nb134_fjyH1(%esp)        movaps %xmm5,nb134_fjzH1(%esp)        movaps %xmm0,nb134_fixH2(%esp)        movaps %xmm1,nb134_fiyH2(%esp)        movaps %xmm2,nb134_fizH2(%esp)        ## H2-H2 interaction         movaps  nb134_rinvH2H2(%esp),%xmm7        movaps  %xmm7,%xmm0        mulps   %xmm0,%xmm0     ## xmm7=rinv, xmm0=rinvsq        mulps  nb134_qqHH(%esp),%xmm7        mulps  %xmm7,%xmm0      ## total fs H1 in xmm0         addps  %xmm7,%xmm6 ## local vctot summation variable        movaps %xmm0,%xmm1        movaps %xmm0,%xmm2        movaps nb134_fjxH2(%esp),%xmm3        movaps nb134_fjyH2(%esp),%xmm4        movaps nb134_fjzH2(%esp),%xmm5        mulps nb134_dxH2H2(%esp),%xmm0        mulps nb134_dyH2H2(%esp),%xmm1        mulps nb134_dzH2H2(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixH2(%esp),%xmm0        addps nb134_fiyH2(%esp),%xmm1        addps nb134_fizH2(%esp),%xmm2        movaps %xmm3,nb134_fjxH2(%esp)        movaps %xmm4,nb134_fjyH2(%esp)        movaps %xmm5,nb134_fjzH2(%esp)        movaps %xmm0,nb134_fixH2(%esp)        movaps %xmm1,nb134_fiyH2(%esp)        movaps %xmm2,nb134_fizH2(%esp)        ## H2-M interaction         movaps  nb134_rinvH2M(%esp),%xmm7        movaps  %xmm7,%xmm0        mulps   %xmm0,%xmm0     ## xmm7=rinv, xmm0=rinvsq        mulps  nb134_qqMH(%esp),%xmm7        mulps  %xmm7,%xmm0      ## total fs H1 in xmm0         addps  %xmm7,%xmm6 ## local vctot summation variable        movaps %xmm0,%xmm1        movaps %xmm0,%xmm2        movaps nb134_fjxM(%esp),%xmm3        movaps nb134_fjyM(%esp),%xmm4        movaps nb134_fjzM(%esp),%xmm5        mulps nb134_dxH2M(%esp),%xmm0        mulps nb134_dyH2M(%esp),%xmm1        mulps nb134_dzH2M(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixH2(%esp),%xmm0        addps nb134_fiyH2(%esp),%xmm1        addps nb134_fizH2(%esp),%xmm2        movaps %xmm3,nb134_fjxM(%esp)        movaps %xmm4,nb134_fjyM(%esp)        movaps %xmm5,nb134_fjzM(%esp)        movaps %xmm0,nb134_fixH2(%esp)        movaps %xmm1,nb134_fiyH2(%esp)        movaps %xmm2,nb134_fizH2(%esp)        ## M-H1 interaction         movaps  nb134_rinvMH1(%esp),%xmm7        movaps  %xmm7,%xmm0        mulps   %xmm0,%xmm0     ## xmm7=rinv, xmm0=rinvsq        mulps  nb134_qqMH(%esp),%xmm7        mulps  %xmm7,%xmm0      ## total fs in xmm0         addps  %xmm7,%xmm6 ## local vctot summation variable        movaps %xmm0,%xmm1        movaps %xmm0,%xmm2        movaps nb134_fjxH1(%esp),%xmm3        movaps nb134_fjyH1(%esp),%xmm4        movaps nb134_fjzH1(%esp),%xmm5        mulps nb134_dxMH1(%esp),%xmm0        mulps nb134_dyMH1(%esp),%xmm1        mulps nb134_dzMH1(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixM(%esp),%xmm0        addps nb134_fiyM(%esp),%xmm1        addps nb134_fizM(%esp),%xmm2        movaps %xmm3,nb134_fjxH1(%esp)        movaps %xmm4,nb134_fjyH1(%esp)        movaps %xmm5,nb134_fjzH1(%esp)        movaps %xmm0,nb134_fixM(%esp)        movaps %xmm1,nb134_fiyM(%esp)        movaps %xmm2,nb134_fizM(%esp)        ## M-H2 interaction         movaps  nb134_rinvMH2(%esp),%xmm7        movaps  %xmm7,%xmm0        mulps   %xmm0,%xmm0     ## xmm7=rinv, xmm0=rinvsq        mulps  nb134_qqMH(%esp),%xmm7        mulps  %xmm7,%xmm0      ## total fs in xmm0         addps  %xmm7,%xmm6 ## local vctot summation variable        movaps %xmm0,%xmm1        movaps %xmm0,%xmm2        movaps nb134_fjxH2(%esp),%xmm3        movaps nb134_fjyH2(%esp),%xmm4        movaps nb134_fjzH2(%esp),%xmm5        mulps nb134_dxMH2(%esp),%xmm0        mulps nb134_dyMH2(%esp),%xmm1        mulps nb134_dzMH2(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixM(%esp),%xmm0        addps nb134_fiyM(%esp),%xmm1        addps nb134_fizM(%esp),%xmm2        movaps %xmm3,nb134_fjxH2(%esp)        movaps %xmm4,nb134_fjyH2(%esp)        movaps %xmm5,nb134_fjzH2(%esp)        movaps %xmm0,nb134_fixM(%esp)        movaps %xmm1,nb134_fiyM(%esp)        movaps %xmm2,nb134_fizM(%esp)        ## M-M interaction         movaps  nb134_rinvMM(%esp),%xmm7        movaps  %xmm7,%xmm0        mulps   %xmm0,%xmm0     ## xmm7=rinv, xmm0=rinvsq        mulps  nb134_qqMM(%esp),%xmm7        mulps  %xmm7,%xmm0      ## total fs in xmm0         addps  %xmm7,%xmm6 ## local vctot summation variable        movaps %xmm0,%xmm1        addps  nb134_vctot(%esp),%xmm6        movaps %xmm6,nb134_vctot(%esp)        movaps %xmm0,%xmm2        movaps nb134_fjxM(%esp),%xmm3        movaps nb134_fjyM(%esp),%xmm4        movaps nb134_fjzM(%esp),%xmm5        mulps nb134_dxMM(%esp),%xmm0        mulps nb134_dyMM(%esp),%xmm1        mulps nb134_dzMM(%esp),%xmm2        subps %xmm0,%xmm3        subps %xmm1,%xmm4        subps %xmm2,%xmm5        addps nb134_fixM(%esp),%xmm0        addps nb134_fiyM(%esp),%xmm1        addps nb134_fizM(%esp),%xmm2        movaps %xmm3,nb134_fjxM(%esp)        movaps %xmm4,nb134_fjyM(%esp)        movaps %xmm5,nb134_fjzM(%esp)        movaps %xmm0,nb134_fixM(%esp)        movaps %xmm1,nb134_fiyM(%esp)        movaps %xmm2,nb134_fizM(%esp)        movl nb134_faction(%ebp),%edi        ## update j forces         ## 4 j waters with four atoms each.        ## step 1 : transpose fjxO, fjyO, fjzO, fjxH1        movaps nb134_fjxO(%esp),%xmm0        movaps nb134_fjyO(%esp),%xmm1        movaps nb134_fjzO(%esp),%xmm2        movaps nb134_fjxH1(%esp),%xmm3        movaps %xmm0,%xmm4        movaps %xmm1,%xmm5        unpcklps %xmm2,%xmm4        unpcklps %xmm3,%xmm5        unpckhps %xmm2,%xmm0        unpckhps %xmm3,%xmm1        movaps %xmm4,%xmm2        movaps %xmm0,%xmm3        unpcklps %xmm5,%xmm4        unpckhps %xmm5,%xmm2        unpcklps %xmm1,%xmm0        unpckhps %xmm1,%xmm3        ## results are now in xmm4, xmm2, xmm0, xmm3        ## load the corresponding j forces from memory        movlps   (%edi,%eax,4),%xmm1        movlps   (%edi,%ebx,4),%xmm5        movlps   (%edi,%ecx,4),%xmm6        movlps   (%edi,%edx,4),%xmm7        movhps   8(%edi,%eax,4),%xmm1        movhps   8(%edi,%ebx,4),%xmm5        movhps   8(%edi,%ecx,4),%xmm6        movhps   8(%edi,%edx,4),%xmm7        ## add        addps    %xmm4,%xmm1        addps    %xmm2,%xmm5        addps    %xmm0,%xmm6        addps    %xmm3,%xmm7        ## store back        movlps   %xmm1,(%edi,%eax,4)        movlps   %xmm5,(%edi,%ebx,4)        movlps   %xmm6,(%edi,%ecx,4)        movlps   %xmm7,(%edi,%edx,4)        movhps   %xmm1,8(%edi,%eax,4)        movhps   %xmm5,8(%edi,%ebx,4)        movhps   %xmm6,8(%edi,%ecx,4)        movhps   %xmm7,8(%edi,%edx,4)        ## step 2 : transpose fjyH1, fjzH1, fjxH2, fjyH2        movaps nb134_fjyH1(%esp),%xmm0        movaps nb134_fjzH1(%esp),%xmm1        movaps nb134_fjxH2(%esp),%xmm2        movaps nb134_fjyH2(%esp),%xmm3        movaps %xmm0,%xmm4        movaps %xmm1,%xmm5        unpcklps %xmm2,%xmm4        unpcklps %xmm3,%xmm5        unpckhps %xmm2,%xmm0        unpckhps %xmm3,%xmm1        movaps %xmm4,%xmm2        movaps %xmm0,%xmm3        unpcklps %xmm5,%xmm4        unpckhps %xmm5,%xmm2        unpcklps %xmm1,%xmm0        unpckhps %xmm1,%xmm3        ## results are now in xmm4, xmm2, xmm0, xmm3        ## load the corresponding j forces from memory        movlps   16(%edi,%eax,4),%xmm1        movlps   16(%edi,%ebx,4),%xmm5        movlps   16(%edi,%ecx,4),%xmm6        movlps   16(%edi,%edx,4),%xmm7        movhps   24(%edi,%eax,4),%xmm1        movhps   24(%edi,%ebx,4),%xmm5        movhps   24(%edi,%ecx,4),%xmm6        movhps   24(%edi,%edx,4),%xmm7        ## add        addps    %xmm4,%xmm1        addps    %xmm2,%xmm5        addps    %xmm0,%xmm6        addps    %xmm3,%xmm7        ## store back        movlps   %xmm1,16(%edi,%eax,4)        movlps   %xmm5,16(%edi,%ebx,4)        movlps   %xmm6,16(%edi,%ecx,4)        movlps   %xmm7,16(%edi,%edx,4)        movhps   %xmm1,24(%edi,%eax,4)        movhps   %xmm5,24(%edi,%ebx,4)

⌨️ 快捷键说明

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