atl_smm_sse2_112m.c

来自「基于Blas CLapck的.用过的人知道是干啥的」· C语言 代码 · 共 634 行 · 第 1/2 页

C
634
字号
            vec_mul_mr_a(pA0+56+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+60,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+60,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+60+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+60+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+60+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+64,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+64,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+64+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+64+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+64+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+68,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+68,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+68+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+68+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+68+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+72,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+72,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+72+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+72+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+72+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+76,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+76,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+76+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+76+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+76+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+80,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+80,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+80+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+80+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+80+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+84,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+84,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+84+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+84+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+84+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+88,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+88,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+88+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+88+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+88+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+92,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+92,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+92+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+92+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+92+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+96,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+96,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+96+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+96+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+96+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+100,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+100,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+100+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+100+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+100+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+104,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+104,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+104+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+104+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+104+3*KB,reg4);            vec_add_rr(reg4,reg3);            vec_mov_mr_a(pB0+108,reg7);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+108,reg4);            vec_add_rr(reg4,reg0);            vec_mov_rr(reg7,reg5);            vec_mul_mr_a(pA0+108+KB,reg5);            vec_add_rr(reg5,reg1);            vec_mov_rr(reg7,reg6);            vec_mul_mr_a(pA0+108+2*KB,reg6);            vec_add_rr(reg6,reg2);            vec_mov_rr(reg7,reg4);            vec_mul_mr_a(pA0+108+3*KB,reg4);            vec_add_rr(reg4,reg3);#ifndef TCPLX            vec_sum_full(reg0,reg1,reg2,reg3,reg5,reg6,reg7);            vec_mov_rm(reg5,pC0);#else            vec_sum(reg0);            vec_sum(reg1);            vec_sum(reg2);            vec_sum(reg3);            vec_mov_rm_1(reg0,pC0);            vec_mov_rm_1(reg1,pC0+(1 SHIFT));            vec_mov_rm_1(reg2,pC0+(2 SHIFT));            vec_mov_rm_1(reg3,pC0+(3 SHIFT));#endif            pA0 += incAm;            pB0 += incBm;            pC0 += incCm;         }         while(pA0 != stM);         pA0 += incAn;         pB0 += incBn;         pC0 += incCn;      }      while(pB0 != stN);   }   if (M%4>0)   {      pC0 = C+((M-M%4)SHIFT);      pA0 = A+(M-M%4)*KB;      pB0 = B;      do /* N-loop */      {         do /* M-loop */         {#ifdef BETA0            vec_mov_mr(zerovec,reg7);            vec_mov_rr(reg7,reg0);#elif defined(BETA1)            vec_mov_mr_1(pC0,reg0);#else            vec_mov_mr(betavec,reg7);            vec_mov_mr_1(pC0,reg0);            vec_mul_rr(reg7,reg0);#endif            vec_mov_mr_a(pB0,reg1);            vec_mul_mr_a(pA0,reg1);            vec_add_rr(reg1,reg0);            vec_mov_mr_a(pB0+4,reg2);            vec_mul_mr_a(pA0+4,reg2);            vec_add_rr(reg2,reg0);            vec_mov_mr_a(pB0+8,reg3);            vec_mul_mr_a(pA0+8,reg3);            vec_add_rr(reg3,reg0);            vec_mov_mr_a(pB0+12,reg1);            vec_mul_mr_a(pA0+12,reg1);            vec_add_rr(reg1,reg0);            vec_mov_mr_a(pB0+16,reg2);            vec_mul_mr_a(pA0+16,reg2);            vec_add_rr(reg2,reg0);            vec_mov_mr_a(pB0+20,reg3);            vec_mul_mr_a(pA0+20,reg3);            vec_add_rr(reg3,reg0);            vec_mov_mr_a(pB0+24,reg1);            vec_mul_mr_a(pA0+24,reg1);            vec_add_rr(reg1,reg0);            vec_mov_mr_a(pB0+28,reg2);            vec_mul_mr_a(pA0+28,reg2);            vec_add_rr(reg2,reg0);            vec_mov_mr_a(pB0+32,reg3);            vec_mul_mr_a(pA0+32,reg3);            vec_add_rr(reg3,reg0);            vec_mov_mr_a(pB0+36,reg1);            vec_mul_mr_a(pA0+36,reg1);            vec_add_rr(reg1,reg0);            vec_mov_mr_a(pB0+40,reg2);            vec_mul_mr_a(pA0+40,reg2);            vec_add_rr(reg2,reg0);            vec_mov_mr_a(pB0+44,reg3);            vec_mul_mr_a(pA0+44,reg3);            vec_add_rr(reg3,reg0);            vec_mov_mr_a(pB0+48,reg1);            vec_mul_mr_a(pA0+48,reg1);            vec_add_rr(reg1,reg0);            vec_mov_mr_a(pB0+52,reg2);            vec_mul_mr_a(pA0+52,reg2);            vec_add_rr(reg2,reg0);            vec_mov_mr_a(pB0+56,reg3);            vec_mul_mr_a(pA0+56,reg3);            vec_add_rr(reg3,reg0);            vec_mov_mr_a(pB0+60,reg1);            vec_mul_mr_a(pA0+60,reg1);            vec_add_rr(reg1,reg0);            vec_mov_mr_a(pB0+64,reg2);            vec_mul_mr_a(pA0+64,reg2);            vec_add_rr(reg2,reg0);            vec_mov_mr_a(pB0+68,reg3);            vec_mul_mr_a(pA0+68,reg3);            vec_add_rr(reg3,reg0);            vec_mov_mr_a(pB0+72,reg1);            vec_mul_mr_a(pA0+72,reg1);            vec_add_rr(reg1,reg0);            vec_mov_mr_a(pB0+76,reg2);            vec_mul_mr_a(pA0+76,reg2);            vec_add_rr(reg2,reg0);            vec_mov_mr_a(pB0+80,reg3);            vec_mul_mr_a(pA0+80,reg3);            vec_add_rr(reg3,reg0);            vec_mov_mr_a(pB0+84,reg1);            vec_mul_mr_a(pA0+84,reg1);            vec_add_rr(reg1,reg0);            vec_mov_mr_a(pB0+88,reg2);            vec_mul_mr_a(pA0+88,reg2);            vec_add_rr(reg2,reg0);            vec_mov_mr_a(pB0+92,reg3);            vec_mul_mr_a(pA0+92,reg3);            vec_add_rr(reg3,reg0);            vec_mov_mr_a(pB0+96,reg1);            vec_mul_mr_a(pA0+96,reg1);            vec_add_rr(reg1,reg0);            vec_mov_mr_a(pB0+100,reg2);            vec_mul_mr_a(pA0+100,reg2);            vec_add_rr(reg2,reg0);            vec_mov_mr_a(pB0+104,reg3);            vec_mul_mr_a(pA0+104,reg3);            vec_add_rr(reg3,reg0);            vec_mov_mr_a(pB0+108,reg1);            vec_mul_mr_a(pA0+108,reg1);            vec_add_rr(reg1,reg0);            vec_sum(reg0);            vec_mov_rm_1(reg0,pC0);            pA0 += incAm_m;            pB0 += incBm;            pC0 += (1 SHIFT);         }         while(pA0 != stM_m);         pA0 += incAn_m;         pB0 += incBn;         pC0 += incCn_m;      }      while(pB0 != stN);   }   }

⌨️ 快捷键说明

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