Boost logo

Boost Users :

From: Guillaume Melquiond (guillaume.melquiond_at_[hidden])
Date: 2005-07-21 12:41:12


Le jeudi 21 juillet 2005 ā 11:35 +0200, Erwin a écrit :
> Hello,
>
> I would like to use the numeric::interval library on an Alpha EV 6.8
> processor under the OSF1 operating system. My program runs fine under
> Linux on a Pentium 4, but on the Alpha machine, g++ tells me:
>
> boost/numeric/interval/hw_rounding.hpp:26:4: #error
> Boost.Numeric.Interval: Please specify rounding control mechanism.
>
> What has to be done? Where do I have to specifiy the rounding controls,
> how much do I need to know about processor internals etc? Which tests can
> and have to be done afterwards?

I unfortunately never had access to an Alpha computer, so I didn't get
to write the rounding routines for this processor (EV6.8 is a 21264,
right?).

If you want to add support for it, you could first try to create a new
rounding detail file. It would be almost identical to
boost/numeric/interval/detail/ppc_rounding_control.hpp. It has to be
referenced from the file boost/numeric/interval/hw_rounding.hpp. This is
only a matter of adding a few preprocessor directives.

In this new file, the asm instructions mtfsf and mfss of the PowerPC
have to be replaced by accesses (mf_fcpr and mt_fcpr?) to the fpcr
register of the Alpha processor. The rounding mode constants also have
to be changed accordingly. This is the stage that requires to know a bit
about the processor internals.

Then your programs would probably have to be compiled with these GCC
options in order for these changes to have effect:
  -mieee -mfp-rounding-mode=d -mfloat-ieee

The tests are in libs/numeric/interval/test.

Best regards,

Guillaume

PS: Do not hesitate to contact me privately, if you want to add support
for your processor. I would be glad to help you and then commit the
modifications to the Boost library.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net