| Assembly output from `hand_coded.c' |Assembly output from `conv_kernel.cxx' gcc -O3 v. 4.0.0 Xeon |gcc -O3 v. 4.0.0 Xeon _________________________________________|______________________________________ | _Z3foov: | _Z3foov: .LFB2: | .LFB1618: pushl %ebp | pushl %ebp .LCFI0: | .LCFI0: movl %esp, %ebp | movl %esp, %ebp .LCFI1: | .LCFI1: pushl %esi | pushl %esi .LCFI2: | .LCFI2: pushl %ebx | pushl %ebx .LCFI3: | .LCFI3: movl data, %ebx | movl external_data, %ebx movl -32(%ebx), %esi | movl 32(%ebx), %esi movl 32(%ebx), %edx | movl 28(%ebx), %ecx addl %esi, %edx | movl -32(%ebx), %edx leal (%edx,%edx,2), %edx | movl -28(%ebx), %eax movl %edx, a | addl %esi, %edx movl -28(%ebx), %ecx | movl 24(%ebx), %esi movl 28(%ebx), %eax | addl %ecx, %eax addl %ecx, %eax | movl 20(%ebx), %ecx leal (%eax,%eax,2), %eax | leal (%edx,%edx,2), %edx leal (%edx,%eax,4), %eax | leal (%eax,%eax,2), %eax movl %eax, a | leal (%edx,%eax,4), %eax movl -24(%ebx), %esi | movl -24(%ebx), %edx movl 24(%ebx), %edx | addl %esi, %edx addl %esi, %edx | movl 16(%ebx), %esi leal (%edx,%edx,8), %edx | leal (%edx,%edx,8), %edx leal (%eax,%edx,4), %edx | leal (%eax,%edx,4), %edx movl %edx, a | movl -20(%ebx), %eax movl -20(%ebx), %ecx | addl %ecx, %eax movl 20(%ebx), %eax | leal (%eax,%eax,4), %ecx addl %ecx, %eax | leal (%eax,%ecx,2), %ecx leal (%eax,%eax,4), %ecx | leal (%edx,%ecx,8), %ecx leal (%eax,%ecx,2), %ecx | movl -16(%ebx), %edx leal (%edx,%ecx,8), %ecx | addl %esi, %edx movl %ecx, a | leal (%edx,%edx,2), %esi movl -16(%ebx), %esi | movl %esi, %eax movl 16(%ebx), %edx | sall $4, %eax addl %esi, %edx | subl %esi, %eax leal (%edx,%edx,2), %esi | movl 8(%ebx), %esi movl %esi, %eax | leal (%edx,%eax,4), %eax sall $4, %eax | movl 12(%ebx), %edx subl %esi, %eax | addl %eax, %ecx leal (%edx,%eax,4), %eax | movl -12(%ebx), %eax addl %eax, %ecx | addl %edx, %eax movl %ecx, a | movl 4(%ebx), %edx movl -12(%ebx), %edx | imull $318, %eax, %eax movl 12(%ebx), %eax | addl %eax, %ecx addl %edx, %eax | movl -8(%ebx), %eax imull $318, %eax, %eax | addl %esi, %eax addl %eax, %ecx | imull $474, %eax, %eax movl %ecx, a | addl %eax, %ecx movl -8(%ebx), %esi | movl -4(%ebx), %eax movl 8(%ebx), %eax | addl %edx, %eax addl %esi, %eax | movl (%ebx), %edx imull $474, %eax, %eax | imull $603, %eax, %eax addl %eax, %ecx | popl %ebx movl %ecx, a | popl %esi movl -4(%ebx), %edx | addl %eax, %ecx movl 4(%ebx), %eax | leal (%edx,%edx,8), %eax addl %edx, %eax | leal (%eax,%eax,8), %eax imull $603, %eax, %eax | leal (%edx,%eax,2), %eax addl %eax, %ecx | leal (%edx,%eax,4), %eax movl %ecx, a | addl %eax, %ecx movl (%ebx), %edx | movl %ecx, %eax popl %ebx | sarl $31, %eax popl %esi | shrl $20, %eax leal (%edx,%edx,8), %eax | popl %ebp leal (%eax,%eax,8), %eax | addl %ecx, %eax leal (%edx,%eax,2), %eax | sarl $12, %eax leal (%edx,%eax,4), %eax | movl %eax, external_num movl $540433339, %edx | ret addl %eax, %ecx | movl %ecx, %eax | imull %edx | popl %ebp | sarl $31, %ecx | sarl $9, %edx | subl %ecx, %edx | movl %edx, a | ret |