📄 imin_sse2.s
字号:
andpd %xmm15, %xmm6#endif maxpd %xmm6, %xmm2 addq $2 * SIZE, X .L58: testq $1, M je .L60 movsd 0 * SIZE(X), %xmm7 unpcklpd %xmm7, %xmm7#ifdef ABS andpd %xmm15, %xmm7#endif maxpd %xmm7, %xmm3 ALIGN_3.L60: movq XX, X movq MM, M maxpd %xmm1, %xmm0 maxpd %xmm3, %xmm2 maxpd %xmm2, %xmm0 movapd %xmm0, %xmm1 unpckhpd %xmm0, %xmm0 maxsd %xmm1, %xmm0 unpcklpd %xmm0, %xmm0 movq M, I sarq $3, I jle .L65 ALIGN_4 .L62:#ifdef OPTERON prefetcht0 PREFETCHSIZE * SIZE(X)#endif#ifdef PENTIUM4 prefetchnta PREFETCHSIZE * SIZE(X)#endif movsd 0 * SIZE(X), %xmm1 movhpd 1 * SIZE(X), %xmm1#ifdef ABS andpd %xmm15, %xmm1#endif cmpeqpd %xmm0, %xmm1 movsd 2 * SIZE(X), %xmm3 movhpd 3 * SIZE(X), %xmm3#ifdef ABS andpd %xmm15, %xmm3#endif cmpeqpd %xmm0, %xmm3 movsd 4 * SIZE(X), %xmm5 movhpd 5 * SIZE(X), %xmm5#ifdef ABS andpd %xmm15, %xmm5#endif cmpeqpd %xmm0, %xmm5 movsd 6 * SIZE(X), %xmm7 movhpd 7 * SIZE(X), %xmm7#ifdef ABS andpd %xmm15, %xmm7#endif cmpeqpd %xmm0, %xmm7 orpd %xmm3, %xmm1 orpd %xmm7, %xmm5 orpd %xmm5, %xmm1 movmskpd %xmm1, %r11 testq $3, %r11 jne .L63 addq $8 * SIZE, X addq $8, RET decq I jg .L62 jmp .L65 ALIGN_4.L63: movsd 0 * SIZE(X), %xmm1 movsd 1 * SIZE(X), %xmm2 movsd 2 * SIZE(X), %xmm3 movsd 3 * SIZE(X), %xmm4 movsd 4 * SIZE(X), %xmm5 movsd 5 * SIZE(X), %xmm6 movsd 6 * SIZE(X), %xmm7 movsd 7 * SIZE(X), %xmm8#ifdef ABS andpd %xmm15, %xmm1 andpd %xmm15, %xmm2 andpd %xmm15, %xmm3 andpd %xmm15, %xmm4 andpd %xmm15, %xmm5 andpd %xmm15, %xmm6 andpd %xmm15, %xmm7 andpd %xmm15, %xmm8#endif addq $8 * SIZE, X incq RET comisd %xmm0, %xmm1 je .L999 incq RET comisd %xmm0, %xmm2 je .L999 incq RET comisd %xmm0, %xmm3 je .L999 incq RET comisd %xmm0, %xmm4 je .L999 incq RET comisd %xmm0, %xmm5 je .L999 incq RET comisd %xmm0, %xmm6 je .L999 incq RET comisd %xmm0, %xmm7 je .L999 incq RET jmp .L999 ALIGN_3.L65: testq $4, M je .L67 movsd 0 * SIZE(X), %xmm1 movsd 1 * SIZE(X), %xmm2 movsd 2 * SIZE(X), %xmm3 movsd 3 * SIZE(X), %xmm4#ifdef ABS andpd %xmm15, %xmm1 andpd %xmm15, %xmm2 andpd %xmm15, %xmm3 andpd %xmm15, %xmm4#endif addq $4 * SIZE, X incq RET comisd %xmm0, %xmm1 je .L999 incq RET comisd %xmm0, %xmm2 je .L999 incq RET comisd %xmm0, %xmm3 je .L999 incq RET comisd %xmm0, %xmm4 je .L999 ALIGN_3 .L67: testq $2, M je .L68 movsd 0 * SIZE(X), %xmm1 movsd 1 * SIZE(X), %xmm2#ifdef ABS andpd %xmm15, %xmm1 andpd %xmm15, %xmm2#endif addq $2 * SIZE, X incq RET comisd %xmm0, %xmm1 je .L999 incq RET comisd %xmm0, %xmm2 je .L999 ALIGN_3 .L68: incq RET jmp .L999 ALIGN_4.L80: movq M, I sarq $4, I jle .L85 ALIGN_4 .L81:#ifdef OPTERON prefetcht0 PREFETCHSIZE * SIZE(X)#endif#ifdef PENTIUM4 prefetchnta PREFETCHSIZE * SIZE(X)#endif movsd 0 * SIZE(X), %xmm4 addq INCX, X movhpd 0 * SIZE(X), %xmm4 addq INCX, X#ifdef ABS andpd %xmm15, %xmm4#endif maxpd %xmm4, %xmm0 movsd 0 * SIZE(X), %xmm5 addq INCX, X movhpd 0 * SIZE(X), %xmm5 addq INCX, X#ifdef ABS andpd %xmm15, %xmm5#endif maxpd %xmm5, %xmm1 movsd 0 * SIZE(X), %xmm6 addq INCX, X movhpd 0 * SIZE(X), %xmm6 addq INCX, X#ifdef ABS andpd %xmm15, %xmm6#endif maxpd %xmm6, %xmm2 movsd 0 * SIZE(X), %xmm7 addq INCX, X movhpd 0 * SIZE(X), %xmm7 addq INCX, X#ifdef ABS andpd %xmm15, %xmm7#endif maxpd %xmm7, %xmm3#ifdef OPTERON prefetcht0 PREFETCHSIZE * SIZE(X)#endif#ifdef PENTIUM4 prefetchnta PREFETCHSIZE * SIZE(X)#endif movsd 0 * SIZE(X), %xmm4 addq INCX, X movhpd 0 * SIZE(X), %xmm4 addq INCX, X#ifdef ABS andpd %xmm15, %xmm4#endif maxpd %xmm4, %xmm0 movsd 0 * SIZE(X), %xmm5 addq INCX, X movhpd 0 * SIZE(X), %xmm5 addq INCX, X#ifdef ABS andpd %xmm15, %xmm5#endif maxpd %xmm5, %xmm1 movsd 0 * SIZE(X), %xmm6 addq INCX, X movhpd 0 * SIZE(X), %xmm6 addq INCX, X#ifdef ABS andpd %xmm15, %xmm6#endif maxpd %xmm6, %xmm2 movsd 0 * SIZE(X), %xmm7 addq INCX, X movhpd 0 * SIZE(X), %xmm7 addq INCX, X#ifdef ABS andpd %xmm15, %xmm7#endif maxpd %xmm7, %xmm3 decq I jg .L81 ALIGN_4.L85: andq $15, M jle .L90 testq $8, M je .L86 movsd 0 * SIZE(X), %xmm4 addq INCX, X movhpd 0 * SIZE(X), %xmm4 addq INCX, X#ifdef ABS andpd %xmm15, %xmm4#endif maxpd %xmm4, %xmm0 movsd 0 * SIZE(X), %xmm5 addq INCX, X movhpd 0 * SIZE(X), %xmm5 addq INCX, X#ifdef ABS andpd %xmm15, %xmm5#endif maxpd %xmm5, %xmm1 movsd 0 * SIZE(X), %xmm6 addq INCX, X movhpd 0 * SIZE(X), %xmm6 addq INCX, X#ifdef ABS andpd %xmm15, %xmm6#endif maxpd %xmm6, %xmm2 movsd 0 * SIZE(X), %xmm7 addq INCX, X movhpd 0 * SIZE(X), %xmm7 addq INCX, X#ifdef ABS andpd %xmm15, %xmm7#endif maxpd %xmm7, %xmm3 ALIGN_3.L86: testq $4, M je .L87 movsd 0 * SIZE(X), %xmm4 addq INCX, X movhpd 0 * SIZE(X), %xmm4 addq INCX, X#ifdef ABS andpd %xmm15, %xmm4#endif maxpd %xmm4, %xmm0 movsd 0 * SIZE(X), %xmm5 addq INCX, X movhpd 0 * SIZE(X), %xmm5 addq INCX, X#ifdef ABS andpd %xmm15, %xmm5#endif maxpd %xmm5, %xmm1 ALIGN_3 .L87: testq $2, M je .L88 movsd 0 * SIZE(X), %xmm6 addq INCX, X movhpd 0 * SIZE(X), %xmm6 addq INCX, X#ifdef ABS andpd %xmm15, %xmm6#endif maxpd %xmm6, %xmm2 ALIGN_3 .L88: testq $1, M je .L90 movsd 0 * SIZE(X), %xmm7 unpcklpd %xmm7, %xmm7#ifdef ABS andpd %xmm15, %xmm7#endif maxpd %xmm7, %xmm3 maxpd %xmm1, %xmm0 maxpd %xmm3, %xmm2 maxpd %xmm2, %xmm0 movapd %xmm0, %xmm1 unpckhpd %xmm0, %xmm0 maxsd %xmm1, %xmm0 ALIGN_4.L90: movq XX, X movq MM, M maxpd %xmm1, %xmm0 maxpd %xmm3, %xmm2 maxpd %xmm2, %xmm0 movapd %xmm0, %xmm1 unpckhpd %xmm0, %xmm0 maxsd %xmm1, %xmm0 unpcklpd %xmm0, %xmm0 movq M, I sarq $3, I jle .L95 ALIGN_4 .L92:#ifdef OPTERON prefetcht0 PREFETCHSIZE * SIZE(X)#endif#ifdef PENTIUM4 prefetchnta PREFETCHSIZE * SIZE(X)#endif movsd 0 * SIZE(X), %xmm1 addq INCX, X movhpd 0 * SIZE(X), %xmm1 addq INCX, X#ifdef ABS andpd %xmm15, %xmm1#endif cmpeqpd %xmm0, %xmm1 movsd 0 * SIZE(X), %xmm3 addq INCX, X movhpd 0 * SIZE(X), %xmm3 addq INCX, X#ifdef ABS andpd %xmm15, %xmm3#endif cmpeqpd %xmm0, %xmm3 movsd 0 * SIZE(X), %xmm5 addq INCX, X movhpd 0 * SIZE(X), %xmm5 addq INCX, X#ifdef ABS andpd %xmm15, %xmm5#endif cmpeqpd %xmm0, %xmm5 movsd 0 * SIZE(X), %xmm7 addq INCX, X movhpd 0 * SIZE(X), %xmm7 addq INCX, X#ifdef ABS andpd %xmm15, %xmm7#endif cmpeqpd %xmm0, %xmm7 orpd %xmm3, %xmm1 orpd %xmm7, %xmm5 orpd %xmm5, %xmm1 movmskpd %xmm1, %r11 testq $3, %r11 jne .L93 addq $8, RET decq I jg .L92 jmp .L95 ALIGN_4.L93: subq INCX, X movsd 0 * SIZE(X), %xmm8 subq INCX, X movsd 0 * SIZE(X), %xmm7 subq INCX, X movsd 0 * SIZE(X), %xmm6 subq INCX, X movsd 0 * SIZE(X), %xmm5 subq INCX, X movsd 0 * SIZE(X), %xmm4 subq INCX, X movsd 0 * SIZE(X), %xmm3 subq INCX, X movsd 0 * SIZE(X), %xmm2 subq INCX, X movsd 0 * SIZE(X), %xmm1#ifdef ABS andpd %xmm15, %xmm1 andpd %xmm15, %xmm2 andpd %xmm15, %xmm3 andpd %xmm15, %xmm4 andpd %xmm15, %xmm5 andpd %xmm15, %xmm6 andpd %xmm15, %xmm7 andpd %xmm15, %xmm8#endif addq $8 * SIZE, X incq RET comisd %xmm0, %xmm1 je .L999 incq RET comisd %xmm0, %xmm2 je .L999 incq RET comisd %xmm0, %xmm3 je .L999 incq RET comisd %xmm0, %xmm4 je .L999 incq RET comisd %xmm0, %xmm5 je .L999 incq RET comisd %xmm0, %xmm6 je .L999 incq RET comisd %xmm0, %xmm7 je .L999 incq RET jmp .L999 ALIGN_3.L95: testq $4, M je .L97 movsd 0 * SIZE(X), %xmm1 addq INCX, X movsd 0 * SIZE(X), %xmm2 addq INCX, X movsd 0 * SIZE(X), %xmm3 addq INCX, X movsd 0 * SIZE(X), %xmm4 addq INCX, X#ifdef ABS andpd %xmm15, %xmm1 andpd %xmm15, %xmm2 andpd %xmm15, %xmm3 andpd %xmm15, %xmm4#endif incq RET comisd %xmm0, %xmm1 je .L999 incq RET comisd %xmm0, %xmm2 je .L999 incq RET comisd %xmm0, %xmm3 je .L999 incq RET comisd %xmm0, %xmm4 je .L999 ALIGN_3 .L97: testq $2, M je .L98 movsd 0 * SIZE(X), %xmm1 addq INCX, X movsd 0 * SIZE(X), %xmm2 addq INCX, X#ifdef ABS andpd %xmm15, %xmm1 andpd %xmm15, %xmm2#endif incq RET comisd %xmm0, %xmm1 je .L999 incq RET comisd %xmm0, %xmm2 je .L999 ALIGN_3 .L98: incq RET ALIGN_3.L999: ret EPILOGUE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -