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

            Bug ID: 63826
           Summary: GCC produces haswell instructions that darwin14
                    assembler does not like
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: fxcoudert at gcc dot gnu.org

gcc.target/i386/pr57275.c currently fails on my laptop, which is a
x86_64-apple-darwin14 with quad-core Intel Core i7 2.3 GHz and Xcode 6.1.

The minimal reproducer is this:

void foo (float b[1024])
{
  for (int i = 0; i < 1024; i++)
    b[i] = i;
}

Compiled with -march=haswell (or, in my case, -march=native) I get errors from
the assembler about instructions it does not like:

$ ./bin/gcc pr57275.c -march=haswell -save-temps
pr57275.s:18:no such instruction: `vxorps %xmm0, %xmm0,%xmm0'
pr57275.s:19:no such instruction: `vcvtsi2ss -4(%rbp), %xmm0,%xmm0'
pr57275.s:20:no such instruction: `vmovss %xmm0, (%rax)'

The list of offending instructions depends on optimization level and whether I
compile with -m32 or -m64 (the default):

At -O0, -O1 or -O2: vcvtsi2ss vmovss vxorps
At -Os: vcvtsi2ss vmovss
At -O3: vcvtdq2ps vcvtsi2ss vmovaps vmovd vmovdqa vmovss vpaddd vpbroadcastd
vxorps vzeroupper
At -O3 -m32: vcvtdq2ps vmovaps vmovd vmovdqa vpaddd vpbroadcastd vzeroupper

Reply via email to