GotoBlas2核心dgemm之dgemm_beta

來源:互聯網
上載者:User

經過對最新的GotoBlas2核心的分析,dgemm 分解為四個部分:dgemm_beta、dgemm_i*copy、dgemm_kernel、dgemm_o*copy.

目標:以Intel Core2 Duo CPU E8500為平台,重新構建(masm文法)最小的dgemm模組。

1.dgemm_beta完成:C=BETA*C的運算。

先重構dgemm_beta,再給一個簡單的c調用執行個體:

 

;/*********************************************************************/<br />;/* Copyright 2009, 2010 The University of Texas at Austin. */<br />;/* All rights reserved. */<br />;/* GotoBlas2核心dgemm之dgemm_beta. By G-Spider @2011. */<br />;/* ml.exe compiler.*/<br />;/*********************************************************************/<br />.686p<br />.model flat,c<br />option casemap :none</p><p>.code<br />;C=BETA*C;<br />;LDC=max{M,N};<br />; void __cdecl dgemm_beta(int M,int N,int ,double BETA,int,int,int,int,double *C,int LDC)<br />dgemm_beta proc</p><p>M = dword ptr 4;M<br />N =dword ptr 8;N<br />BETA=qword ptr 10h;BETA<br />_C=dword ptr 28h;C<br />LDC=dword ptr 2Ch;LDC</p><p>pushebp<br />pushedi<br />pushesi<br />pushebx</p><p>movesi,[esp+10h+M]<br />movecx,[esp+10h+N]<br />fld[esp+10h+BETA]</p><p>movedi, [esp+10h+_C]<br />movebp, [esp+10h+LDC]</p><p>testesi, esi<br />jleL999<br />testecx, ecx<br />jleL999</p><p>ftst<br />fnstswax<br />andah, 44h<br />jeshort L201<br />align 4</p><p>L101:<br />moveax, edi<br />leaedi, [edi+ebp*8]<br />movedx, esi<br />saredx, 3<br />jleshort L103<br />align 4</p><p>L102:<br />fstqword ptr [eax]<br />fstqword ptr [eax+8]<br />fstqword ptr [eax+10h]<br />fstqword ptr [eax+18h]<br />fstqword ptr [eax+20h]<br />fstqword ptr [eax+28h]<br />fstqword ptr [eax+30h]<br />fstqword ptr [eax+38h]<br />addeax, 40h<br />decedx<br />jgshort L102<br />align 4</p><p>L103:<br />movedx, esi<br />andedx, 7<br />jleshort L105<br />align 4</p><p>L104:<br />fstqword ptr [eax]<br />addeax, 8<br />decedx<br />jgshort L104<br />align 4</p><p>L105:<br />dececx<br />jgshort L101<br />jmpL999</p><p>L201:<br />moveax, edi ;c_offset = c<br />leaedi, [edi+ebp*8] ;c += ldc<br />movedx, esi<br />saredx, 3<br />jleshort L203<br />align 4</p><p>L202:<br />fldqword ptr [eax]<br />fmulst, st(1)<br />fstpqword ptr [eax]<br />fldqword ptr [eax+8]<br />fmulst, st(1)<br />fstpqword ptr [eax+8]<br />fldqword ptr [eax+10h]<br />fmulst, st(1)<br />fstpqword ptr [eax+10h]<br />fldqword ptr [eax+18h]<br />fmulst, st(1)<br />fstpqword ptr [eax+18h]<br />fldqword ptr [eax+20h]<br />fmulst, st(1)<br />fstpqword ptr [eax+20h]<br />fldqword ptr [eax+28h]<br />fmulst, st(1)<br />fstpqword ptr [eax+28h]<br />fldqword ptr [eax+30h]<br />fmulst, st(1)<br />fstpqword ptr [eax+30h]<br />fldqword ptr [eax+38h]<br />fmulst, st(1)<br />fstpqword ptr [eax+38h]<br />addeax, 40h<br />decedx<br />jgshort L202<br />align 4</p><p>L203:<br />movedx, esi<br />andedx, 7<br />jleshort L205<br />align 4</p><p>L204:<br />fldqword ptr [eax]<br />fmulst, st(1)<br />fstpqword ptr [eax]<br />addeax, 8<br />decedx<br />jgshort L204<br />align 4</p><p>L205:<br />dececx<br />jgL201<br />nop</p><p>L999:<br />ffreepst<br />xoreax, eax<br />popebx<br />popesi<br />popedi<br />popebp<br />ret<br />dgemm_beta endp</p><p>end</p><p>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.