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

Reply via email to