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

            Bug ID: 116264
           Summary: Spurious {NF}s in APX code
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: andi-gcc at firstfloor dot org
  Target Milestone: ---
            Target: x86_64-linux

unsigned fclear(unsigned a, unsigned b)
{
        if (a & (1 << 10))
                b &= ~(1 << 20);
        return b;
}

gives

cc1 -O2  tbitifconv.c -march=skylake  -mapxf -quiet

fclear:
.LFB1:
        .cfi_startproc
        {nf} andl       $-1048577, %esi, %eax
        andl    $1024, %edi
        cmove   %esi, %eax
        ret
        .cfi_endproc


The {nf} seems to be useless because this is the first instruction and there is
no live condition code. Of course it's just a bit set so doesn't cost anything
but it may point to more general problems in how {nf} is placed.

Reply via email to