📄 iamax_sse2.s
字号:
ALIGN_3 .L57: testl $2, MM je .L58 movsd 0 * SIZE(XX), %xmm4 movhpd 1 * SIZE(XX), %xmm4#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm2 addl $2 * SIZE, XX .L58: testl $1, MM je .L60 movsd 0 * SIZE(XX), %xmm4 unpcklpd %xmm4, %xmm4#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm3 ALIGN_3.L60: movl X, XX movl M, MM maxpd %xmm1, %xmm0 maxpd %xmm3, %xmm2 maxpd %xmm2, %xmm0 movapd %xmm0, %xmm1 unpckhpd %xmm0, %xmm0 maxsd %xmm1, %xmm0 unpcklpd %xmm0, %xmm0 movl MM, I sarl $3, I jle .L65 ALIGN_4 .L62: prefetcht0 PREFETCHSIZE * SIZE(XX) movsd 0 * SIZE(XX), %xmm1 movhpd 1 * SIZE(XX), %xmm1#ifdef ABS andpd %xmm7, %xmm1#endif cmpeqpd %xmm0, %xmm1 movsd 2 * SIZE(XX), %xmm2 movhpd 3 * SIZE(XX), %xmm2#ifdef ABS andpd %xmm7, %xmm2#endif cmpeqpd %xmm0, %xmm2 movsd 4 * SIZE(XX), %xmm3 movhpd 5 * SIZE(XX), %xmm3#ifdef ABS andpd %xmm7, %xmm3#endif cmpeqpd %xmm0, %xmm3 movsd 6 * SIZE(XX), %xmm4 movhpd 7 * SIZE(XX), %xmm4#ifdef ABS andpd %xmm7, %xmm4#endif cmpeqpd %xmm0, %xmm4 orpd %xmm2, %xmm1 orpd %xmm4, %xmm3 orpd %xmm3, %xmm1 movmskpd %xmm1, TEMP testl $3, TEMP jne .L63 addl $8 * SIZE, XX addl $8, RET decl I jg .L62 jmp .L65 ALIGN_4.L63: movsd 0 * SIZE(XX), %xmm1 movsd 1 * SIZE(XX), %xmm2 movsd 2 * SIZE(XX), %xmm3 movsd 3 * SIZE(XX), %xmm4#ifdef ABS andpd %xmm7, %xmm1 andpd %xmm7, %xmm2 andpd %xmm7, %xmm3 andpd %xmm7, %xmm4#endif incl RET comisd %xmm0, %xmm1 je .L999 incl RET comisd %xmm0, %xmm2 je .L999 incl RET comisd %xmm0, %xmm3 je .L999 incl RET comisd %xmm0, %xmm4 je .L999 incl RET movsd 4 * SIZE(XX), %xmm1 movsd 5 * SIZE(XX), %xmm2 movsd 6 * SIZE(XX), %xmm3 #ifdef ABS andpd %xmm7, %xmm1 andpd %xmm7, %xmm2 andpd %xmm7, %xmm3#endif comisd %xmm0, %xmm1 je .L999 incl RET comisd %xmm0, %xmm2 je .L999 incl RET comisd %xmm0, %xmm3 je .L999 incl RET jmp .L999 ALIGN_3.L65: testl $4, MM je .L67 movsd 0 * SIZE(XX), %xmm1 movsd 1 * SIZE(XX), %xmm2 movsd 2 * SIZE(XX), %xmm3 movsd 3 * SIZE(XX), %xmm4#ifdef ABS andpd %xmm7, %xmm1 andpd %xmm7, %xmm2 andpd %xmm7, %xmm3 andpd %xmm7, %xmm4#endif addl $4 * SIZE, XX incl RET comisd %xmm0, %xmm1 je .L999 incl RET comisd %xmm0, %xmm2 je .L999 incl RET comisd %xmm0, %xmm3 je .L999 incl RET comisd %xmm0, %xmm4 je .L999 ALIGN_3 .L67: testl $2, MM je .L68 movsd 0 * SIZE(XX), %xmm1 movsd 1 * SIZE(XX), %xmm2#ifdef ABS andpd %xmm7, %xmm1 andpd %xmm7, %xmm2#endif addl $2 * SIZE, XX incl RET comisd %xmm0, %xmm1 je .L999 incl RET comisd %xmm0, %xmm2 je .L999 ALIGN_3 .L68: incl RET jmp .L999 ALIGN_4.L80: movl MM, I sarl $4, I jle .L85 ALIGN_4 .L81: prefetcht0 PREFETCHSIZE * SIZE(XX) movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm0 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm1 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm2 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm3 prefetcht0 PREFETCHSIZE * SIZE(XX) movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm0 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm1 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm2 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm3 decl I jg .L81 ALIGN_4.L85: andl $15, MM jle .L90 testl $8, MM je .L86 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm0 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm1 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm2 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm3 ALIGN_3.L86: testl $4, MM je .L87 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm0 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm1 ALIGN_3 .L87: testl $2, MM je .L88 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif maxpd %xmm4, %xmm2 ALIGN_3 .L88: testl $1, MM je .L90 movsd 0 * SIZE(XX), %xmm4#ifdef ABS andpd %xmm7, %xmm4#endif unpcklpd %xmm4, %xmm4 maxpd %xmm4, %xmm3 ALIGN_4.L90: movl X, XX movl M, MM maxpd %xmm1, %xmm0 maxpd %xmm3, %xmm2 maxpd %xmm2, %xmm0 movapd %xmm0, %xmm1 unpckhpd %xmm0, %xmm0 maxsd %xmm1, %xmm0 unpcklpd %xmm0, %xmm0 movl MM, I sarl $3, I jle .L95 ALIGN_4 .L92: prefetcht0 PREFETCHSIZE * SIZE(XX) movsd 0 * SIZE(XX), %xmm1 addl INCX, XX movhpd 0 * SIZE(XX), %xmm1 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm1#endif cmpeqpd %xmm0, %xmm1 movsd 0 * SIZE(XX), %xmm2 addl INCX, XX movhpd 0 * SIZE(XX), %xmm2 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm2#endif cmpeqpd %xmm0, %xmm2 movsd 0 * SIZE(XX), %xmm3 addl INCX, XX movhpd 0 * SIZE(XX), %xmm3 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm3#endif cmpeqpd %xmm0, %xmm3 movsd 0 * SIZE(XX), %xmm4 addl INCX, XX movhpd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm4#endif cmpeqpd %xmm0, %xmm4 orpd %xmm2, %xmm1 orpd %xmm4, %xmm3 orpd %xmm3, %xmm1 movmskpd %xmm1, TEMP testl $3, TEMP jne .L93 addl $8, RET decl I jg .L92 jmp .L95 ALIGN_4.L93: leal (, INCX, 8), TEMP subl TEMP, XX movsd 0 * SIZE(XX), %xmm1 addl INCX, XX movsd 0 * SIZE(XX), %xmm2 addl INCX, XX movsd 0 * SIZE(XX), %xmm3 addl INCX, XX movsd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm1 andpd %xmm7, %xmm2 andpd %xmm7, %xmm3 andpd %xmm7, %xmm4#endif incl RET comisd %xmm0, %xmm1 je .L999 incl RET comisd %xmm0, %xmm2 je .L999 incl RET comisd %xmm0, %xmm3 je .L999 incl RET comisd %xmm0, %xmm4 je .L999 movsd 0 * SIZE(XX), %xmm1 addl INCX, XX movsd 0 * SIZE(XX), %xmm2 addl INCX, XX movsd 0 * SIZE(XX), %xmm3#ifdef ABS andpd %xmm7, %xmm1 andpd %xmm7, %xmm2 andpd %xmm7, %xmm3#endif incl RET comisd %xmm0, %xmm1 je .L999 incl RET comisd %xmm0, %xmm2 je .L999 incl RET comisd %xmm0, %xmm3 je .L999 incl RET jmp .L999 ALIGN_3.L95: testl $4, MM je .L97 movsd 0 * SIZE(XX), %xmm1 addl INCX, XX movsd 0 * SIZE(XX), %xmm2 addl INCX, XX movsd 0 * SIZE(XX), %xmm3 addl INCX, XX movsd 0 * SIZE(XX), %xmm4 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm1 andpd %xmm7, %xmm2 andpd %xmm7, %xmm3 andpd %xmm7, %xmm4#endif incl RET comisd %xmm0, %xmm1 je .L999 incl RET comisd %xmm0, %xmm2 je .L999 incl RET comisd %xmm0, %xmm3 je .L999 incl RET comisd %xmm0, %xmm4 je .L999 ALIGN_3 .L97: testl $2, MM je .L98 movsd 0 * SIZE(XX), %xmm1 addl INCX, XX movsd 0 * SIZE(XX), %xmm2 addl INCX, XX#ifdef ABS andpd %xmm7, %xmm1 andpd %xmm7, %xmm2#endif incl RET comisd %xmm0, %xmm1 je .L999 incl RET comisd %xmm0, %xmm2 je .L999 ALIGN_3 .L98: incl RET ALIGN_3.L999: popl %ebx popl %esi popl %edi popl %ebp ret EPILOGUE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -