atl_smm6x1x120_sse.c
来自「基于Blas CLapck的.用过的人知道是干啥的」· C语言 代码 · 共 1,763 行 · 第 1/3 页
C
1,763 行
addps rA0, rC3 movaps 208-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 208-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 224-120(pA0), rA0 movaps 224-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 224-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 224-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 224-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 224-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 224-120(pA3,ldab,2), rB0 addps rB0, rC5 addl $240, pA0 addl $240, pA3 addl $240, pB0 movaps 0-120(pA0), rA0 movaps 0-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 0-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 0-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 0-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 0-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 0-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 16-120(pA0), rA0 movaps 16-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 16-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 16-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 16-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 16-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 16-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 32-120(pA0), rA0 movaps 32-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 32-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 32-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 32-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 32-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 32-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 48-120(pA0), rA0 movaps 48-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 48-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 48-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 48-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 48-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 48-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 64-120(pA0), rA0 movaps 64-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 64-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 64-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 64-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 64-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 64-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 80-120(pA0), rA0 movaps 80-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 80-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 80-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 80-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 80-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 80-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 96-120(pA0), rA0 movaps 96-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 96-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 96-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 96-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 96-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 96-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 112-120(pA0), rA0 movaps 112-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 112-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 112-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 112-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 112-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 112-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 128-120(pA0), rA0 movaps 128-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 128-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 128-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 128-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 128-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 128-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 144-120(pA0), rA0 movaps 144-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 144-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 144-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 144-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 144-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 144-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 160-120(pA0), rA0 movaps 160-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 160-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 160-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 160-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 160-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 160-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 176-120(pA0), rA0 movaps 176-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 176-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 176-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 176-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 176-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 176-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 192-120(pA0), rA0 movaps 192-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 192-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 192-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 192-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 192-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 192-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 208-120(pA0), rA0 movaps 208-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 208-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 208-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 208-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 208-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 208-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 224-120(pA0), rA0 movaps 224-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 224-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 224-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 224-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 224-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 224-120(pA3,ldab,2), rB0 addps rB0, rC5/*ENDKLOOP *//* * Get these bastard things summed up */ /* rC0 = c0a c0b c0c c0d */ /* rC1 = c1a c1b c1c c1d */ /* rC2 = c2a c2b c2c c2d */ /* rC3 = c3a c3b c3c c3d */ /* rC4 = c4a c4b c4c c4d */ /* rC5 = c5a c5b c5c c5d */#ifdef ATL_SSE3 haddps rC1, rC0 /* rC0 = c1cd c1ab c0cd c0ab */ haddps rC3, rC2 /* rC2 = c3cd c3ab c2cd c2ab */ haddps rC5, rC4 /* rC4 = c5cd c5ab c4cd c4ab */ haddps rC2, rC0 /* rC0 = c3abcd c2abcd c1abcd c0abcd */ haddps rC4, rC4 /* rC4 = c5abcd c4abcd c5abcd c4abcd *//* * Write results back to C */ #if defined(X8664) && defined(BETAX) addps rc0, rC0 addps rc1, rC4 #endif #ifdef SCPLX /* rC0 = c3 c2 c1 c0 */ pshufd $0x71, rC0, rC3 /* rC3 = c1 c3 c0 c1 */ movss rC0, (pC0) pshufd $0x71, rC4, rC5 /* rC5 = c4 c5 c4 c5 */ movss rC4, 4*8(pC0) movhlps rC0, rC0 /* rC0 = c3 c2 c3 c2 */ movss rC3, 1*8(pC0) movhlps rC3, rC3 /* rC3 = c1 c3 c1 c3 */ movss rC5, 5*8(pC0) movss rC0, 2*8(pC0) movss rC3, 3*8(pC0) #else movups rC0, (pC0) movlps rC4, 16(pC0) #endif#else movaps rC2, rB0 /* rB0 = c2a c2b c2c c2d */ prefC((pC0)) prefC(64(pC0)) movaps rC0, rA0 /* rA0 = c0a c0b c0c c0d */ unpckhps rC3, rB0 /* rB0 = c2c c3c c2d c3d */ unpckhps rC1, rA0 /* rA0 = c0c c1c c0d c1d */ unpcklps rC3, rC2 /* rC2 = c2a c3a c2b c3b */ movlhps rB0, rC3 /* rC3 = c3a c3b c2c c3c */ unpcklps rC1, rC0 /* rC0 = c0a c1a c0b c1b */ movhlps rA0, rC3 /* rC3 = c0d c1d c2c c3c */ movlhps rC2, rA0 /* rA0 = c0c c1c c2a c3a */ movhlps rC0, rB0 /* rB0 = c0b c1b c2d c3d */ addps rA0, rC3 /* rC3 = c0cd c1cd c2ac c3ac */ movlhps rC0, rC1 /* rC1 = c1a c1b c0a c1a */ movaps rC4, rA0 /* rA0 = c4a c4b c4c c4d */ movhlps rC1, rC2 /* rC2 = c0a c1a c2b c3b */ unpcklps rC5, rA0 /* rA0 = c4a c5a c4b c5b */ addps rB0, rC2 /* rC2 = c0ab c1ab c2bd c3bd */ unpckhps rC5, rC4 /* rC4 = c4c c5c c4d c5d */ addps rC2, rC3 /* rC3 = c0abcd c1abcd c2bdac c3bdac */ addps rA0, rC4 /* rC4 = c4ac c5ac c4bd c5bd */ movhlps rC4, rC5 /* rC5 = c4bd c5bd X X */ addps rC5, rC4 /* rC4 = c4abcd c5abcd X X *//* * Write results back to C */ #if defined(X8664) && defined(BETAX) addps rc0, rC3 addps rc1, rC4 #endif #ifdef SCPLX movss rC3, (pC0) movhlps rC3, rC0 movss rC0, 16(pC0) shufps $0x55, rC3, rC3 shufps $0x55, rC0, rC0 movss rC3, 8(pC0) movss rC0, 24(pC0) movss rC4, 32(pC0) shufps $0x55, rC4, rC4 movss rC4, 40(pC0) #else movups rC3, (pC0) movlps rC4, 16(pC0) #endif#endif/* * pC += 6; pA += 6*NB */ addl $CMUL(24), pC0 addl $NB6so-240, pA0 addl $NB6so-240, pA3 subl $240, pB0 #ifdef X8632 subb $1, stM #else subq $6, stM #endif jnz MLOOP#endif/* * Last iteration of MLOOP unrolled to prefetch B */#if MB == 0MLOOPCU:#endif#ifdef X8664 #if defined(BETAX) #ifdef SCPLX movups (pC0), rc0 movups 16(pC0), rtmp shufps $0xE8, rc0, rc0 shufps $0xE8, rtmp, rtmp movlhps rtmp, rc0 movss 32(pC0), rc1 movss 40(pC0), rtmp unpcklps rtmp, rc1 #else movups (pC0), rc0 xorps rc1, rc1 movlps 16(pC0), rc1 #endif mulps rBETA, rc0 mulps rBETA, rc1 #endif ALIGN16#elif defined(BETAX) movss (pC0), rC0 movss CMUL(4)(pC0), rC1 movss CMUL(8)(pC0), rC2 movss CMUL(12)(pC0), rC3 movss CMUL(16)(pC0), rC4 movss CMUL(20)(pC0), rC5 movss BETAOFF(%esp), rA0 mulss rA0, rC0 mulss rA0, rC1 mulss rA0, rC2 mulss rA0, rC3 mulss rA0, rC4 mulss rA0, rC5 ALIGN16#endif/*KLOOP */#if defined(BETA1) movaps 0-120(pA0), rC0 movaps 0-120(pB0), rB0 mulps rB0, rC0 addss (pC0), rC0 movaps 0-120(pA0,ldab), rC1 mulps rB0, rC1 addss CMUL(4)(pC0), rC1 movaps 0-120(pA0,ldab,2), rC2 mulps rB0, rC2 addss CMUL(8)(pC0), rC2 movaps 0-120(pA3), rC3 mulps rB0, rC3 addss CMUL(12)(pC0), rC3 movaps 0-120(pA3,ldab), rC4 mulps rB0, rC4 addss CMUL(16)(pC0), rC4 movaps 0-120(pA3,ldab,2), rC5 mulps rB0, rC5 addss CMUL(20)(pC0), rC5#elif defined(BETA0) || defined(X8664) movaps 0-120(pA0), rC0 movaps 0-120(pB0), rB0 mulps rB0, rC0 movaps 0-120(pA0,ldab), rC1 mulps rB0, rC1 movaps 0-120(pA0,ldab,2), rC2 mulps rB0, rC2 movaps 0-120(pA3), rC3 mulps rB0, rC3 movaps 0-120(pA3,ldab), rC4 mulps rB0, rC4 movaps 0-120(pA3,ldab,2), rC5 mulps rB0, rC5#else movaps 0-120(pA0), rA0 movaps 0-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 0-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 0-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 0-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 0-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 0-120(pA3,ldab,2), rB0 addps rB0, rC5#endif movaps 16-120(pA0), rA0 movaps 16-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 16-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 16-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 16-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 16-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 16-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 32-120(pA0), rA0 movaps 32-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 32-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 32-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 32-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 32-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 32-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 48-120(pA0), rA0 movaps 48-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 48-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 48-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 48-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 48-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 48-120(pA3,ldab,2), rB0 addps rB0, rC5 movaps 64-120(pA0), rA0 movaps 64-120(pB0), rB0 mulps rB0, rA0 addps rA0, rC0 movaps 64-120(pA0,ldab), rA0 mulps rB0, rA0 addps rA0, rC1 movaps 64-120(pA0,ldab,2), rA0 mulps rB0, rA0 addps rA0, rC2 movaps 64-120(pA3), rA0 mulps rB0, rA0 addps rA0, rC3 movaps 64-120(pA3,ldab), rA0 mulps rB0, rA0 addps rA0, rC4 mulps 64-120(pA3,ldab,2), rB0
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?