GMP 6.2.1 core2 x86_64 assembler error "operands invalid for `movq'"

Simon Sobisch simonsobisch at gnu.org
Tue Nov 1 09:49:01 CET 2022


Environment:


   Version:           GNU MP 6.2.1
   Host type:         core2-apple-darwin11.4.2
   ABI:               64

linked files:

config.status: linking ../mpn/x86_64/core2/popcount.asm to mpn/popcount.asm
config.status: linking ../mpn/x86_64/core2/hamdist.asm to mpn/hamdist.asm


make -k builds everything without an error but those two above fail (I 
think in gas), details see below.


When doing a research on this issue I recognized in
	mpn/x86/pentium4/sse/popcount.asm
a comment "movq avoided due to gas bug" (which is in since GMP 4.3).

Maybe it is possible do do something similar for popcount.asm and 
hamdist.asm in mpn/x86_64/core2 ?



Making all in mpn
/bin/sh ../libtool --mode=compile --tag=CC ../../mpn/m4-ccas --m4="m4" 
gcc -std=gnu99 -c -DHAVE_CONFIG_H -I. -I../../mpn -I.. 
-D__GMP_WITHIN_GMP -I../.. -DOPERATION_`echo popcount | sed 's/_$//'` 
-O2 -pedantic -fomit-frame-pointer -m64 -mtune=core2 -march=core2  `test 
-f 'popcount.asm' || echo '../../mpn/'`popcount.asm
libtool: compile:  ../../mpn/m4-ccas --m4=m4 gcc -std=gnu99 -c 
-DHAVE_CONFIG_H -I. -I../../mpn -I.. -D__GMP_WITHIN_GMP -I../.. 
-DOPERATION_popcount -O2 -pedantic -fomit-frame-pointer -m64 
-mtune=core2 -march=core2 popcount.asm  -fno-common -DPIC -o 
.libs/popcount.o
m4  -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_popcount -DPIC 
popcount.asm >tmp-popcount.s
  gcc -std=gnu99 -c -DHAVE_CONFIG_H -I. -I../../mpn -I.. 
-D__GMP_WITHIN_GMP -I../.. -DOPERATION_popcount -O2 -pedantic 
-fomit-frame-pointer -m64 -mtune=core2 -march=core2 tmp-popcount.s 
-fno-common -DPIC -o .libs/popcount.o
tmp-popcount.s:181:suffix or operands invalid for `movq'
make[2]: *** [popcount.lo] Error 1
/bin/sh ../libtool --mode=compile --tag=CC ../../mpn/m4-ccas --m4="m4" 
gcc -std=gnu99 -c -DHAVE_CONFIG_H -I. -I../../mpn -I.. 
-D__GMP_WITHIN_GMP -I../.. -DOPERATION_`echo hamdist | sed 's/_$//'` 
-O2 -pedantic -fomit-frame-pointer -m64 -mtune=core2 -march=core2  `test 
-f 'hamdist.asm' || echo '../../mpn/'`hamdist.asm
libtool: compile:  ../../mpn/m4-ccas --m4=m4 gcc -std=gnu99 -c 
-DHAVE_CONFIG_H -I. -I../../mpn -I.. -D__GMP_WITHIN_GMP -I../.. 
-DOPERATION_hamdist -O2 -pedantic -fomit-frame-pointer -m64 -mtune=core2 
-march=core2 hamdist.asm  -fno-common -DPIC -o .libs/hamdist.o
m4  -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_hamdist -DPIC 
hamdist.asm >tmp-hamdist.s
  gcc -std=gnu99 -c -DHAVE_CONFIG_H -I. -I../../mpn -I.. 
-D__GMP_WITHIN_GMP -I../.. -DOPERATION_hamdist -O2 -pedantic 
-fomit-frame-pointer -m64 -mtune=core2 -march=core2 tmp-hamdist.s 
-fno-common -DPIC -o .libs/hamdist.o
tmp-hamdist.s:206:suffix or operands invalid for `movq'
make[2]: *** [hamdist.lo] Error 1


Thanks for any pointers,
Simon


More information about the gmp-bugs mailing list