mirror of git://gcc.gnu.org/git/gcc.git
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
|
|
@ -1,5 +1,11 @@
|
||||||
2013-03-28 Kenneth Zadeck <zadeck@naturalbridge.com>
|
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.
|
||||||
|
2013-03-28 Kenneth Zadeck <zadeck@naturalbridge.com>
|
||||||
|
|
||||||
* combine.c (try_combine): Removed useless assert.
|
* combine.c (try_combine): Removed useless assert.
|
||||||
* cselib.c (rtx_equal_for_cselib_1): Removed unnecessary parens.
|
* cselib.c (rtx_equal_for_cselib_1): Removed unnecessary parens.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1456,6 +1456,20 @@ Returns the number of units contained in a mode, i.e.,
|
||||||
Returns the narrowest mode in mode class @var{c}.
|
Returns the narrowest mode in mode class @var{c}.
|
||||||
@end table
|
@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 byte_mode
|
||||||
@findex word_mode
|
@findex word_mode
|
||||||
The global variables @code{byte_mode} and @code{word_mode} contain modes
|
The global variables @code{byte_mode} and @code{word_mode} contain modes
|
||||||
|
|
|
||||||
|
|
@ -848,6 +848,36 @@ calc_wider_mode (void)
|
||||||
|
|
||||||
#define print_closer() puts ("};")
|
#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
|
static void
|
||||||
emit_insn_modes_h (void)
|
emit_insn_modes_h (void)
|
||||||
{
|
{
|
||||||
|
|
@ -912,6 +942,7 @@ enum machine_mode\n{");
|
||||||
#endif
|
#endif
|
||||||
printf ("#define CONST_MODE_IBIT%s\n", adj_ibit ? "" : " const");
|
printf ("#define CONST_MODE_IBIT%s\n", adj_ibit ? "" : " const");
|
||||||
printf ("#define CONST_MODE_FBIT%s\n", adj_fbit ? "" : " const");
|
printf ("#define CONST_MODE_FBIT%s\n", adj_fbit ? "" : " const");
|
||||||
|
emit_max_int ();
|
||||||
puts ("\
|
puts ("\
|
||||||
\n\
|
\n\
|
||||||
#endif /* insn-modes.h */");
|
#endif /* insn-modes.h */");
|
||||||
|
|
|
||||||
|
|
@ -179,8 +179,11 @@ RANDOM_MODE (BLK);
|
||||||
FRACTIONAL_INT_MODE (BI, 1, 1);
|
FRACTIONAL_INT_MODE (BI, 1, 1);
|
||||||
|
|
||||||
/* Basic integer modes. We go up to TI in generic code (128 bits).
|
/* 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).
|
TImode is needed here because the some front ends now genericly
|
||||||
FIXME TI shouldn't be generically available either. */
|
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 (QI, 1);
|
||||||
INT_MODE (HI, 2);
|
INT_MODE (HI, 2);
|
||||||
INT_MODE (SI, 4);
|
INT_MODE (SI, 4);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue