atl_dmm6x1x72_sse2.c
来自「基于Blas CLapck的.用过的人知道是干啥的」· C语言 代码 · 共 3,260 行 · 第 1/5 页
C
3,260 行
mulpd rB0, rA0 addpd rA0, rC3 movapd 528-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 528-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif/* pref2((pfA)) *//* addl $48, pfA */#if KB > 68 movapd 544-120(pB0), rB0 movapd 544-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 544-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 544-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 544-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 544-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 544-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 70 movapd 560-120(pB0), rB0 movapd 560-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 560-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 560-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 560-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 560-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 560-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 72 movapd 576-120(pB0), rB0 movapd 576-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 576-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 576-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 576-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 576-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 576-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 74 movapd 592-120(pB0), rB0 movapd 592-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 592-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 592-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 592-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 592-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 592-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 76 movapd 608-120(pB0), rB0 movapd 608-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 608-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 608-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 608-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 608-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 608-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 78 movapd 624-120(pB0), rB0 movapd 624-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 624-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 624-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 624-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 624-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 624-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif/* * Get these bastard things summed up correctly */#ifdef ATL_SSE3 haddpd rC1, rC0 /* rC0 = c0ab c1ab */ addl $NBso, pB0 haddpd rC3, rC2 /* rC2 = c2ab c3ab */ #if MB == 0 subl incAn_m, pA0 #else subl $MBKBso-NB6so, pA0 #endif haddpd rC5, rC4 /* rC4 = c4ab c3ab */ #if MB == 0 movl pA0, pA3 addl $NB3so, pA3 #else subl $MBKBso-NB6so, pA3 #endif#else /* rC0 = c0a c0b */ /* rC1 = c1a c1b */ /* rC2 = c2a c2b */ /* rC3 = c3a c3b *//* */ /* rC4 = c4a c4b */ /* rC5 = c5a c5b */ movapd rC0, rA0 addl $NBso, pB0 movapd rC4, rB0 unpcklpd rC1, rC0 /* rC0 = c0a c1a */ #if MB == 0 subl incAn_m, pA0 #else subl $MBKBso-NB6so, pA0 #endif unpcklpd rC5, rC4 /* rC4 = c4a c5a */ unpckhpd rC1, rA0 /* rA0 = c0b c1b */ unpckhpd rC5, rB0 /* rB0 = c4b c5b */ addpd rA0, rC0 /* rC0 = c0ab c1ab */ addpd rB0, rC4 /* rC4 = c4ab c5ab */ movapd rC2, rA0 unpcklpd rC3, rC2 /* rC2 = c2a c3a */ unpckhpd rC3, rA0 /* rA0 = c2b c3b */ #if MB == 0 movl pA0, pA3 addl $NB3so, pA3 #else subl $MBKBso-NB6so, pA3 #endif addpd rA0, rC2 /* rC2 = c2ab c3ab */#endif/* * Write results back to C */ #ifdef DCPLX movlpd rC0, (pC) movhpd rC0, 16(pC) movlpd rC2, 32(pC) movhpd rC2, 48(pC) movlpd rC4, 64(pC) movhpd rC4, 80(pC) #else movapd rC0, (pC) movapd rC2, 16(pC) movapd rC4, 32(pC) #endif/* * pC += 6; pA += 6*NB *//* * pC += incCn; pA -= NBNB; pB += NB; *//* addl incCn, pC */ addl incCn_m, pC/* * while (pB != stN); */ sub $1, stN jnz NLOOP/* * Restore callee-saved iregs */ #ifdef ATL_GAS_x8664 movq -8(%rsp), %rbx movq -16(%rsp), %rbp #elif defined(BETAX) movl 32(%esp), %ebp movl 28(%esp), %ebx movl 24(%esp), %esi movl 20(%esp), %edi movl 16(%esp), %esp #else movl 12(%esp), %ebp movl 8(%esp), %ebx movl 4(%esp), %esi movl (%esp), %edi addl $28, %esp #endif ret#endifUNALIGNED:#if MB == 0 subl M_m, incCn addl $6, incCn#else subl $MB-6, incCn#endif #ifdef DCPLX shl $4, incCn #else shl $3, incCn #endif #ifndef ATL_GAS_x8664 movl incCn, COFF(%esp) #endif movl $NBso, ldab movl pA0, pA3 addl $NB3so, pA3 movl pA0, pfA#if MB == 0 addl $NB6so-120, pfA addl incAn_m, pfA#else addl $MBKBso-120, pfA#endifUNLOOP:#if MB == 0 movb M_m, stM subb $6, stM jz ULMLOOP#else movb $MB-6, stM#endif#if MB != 6UMLOOP:#ifdef BETA0 xorpd rC0, rC0 xorpd rC1, rC1 xorpd rC2, rC2 xorpd rC3, rC3 xorpd rC4, rC4 xorpd rC5, rC5#else #ifdef DCPLX movsd (pC), rC0 movsd 16(pC), rC1 movsd 32(pC), rC2 movsd 48(pC), rC3 movsd 64(pC), rC4 movsd 80(pC), rC5 #else movsd (pC), rC0 movsd 8(pC), rC1 movsd 16(pC), rC2 movsd 24(pC), rC3 movsd 32(pC), rC4 movsd 40(pC), rC5 #endif #ifdef BETAX #ifndef ATL_GAS_x8664 movlpd (%esp), rbeta #endif mulsd rbeta, rC0 mulsd rbeta, rC1 mulsd rbeta, rC2 mulsd rbeta, rC3 mulsd rbeta, rC4 mulsd rbeta, rC5 #endif#endif movapd 0-120(pB0), rB0 movapd 0-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 0-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 0-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 0-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 0-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 0-120(pA3,ldab,2), rB0 addpd rB0, rC5#if KB > 2 movapd 16-120(pB0), rB0 movapd 16-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 16-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 16-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 16-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 16-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 16-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 4 movapd 32-120(pB0), rB0 movapd 32-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 32-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 32-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 32-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 32-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 32-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 6 movapd 48-120(pB0), rB0 movapd 48-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 48-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 48-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 48-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 48-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 48-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 8 movapd 64-120(pB0), rB0 movapd 64-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 64-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 64-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 64-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 64-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 64-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 10 movapd 80-120(pB0), rB0 movapd 80-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 80-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 80-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 80-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 80-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 80-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 12 movapd 96-120(pB0), rB0 movapd 96-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 96-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 96-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 96-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 96-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 96-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 14 movapd 112-120(pB0), rB0 movapd 112-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 112-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 112-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 112-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 112-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 112-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 16 movapd 128-120(pB0), rB0 movapd 128-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 128-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 128-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 128-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 128-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 128-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 18 movapd 144-120(pB0), rB0 movapd 144-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 144-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 144-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 144-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 144-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 144-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 20 movapd 160-120(pB0), rB0 movapd 160-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 160-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 160-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 160-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 160-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 160-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif pref2((pfA)) addl $PFAINC, pfA#if KB > 22 movapd 176-120(pB0), rB0 movapd 176-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 176-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 176-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 176-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 176-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 176-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 24 movapd 192-120(pB0), rB0 movapd 192-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 192-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 192-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 192-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 192-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 192-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 26 movapd 208-120(pB0), rB0 movapd 208-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 208-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 208-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 208-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 208-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 208-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 28 movapd 224-120(pB0), rB0 movapd 224-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 224-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 224-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 224-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 224-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 224-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 30 movapd 240-120(pB0), rB0 movapd 240-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 240-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 240-120(pA0,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 240-120(pA3), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 240-120(pA3,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 mulpd 240-120(pA3,ldab,2), rB0 addpd rB0, rC5#endif#if KB > 32 movapd 256-120(pB0), rB0 movapd 256-120(pA0), rA0 mulpd rB0, rA0 addpd rA0, rC0 movapd 256-120(pA0,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC1
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?