------- Comment #13 from rask at sygehus dot dk  2007-07-01 19:52 -------
   This has regressed quite badly. Here's what we get with
-O2 -fomit-frame-pointer -m32 -march=pentium4:

fl:
        movzbl  %al, %eax       # 21    *zero_extendqisi2_movzbw        [length
= 3]
        movl    x, %edx # 8     *movsi_1/1      [length = 6]
        xorb    %dl, %dl        # 27    *movstrictqi_xor        [length = 2]
        orl     %edx, %eax      # 10    *iorsi_1/1      [length = 2]
        movl    %eax, x # 11    *movsi_1/2      [length = 5]
        ret     # 25    return_internal [length = 1]
fu:
        movzbl  %al, %eax       # 22    *zero_extendqisi2_movzbw        [length
= 3]
        sall    $8, %eax        # 8     *ashlsi3_1/1    [length = 3]
        movl    x, %edx # 9     *movsi_1/1      [length = 6]
        xorb    %dh, %dh        # 23    *xorqi_ext_2    [length = 2]
        orl     %edx, %eax      # 11    *iorsi_1/1      [length = 2]
        movl    %eax, x # 12    *movsi_1/2      [length = 5]
        ret     # 26    return_internal [length = 1]
gl:
        movzbl  %al, %eax       # 21    *zero_extendqihi2_movzbl        [length
= 3]
        movzwl  y, %edx # 8     *movhi_1/3      [length = 7]
        xorb    %dl, %dl        # 28    *movstrictqi_xor        [length = 2]
        orl     %edx, %eax      # 23    *iorsi_1/1      [length = 2]
        movw    %ax, y  # 11    *movhi_1/4      [length = 6]
        ret     # 26    return_internal [length = 1]
gu:
        sall    $8, %eax        # 22    *ashlsi3_1/1    [length = 3]
        movzbl  y, %edx # 23    *zero_extendqihi2_movzbl        [length = 7]
        orl     %edx, %eax      # 24    *iorsi_1/1      [length = 2]
        movw    %ax, y  # 12    *movhi_1/4      [length = 6]
        ret     # 27    return_internal [length = 1]

Likewise for -march=pentium:

fl:
        movl    x, %edx # 8     *movsi_1/1      [length = 6]
        andl    $255, %eax      # 21    *andsi_1/1      [length = 6]
        xorb    %dl, %dl        # 27    *movstrictqi_xor        [length = 2]
        orl     %edx, %eax      # 10    *iorsi_1/1      [length = 2]
        movl    %eax, x # 11    *movsi_1/2      [length = 5]
        ret     # 25    return_internal [length = 1]
fu:
        movl    x, %edx # 9     *movsi_1/1      [length = 6]
        andl    $255, %eax      # 22    *andsi_1/1      [length = 6]
        sall    $8, %eax        # 8     *ashlsi3_1/1    [length = 3]
        xorb    %dh, %dh        # 23    *xorqi_ext_2    [length = 2]
        orl     %edx, %eax      # 11    *iorsi_1/1      [length = 2]
        movl    %eax, x # 12    *movsi_1/2      [length = 5]
        ret     # 26    return_internal [length = 1]
gl:
        movw    y, %dx  # 8     *movhi_1/3      [length = 7]
        andl    $255, %eax      # 22    *andsi_1/1      [length = 6]
        xorb    %dl, %dl        # 29    *movstrictqi_xor        [length = 2]
        orl     %edx, %eax      # 24    *iorsi_1/1      [length = 2]
        movw    %ax, y  # 11    *movhi_1/4      [length = 6]
        ret     # 27    return_internal [length = 1]
gu:
        movb    %al, y+1        # 12    *movqi_1/7      [length = 5]
        ret     # 24    return_internal [length = 1]

        .ident  "GCC: (GNU) 4.3.0 20070628 (experimental)"


-- 


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

Reply via email to