[PATCH] Add MIPS r6 support

Torbjörn Granlund tg at gmplib.org
Tue Jun 18 09:19:16 UTC 2019

I went ahead and comitted my minimal changes.

When you have time, please give feedback on my changes.  Do they work
for you?  I actually expect slightly better performance with just my
changes than with your asm code; my longlong.h change allows the
compiler to generate decent code also for functions not included in your

  Your mips32r6 asm code will presumably not get used as no configure.ac
  mips32 changes analogous to the mips64 changes have been made.  Any
  particular reason for that?  (Are there any mips32r6 CPUs out there?)

Are there?

If there are, I'll consider making analogous changes for mips32.  (But
these might be hard to test.)

  As you pointed out before, mipsr6 is in a way a new architecture, as r5
  code does not run on an r6, or vice versa.  For that reason, I think we
  need to separate them more cleanly in GMP.

  My suggestion os to move any code using the LO or HI registers to a
  subdirectory mips64/hilo.  That way, things will be less fragile, and we
  do not need to hide HI/LO GMP files with a corresponding r6 file.

I comitted code doing that for mips64.

  After this change, we can add r6 asm code for functions not handled well
  enough by the compiler.

I need your feedback here with benchmark results from actual hardware.
Specifically, does your suggested assembly code improve speed?  I
understand that your main motication for providing precisely the
functions you did provide was to "hide" the hi/lo code in the main
mips64 asm directory.  With my code reorg, that is no longer necessary.

Please encrypt, key id 0xC8601622

More information about the gmp-devel mailing list