📄 zgemv_t_sse2_core2.s
字号:
subq $-8 * SIZE, AO1 subq $-8 * SIZE, AO2 subq $-8 * SIZE, BO ALIGN_3.L25: movq MIN_N, I andq $2, I jle .L26 movapd -16 * SIZE(AO1), %xmm9 movapd %xmm9, %xmm8 SHUFPD_1 %xmm9, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -16 * SIZE(AO2), %xmm11 movapd %xmm11, %xmm10 SHUFPD_1 %xmm11, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -16 * SIZE(AO1, LDA, 2), %xmm9 movapd %xmm9, %xmm8 SHUFPD_1 %xmm9, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm4 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm5 movapd -16 * SIZE(AO2, LDA, 2), %xmm11 movapd %xmm11, %xmm10 SHUFPD_1 %xmm11, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm6 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm7 movapd -12 * SIZE(BO), %xmm12 movapd -14 * SIZE(AO1), %xmm9 movapd %xmm9, %xmm8 SHUFPD_1 %xmm9, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movapd -14 * SIZE(AO2), %xmm11 movapd %xmm11, %xmm10 SHUFPD_1 %xmm11, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm3 movapd -14 * SIZE(AO1, LDA, 2), %xmm9 movapd %xmm9, %xmm8 SHUFPD_1 %xmm9, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm4 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm5 movapd -14 * SIZE(AO2, LDA, 2), %xmm11 movapd %xmm11, %xmm10 SHUFPD_1 %xmm11, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm6 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm7 movapd -10 * SIZE(BO), %xmm13 subq $-4 * SIZE, AO1 subq $-4 * SIZE, AO2 subq $-4 * SIZE, BO ALIGN_2.L26: movq MIN_N, I andq $1, I jle .L27 movapd -16 * SIZE(AO1), %xmm9 movapd %xmm9, %xmm8 SHUFPD_1 %xmm9, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -16 * SIZE(AO2), %xmm11 movapd %xmm11, %xmm10 SHUFPD_1 %xmm11, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -16 * SIZE(AO1, LDA, 2), %xmm9 movapd %xmm9, %xmm8 SHUFPD_1 %xmm9, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm4 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm5 movapd -16 * SIZE(AO2, LDA, 2), %xmm11 movapd %xmm11, %xmm10 SHUFPD_1 %xmm11, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm6 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm7 ALIGN_3.L27:#if (!defined(CONJ) && !defined(XCONJ)) || \ ( defined(CONJ) && defined(XCONJ)) pxor BETA, %xmm0 pxor BETA, %xmm2 pxor BETA, %xmm4 pxor BETA, %xmm6#else pxor BETA, %xmm1 pxor BETA, %xmm3 pxor BETA, %xmm5 pxor BETA, %xmm7#endif haddpd %xmm1, %xmm0 haddpd %xmm3, %xmm2 haddpd %xmm5, %xmm4 haddpd %xmm7, %xmm6 pshufd $0x4e, %xmm0, %xmm1 pshufd $0x4e, %xmm2, %xmm3 pshufd $0x4e, %xmm4, %xmm5 pshufd $0x4e, %xmm6, %xmm7 mulpd ALPHA, %xmm0 mulpd ALPHA, %xmm1 mulpd ALPHA, %xmm2 mulpd ALPHA, %xmm3 mulpd ALPHA, %xmm4 mulpd ALPHA, %xmm5 mulpd ALPHA, %xmm6 mulpd ALPHA, %xmm7 xorpd BETA, %xmm0 xorpd BETA, %xmm2 xorpd BETA, %xmm4 xorpd BETA, %xmm6 haddpd %xmm1, %xmm0 haddpd %xmm3, %xmm2 haddpd %xmm5, %xmm4 haddpd %xmm7, %xmm6 movq CO, TEMP movsd 0 * SIZE(TEMP), %xmm8 movhpd 1 * SIZE(TEMP), %xmm8 addpd %xmm8, %xmm0 addq INCY, TEMP movsd 0 * SIZE(TEMP), %xmm8 movhpd 1 * SIZE(TEMP), %xmm8 addpd %xmm8, %xmm2 addq INCY, TEMP movsd 0 * SIZE(TEMP), %xmm8 movhpd 1 * SIZE(TEMP), %xmm8 addpd %xmm8, %xmm4 addq INCY, TEMP movsd 0 * SIZE(TEMP), %xmm8 movhpd 1 * SIZE(TEMP), %xmm8 addpd %xmm8, %xmm6 movsd %xmm0, 0 * SIZE(CO) movhpd %xmm0, 1 * SIZE(CO) addq INCY, CO movsd %xmm2, 0 * SIZE(CO) movhpd %xmm2, 1 * SIZE(CO) addq INCY, CO movsd %xmm4, 0 * SIZE(CO) movhpd %xmm4, 1 * SIZE(CO) addq INCY, CO movsd %xmm6, 0 * SIZE(CO) movhpd %xmm6, 1 * SIZE(CO) addq INCY, CO decq J jg .L21 ALIGN_3.L30: movq N, I andq $2, I jle .L40 movq A, AO1 leaq (A, LDA, 1), AO2 leaq (A, LDA, 2), A movq BUFFER, BO addq $16 * SIZE, BO movapd -16 * SIZE(BO), %xmm12 pxor %xmm0, %xmm0 movapd -14 * SIZE(BO), %xmm13 pxor %xmm1, %xmm1 pxor %xmm2, %xmm2 pxor %xmm3, %xmm3 PREFETCHW 16 * SIZE(CO) movq MIN_N, I sarq $3, I jle .L34 ALIGN_3.L32: PREFETCH (PREFETCHSIZE + 0) * SIZE(AO1) movapd -16 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -16 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -12 * SIZE(BO), %xmm12 movapd -14 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movapd -14 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm3 PREFETCH (PREFETCHSIZE + 0) * SIZE(AO2) movapd -10 * SIZE(BO), %xmm13 movapd -12 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -12 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -8 * SIZE(BO), %xmm12 movapd -10 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movapd -10 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm3 PREFETCH (PREFETCHSIZE + 8) * SIZE(AO1) movapd -6 * SIZE(BO), %xmm13 movapd -8 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -8 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -4 * SIZE(BO), %xmm12 movapd -6 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movapd -6 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm3 PREFETCH (PREFETCHSIZE + 8) * SIZE(AO2) movapd -2 * SIZE(BO), %xmm13 movapd -4 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -4 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd 0 * SIZE(BO), %xmm12 movapd -2 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movapd -2 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm3 movapd 2 * SIZE(BO), %xmm13 subq $-16 * SIZE, AO1 subq $-16 * SIZE, AO2 subq $-16 * SIZE, BO decq I jg .L32 ALIGN_3.L34: movq MIN_N, I andq $4, I jle .L35 movapd -16 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -16 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -12 * SIZE(BO), %xmm12 movapd -14 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movapd -14 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm3 movapd -10 * SIZE(BO), %xmm13 movapd -12 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -12 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -8 * SIZE(BO), %xmm12 movapd -10 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movapd -10 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm3 movapd -6 * SIZE(BO), %xmm13 subq $-8 * SIZE, AO1 subq $-8 * SIZE, AO2 subq $-8 * SIZE, BO ALIGN_3.L35: movq MIN_N, I andq $2, I jle .L36 movapd -16 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -16 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -12 * SIZE(BO), %xmm12 movapd -14 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movapd -14 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm3 movapd -10 * SIZE(BO), %xmm13 subq $-4 * SIZE, AO1 subq $-4 * SIZE, AO2 subq $-4 * SIZE, BO ALIGN_2.L36: movq MIN_N, I andq $1, I jle .L37 movapd -16 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -16 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 ALIGN_3.L37:#if (!defined(CONJ) && !defined(XCONJ)) || \ ( defined(CONJ) && defined(XCONJ)) pxor BETA, %xmm0 pxor BETA, %xmm2#else pxor BETA, %xmm1 pxor BETA, %xmm3#endif haddpd %xmm1, %xmm0 haddpd %xmm3, %xmm2 pshufd $0x4e, %xmm0, %xmm1 pshufd $0x4e, %xmm2, %xmm3 mulpd ALPHA, %xmm0 mulpd ALPHA, %xmm1 mulpd ALPHA, %xmm2 mulpd ALPHA, %xmm3 xorpd BETA, %xmm0 xorpd BETA, %xmm2 haddpd %xmm1, %xmm0 haddpd %xmm3, %xmm2 movq CO, TEMP movsd 0 * SIZE(TEMP), %xmm8 movhpd 1 * SIZE(TEMP), %xmm8 addpd %xmm8, %xmm0 addq INCY, TEMP movsd 0 * SIZE(TEMP), %xmm8 movhpd 1 * SIZE(TEMP), %xmm8 addpd %xmm8, %xmm2 movsd %xmm0, 0 * SIZE(CO) movhpd %xmm0, 1 * SIZE(CO) addq INCY, CO movsd %xmm2, 0 * SIZE(CO) movhpd %xmm2, 1 * SIZE(CO) addq INCY, CO ALIGN_3.L40: movq N, I andq $1, I jle .L99 movq A, AO1 addq LDA, A movq BUFFER, BO addq $16 * SIZE, BO movapd -16 * SIZE(BO), %xmm12 pxor %xmm0, %xmm0 movapd -14 * SIZE(BO), %xmm13 pxor %xmm1, %xmm1 pxor %xmm2, %xmm2 pxor %xmm3, %xmm3 movq MIN_N, I sarq $3, I jle .L44 ALIGN_3.L42: PREFETCH (PREFETCHSIZE + 0) * SIZE(AO1) movapd -16 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -12 * SIZE(BO), %xmm12 movapd -14 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 movapd -10 * SIZE(BO), %xmm13 movapd -12 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -8 * SIZE(BO), %xmm12 movapd -10 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 PREFETCH (PREFETCHSIZE + 8) * SIZE(AO1) movapd -6 * SIZE(BO), %xmm13 movapd -8 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -4 * SIZE(BO), %xmm12 movapd -6 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 movapd -2 * SIZE(BO), %xmm13 movapd -4 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd 0 * SIZE(BO), %xmm12 movapd -2 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 movapd 2 * SIZE(BO), %xmm13 subq $-16 * SIZE, AO1 subq $-16 * SIZE, BO decq I jg .L42 ALIGN_3.L44: movq MIN_N, I andq $4, I jle .L45 movapd -16 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -12 * SIZE(BO), %xmm12 movapd -14 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 movapd -10 * SIZE(BO), %xmm13 movapd -12 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -8 * SIZE(BO), %xmm12 movapd -10 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 movapd -6 * SIZE(BO), %xmm13 subq $-8 * SIZE, AO1 subq $-8 * SIZE, BO ALIGN_3.L45: movq MIN_N, I andq $2, I jle .L46 movapd -16 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -