Guest User

Untitled

a guest
Jun 4th, 2020
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.81 KB | None | 0 0
  1. m(int64_t arg0, arg1, arg2) {   /*RDI, RSI, RDX, RCX, R8, and R9*/
  2.  
  3. //arg0 и arg1 - определяют начальные адреса массивов из которых
  4. //берутся перемножаемые элементы
  5. //arg2 - определяет адрес массива назначения
  6.  
  7. int64_t mem64[],
  8. size_t i,j,k,n;                 /*r10, r8, rax, rcx*/
  9. double tmp0, tmp1, tmp2;     /*xmm0, xmm1 and xmm2*/
  10. tmp2=0;
  11. i=0;
  12.  
  13. while(1)    {
  14.     j=0;
  15.     while(1)    {
  16.         n=arg1+j;
  17.         tmp1=tmp2;
  18.         mem64[arg2+j]=0;
  19.         k=0;
  20.         do  {
  21.             tmp0=(double)mem64[arg0+i+k];
  22.             k+=8;
  23.             n+=2400;
  24.             tmp0*=(double)mem64[n-2400];
  25.             /*tmp0=mem64[n]*mem64[arg0+i+k]*/
  26.             tmp1+=tmp0;
  27.             mem64[arg2+j]+=(int64_t)tmp1;
  28.         }   while(k!=800);
  29.         j+=8;
  30.         if(j==2400) break;
  31.     }
  32.     i+=800;
  33.     arg2+=2400;
  34.     if(i==160000)   break;
  35. }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment