GMP 6.0.0a on AMD A8-6600K

Marc Glisse marc.glisse at inria.fr
Sun Apr 12 13:40:47 UTC 2015


On Sun, 12 Apr 2015, Marc Glisse wrote:

>> So this is in code generated by gcc. I have no idea what the vmovsd
>> does, or which instruction set extension it belongs to. Hopefully
>> someone else does.
>
> It is the most basic AVX instruction, loading a double from memory to a 
> register.
>
>> In the mean time, you could try playing with the command line options to
>> gcc and see if you can stop it from generating this instruction.
>
> -mno-avx or a -march naming an older architecture.

What is strange is that the configure test "double -> float" should have 
generated vcvtsd2ss and caused an error (assuming all AVX instructions are 
rejected), and that would have caused configure to try adding -mno-avx, 
but:

Test compile: double -> float conversion
configure:7588: gcc -O2 -pedantic -fomit-frame-pointer -m64 -mtune=bdver1 -march=bdver1 conftest.c >&5
configure:7591: $? = 0
configure:7596: ./a.out || ./b.out || ./a.exe || ./a_out.exe || ./conftest
configure:7599: $? = 0

Or maybe "Illegal instruction" can also mean that it was passed a pointer 
with insufficient alignment? That would point in a different direction.

-- 
Marc Glisse


More information about the gmp-bugs mailing list