------- Comment #16 from pluto at agmk dot net 2005-11-21 11:29 ------- without Uros' mmx-patch the gcc-4.1.0-20051113 generates amazing code: (gcc -O3 -march=pentium3 -S -fomit-frame-pointer pr14552.c)
test: subl $20, %esp movl w, %eax movl w+4, %edx movl %ebx, 8(%esp) movl %esi, 12(%esp) movl %eax, (%esp) movl %edx, 4(%esp) movswl (%esp),%esi movl %edi, 16(%esp) movswl 4(%esp),%ecx movswl 2(%esp),%edi movswl 6(%esp),%ebx addl %esi, %esi addl %ecx, %ecx movzwl %si, %esi sall $17, %edi movzwl %cx, %ecx sall $17, %ebx movl %edi, %eax movl 16(%esp), %edi movl %ebx, %edx orl %esi, %eax movl 8(%esp), %ebx orl %ecx, %edx movl 12(%esp), %esi movl %eax, w movl %edx, w+4 movl w, %eax movl w+4, %edx movl %eax, dw movl %edx, dw+4 addl $20, %esp ret .size test, .-test .comm dw,8,8 .comm w,8,8 .ident "GCC: (GNU) 4.1.0 20051113 (experimental)" .section .note.GNU-stack,"",@progbits -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14552