On Mon, Aug 3, 2015 at 3:02 PM, Kyrill Tkachov <kyrylo.tkac...@arm.com> wrote: > > On 03/08/15 13:33, Uros Bizjak wrote: >> >> Hello! >> >>> 2015-07-30 Kyrylo Tkachov <kyrylo.tkac...@arm.com> >>> >>> * ifcvt.c (noce_try_store_flag_constants): Make logic of the case >>> when diff == STORE_FLAG_VALUE or diff == -STORE_FLAG_VALUE more >>> explicit. Prefer to add the flag whenever possible. >>> (noce_process_if_block): Try noce_try_store_flag_constants before >>> noce_try_cmove. >>> >>> 2015-07-30 Kyrylo Tkachov <kyrylo.tkac...@arm.com> >>> >>> * gcc.target/aarch64/csel_bfx_1.c: New test. >>> * gcc.target/aarch64/csel_imms_inc_1.c: Likewise. >> >> This patch regressed following tests on x86_64: >> >> FAIL: gcc.target/i386/cmov2.c scan-assembler sbb >> FAIL: gcc.target/i386/cmov3.c scan-assembler cmov[^3]
The difference for cmov3.c on x86_64 is: cmpl %esi, %edi movl $-5, %edx movl $5, %eax cmovg %edx, %eax ret vs. new code: xorl %eax, %eax cmpl %esi, %edi setle %al negl %eax andl $10, %eax subl $5, %eax ret I'm not sure old code is really better than new. HJ, do you have any better insight? Uros.