Regarding superopt-va

Nikolaos Kavvadias nkavv at
Wed Sep 12 13:27:27 CEST 2007

Hi Torbjorn and other people there ^_^

i have an interest on computer architecture (specifying my own 
architectures, their implementations -- soft cores -- and tools) and 
recently i had a specific need for optimizing code sequences (integer 
arithmetic library development for my processor). This where gmp and the 
recently announced (by Tobjorn) superopt-va come in place.

To my understanding the superopt-va is written from scratch, and some 
things that where implemented in the GNU superopt, are not there (yet) 
in superopt-va.
I have a few questions/comments on superopt-va:

1) As described, superopt-va, only optimizes algebraic forms. That is, 
m->n mappings that i have tested using other primitive operations (e.g. 
a logical shift left) are not accepted (are does not produce anything 
usable) by the superoptimizer. I'm thinking of extending the superopt-va 
primitive operation set so that it may target a more rich set of the 
typical operators.

2) Is it possible to specify unsigned words (assuming that the default 
is signed words), e.g. via the regular type casting? I remember this was 
available for the GNU superopt.

3) What is this Toom arithmetic? I have never heard about it yet. Where 
is it used (this might be a little OT, but it seems that Toom functions 
are the only benchmark that the new superopt has been exercised on.)

4) Is "superopt-va" going to be included in tests/devel directory of the 
gmp release? I have added the related files to this dir in my own copy. 
Or is it considered very alpha for that?

5) I'm hoping of optimizing small integer arithmetic structures (e.g. a 
euclidean distance approximation), or an alpha blending operation. Such 
structures would typically require around 4-10 to 4-20 operations, not 
more. I'm developing for which i shall return for .def file (and source 
code changes of course) if all goes well.

Kind regards
Nikolaos Kavvadias

More information about the gmp-discuss mailing list