A MODE argument must be the printable name of a machine mode,
without quotation marks or trailing "mode". For instance, SI.
- A BITSIZE, BYTESIZE, or COUNT argument must be a positive integer
+ A PRECISION, BYTESIZE, or COUNT argument must be a positive integer
constant.
A FORMAT argument must be one of the real_mode_format structures
- declared in real.h, or else a literal 0.
+ declared in real.h, or else a literal 0. Do not put a leading &
+ on the argument.
+
+ An EXPR argument must be a syntactically valid C expression.
+ If an EXPR contains commas, you may need to write an extra pair of
+ parentheses around it, so it appears to be a single argument to the
+ statement.
This file defines only those modes which are of use on almost all
machines. Other modes can be defined in the target-specific
declares MODE to be of class INT and BYTESIZE bytes wide.
All of the bits of its representation are significant.
- FRACTIONAL_INT_MODE (MODE, BITSIZE, BYTESIZE);
+ FRACTIONAL_INT_MODE (MODE, PRECISION, BYTESIZE);
declares MODE to be of class INT, BYTESIZE bytes wide in
- storage, but with only BITSIZE significant bits.
+ storage, but with only PRECISION significant bits.
FLOAT_MODE (MODE, BYTESIZE, FORMAT);
declares MODE to be of class FLOAT and BYTESIZE bytes wide,
using floating point format FORMAT.
All of the bits of its representation are significant.
- FRACTIONAL_FLOAT_MODE (MODE, BITSIZE, BYTESIZE, FORMAT);
+ FRACTIONAL_FLOAT_MODE (MODE, PRECISION, BYTESIZE, FORMAT);
declares MODE to be of class FLOAT, BYTESIZE bytes wide in
- storage, but with only BITSIZE significant bits, using
+ storage, but with only PRECISION significant bits, using
floating point format FORMAT.
RESET_FLOAT_FORMAT (MODE, FORMAT);
declares a mode of class PARTIAL_INT with the same size as
MODE (which must be an INT mode). The name of the new mode
is made by prefixing a P to the name MODE. This statement
- may grow a BITSIZE argument in the future.
+ may grow a PRECISION argument in the future.
VECTOR_MODE (CLASS, MODE, COUNT);
Declare a vector mode whose component mode is MODE (of class
error if there is no 'F'. For INT modes, the names are
derived by prefixing a C to the name.
+ ADJUST_BYTESIZE (MODE, EXPR);
+ ADJUST_ALIGNMENT (MODE, EXPR);
+ ADJUST_FLOAT_FORMAT (MODE, EXPR);
+ Arrange for the byte size, alignment, or floating point format
+ of MODE to be adjustable at run time. EXPR will be executed
+ once after processing all command line options, and should
+ evaluate to the desired byte size, alignment, or format.
+
+ Unlike a FORMAT argument, if you are adjusting a float format
+ you must put an & in front of the name of each format structure.
+
Note: If a mode is ever made which is more than 255 bytes wide,
machmode.h and genmodes.c will have to be changed to allocate
more space for the mode_size and mode_alignment arrays. */