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