We recently upgraded some of our workstations to the new i7 Haswell series, but when compiling we suddenly got strange messages when compiling the Boost package:
Assembler messages: Error: no such instruction: `shlx ...
Naturally, The error repeated itself with more instructions introduced in the new BMI2 specification
BZHI, MULX, PDEP, PEXT, RORX, SARX, SHRX, SHLX
The issue seems to be that when compiling with -march=native
, GCC will generate code for the new processor, but our Assembler was really out of date (came with our linux distribution).
We solved the issue by installing a new assembler from binutils.
There is also another solution – disable -march=native.
, but you risk losing some performance benefits of your new processor.
Leave a Reply