nb_kernel133_x86_64_sse2.s

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

S
2,141
字号
        ## calc dr         subsd nb133_ixH2(%rsp),%xmm3        subsd nb133_iyH2(%rsp),%xmm4        subsd nb133_izH2(%rsp),%xmm5        ## store dr         movapd %xmm3,nb133_dxH2(%rsp)        movapd %xmm4,nb133_dyH2(%rsp)        movapd %xmm5,nb133_dzH2(%rsp)        ## square it         mulsd %xmm3,%xmm3        mulsd %xmm4,%xmm4        mulsd %xmm5,%xmm5        addsd %xmm4,%xmm5        addsd %xmm3,%xmm5        ## move j coords to xmm4-xmm2        movapd %xmm0,%xmm4        movapd %xmm1,%xmm3    ## xmm2 already contains z        ## calc dr         subsd nb133_ixM(%rsp),%xmm4        subsd nb133_iyM(%rsp),%xmm3        subsd nb133_izM(%rsp),%xmm2        ## store dr         movapd %xmm4,nb133_dxM(%rsp)        movapd %xmm3,nb133_dyM(%rsp)        movapd %xmm2,nb133_dzM(%rsp)        ## square it         mulpd %xmm2,%xmm2        mulpd %xmm3,%xmm3        mulpd %xmm4,%xmm4        addpd %xmm3,%xmm4        addpd %xmm2,%xmm4        ## rsqM in xmm4, rsqH2 in xmm5, rsqH1 in xmm6, rsqO in xmm7         ## start with rsqH1 - put seed in xmm2         cvtsd2ss %xmm6,%xmm2        rsqrtss %xmm2,%xmm2        cvtss2sd %xmm2,%xmm2        movapd  %xmm2,%xmm3        mulsd   %xmm2,%xmm2        movapd  nb133_three(%rsp),%xmm1        mulsd   %xmm6,%xmm2     ## rsq*lu*lu         subsd   %xmm2,%xmm1     ## 30-rsq*lu*lu         mulsd   %xmm3,%xmm1     ## lu*(3-rsq*lu*lu)         mulsd   nb133_half(%rsp),%xmm1   ## iter1 ( new lu)         movapd %xmm1,%xmm3        mulsd %xmm1,%xmm1       ## lu*lu         mulsd %xmm1,%xmm6       ## rsq*lu*lu         movapd nb133_three(%rsp),%xmm1        subsd %xmm6,%xmm1       ## 3-rsq*lu*lu         mulsd %xmm3,%xmm1       ## lu*( 3-rsq*lu*lu)         mulsd nb133_half(%rsp),%xmm1   ## rinv         movapd %xmm1,nb133_rinvH1(%rsp)        ## rsqH2 - seed in xmm2         cvtsd2ss %xmm5,%xmm2        rsqrtss %xmm2,%xmm2        cvtss2sd %xmm2,%xmm2        movapd  %xmm2,%xmm3        mulsd   %xmm2,%xmm2        movapd  nb133_three(%rsp),%xmm1        mulsd   %xmm5,%xmm2     ## rsq*lu*lu         subsd   %xmm2,%xmm1     ## 30-rsq*lu*lu         mulsd   %xmm3,%xmm1     ## lu*(3-rsq*lu*lu)         mulsd   nb133_half(%rsp),%xmm1   ## iter1 ( new lu)         movapd %xmm1,%xmm3        mulsd %xmm1,%xmm1       ## lu*lu         mulsd %xmm1,%xmm5       ## rsq*lu*lu         movapd nb133_three(%rsp),%xmm1        subsd %xmm5,%xmm1       ## 3-rsq*lu*lu         mulsd %xmm3,%xmm1       ## lu*( 3-rsq*lu*lu)         mulsd nb133_half(%rsp),%xmm1   ## rinv         movapd %xmm1,nb133_rinvH2(%rsp)        ## rsqM - seed in xmm2         cvtsd2ss %xmm4,%xmm2        rsqrtss %xmm2,%xmm2        cvtss2sd %xmm2,%xmm2        movapd  %xmm2,%xmm3        mulsd   %xmm2,%xmm2        movapd  nb133_three(%rsp),%xmm1        mulsd   %xmm4,%xmm2     ## rsq*lu*lu         subsd   %xmm2,%xmm1     ## 30-rsq*lu*lu         mulsd   %xmm3,%xmm1     ## lu*(3-rsq*lu*lu)         mulsd   nb133_half(%rsp),%xmm1   ## iter1 ( new lu)         movapd %xmm1,%xmm3        mulsd %xmm1,%xmm1       ## lu*lu         mulsd %xmm1,%xmm4       ## rsq*lu*lu         movapd nb133_three(%rsp),%xmm1        subsd %xmm4,%xmm1       ## 3-rsq*lu*lu         mulsd %xmm3,%xmm1       ## lu*( 3-rsq*lu*lu)         mulsd nb133_half(%rsp),%xmm1   ## rinv         movapd %xmm1,nb133_rinvM(%rsp)        ## rsqO - put seed in xmm2         cvtsd2ss %xmm7,%xmm2        rsqrtss %xmm2,%xmm2        cvtss2sd %xmm2,%xmm2        movsd  %xmm2,%xmm3        mulsd   %xmm2,%xmm2        movsd  nb133_three(%rsp),%xmm4        mulsd   %xmm7,%xmm2     ## rsq*lu*lu         subsd   %xmm2,%xmm4     ## 30-rsq*lu*lu         mulsd   %xmm3,%xmm4     ## lu*(3-rsq*lu*lu)         mulsd   nb133_half(%rsp),%xmm4   ## iter1 ( new lu)         movsd %xmm4,%xmm3        mulsd %xmm4,%xmm4       ## lu*lu         mulsd %xmm4,%xmm7       ## rsq*lu*lu         movsd nb133_three(%rsp),%xmm4        subsd %xmm7,%xmm4       ## 3-rsq*lu*lu         mulsd %xmm3,%xmm4       ## lu*( 3-rsq*lu*lu)         mulsd nb133_half(%rsp),%xmm4   ## rinv         movsd  %xmm4,%xmm7      ## rinvO in xmm7         movsd nb133_rsqO(%rsp),%xmm4        movapd %xmm7,%xmm0        ## LJ table interaction.        mulsd %xmm7,%xmm4       ## xmm4=r         mulsd nb133_tsc(%rsp),%xmm4        cvttsd2si %xmm4,%ebx    ## mm6 = lu idx         cvtsi2sd %ebx,%xmm5        subpd %xmm5,%xmm4        movapd %xmm4,%xmm1      ## xmm1=eps         movapd %xmm1,%xmm2        mulpd  %xmm2,%xmm2      ## xmm2=eps2         shll $3,%ebx        movq nb133_VFtab(%rbp),%rsi        ## dispersion         movlpd (%rsi,%rbx,8),%xmm4      ## Y1           movhpd 8(%rsi,%rbx,8),%xmm4     ## Y1 F1                movapd %xmm4,%xmm5        unpcklpd %xmm3,%xmm4    ## Y1 Y2         unpckhpd %xmm3,%xmm5    ## F1 F2         movlpd 16(%rsi,%rbx,8),%xmm6    ## G1        movhpd 24(%rsi,%rbx,8),%xmm6    ## G1 H1                movapd %xmm6,%xmm7        unpcklpd %xmm3,%xmm6    ## G1 G2         unpckhpd %xmm3,%xmm7    ## H1 H2         ## dispersion table ready, in xmm4-xmm7                 mulsd  %xmm1,%xmm6      ## xmm6=Geps         mulsd  %xmm2,%xmm7      ## xmm7=Heps2         addsd  %xmm6,%xmm5        addsd  %xmm7,%xmm5      ## xmm5=Fp              mulsd  nb133_two(%rsp),%xmm7    ## two*Heps2         addsd  %xmm6,%xmm7        addsd  %xmm5,%xmm7 ## xmm7=FF         mulsd  %xmm1,%xmm5 ## xmm5=eps*Fp         addsd  %xmm4,%xmm5 ## xmm5=VV         movsd nb133_c6(%rsp),%xmm4        mulsd  %xmm4,%xmm7       ## fijD         mulsd  %xmm4,%xmm5       ## Vvdw6         ## put scalar force on stack Update Vvdwtot directly         addsd  nb133_Vvdwtot(%rsp),%xmm5        xorpd  %xmm3,%xmm3        mulsd  nb133_tsc(%rsp),%xmm7        subsd  %xmm7,%xmm3        movsd %xmm3,nb133_fstmp(%rsp)        movsd %xmm5,nb133_Vvdwtot(%rsp)        ## repulsion         movlpd 32(%rsi,%rbx,8),%xmm4    ## Y1           movhpd 40(%rsi,%rbx,8),%xmm4    ## Y1 F1                movapd %xmm4,%xmm5        unpcklpd %xmm3,%xmm4    ## Y1 Y2         unpckhpd %xmm3,%xmm5    ## F1 F2         movlpd 48(%rsi,%rbx,8),%xmm6    ## G1        movhpd 56(%rsi,%rbx,8),%xmm6    ## G1 H1                movapd %xmm6,%xmm7        unpcklpd %xmm3,%xmm6    ## G1 G2         unpckhpd %xmm3,%xmm7    ## H1 H2         ## table ready, in xmm4-xmm7            mulsd  %xmm1,%xmm6      ## xmm6=Geps         mulsd  %xmm2,%xmm7      ## xmm7=Heps2         addsd  %xmm6,%xmm5        addsd  %xmm7,%xmm5      ## xmm5=Fp              mulsd  nb133_two(%rsp),%xmm7    ## two*Heps2         addsd  %xmm6,%xmm7        addsd  %xmm5,%xmm7 ## xmm7=FF         mulsd  %xmm1,%xmm5 ## xmm5=eps*Fp         addsd  %xmm4,%xmm5 ## xmm5=VV         movsd nb133_c12(%rsp),%xmm4        mulsd  %xmm4,%xmm7        mulsd  %xmm4,%xmm5        addsd  nb133_Vvdwtot(%rsp),%xmm5        movsd nb133_fstmp(%rsp),%xmm3        mulsd  nb133_tsc(%rsp),%xmm7        subsd  %xmm7,%xmm3        movsd %xmm5,nb133_Vvdwtot(%rsp)        mulsd  %xmm0,%xmm3        movsd nb133_dxO(%rsp),%xmm0        movsd nb133_dyO(%rsp),%xmm1        movsd nb133_dzO(%rsp),%xmm2        movq   nb133_faction(%rbp),%rdi        mulsd  %xmm3,%xmm0        mulsd  %xmm3,%xmm1        mulsd  %xmm3,%xmm2        ## update O forces         movapd nb133_fixO(%rsp),%xmm3        movapd nb133_fiyO(%rsp),%xmm4        movapd nb133_fizO(%rsp),%xmm7        addsd  %xmm0,%xmm3        addsd  %xmm1,%xmm4        addsd  %xmm2,%xmm7        movsd %xmm3,nb133_fixO(%rsp)        movsd %xmm4,nb133_fiyO(%rsp)        movsd %xmm7,nb133_fizO(%rsp)        ## update j forces with water O         movsd %xmm0,nb133_fjx(%rsp)        movsd %xmm1,nb133_fjy(%rsp)        movsd %xmm2,nb133_fjz(%rsp)        ## H1 interactions        movsd  nb133_rinvH1(%rsp),%xmm6        movsd  %xmm6,%xmm4        mulsd   %xmm4,%xmm4     ## xmm6=rinv, xmm4=rinvsq         mulsd   nb133_qqH(%rsp),%xmm6   ## vcoul         mulsd   %xmm6,%xmm4   ## fscal        addsd  nb133_vctot(%rsp),%xmm6        movsd %xmm6,nb133_vctot(%rsp)        movapd nb133_dxH1(%rsp),%xmm0        movapd nb133_dyH1(%rsp),%xmm1        movapd nb133_dzH1(%rsp),%xmm2        mulsd  %xmm4,%xmm0        mulsd  %xmm4,%xmm1        mulsd  %xmm4,%xmm2        ## update H1 forces         movapd nb133_fixH1(%rsp),%xmm3        movapd nb133_fiyH1(%rsp),%xmm4        movapd nb133_fizH1(%rsp),%xmm7        addsd  %xmm0,%xmm3        addsd  %xmm1,%xmm4        addsd  %xmm2,%xmm7        movsd %xmm3,nb133_fixH1(%rsp)        movsd %xmm4,nb133_fiyH1(%rsp)        movsd %xmm7,nb133_fizH1(%rsp)        ## update j forces with water H1         addsd  nb133_fjx(%rsp),%xmm0        addsd  nb133_fjy(%rsp),%xmm1        addsd  nb133_fjz(%rsp),%xmm2        movsd %xmm0,nb133_fjx(%rsp)        movsd %xmm1,nb133_fjy(%rsp)        movsd %xmm2,nb133_fjz(%rsp)        ## H2 interactions         movsd  nb133_rinvH2(%rsp),%xmm6        movsd  %xmm6,%xmm4        mulsd   %xmm4,%xmm4     ## xmm6=rinv, xmm4=rinvsq         mulsd   nb133_qqH(%rsp),%xmm6   ## vcoul         mulsd   %xmm6,%xmm4   ## fscal        addsd  nb133_vctot(%rsp),%xmm6        movsd %xmm6,nb133_vctot(%rsp)        movapd nb133_dxH2(%rsp),%xmm0        movapd nb133_dyH2(%rsp),%xmm1        movapd nb133_dzH2(%rsp),%xmm2        mulsd  %xmm4,%xmm0        mulsd  %xmm4,%xmm1        mulsd  %xmm4,%xmm2        ## update H2 forces         movapd nb133_fixH2(%rsp),%xmm3        movapd nb133_fiyH2(%rsp),%xmm4        movapd nb133_fizH2(%rsp),%xmm7        addsd  %xmm0,%xmm3        addsd  %xmm1,%xmm4        addsd  %xmm2,%xmm7        movsd %xmm3,nb133_fixH2(%rsp)        movsd %xmm4,nb133_fiyH2(%rsp)        movsd %xmm7,nb133_fizH2(%rsp)        ## update j forces with water H2         addsd  nb133_fjx(%rsp),%xmm0        addsd  nb133_fjy(%rsp),%xmm1        addsd  nb133_fjz(%rsp),%xmm2        movsd %xmm0,nb133_fjx(%rsp)        movsd %xmm1,nb133_fjy(%rsp)        movsd %xmm2,nb133_fjz(%rsp)        ## M interactions         movsd  nb133_rinvM(%rsp),%xmm6        movsd  %xmm6,%xmm4        mulsd   %xmm4,%xmm4     ## xmm6=rinv, xmm4=rinvsq         mulsd   nb133_qqM(%rsp),%xmm6   ## vcoul         mulsd   %xmm6,%xmm4   ## fscal        addsd  nb133_vctot(%rsp),%xmm6        movsd %xmm6,nb133_vctot(%rsp)        movapd nb133_dxM(%rsp),%xmm0        movapd nb133_dyM(%rsp),%xmm1        movapd nb133_dzM(%rsp),%xmm2        mulsd  %xmm4,%xmm0        mulsd  %xmm4,%xmm1        mulsd  %xmm4,%xmm2        ## update M forces         movapd nb133_fixM(%rsp),%xmm3        movapd nb133_fiyM(%rsp),%xmm4        movapd nb133_fizM(%rsp),%xmm7        addsd  %xmm0,%xmm3        addsd  %xmm1,%xmm4        addsd  %xmm2,%xmm7        movsd %xmm3,nb133_fixM(%rsp)        movsd %xmm4,nb133_fiyM(%rsp)        movsd %xmm7,nb133_fizM(%rsp)        movq nb133_faction(%rbp),%rdi        ## update j forces         addsd  nb133_fjx(%rsp),%xmm0        addsd  nb133_fjy(%rsp),%xmm1        addsd  nb133_fjz(%rsp),%xmm2        movlpd (%rdi,%rax,8),%xmm3        movlpd 8(%rdi,%rax,8),%xmm4        movlpd 16(%rdi,%rax,8),%xmm5        addsd %xmm0,%xmm3        addsd %xmm1,%xmm4        addsd %xmm2,%xmm5        movlpd %xmm3,(%rdi,%rax,8)        movlpd %xmm4,8(%rdi,%rax,8)        movlpd %xmm5,16(%rdi,%rax,8)_nb_kernel133_x86_64_sse2.nb133_updateouterdata:         movl  nb133_ii3(%rsp),%ecx        movq  nb133_faction(%rbp),%rdi        movq  nb133_fshift(%rbp),%rsi        movl  nb133_is3(%rsp),%edx        ## accumulate  Oi forces in xmm0, xmm1, xmm2         movapd nb133_fixO(%rsp),%xmm0        movapd nb133_fiyO(%rsp),%xmm1        movapd nb133_fizO(%rsp),%xmm2        movhlps %xmm0,%xmm3        movhlps %xmm1,%xmm4        movhlps %xmm2,%xmm5        addsd  %xmm3,%xmm0        addsd  %xmm4,%xmm1        addsd  %xmm5,%xmm2 ## sum is in low xmm0-xmm2         ## increment i force         movsd  (%rdi,%rcx,8),%xmm3        movsd  8(%rdi,%rcx,8),%xmm4        movsd  16(%rdi,%rcx,8),%xmm5        subsd  %xmm0,%xmm3        subsd  %xmm1,%xmm4        subsd  %xmm2,%xmm5        movsd  %xmm3,(%rdi,%rcx,8)        movsd  %xmm4,8(%rdi,%rcx,8)        movsd  %xmm5,16(%rdi,%rcx,8)        ## accumulate force in xmm6/xmm7 for fshift         movapd %xmm0,%xmm6        movsd %xmm2,%xmm7        unpcklpd %xmm1,%xmm6        ## accumulate H1i forces in xmm0, xmm1, xmm2         movapd nb133_fixH1(%rsp),%xmm0        movapd nb133_fiyH1(%rsp),%xmm1        movapd nb133_fizH1(%rsp),%xmm2        movhlps %xmm0,%xmm3        movhlps %xmm1,%xmm4        movhlps %xmm2,%xmm5        addsd  %xmm3,%xmm0        addsd  %xmm4,%xmm1        addsd  %xmm5,%xmm2 ## sum is in low xmm0-xmm2         ## increment i force         movsd  24(%rdi,%rcx,8),%xmm3        movsd  32(%rdi,%rcx,8),%xmm4        movsd  40(%rdi,%rcx,8),%xmm5        subsd  %xmm0,%xmm3        subsd  %xmm1,%xmm4        subsd  %xmm2,%xmm5        movsd  %xmm3,24(%rdi,%rcx,8)        movsd  %xmm4,32(%rdi,%rcx,8)        movsd  %xmm5,40(%rdi,%rcx,8)        ## accumulate force in xmm6/xmm7 for fshift         addsd %xmm2,%xmm7        unpcklpd %xmm1,%xmm0        addpd %xmm0,%xmm6        ## accumulate H2i forces in xmm0, xmm1, xmm2         movapd nb133_fixH2(%rsp),%xmm0        movapd nb133_fiyH2(%rsp),%xmm1        movapd nb133_fizH2(%rsp),%xmm2        movhlps %xmm0,%xmm3        movhlps %xmm1,%xmm4        movhlps %xmm2,%xmm5        addsd  %xmm3,%xmm0        addsd  %xmm4,%xmm1        addsd  %xmm5,%xmm2 ## sum is in low xmm0-xmm2         ## increment i force         movsd  48(%rdi,%rcx,8),%xmm3

⌨️ 快捷键说明

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