On Thu, Jan 28, 2016 at 02:33:20PM +0000, James Greenhalgh wrote: > On Mon, Jan 25, 2016 at 08:09:39PM +0000, Wilco Dijkstra wrote: > > Andreas Schwab <sch...@linux-m68k.org> wrote: > > > > > FAIL: gcc.target/aarch64/ccmp_1.c scan-assembler-times \tcmp\tw[0-9]+, 0 4 > > > FAIL: gcc.target/aarch64/ccmp_1.c scan-assembler adds\t > > > FAIL: gcc.target/aarch64/ccmp_1.c scan-assembler-times fccmpe\t.*0\\.0 1 > > > > Yes I noticed those too, and here is the fix. Richard's recent change added > > UNSPEC to the CCMP patterns to stop combine optimizing the CCMP CCmode > > immediate in a rare case. This requires a change to the CCMP cost > > calculation > > as the CCMP instruction with unspec is no longer recognized. > > > > Fix the ccmp_1.c test to allow both '0' and 'wzr' on cmp - BTW is there a > > regular expression that correctly implements (0|xzr)? If I use that the test > > still fails somehow but \[0wzr\]+ works fine... Is the correct syntax > > documented somewhere? > > > > Finally to ensure FCCMPE is emitted on relational compares, add > > -ffinite-math-only. > > > > ChangeLog: > > 2016-01-25 Wilco Dijkstra <wdijk...@arm.com> > > > > gcc/ > > * config/aarch64/aarch64.c (aarch64_if_then_else_costs): > > Remove CONST_INT_P check in CCMP cost calculation. > > > > gcc/testsuite/ > > * gcc.target/aarch64/ccmp_1.c: Fix test issues.
I'm still seeing: FAIL: gcc.target/aarch64/ccmp_1.c scan-assembler-times \\tcmp\\tw[0-9]+, (0|wzr) 4 Looking at the assembly generated for me with this testcase I see ccmp with zero in 5 places: f3: cmp w1, 34 ccmp w0, 19, 0, eq cset w0, eq ret f4: cmp w0, 35 ccmp w1, 20, 0, eq cset w0, eq ret f7: cmp w0, 0 ccmp w1, 7, 0, eq cset w0, eq ret f8: cmp w1, 0 ccmp w0, 9, 0, eq cset w0, eq ret f11: fcmpe d0, #0.0 ccmp w0, 30, 0, mi cset w0, eq ret Are these all expected? If so, can you spin the "obvious" patch to bump this number to 5. Thanks, James