📄 zgemv_t_sse2_core2.s
字号:
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 .L121 ALIGN_3.L130: movq N, I andq $2, I jle .L140 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 .L134 ALIGN_3.L132: PREFETCH (PREFETCHSIZE + 0) * SIZE(AO1) movsd -16 * SIZE(AO1), %xmm8 movhpd -15 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movsd -16 * SIZE(AO2), %xmm10 movhpd -15 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -12 * SIZE(BO), %xmm12 movsd -14 * SIZE(AO1), %xmm8 movhpd -13 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movsd -14 * SIZE(AO2), %xmm10 movhpd -13 * 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 movsd -12 * SIZE(AO1), %xmm8 movhpd -11 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movsd -12 * SIZE(AO2), %xmm10 movhpd -11 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -8 * SIZE(BO), %xmm12 movsd -10 * SIZE(AO1), %xmm8 movhpd -9 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movsd -10 * SIZE(AO2), %xmm10 movhpd -9 * 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 movsd -8 * SIZE(AO1), %xmm8 movhpd -7 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movsd -8 * SIZE(AO2), %xmm10 movhpd -7 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -4 * SIZE(BO), %xmm12 movsd -6 * SIZE(AO1), %xmm8 movhpd -5 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movsd -6 * SIZE(AO2), %xmm10 movhpd -5 * 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 movsd -4 * SIZE(AO1), %xmm8 movhpd -3 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movsd -4 * SIZE(AO2), %xmm10 movhpd -3 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd 0 * SIZE(BO), %xmm12 movsd -2 * SIZE(AO1), %xmm8 movhpd -1 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movsd -2 * SIZE(AO2), %xmm10 movhpd -1 * 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 .L132 ALIGN_3.L134: movq MIN_N, I andq $4, I jle .L135 movsd -16 * SIZE(AO1), %xmm8 movhpd -15 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movsd -16 * SIZE(AO2), %xmm10 movhpd -15 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -12 * SIZE(BO), %xmm12 movsd -14 * SIZE(AO1), %xmm8 movhpd -13 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movsd -14 * SIZE(AO2), %xmm10 movhpd -13 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm13, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm13, %xmm11 ADD %xmm11, %xmm3 movapd -10 * SIZE(BO), %xmm13 movsd -12 * SIZE(AO1), %xmm8 movhpd -11 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movsd -12 * SIZE(AO2), %xmm10 movhpd -11 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -8 * SIZE(BO), %xmm12 movsd -10 * SIZE(AO1), %xmm8 movhpd -9 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movsd -10 * SIZE(AO2), %xmm10 movhpd -9 * 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.L135: movq MIN_N, I andq $2, I jle .L136 movsd -16 * SIZE(AO1), %xmm8 movhpd -15 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movsd -16 * SIZE(AO2), %xmm10 movhpd -15 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 movapd -12 * SIZE(BO), %xmm12 movsd -14 * SIZE(AO1), %xmm8 movhpd -13 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm1 movsd -14 * SIZE(AO2), %xmm10 movhpd -13 * 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.L136: movq MIN_N, I andq $1, I jle .L137 movsd -16 * SIZE(AO1), %xmm8 movhpd -15 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movsd -16 * SIZE(AO2), %xmm10 movhpd -15 * SIZE(AO2), %xmm10 pshufd $0x4e, %xmm10, %xmm11 mulpd %xmm12, %xmm10 addpd %xmm10, %xmm2 mulpd %xmm12, %xmm11 ADD %xmm11, %xmm3 ALIGN_3.L137:#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.L140: movq N, I andq $1, I jle .L199 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 .L144 ALIGN_3.L142: PREFETCH (PREFETCHSIZE + 0) * SIZE(AO1) movsd -16 * SIZE(AO1), %xmm8 movhpd -15 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -12 * SIZE(BO), %xmm12 movsd -14 * SIZE(AO1), %xmm8 movhpd -13 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 movapd -10 * SIZE(BO), %xmm13 movsd -12 * SIZE(AO1), %xmm8 movhpd -11 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -8 * SIZE(BO), %xmm12 movsd -10 * SIZE(AO1), %xmm8 movhpd -9 * 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 movsd -8 * SIZE(AO1), %xmm8 movhpd -7 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -4 * SIZE(BO), %xmm12 movsd -6 * SIZE(AO1), %xmm8 movhpd -5 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 movapd -2 * SIZE(BO), %xmm13 movsd -4 * SIZE(AO1), %xmm8 movhpd -3 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd 0 * SIZE(BO), %xmm12 movsd -2 * SIZE(AO1), %xmm8 movhpd -1 * 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 .L142 ALIGN_3.L144: movq MIN_N, I andq $4, I jle .L145 movsd -16 * SIZE(AO1), %xmm8 movhpd -15 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -12 * SIZE(BO), %xmm12 movsd -14 * SIZE(AO1), %xmm8 movhpd -13 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 movapd -10 * SIZE(BO), %xmm13 movsd -12 * SIZE(AO1), %xmm8 movhpd -11 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -8 * SIZE(BO), %xmm12 movsd -10 * SIZE(AO1), %xmm8 movhpd -9 * 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.L145: movq MIN_N, I andq $2, I jle .L146 movsd -16 * SIZE(AO1), %xmm8 movhpd -15 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 movapd -12 * SIZE(BO), %xmm12 movsd -14 * SIZE(AO1), %xmm8 movhpd -13 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm13, %xmm8 addpd %xmm8, %xmm2 mulpd %xmm13, %xmm9 ADD %xmm9, %xmm3 movapd -10 * SIZE(BO), %xmm13 subq $-4 * SIZE, AO1 subq $-4 * SIZE, BO ALIGN_2.L146: movq MIN_N, I andq $1, I jle .L147 movsd -16 * SIZE(AO1), %xmm8 movhpd -15 * SIZE(AO1), %xmm8 pshufd $0x4e, %xmm8, %xmm9 mulpd %xmm12, %xmm8 addpd %xmm8, %xmm0 mulpd %xmm12, %xmm9 ADD %xmm9, %xmm1 ALIGN_3.L147: addpd %xmm2, %xmm0 addpd %xmm3, %xmm1#if (!defined(CONJ) && !defined(XCONJ)) || \ ( defined(CONJ) && defined(XCONJ)) pxor BETA, %xmm0#else pxor BETA, %xmm1#endif haddpd %xmm1, %xmm0 pshufd $0x4e, %xmm0, %xmm1 mulpd ALPHA, %xmm0 mulpd ALPHA, %xmm1 xorpd BETA, %xmm0 haddpd %xmm1, %xmm0 movsd 0 * SIZE(CO), %xmm8 movhpd 1 * SIZE(CO), %xmm8 addpd %xmm8, %xmm0 movsd %xmm0, 0 * SIZE(CO) movhpd %xmm0, 1 * SIZE(CO) ALIGN_3.L199: addq NLDA, A addq $P, IS cmpq M, IS jl .L10 ALIGN_3.L999: movq 0(%rsp), %rbx movq 8(%rsp), %rbp movq 16(%rsp), %r12 movq 24(%rsp), %r13 movq 32(%rsp), %r14 movq 40(%rsp), %r15#ifdef WINDOWS_ABI movq 48(%rsp), %rdi movq 56(%rsp), %rsi movups 64(%rsp), %xmm6 movups 80(%rsp), %xmm7 movups 96(%rsp), %xmm8 movups 112(%rsp), %xmm9 movups 128(%rsp), %xmm10 movups 144(%rsp), %xmm11 movups 160(%rsp), %xmm12 movups 176(%rsp), %xmm13 movups 192(%rsp), %xmm14 movups 208(%rsp), %xmm15#endif addq $STACKSIZE, %rsp ret EPILOGUE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -