[racket-dev] assembler code within gmplonglong.h

From: Juan Francisco Cantero Hurtado (iam at juanfra.info)
Date: Sat Jan 11 19:31:21 EST 2014

Hi. The last days I've been reading the code within gmplonglong.h and 
I've a question/request. Why there is assembler code? Why not just to 
remove the assembler code and to use the C fallback for every CPU?.

These days the racket developers (and users) mostly only test their code 
on amd64, specially the math code. The file doesn't contain assembler 
code for amd64, so almost every one is compiling their interpreters with 
the C code.

The old CPUs supported by gmplonglong.h are dead or have a modern C 
compiler. I doubt the assembler code even gives a better performance to 
racket than the C version.

I'm complaining because I've tried to compile racket 5.3.6 (with some 
patches related to clang and gmp backported from the master branch) with 
clang and the build failed. I read the code and I was stunned when I saw 
the assembler code supporting so old CPUs and the C fallback used by amd64.

Posted on the dev mailing list.