------- Additional Comments From vda at port dot imtp dot ilyichevsk dot odessa 
dot ua  2005-04-23 22:54 -------
These are -O2 and -O3 code comparison.
-O3 code have all modified variables in registers
and thus is smaller and most likely faster.

serpent_encrypt:
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %edi
        pushl   %esi
        pushl   %ebx
        subl    $256, %esp
        movl    8(%ebp), %edx
        movl    16(%ebp), %eax
        movl    12(%eax), %ebx
        movl    12(%edx), %ecx
        xorl    %ebx, %ecx
        movl    (%edx), %edi
        movl    %ecx, -20(%ebp)
        xorl    (%eax), %edi
        movl    8(%edx), %ecx
        movl    4(%edx), %ebx
        movl    -20(%ebp), %esi
        xorl    8(%eax), %ecx
        orl     %edi, -20(%ebp)
        xorl    4(%eax), %ebx
        xorl    %ebx, -20(%ebp)
        xorl    %esi, %edi
        xorl    %ecx, %esi
        andl    %edi, %ebx
        xorl    %edi, %ecx
        notl    %esi
        xorl    -20(%ebp), %edi
        movl    %edx, -16(%ebp)

serpent_encrypt:
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %edi
        pushl   %esi
        pushl   %ebx
        pushl   %edx
        movl    8(%ebp), %edi
        movl    16(%ebp), %ecx
        movl    12(%edi), %eax
        xorl    12(%ecx), %eax
        movl    8(%edi), %esi
        movl    4(%edi), %edx
        movl    (%edi), %ebx
        xorl    8(%ecx), %esi
        xorl    4(%ecx), %edx
        xorl    (%ecx), %ebx
        movl    %eax, %ecx
        orl     %ebx, %ecx
        xorl    %eax, %ebx
        xorl    %esi, %eax
        xorl    %edx, %ecx
        notl    %eax
        andl    %ebx, %edx
        xorl    %eax, %edx
        xorl    %ebx, %esi
        xorl    %ecx, %ebx
        orl     %ebx, %eax
        xorl    %esi, %ebx
        andl    %edx, %esi
        xorl    %esi, %eax
        notl    %edx



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21182

Reply via email to