atl_dmm8x1x120_sse2.c
来自「基于Blas CLapck的.用过的人知道是干啥的」· C语言 代码 · 共 3,266 行 · 第 1/5 页
C
3,266 行
addpd rA0,rC02 movapd 656-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 656-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 656-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 656-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 656-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 84 movapd 672-128(pB0), rB0 movapd 672-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 672-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 672-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 672-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 672-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 672-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 672-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 672-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 86 movapd 688-128(pB0), rB0 movapd 688-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 688-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 688-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 688-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 688-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 688-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 688-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 688-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 88 movapd 704-128(pB0), rB0 movapd 704-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 704-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 704-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 704-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 704-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 704-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 704-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 704-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 90 movapd 720-128(pB0), rB0 movapd 720-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 720-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 720-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 720-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 720-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 720-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 720-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 720-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 92 movapd 736-128(pB0), rB0 movapd 736-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 736-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 736-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 736-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 736-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 736-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 736-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 736-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 94 movapd 752-128(pB0), rB0 movapd 752-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 752-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 752-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 752-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 752-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 752-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 752-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 752-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 96 movapd 768-128(pB0), rB0 movapd 768-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 768-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 768-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 768-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 768-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 768-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 768-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 768-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 98 movapd 784-128(pB0), rB0 movapd 784-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 784-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 784-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 784-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 784-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 784-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 784-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 784-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 100 movapd 800-128(pB0), rB0 movapd 800-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 800-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 800-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 800-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 800-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 800-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 800-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 800-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 102 movapd 816-128(pB0), rB0 movapd 816-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 816-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 816-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 816-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 816-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 816-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 816-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 816-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 104 movapd 832-128(pB0), rB0 movapd 832-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 832-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 832-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 832-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 832-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 832-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 832-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 832-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 106 movapd 848-128(pB0), rB0 movapd 848-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 848-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 848-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 848-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 848-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 848-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 848-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 848-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 108 movapd 864-128(pB0), rB0 movapd 864-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 864-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 864-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 864-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 864-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 864-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 864-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 864-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 110 movapd 880-128(pB0), rB0 movapd 880-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 880-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 880-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 880-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 880-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 880-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 880-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 880-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 112 movapd 896-128(pB0), rB0 movapd 896-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 896-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 896-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 896-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 896-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 896-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 896-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 896-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 114 movapd 912-128(pB0), rB0 movapd 912-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 912-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 912-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 912-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 912-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 912-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 912-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 912-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 116 movapd 928-128(pB0), rB0 movapd 928-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 928-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 928-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 928-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 928-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 928-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 928-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 928-128(pA0,lda7), rB0 addpd rB0,rC07#endif#if KB > 118 movapd 944-128(pB0), rB0 movapd 944-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 944-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 944-128(pA0,lda,2), rA0 mulpd rB0,rA0 addpd rA0,rC02 movapd 944-128(pA0,lda3), rA0 mulpd rB0,rA0 addpd rA0,rC03 movapd 944-128(pA0,lda,4), rA0 mulpd rB0,rA0 addpd rA0,rC04 movapd 944-128(pA0,lda5), rA0 mulpd rB0,rA0 addpd rA0,rC05 movapd 944-128(pA0,lda3,2), rA0 mulpd rB0,rA0 addpd rA0,rC06 mulpd 944-128(pA0,lda7), rB0 addpd rB0,rC07#endif/* jne KLOOP *//* * pC[0-3] = rC[0-3] */ #ifndef BETA0 movapd (pC0), rA0 #ifdef BETAX mulpd BETA, rA0 #endif #endif haddpd rC01,rC00 lea (pA0,lda,8), pA0 #ifndef BETA0 addpd rA0, rC00 #endif movapd rC00, (pC0) #ifndef BETA0 movapd 16(pC0), rA0 #ifdef BETAX mulpd BETA, rA0 #endif #endif haddpd rC03,rC02 #ifndef BETA0 addpd rA0, rC02 #endif movapd rC02, 16(pC0) #ifndef BETA0 movapd 32(pC0), rA0 #ifdef BETAX mulpd BETA, rA0 #endif #endif haddpd rC05,rC04 #ifndef BETA0 addpd rA0, rC04 #endif movapd rC04, 32(pC0) #ifndef BETA0 movapd 48(pC0), rA0 #ifdef BETAX mulpd BETA, rA0 #endif #endif haddpd rC07,rC06 #ifndef BETA0 addpd rA0, rC06 #endif movapd rC06, 48(pC0) add $8*8, pC0 sub $8, MM jnz MLOOP sub incAn, pA0 add incCn, pC0 add ldb, pB0 sub $1, NN jnz NLOOP#DONE: movq -8(%rsp), %rbp movq -16(%rsp), %rbx movq -24(%rsp), %r12 movq -32(%rsp), %r13 movq -40(%rsp), %r14 movq -48(%rsp), %r15 ret#endif/* *This set of loops is used always for complex data, and anytime all columns *of $C$ aren't on 16-byte boundary (allowing use of high performance movapd) */UNLOOP: movq MM0, MM prefB(-128(pB0,ldb))#if KB > 16 prefB((pB0,ldb))#endif#if KB > 32 prefB(128(pB0,ldb))#endif#if KB > 48 prefB(256(pB0,ldb))#endif#if KB > 64 prefB(384(pB0,ldb))#endifUMLOOP:/* * For unaligned code, load C at top so we don't exhaust reservation stat * of write buffer with all the movlpd/movhpd pairs at end of loop */ prefC(CMUL(64)(pC0)) #ifndef BETA0 movlpd (pC0), rC0 movhpd CMUL(8)(pC0), rC0 #ifdef BETAX mulpd BETA, rC0 #endif movlpd CMUL(16)(pC0), rC2 movhpd CMUL(24)(pC0), rC2 #ifdef BETAX mulpd BETA, rC2 #endif movlpd CMUL(32)(pC0), rC4 movhpd CMUL(40)(pC0), rC4 #ifdef BETAX mulpd BETA, rC4 #endif movlpd CMUL(48)(pC0), rC6 movhpd CMUL(56)(pC0), rC6 #ifdef BETAX mulpd BETA, rC6 #endif #endif/*KLOOP: */ movapd -128(pB0), rB0 pref2((pfA)) add $PFAINC, pfA movapd -128(pA0), rC00 mulpd rB0,rC00 movapd -128(pA0,lda), rC01 mulpd rB0,rC01 movapd -128(pA0,lda,2), rC02 mulpd rB0,rC02 movapd -128(pA0,lda3), rC03 mulpd rB0,rC03 movapd -128(pA0,lda,4), rC04 mulpd rB0,rC04 movapd -128(pA0,lda5), rC05 mulpd rB0,rC05 movapd -128(pA0,lda3,2), rC06 mulpd rB0,rC06 movapd -128(pA0,lda7), rC07 mulpd rB0,rC07#if KB > 2 movapd 16-128(pB0), rB0 movapd 16-128(pA0), rA0 mulpd rB0,rA0 addpd rA0,rC00 movapd 16-128(pA0,lda), rA0 mulpd rB0,rA0 addpd rA0,rC01 movapd 16-128(pA0,lda,2), rA0 mulpd rB0,rA0
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?