atl_dmm14x1x56_sse2pabc_k.c
来自「基于Blas CLapck的.用过的人知道是干啥的」· C语言 代码 · 共 3,047 行 · 第 1/5 页
C
3,047 行
mulpd rB0, rA0 addpd rA0, rC6 movapd 96-120(pA5, ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC7 movapd 96-120(pA10, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC8 movapd 96-120(pA5,ldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC9 movapd 96-120(pA10), rA0 mulpd rB0, rA0 addpd rA0, rC10 movapd 96-120(pA10,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC11 movapd 96-120(pA10,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC12 mulpd 96-120(pA5,ldab,8), rB0 addpd rB0, rC13#endif#if KB > 42 movapd 112-120(pA10,mldab5,2), rA0 movapd 112-120(pB0), rB0 mulpd rB0, rA0 addpd rA0, rC0 movapd 112-120(pA5, mldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 112-120(pA10, mldab,8), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 112-120(pA5, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 112-120(pA5, mldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 movapd 112-120(pA5), rA0 mulpd rB0, rA0 addpd rA0, rC5 movapd 112-120(pA5, ldab), rA0 mulpd rB0, rA0 addpd rA0, rC6 movapd 112-120(pA5, ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC7 movapd 112-120(pA10, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC8 movapd 112-120(pA5,ldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC9 movapd 112-120(pA10), rA0 mulpd rB0, rA0 addpd rA0, rC10 movapd 112-120(pA10,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC11 movapd 112-120(pA10,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC12 mulpd 112-120(pA5,ldab,8), rB0 addpd rB0, rC13#endif#if KB > 44 movapd 128-120(pA10,mldab5,2), rA0 movapd 128-120(pB0), rB0 mulpd rB0, rA0 addpd rA0, rC0 movapd 128-120(pA5, mldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 128-120(pA10, mldab,8), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 128-120(pA5, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 128-120(pA5, mldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 movapd 128-120(pA5), rA0 mulpd rB0, rA0 addpd rA0, rC5 movapd 128-120(pA5, ldab), rA0 mulpd rB0, rA0 addpd rA0, rC6 movapd 128-120(pA5, ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC7 movapd 128-120(pA10, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC8 movapd 128-120(pA5,ldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC9 movapd 128-120(pA10), rA0 mulpd rB0, rA0 addpd rA0, rC10 movapd 128-120(pA10,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC11 movapd 128-120(pA10,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC12 mulpd 128-120(pA5,ldab,8), rB0 addpd rB0, rC13#endif#if KB > 46 movapd 144-120(pA10,mldab5,2), rA0 movapd 144-120(pB0), rB0 mulpd rB0, rA0 addpd rA0, rC0 movapd 144-120(pA5, mldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 144-120(pA10, mldab,8), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 144-120(pA5, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 144-120(pA5, mldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 movapd 144-120(pA5), rA0 mulpd rB0, rA0 addpd rA0, rC5 movapd 144-120(pA5, ldab), rA0 mulpd rB0, rA0 addpd rA0, rC6 movapd 144-120(pA5, ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC7 movapd 144-120(pA10, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC8 movapd 144-120(pA5,ldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC9 movapd 144-120(pA10), rA0 mulpd rB0, rA0 addpd rA0, rC10 movapd 144-120(pA10,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC11 movapd 144-120(pA10,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC12 mulpd 144-120(pA5,ldab,8), rB0 addpd rB0, rC13#endif#if KB > 48 movapd 160-120(pA10,mldab5,2), rA0 movapd 160-120(pB0), rB0 mulpd rB0, rA0 addpd rA0, rC0 movapd 160-120(pA5, mldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 160-120(pA10, mldab,8), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 160-120(pA5, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 160-120(pA5, mldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 movapd 160-120(pA5), rA0 mulpd rB0, rA0 addpd rA0, rC5 movapd 160-120(pA5, ldab), rA0 mulpd rB0, rA0 addpd rA0, rC6 movapd 160-120(pA5, ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC7 movapd 160-120(pA10, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC8 movapd 160-120(pA5,ldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC9 movapd 160-120(pA10), rA0 mulpd rB0, rA0 addpd rA0, rC10 movapd 160-120(pA10,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC11 movapd 160-120(pA10,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC12 mulpd 160-120(pA5,ldab,8), rB0 addpd rB0, rC13#endif#if KB > 50 movapd 176-120(pA10,mldab5,2), rA0 movapd 176-120(pB0), rB0 mulpd rB0, rA0 addpd rA0, rC0 movapd 176-120(pA5, mldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 176-120(pA10, mldab,8), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 176-120(pA5, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 176-120(pA5, mldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 movapd 176-120(pA5), rA0 mulpd rB0, rA0 addpd rA0, rC5 movapd 176-120(pA5, ldab), rA0 mulpd rB0, rA0 addpd rA0, rC6 movapd 176-120(pA5, ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC7 movapd 176-120(pA10, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC8 movapd 176-120(pA5,ldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC9 movapd 176-120(pA10), rA0 mulpd rB0, rA0 addpd rA0, rC10 movapd 176-120(pA10,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC11 movapd 176-120(pA10,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC12 mulpd 176-120(pA5,ldab,8), rB0 addpd rB0, rC13#endif#if KB > 52 movapd 192-120(pA10,mldab5,2), rA0 movapd 192-120(pB0), rB0 mulpd rB0, rA0 addpd rA0, rC0 movapd 192-120(pA5, mldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 192-120(pA10, mldab,8), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 192-120(pA5, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 192-120(pA5, mldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 movapd 192-120(pA5), rA0 mulpd rB0, rA0 addpd rA0, rC5 movapd 192-120(pA5, ldab), rA0 mulpd rB0, rA0 addpd rA0, rC6 movapd 192-120(pA5, ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC7 movapd 192-120(pA10, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC8 movapd 192-120(pA5,ldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC9 movapd 192-120(pA10), rA0 mulpd rB0, rA0 addpd rA0, rC10 movapd 192-120(pA10,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC11 movapd 192-120(pA10,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC12 mulpd 192-120(pA5,ldab,8), rB0 addpd rB0, rC13#endif#if KB > 54 movapd 208-120(pA10,mldab5,2), rA0 movapd 208-120(pB0), rB0 mulpd rB0, rA0 addpd rA0, rC0 movapd 208-120(pA5, mldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 208-120(pA10, mldab,8), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 208-120(pA5, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 208-120(pA5, mldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 movapd 208-120(pA5), rA0 mulpd rB0, rA0 addpd rA0, rC5 movapd 208-120(pA5, ldab), rA0 mulpd rB0, rA0 addpd rA0, rC6 movapd 208-120(pA5, ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC7 movapd 208-120(pA10, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC8 movapd 208-120(pA5,ldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC9 movapd 208-120(pA10), rA0 mulpd rB0, rA0 addpd rA0, rC10 movapd 208-120(pA10,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC11 movapd 208-120(pA10,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC12 mulpd 208-120(pA5,ldab,8), rB0 addpd rB0, rC13#endif/* * While (pB != stK); * * cmp pB, stK * jne UKLOOP *//* * Get these bastard things summed up correctly */ /* rC0 = c0a c0b */ /* rC1 = c1a c1b */ /* rC2 = c2a c2b */ /* rC3 = c3a c3b */ /* rC4 = c4a c4b */ /* rC5 = c5a c5b */ /* rC6 = c6a c6b */ /* rC7 = c7a c7b */ #ifdef DREAL pref2((pfA)) pref2(64(pfA)) #else prefC(224(pC)) prefC(288(pC)) #endif movapd rC0, rA0 movapd rC4, rB0 unpcklpd rC1, rC0 /* rC0 = c0a c1a */ unpcklpd rC5, rC4 /* rC4 = c4a c5a */ #ifdef DREAL prefC(112(pC)) prefC(176(pC)) #else prefC(352(pC)) prefC(416(pC)) #endif 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 movapd rC6, rB0 unpcklpd rC3, rC2 /* rC2 = c2a c3a */ unpcklpd rC7, rC6 /* rC6 = c6a c7a */ addq $150, pfA unpckhpd rC3, rA0 /* rA0 = c2b c3b */ pref2(-22(pfA)) unpckhpd rC7, rB0 /* rB0 = c6b c7b */ addpd rA0, rC2 /* rC2 = c2ab c3ab */ addpd rB0, rC6 /* rC6 = c6ab c7ab */ /* rC8 = c08a c08b */ /* rC9 = c09a c09b */ /* rC10 = c10a c10b */ /* rC11 = c11a c11b */ /* rC12 = c12a c12b */ /* rC13 = c13a c13b */ movapd rC8, rA0 movapd rC10, rC1 movapd rC12, rC3 unpcklpd rC9, rC8 /* rC8 = c08a c09a */ #if KB > 26 addq $NB14so-224, pA5 #else addq $NB14so, pA5 #endif unpcklpd rC11, rC10 /* rC10 = c10a c11a */ #if KB > 26 addq $NB14so-224, pA10 #else addq $NB14so, pA10 #endif unpcklpd rC13, rC12 /* rC12 = c12a c13a */ unpckhpd rC11, rC1 /* rC1 = c10b c11b */ unpckhpd rC9, rA0 /* rA0 = c08b c09b */ unpckhpd rC13, rC3 /* rC3 = c12b c13b */ addpd rA0, rC8 /* rC8 = c08ab c09ab */ #if KB > 26 subq $224, pB0 #endif addpd rC1, rC10 /* rC10 = c10ab c11ab */#ifdef DREAL addq $112, pC#endif addpd rC3, rC12 /* rc12 = c12ab c13ab *//* * Write results back to C */#ifdef DREAL movupd rC0, -112(pC) movupd rC2, 16-112(pC) movupd rC4, 32-112(pC) movupd rC6, 48-112(pC) movupd rC8, 64-112(pC) movupd rC10, 80-112(pC) movupd rC12, 96-112(pC)#else movlpd rC0, (pC) movhpd rC0, 16(pC) movlpd rC2, 32(pC) movhpd rC2, 48(pC) movlpd rC4, 64(pC) movhpd rC4, 80(pC) movlpd rC6, 96(pC) movhpd rC6, 112(pC) movlpd rC8, 128(pC) movhpd rC8, 144(pC) movlpd rC10, 160(pC) movhpd rC10, 176(pC) movlpd rC12, 192(pC) movhpd rC12, 208(pC) addq $224, pC#endif/* * pC += 14; pA += 14*NB; pB -= NB; * * while (pA != stM); */ subq $1, stM jne UMLOOP/* * Last iteration of M-loop unrolled to prefetch next col of B *//*UMLOOP: *//*UKLOOP: */#ifdef BETA1 movapd 0-120(pA10,mldab5,2), rC0 movapd 0-120(pB0), rB0 mulpd rB0, rC0 addsd (pC), rC0 movapd 0-120(pA5, mldab,4), rC1 mulpd rB0, rC1 addsd CMUL(8)(pC), rC1 movapd 0-120(pA10, mldab,8), rC2 mulpd rB0, rC2 addsd CMUL(16)(pC), rC2 movapd 0-120(pA5, mldab,2), rC3 mulpd rB0, rC3 addsd CMUL(24)(pC), rC3 movapd 0-120(pA5, mldab), rC4 mulpd rB0, rC4 addsd CMUL(32)(pC), rC4 movapd 0-120(pA5), rC5 mulpd rB0, rC5 addsd CMUL(40)(pC), rC5 movapd 0-120(pA5, ldab), rC6 mulpd rB0, rC6 addsd CMUL(48)(pC), rC6 movapd 0-120(pA5, ldab,2), rC7 mulpd rB0, rC7 addsd CMUL(56)(pC), rC7 movapd 0-120(pA10, mldab,2), rC8 mulpd rB0, rC8 addsd CMUL(64)(pC), rC8 movapd 0-120(pA5,ldab,4), rC9 mulpd rB0, rC9 addsd CMUL(72)(pC), rC9 movapd 0-120(pA10), rC10 mulpd rB0, rC10 addsd CMUL(80)(pC), rC10 movapd 0-120(pA10,ldab), rC11 mulpd rB0, rC11 addsd CMUL(88)(pC), rC11 movapd 0-120(pA10,ldab,2), rC12 mulpd rB0, rC12 addsd CMUL(96)(pC), rC12 movapd 0-120(pA5,ldab,8), rC13 mulpd rB0, rC13 addsd CMUL(104)(pC), rC13#elif defined(BETA0) movapd 0-120(pA10,mldab5,2), rC0 movapd 0-120(pB0), rC13 mulpd rC13, rC0 movapd 0-120(pA5, mldab,4), rC1 mulpd rC13, rC1 movapd 0-120(pA10, mldab,8), rC2 mulpd rC13, rC2 movapd 0-120(pA5, mldab,2), rC3 mulpd rC13, rC3 movapd 0-120(pA5, mldab), rC4 mulpd rC13, rC4 movapd 0-120(pA5), rC5 mulpd rC13, rC5 movapd 0-120(pA5, ldab), rC6 mulpd rC13, rC6 movapd 0-120(pA5, ldab,2), rC7 mulpd rC13, rC7 movapd 0-120(pA10, mldab,2), rC8 mulpd rC13, rC8 movapd 0-120(pA5,ldab,4), rC9 mulpd rC13, rC9 movapd 0-120(pA10), rC10 mulpd rC13, rC10 movapd 0-120(pA10,ldab), rC11 mulpd rC13, rC11 movapd 0-120(pA10,ldab,2), rC12 mulpd rC13, rC12 mulpd 0-120(pA5,ldab,8), rC13#else movsd BOF(%rsp), rC0 movapd rC0, rC1 movapd rC0, rC2 movapd rC0, rC3 movapd rC0, rC4 movapd rC0, rC5 movapd rC0, rC6 movapd rC0, rC7 movapd rC0, rC8 movapd rC0, rC9 movapd rC0, rC10 movapd rC0, rC11 movapd rC0, rC12 movapd rC0, rC13 mulsd (pC), rC0 mulsd CMUL(8)(pC), rC1 mulsd CMUL(16)(pC), rC2 mulsd CMUL(24)(pC), rC3 mulsd CMUL(32)(pC), rC4 mulsd CMUL(40)(pC), rC5 mulsd CMUL(48)(pC), rC6 mulsd CMUL(56)(pC), rC7 mulsd CMUL(64)(pC), rC8 mulsd CMUL(72)(pC), rC9 mulsd CMUL(80)(pC), rC10 mulsd CMUL(88)(pC), rC11 mulsd CMUL(96)(pC), rC12 mulsd CMUL(104)(pC), rC13 movapd 0-120(pA10,mldab5,2), rA0 movapd 0-120(pB0), rB0 mulpd rB0, rA0 addpd rA0, rC0 movapd 0-120(pA5, mldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC1 movapd 0-120(pA10, mldab,8), rA0 mulpd rB0, rA0 addpd rA0, rC2 movapd 0-120(pA5, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC3 movapd 0-120(pA5, mldab), rA0 mulpd rB0, rA0 addpd rA0, rC4 movapd 0-120(pA5), rA0 mulpd rB0, rA0 addpd rA0, rC5 movapd 0-120(pA5, ldab), rA0 mulpd rB0, rA0 addpd rA0, rC6 movapd 0-120(pA5, ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC7 movapd 0-120(pA10, mldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC8 movapd 0-120(pA5,ldab,4), rA0 mulpd rB0, rA0 addpd rA0, rC9 movapd 0-120(pA10), rA0 mulpd rB0, rA0 addpd rA0, rC10 movapd 0-120(pA10,ldab), rA0 mulpd rB0, rA0 addpd rA0, rC11 movapd 0-120(pA10,ldab,2), rA0 mulpd rB0, rA0 addpd rA0, rC12
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?