https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85758

--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> ---
Direct translation would be (from clang):

        andl    %ecx, %edx
        addl    %edx, %edi
        xorl    %ecx, %edx
        addl    %edx, %esi

With -mbmi, I get

        andn    %ecx, %edx, %eax
        andl    %ecx, %edx
        addl    %eax, %esi
        addl    %edx, %edi

which is comparable to the original (andn has a longer encoding, but the
operations are less dependent)

We could use opi:cs in the transformation if that really helps...

Reply via email to