genmodes.c (emit_max_int): New function.
2013-03-28 Kenneth Zadeck <zadeck@naturalbridge.com> * genmodes.c (emit_max_int): New function. (emit_insn_modes_h): Added call to emit_max_function. * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_INT, MAX_BITSIZE_MODE_ANY_MODE): Added doc. * machmode.def: Fixed comment. From-SVN: r197200
This commit is contained in:
parent
b4c73eedf3
commit
8697be17fe
4 changed files with 57 additions and 3 deletions
|
@ -1,6 +1,12 @@
|
|||
2013-03-28 Kenneth Zadeck <zadeck@naturalbridge.com>
|
||||
|
||||
* combine.c (try_combine): Removed useless assert.
|
||||
* genmodes.c (emit_max_int): New function.
|
||||
(emit_insn_modes_h): Added call to emit_max_function.
|
||||
* doc/rtl.texi (MAX_BITSIZE_MODE_ANY_INT, MAX_BITSIZE_MODE_ANY_MODE): Added doc.
|
||||
* machmode.def: Fixed comment.
|
||||
2013-03-28 Kenneth Zadeck <zadeck@naturalbridge.com>
|
||||
|
||||
* combine.c (try_combine): Removed useless assert.
|
||||
* cselib.c (rtx_equal_for_cselib_1): Removed unnecessary parens.
|
||||
|
||||
2013-03-28 Marek Polacek <polacek@redhat.com>
|
||||
|
|
|
@ -1456,6 +1456,20 @@ Returns the number of units contained in a mode, i.e.,
|
|||
Returns the narrowest mode in mode class @var{c}.
|
||||
@end table
|
||||
|
||||
The following 4 variables are defined on every target. They can be
|
||||
used to allocate buffers that are guaranteed to be large enough to
|
||||
hold any value that can be represented on the target.
|
||||
|
||||
@table @code
|
||||
@findex MAX_BITSIZE_MODE_ANY_INT
|
||||
@item MAX_BITSIZE_MODE_ANY_INT
|
||||
The maximum of MAX_BITSIZE_MODE_INT and MAX_BITSIZE_MODE_PARTIAL_INT.
|
||||
|
||||
@findex MAX_BITSIZE_MODE_ANY_MODE
|
||||
@item MAX_BITSIZE_MODE_ANY_MODE
|
||||
The bitsize of the largest mode on the target.
|
||||
@end table
|
||||
|
||||
@findex byte_mode
|
||||
@findex word_mode
|
||||
The global variables @code{byte_mode} and @code{word_mode} contain modes
|
||||
|
|
|
@ -848,6 +848,36 @@ calc_wider_mode (void)
|
|||
|
||||
#define print_closer() puts ("};")
|
||||
|
||||
/* Compute the max bitsize of some of the classes of integers. It may
|
||||
be that there are needs for the other integer classes, and this
|
||||
code is easy to extend. */
|
||||
static void
|
||||
emit_max_int (void)
|
||||
{
|
||||
unsigned int max, mmax;
|
||||
struct mode_data *i;
|
||||
int j;
|
||||
|
||||
puts ("");
|
||||
for (max = 1, i = modes[MODE_INT]; i; i = i->next)
|
||||
if (max < i->bytesize)
|
||||
max = i->bytesize;
|
||||
mmax = max;
|
||||
for (max = 1, i = modes[MODE_PARTIAL_INT]; i; i = i->next)
|
||||
if (max < i->bytesize)
|
||||
max = i->bytesize;
|
||||
if (max > mmax)
|
||||
mmax = max;
|
||||
printf ("#define MAX_BITSIZE_MODE_ANY_INT %d*BITS_PER_UNIT\n", mmax);
|
||||
|
||||
mmax = 0;
|
||||
for (j = 0; j < MAX_MODE_CLASS; j++)
|
||||
for (i = modes[j]; i; i = i->next)
|
||||
if (mmax < i->bytesize)
|
||||
mmax = i->bytesize;
|
||||
printf ("#define MAX_BITSIZE_MODE_ANY_MODE %d*BITS_PER_UNIT\n", mmax);
|
||||
}
|
||||
|
||||
static void
|
||||
emit_insn_modes_h (void)
|
||||
{
|
||||
|
@ -912,6 +942,7 @@ enum machine_mode\n{");
|
|||
#endif
|
||||
printf ("#define CONST_MODE_IBIT%s\n", adj_ibit ? "" : " const");
|
||||
printf ("#define CONST_MODE_FBIT%s\n", adj_fbit ? "" : " const");
|
||||
emit_max_int ();
|
||||
puts ("\
|
||||
\n\
|
||||
#endif /* insn-modes.h */");
|
||||
|
|
|
@ -179,8 +179,11 @@ RANDOM_MODE (BLK);
|
|||
FRACTIONAL_INT_MODE (BI, 1, 1);
|
||||
|
||||
/* Basic integer modes. We go up to TI in generic code (128 bits).
|
||||
The name OI is reserved for a 256-bit type (needed by some back ends).
|
||||
FIXME TI shouldn't be generically available either. */
|
||||
TImode is needed here because the some front ends now genericly
|
||||
support __int128. If the front ends decide to generically support
|
||||
larger types, then corresponding modes must be added here. The
|
||||
name OI is reserved for a 256-bit type (needed by some back ends).
|
||||
*/
|
||||
INT_MODE (QI, 1);
|
||||
INT_MODE (HI, 2);
|
||||
INT_MODE (SI, 4);
|
||||
|
|
Loading…
Add table
Reference in a new issue