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

--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
True.  E.g. on my x86_64 i7 Nehalem I see (using ./cc1 -quiet -O2 qq.c -mbmi) 

        andn    %edi, %edx, %edi
        andl    %edx, %esi
        movl    %edi, %eax
        orl     %esi, %eax
        ret

for return (a & ~m) | (b & m); and

        xorl    %edi, %esi
        movl    %edi, %eax
        andl    %esi, %edx
        xorl    %edx, %eax
        ret

for return a ^ ((a ^ b) & m);

Reply via email to