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 + -
显示快捷键?