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 + -
显示快捷键?