📄 gemv_t_sse.s
字号:
decq J jg .L51 movq N, J andq $3, J jne .L100 jmp .L99 ALIGN_4.L56: movss 0 * SIZE(TEMP), %xmm1 addq INCY, TEMP movss 0 * SIZE(TEMP), %xmm2 addq INCY, TEMP addss %xmm1, %xmm4 addss %xmm2, %xmm5 movss 0 * SIZE(TEMP), %xmm1 addq INCY, TEMP movss 0 * SIZE(TEMP), %xmm2 addss %xmm1, %xmm6 addss %xmm2, %xmm7 movss %xmm4, 0 * SIZE(CO) addq INCY, CO movss %xmm5, 0 * SIZE(CO) addq INCY, CO movss %xmm6, 0 * SIZE(CO) addq INCY, CO movss %xmm7, 0 * SIZE(CO) addq INCY, CO decq J jg .L51 movq N, J andq $3, J jne .L100 ALIGN_4.L99: 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 ALIGN_4.L100: movq N, J andq $3, J cmpq $3, J jne .L110 ALIGN_3.L101: movq A, AO1 # a_offset = a leaq (AO1, LDA ), AO2 # a_offset2 = a + lda leaq (AO2, LDA, 2), A movq BUFFER, BO pxor %xmm4, %xmm4 pxor %xmm5, %xmm5 pxor %xmm6, %xmm6 movaps 0 * SIZE(BO), %xmm0 movaps 4 * SIZE(BO), %xmm2 movq MIN_M, I sarq $3, I jle .L103 ALIGN_4.L102: prefetchnta 56 * SIZE(AO1) prefetchnta 56 * SIZE(AO2) prefetchnta 56 * SIZE(AO1, LDA, 2) movsd 0 * SIZE(AO1), %xmm1 movhpd 2 * SIZE(AO1), %xmm1 mulps %xmm0, %xmm1 addps %xmm1, %xmm4 movsd 0 * SIZE(AO2), %xmm1 movhpd 2 * SIZE(AO2), %xmm1 mulps %xmm0, %xmm1 addps %xmm1, %xmm5 movsd 0 * SIZE(AO1, LDA, 2), %xmm1 movhpd 2 * SIZE(AO1, LDA, 2), %xmm1 mulps %xmm0, %xmm1 addps %xmm1, %xmm6 movaps 8 * SIZE(BO), %xmm0 movsd 4 * SIZE(AO1), %xmm1 movhpd 6 * SIZE(AO1), %xmm1 mulps %xmm2, %xmm1 addps %xmm1, %xmm4 movsd 4 * SIZE(AO2), %xmm1 movhpd 6 * SIZE(AO2), %xmm1 mulps %xmm2, %xmm1 addps %xmm1, %xmm5 movsd 4 * SIZE(AO1, LDA, 2), %xmm1 movhpd 6 * SIZE(AO1, LDA, 2), %xmm1 mulps %xmm2, %xmm1 addps %xmm1, %xmm6 movaps 12 * SIZE(BO), %xmm2 addq $8 * SIZE, AO2 addq $8 * SIZE, AO1 addq $8 * SIZE, BO decq I jg .L102 ALIGN_4.L103: movq MIN_M, I andq $7, I je .L105 ALIGN_4.L104: movss 0 * SIZE(AO1), %xmm1 mulss %xmm0, %xmm1 addss %xmm1, %xmm4 movss 0 * SIZE(AO2), %xmm1 addq $SIZE, AO2 mulss %xmm0, %xmm1 addss %xmm1, %xmm5 movss 0 * SIZE(AO1, LDA, 2), %xmm1 addq $SIZE, AO1 mulss %xmm0, %xmm1 addss %xmm1, %xmm6 movss 1 * SIZE(BO), %xmm0 addq $SIZE, BO decq I jg .L104 ALIGN_4.L105: movaps %xmm4, %xmm0 shufps $0xe, %xmm4, %xmm4 addps %xmm0, %xmm4 movaps %xmm5, %xmm0 shufps $0xe, %xmm5, %xmm5 addps %xmm0, %xmm5 movaps %xmm6, %xmm0 shufps $0xe, %xmm6, %xmm6 addps %xmm0, %xmm6 movaps %xmm4, %xmm0 shufps $0x39, %xmm4, %xmm4 addss %xmm0, %xmm4 movaps %xmm5, %xmm0 shufps $0x39, %xmm5, %xmm5 addss %xmm0, %xmm5 movaps %xmm6, %xmm0 shufps $0x39, %xmm6, %xmm6 addss %xmm0, %xmm6 mulss ALPHA, %xmm4 mulss ALPHA, %xmm5 mulss ALPHA, %xmm6 movq CO, TEMP cmpq $SIZE, INCY jne .L106 movss 0 * SIZE(CO), %xmm1 movss 1 * SIZE(CO), %xmm2 addss %xmm1, %xmm4 addss %xmm2, %xmm5 movss 2 * SIZE(CO), %xmm1 addss %xmm1, %xmm6 movss %xmm4, 0 * SIZE(CO) movss %xmm5, 1 * SIZE(CO) movss %xmm6, 2 * SIZE(CO) jmp .L99 ALIGN_4.L106: movss 0 * SIZE(TEMP), %xmm1 addq INCY, TEMP movss 0 * SIZE(TEMP), %xmm2 addq INCY, TEMP addss %xmm1, %xmm4 addss %xmm2, %xmm5 movss 0 * SIZE(TEMP), %xmm1 addss %xmm1, %xmm6 movss %xmm4, 0 * SIZE(CO) addq INCY, CO movss %xmm5, 0 * SIZE(CO) addq INCY, CO movss %xmm6, 0 * SIZE(CO) jmp .L99 ALIGN_4.L110: cmpq $2, J jne .L120 ALIGN_3.L111: movq A, AO1 # a_offset = a leaq (AO1, LDA ), AO2 # a_offset2 = a + lda leaq (AO1, LDA, 2), A movq BUFFER, BO pxor %xmm4, %xmm4 pxor %xmm5, %xmm5 movaps 0 * SIZE(BO), %xmm0 movaps 4 * SIZE(BO), %xmm2 movq MIN_M, I sarq $3, I jle .L113 ALIGN_4.L112: prefetchnta 56 * SIZE(AO1) prefetchnta 56 * SIZE(AO2) movsd 0 * SIZE(AO1), %xmm1 movhpd 2 * SIZE(AO1), %xmm1 mulps %xmm0, %xmm1 addps %xmm1, %xmm4 movsd 0 * SIZE(AO2), %xmm1 movhpd 2 * SIZE(AO2), %xmm1 mulps %xmm0, %xmm1 addps %xmm1, %xmm5 movaps 8 * SIZE(BO), %xmm0 movsd 4 * SIZE(AO1), %xmm1 movhpd 6 * SIZE(AO1), %xmm1 mulps %xmm2, %xmm1 addps %xmm1, %xmm4 movsd 4 * SIZE(AO2), %xmm1 movhpd 6 * SIZE(AO2), %xmm1 mulps %xmm2, %xmm1 addps %xmm1, %xmm5 movaps 12 * SIZE(BO), %xmm2 addq $8 * SIZE, AO1 addq $8 * SIZE, AO2 addq $8 * SIZE, BO decq I jg .L112 ALIGN_4.L113: movq MIN_M, I andq $7, I je .L115 ALIGN_4.L114: movss 0 * SIZE(AO1), %xmm1 addq $SIZE, AO1 mulss %xmm0, %xmm1 addss %xmm1, %xmm4 movss 0 * SIZE(AO2), %xmm1 addq $SIZE, AO2 mulss %xmm0, %xmm1 addss %xmm1, %xmm5 movss 1 * SIZE(BO), %xmm0 addq $SIZE, BO decq I jg .L114 ALIGN_4.L115: movaps %xmm4, %xmm0 shufps $0xe, %xmm4, %xmm4 addps %xmm0, %xmm4 movaps %xmm5, %xmm0 shufps $0xe, %xmm5, %xmm5 addps %xmm0, %xmm5 movaps %xmm4, %xmm0 shufps $0x39, %xmm4, %xmm4 addss %xmm0, %xmm4 movaps %xmm5, %xmm0 shufps $0x39, %xmm5, %xmm5 addss %xmm0, %xmm5 mulss ALPHA, %xmm4 mulss ALPHA, %xmm5 movq CO, TEMP cmpq $SIZE, INCY jne .L116 movss 0 * SIZE(CO), %xmm1 movss 1 * SIZE(CO), %xmm2 addss %xmm1, %xmm4 addss %xmm2, %xmm5 movss %xmm4, 0 * SIZE(CO) movss %xmm5, 1 * SIZE(CO) jmp .L99 ALIGN_4.L116: movss 0 * SIZE(TEMP), %xmm1 addq INCY, TEMP movss 0 * SIZE(TEMP), %xmm2 addss %xmm1, %xmm4 addss %xmm2, %xmm5 movss %xmm4, 0 * SIZE(CO) addq INCY, CO movss %xmm5, 0 * SIZE(CO) jmp .L99 ALIGN_4.L120: movq A, AO1 # a_offset = a leaq (AO1, LDA ), AO2 # a_offset2 = a + lda leaq (AO1, LDA, 1), A movq BUFFER, BO pxor %xmm4, %xmm4 movaps 0 * SIZE(BO), %xmm0 movaps 4 * SIZE(BO), %xmm2 movq MIN_M, I sarq $3, I jle .L123 ALIGN_4.L122: prefetchnta 56 * SIZE(AO1) movsd 0 * SIZE(AO1), %xmm1 movhpd 2 * SIZE(AO1), %xmm1 mulps %xmm0, %xmm1 addps %xmm1, %xmm4 movaps 8 * SIZE(BO), %xmm0 movsd 4 * SIZE(AO1), %xmm1 movhpd 6 * SIZE(AO1), %xmm1 mulps %xmm2, %xmm1 addps %xmm1, %xmm4 movaps 12 * SIZE(BO), %xmm2 addq $8 * SIZE, AO1 addq $8 * SIZE, BO decq I jg .L122 ALIGN_4.L123: movq MIN_M, I andq $7, I je .L125 ALIGN_4.L124: movss 0 * SIZE(AO1), %xmm1 addq $SIZE, AO1 mulss %xmm0, %xmm1 addss %xmm1, %xmm4 movss 1 * SIZE(BO), %xmm0 addq $SIZE, BO decq I jg .L124 ALIGN_4.L125: movaps %xmm4, %xmm0 shufps $0xe, %xmm4, %xmm4 addps %xmm0, %xmm4 movaps %xmm4, %xmm0 shufps $0x39, %xmm4, %xmm4 addss %xmm0, %xmm4 mulss ALPHA, %xmm4 movss 0 * SIZE(CO), %xmm1 addss %xmm1, %xmm4 movss %xmm4, 0 * SIZE(CO) jmp .L99 EPILOGUE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -