atl_smm6x1x60_sse.c

来自「基于Blas CLapck的.用过的人知道是干啥的」· C语言 代码 · 共 1,022 行 · 第 1/2 页

C
1,022
字号
   #endif#else	movaps		rC2, rB0	movaps		rC0, rA0	unpckhps	rC3, rB0	unpckhps	rC1, rA0	unpcklps	rC3, rC2	movlhps		rB0, rC3	unpcklps	rC1, rC0	movhlps		rA0, rC3	movlhps		rC2, rA0	movhlps		rC0, rB0	addps		rA0, rC3	movlhps		rC0, rC1	movhlps		rC1, rC2        movaps          rC4, rA0    /* xmm6 = c4a  c4b  c4c  c4d */	addps		rB0, rC2        unpcklps        rC5, rA0    /* xmm6 = c4a  c5a  c4b  c5b */        unpckhps        rC5, rC4    /* xmm4 = c4c  c5c  c4d  c5d */				pref2(NB6so(stM,pfA))        addps           rA0, rC4    /* xmm4 = c4ac c5ac c4bd c5bd */	addps		rC2, rC3        movhlps         rC4, rC5    /* xmm5 = c4bd    c5bd    X X */				addl	$27, pfA        addps           rC5, rC4    /* xmm4 = c4abcd  c5abcd  X X *//* *      Write results back to C */   #ifdef SREAL	movups		rC3, (pC)        movlps          rC4, 16(pC)   #else	movss		rC3, (pC)        movhlps         rC3, rC0	movss		rC0, 16(pC)        shufps          $0x55, rC3, rC3	movss		rC3, 8(pC)        shufps          $0x55, rC0, rC0	movss		rC0, 24(pC)	movss           rC4, 32(pC)	shufps          $0x55, rC4, rC4	movss           rC4, 40(pC)   #endif#endif/* *      pC += 6;   pA += 6*NB */   #ifdef SCPLX	addl	$48, pC   #else	addl	$24, pC   #endif	addl	$NB6so, pA/* *      while (pA != stM); */	cmp	pA, stM	jne	MLOOP/* *      Unroll last iteration of MLOOP in order to prefetch next col of B */				prefB(NBso(pB))				prefB(32+NBso(pB))				prefB(64+NBso(pB))				prefB(96+NBso(pB))#ifdef BETA0	xorps	rC0, rC0	xorps	rC1, rC1	xorps	rC2, rC2	xorps	rC3, rC3	xorps	rC4, rC4	xorps	rC5, rC5#else   #ifdef SCPLX	movss	(pC), rC0	movss	8(pC), rC1	movss	16(pC), rC2	movss	24(pC), rC3	movss	32(pC), rC4	movss	40(pC), rC5   #else	movss	(pC), rC0	movss	4(pC), rC1	movss	8(pC), rC2	movss	12(pC), rC3	movss	16(pC), rC4	movss	20(pC), rC5   #endif   #ifdef BETAX	movss	(%esp), rA0	mulss	rA0, rC0	mulss	rA0, rC1	mulss	rA0, rC2	mulss	rA0, rC3	mulss	rA0, rC4	mulss	rA0, rC5   #endif#endif	ALIGN16	movaps	0(pB), rB0	movaps	0(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	0+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	0+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	0+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	0+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	0+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	16(pB), rB0	movaps	16(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	16+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	16+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	16+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	16+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	16+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	32(pB), rB0	movaps	32(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	32+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	32+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	32+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	32+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	32+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	48(pB), rB0	movaps	48(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	48+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	48+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	48+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	48+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	48+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	64(pB), rB0	movaps	64(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	64+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	64+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	64+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	64+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	64+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	80(pB), rB0	movaps	80(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	80+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	80+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	80+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	80+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	80+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	96(pB), rB0	movaps	96(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	96+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	96+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	96+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	96+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	96+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	112(pB), rB0	movaps	112(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	112+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	112+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	112+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	112+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	112+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	128(pB), rB0	movaps	128(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	128+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	128+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	128+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	128+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	128+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	144(pB), rB0	movaps	144(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	144+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	144+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	144+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	144+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	144+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	160(pB), rB0	movaps	160(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	160+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	160+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	160+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	160+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	160+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	176(pB), rB0	movaps	176(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	176+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	176+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	176+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	176+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	176+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	192(pB), rB0	movaps	192(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	192+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	192+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	192+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	192+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	192+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	208(pB), rB0	movaps	208(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	208+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	208+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	208+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	208+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	208+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5	movaps	224(pB), rB0	movaps	224(pA), rA0	mulps	rB0, rA0	addps	rA0, rC0	movaps	224+NBso(pA), rA0	mulps	rB0, rA0	addps	rA0, rC1	movaps	224+NB2so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC2	movaps	224+NB3so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC3	movaps	224+NB4so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC4	movaps	224+NB5so(pA), rA0	mulps	rB0, rA0	addps	rA0, rC5/* *      Get these bastard things summed up correctly */#ifdef ATL_SSE3        haddps  rC1, rC0        /* rC0  = c0ab c0cd c1ab c1cd */        haddps  rC3, rC2        /* rC2  = c2ab c2cd c3ab c3cd */        haddps  rC5, rC4        /* rC4  = c4ab c4cd c5ab c5cd */        haddps  rC2, rC0        /* rC0  = c0abcd c1abcd c2abcd c3abcd */        haddps  rC4, rC4        /* rC4  = c4abcd c5abcd c4abcd c5abcd */				prefB(128+NBso(pB))				prefB(160+NBso(pB))				prefB(196+NBso(pB))				prefB(224+NBso(pB))   #ifdef SREAL	movups		rC0, (pC)        movlps          rC4, 16(pC)   #else                                        /* rC4 = c5 c4 c5 c4 */                                        /* rC0 = c3 c2 c1 c0 */        movshdup        rC0, rC1        /* rC1 = c3 c3 c1 c1 */        movss           rC0, (pC)        movhlps         rC0, rC2        movss           rC1, 8(pC)        movhlps         rC1, rC3        movss           rC2, 16(pC)        movshdup        rC4, rC5        /* rc5 = c5 c5 c5 c5 */        movss           rC3, 24(pC)        movss           rC4, 32(pC)        movss           rC5, 40(pC)   #endif#else	movaps		rC2, rB0	movaps		rC2, rB0	movaps		rC0, rA0	unpckhps	rC3, rB0	unpckhps	rC1, rA0	unpcklps	rC3, rC2	movlhps		rB0, rC3	unpcklps	rC1, rC0	movhlps		rA0, rC3	movlhps		rC2, rA0	movhlps		rC0, rB0	addps		rA0, rC3	movlhps		rC0, rC1	movhlps		rC1, rC2        movaps          rC4, rA0    /* xmm6 = c4a  c4b  c4c  c4d */	addps		rB0, rC2        unpcklps        rC5, rA0    /* xmm6 = c4a  c5a  c4b  c5b */        unpckhps        rC5, rC4    /* xmm4 = c4c  c5c  c4d  c5d */        addps           rA0, rC4    /* xmm4 = c4ac c5ac c4bd c5bd */				prefB(128+NBso(pB))				prefB(160+NBso(pB))				prefB(196+NBso(pB))				prefB(224+NBso(pB))	addps		rC2, rC3        movhlps         rC4, rC5    /* xmm5 = c4bd    c5bd    X X */        addps           rC5, rC4    /* xmm4 = c4abcd  c5abcd  X X *//* *      Write results back to C */   #ifdef SREAL	movups		rC3, (pC)        movlps          rC4, 16(pC)   #else	movss		rC3, (pC)        movhlps         rC3, rC0	movss		rC0, 16(pC)        shufps          $0x55, rC3, rC3	movss		rC3, 8(pC)        shufps          $0x55, rC0, rC0	movss		rC0, 24(pC)	movss           rC4, 32(pC)	shufps          $0x55, rC4, rC4	movss           rC4, 40(pC)   #endif#endif/* *      End of unrolled final iteration of MLOOP *//* *      pC += incCn;  pA -= NBNB;  pB += NB; */	addl	incCn, pC	subl	$NBNBso-NB6so, pA	addl	$NBso, pB/* *      while (pB != stN); */	cmp	pB, stN	jne	NLOOP/* *      Restore callee-saved iregs */   #ifdef 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	$16, %esp   #endif	ret

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?