assembler error: no such instruction

Hi,


I am trying to compile an application on Windows with PGI 11.1 using -fastsse option. But I am getting error messages from assembler:

C:\DOCUME~1..\LOCALS~1\Temp\3\pgcc3bRaebbp8O_1uR.s: Assembler messages:
C:\DOCUME~1..\LOCALS~1\Temp\3\pgcc3bRaebbp8O_1uR.s:516: Error: no such instruction: pcmpeqq %xmm3,%xmm0' C:\DOCUME~1\..\LOCALS~1\Temp\3\pgcc3bRaebbp8O_1uR.s:524: Error: no such instruction: pcmpeqq %xmm3,%xmm0’
C:\DOCUME~1..\LOCALS~1\Temp\3\pgcc3bRaebbp8O_1uR.s:532: Error: no such instruction: `pcmpeqq %xmm3,%xmm0’


If it were Linux it would be a problem with binutils. What about Windows?

Hi Sanik,

PGI provides it’s own assembler on Windows. The current one hasn’t been updated to include SSE4 yet. We do have an updated version, that also includes support for AVX, available as part of the 11.2 release. It will not be the default assembler so you will need to manually replace “as64.exe” with “as64new.exe” (or “as32.exe” with “as632new.exe”) or pass to the compiler “AS=as64new.exe”.

Hope this helps,
Mat

Thank you.

Hi,

I’m getting those same “Error: no such instruction” messages.

Unlike Sanik, I am on a linux machine. I’m not very experienced with linux, so I’m unsure of how to solve the problem, even with the binutils hint.

Your help is appreciated!

Thanks!

Hi esajz24,

Most likely you’re on a system that supports AVX but the OS and assembler is a little older so doesn’t recognize these new instructions. The two solutions are to either have PGI target and older processors (such as -tp=penryn-64 (Intel) or -tp=barcelona=64 (AMD), or -tp=px-64 (generic 64-bit)), or update your binutils (which at the assembler is part). You can find the latest binuilts at Index of /gnu/binutils.

Though to be sure, can you please post an example of the unknown instruction and the output from “pgcpud”?

  • Mat

Thanks mkcolg.

I updated to the latest binutils, which seems to have fixed this issue.

Thanks again!
Josh