mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-04 01:04:26 +08:00
machmode.def: Add BImode.
* machmode.def: Add BImode. Add a column for bitsize. * machmode.h (DEF_MACHMODE): Adjust for extra column. (GET_MODE_BITSIZE): Use it. * rtl.c (DEF_MACHMODE): Adjust for extra column. (mode_bitsize): New. (mode_mask_array): Use bitsize. * combine.c (combine_simplify_rtx): Require inner and outer modes to match on nonzero_bits optimizations. From-SVN: r36501
This commit is contained in:
parent
42d5d0f171
commit
a191f0ee83
@ -1,3 +1,14 @@
|
|||||||
|
2000-09-18 Richard Henderson <rth@cygnus.com>
|
||||||
|
|
||||||
|
* machmode.def: Add BImode. Add a column for bitsize.
|
||||||
|
* machmode.h (DEF_MACHMODE): Adjust for extra column.
|
||||||
|
(GET_MODE_BITSIZE): Use it.
|
||||||
|
* rtl.c (DEF_MACHMODE): Adjust for extra column.
|
||||||
|
(mode_bitsize): New.
|
||||||
|
(mode_mask_array): Use bitsize.
|
||||||
|
* combine.c (combine_simplify_rtx): Require inner and outer
|
||||||
|
modes to match on nonzero_bits optimizations.
|
||||||
|
|
||||||
2000-09-18 Bernd Schmidt <bernds@redhat.co.uk>
|
2000-09-18 Bernd Schmidt <bernds@redhat.co.uk>
|
||||||
|
|
||||||
* reload1.c (forget_old_reloads_1): If a hard reg is stored, clear
|
* reload1.c (forget_old_reloads_1): If a hard reg is stored, clear
|
||||||
@ -86,8 +97,8 @@
|
|||||||
|
|
||||||
* configure.in: Define _GNU_SOURCE only when using the GNU C
|
* configure.in: Define _GNU_SOURCE only when using the GNU C
|
||||||
Library.
|
Library.
|
||||||
* configure: Regenerated.
|
* configure: Regenerated.
|
||||||
* config.in: Regenerated.
|
* config.in: Regenerated.
|
||||||
|
|
||||||
2000-09-17 Mark Mitchell <mark@codesourcery.com>
|
2000-09-17 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
@ -141,15 +152,15 @@ Sun Sep 17 10:46:17 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
|||||||
|
|
||||||
2000-09-17 Bernd Schmidt <bernds@redhat.co.uk>
|
2000-09-17 Bernd Schmidt <bernds@redhat.co.uk>
|
||||||
|
|
||||||
* expr.h (emit_library_call, emit_library_call_value): Delete
|
* expr.h (emit_library_call, emit_library_call_value): Delete
|
||||||
declarations.
|
declarations.
|
||||||
* rtl.h (enum libcall_type): New.
|
* rtl.h (enum libcall_type): New.
|
||||||
(emit_library_call, emit_library_call_value): Change fn_type arg to
|
(emit_library_call, emit_library_call_value): Change fn_type arg to
|
||||||
be of type enum libcall_type.
|
be of type enum libcall_type.
|
||||||
* calls.c: Likewise for the function definitions. Several callers
|
* calls.c: Likewise for the function definitions. Several callers
|
||||||
throughout changed to use the new enumeration appropriately.
|
throughout changed to use the new enumeration appropriately.
|
||||||
(emit_library_call_value_1): Likewise. Put back code to make libcall
|
(emit_library_call_value_1): Likewise. Put back code to make libcall
|
||||||
blocks of equal form, but only use it for the two new higher
|
blocks of equal form, but only use it for the two new higher
|
||||||
enumeration values.
|
enumeration values.
|
||||||
|
|
||||||
2000-09-16 Mark Mitchell <mark@codesourcery.com>
|
2000-09-16 Mark Mitchell <mark@codesourcery.com>
|
||||||
@ -611,7 +622,7 @@ Wed Sep 13 02:31:23 EDT 2000 John Wehle (john@feith.com)
|
|||||||
|
|
||||||
2000-09-13 Michael Hayes <mhayes@cygnus.com>
|
2000-09-13 Michael Hayes <mhayes@cygnus.com>
|
||||||
|
|
||||||
* loop.c (note_set_pseudo_multiple_uses): Correct.
|
* loop.c (note_set_pseudo_multiple_uses): Correct.
|
||||||
|
|
||||||
2000-09-12 Jim Wilson <wilson@cygnus.com>
|
2000-09-12 Jim Wilson <wilson@cygnus.com>
|
||||||
|
|
||||||
|
@ -4347,13 +4347,16 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
|
|||||||
|
|
||||||
if (STORE_FLAG_VALUE == 1
|
if (STORE_FLAG_VALUE == 1
|
||||||
&& new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
|
&& new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
|
||||||
&& op1 == const0_rtx && nonzero_bits (op0, mode) == 1)
|
&& op1 == const0_rtx
|
||||||
|
&& mode == GET_MODE (op0)
|
||||||
|
&& nonzero_bits (op0, mode) == 1)
|
||||||
return gen_lowpart_for_combine (mode,
|
return gen_lowpart_for_combine (mode,
|
||||||
expand_compound_operation (op0));
|
expand_compound_operation (op0));
|
||||||
|
|
||||||
else if (STORE_FLAG_VALUE == 1
|
else if (STORE_FLAG_VALUE == 1
|
||||||
&& new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
|
&& new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
|
||||||
&& op1 == const0_rtx
|
&& op1 == const0_rtx
|
||||||
|
&& mode == GET_MODE (op0)
|
||||||
&& (num_sign_bit_copies (op0, mode)
|
&& (num_sign_bit_copies (op0, mode)
|
||||||
== GET_MODE_BITSIZE (mode)))
|
== GET_MODE_BITSIZE (mode)))
|
||||||
{
|
{
|
||||||
@ -4365,6 +4368,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
|
|||||||
else if (STORE_FLAG_VALUE == 1
|
else if (STORE_FLAG_VALUE == 1
|
||||||
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
|
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
|
||||||
&& op1 == const0_rtx
|
&& op1 == const0_rtx
|
||||||
|
&& mode == GET_MODE (op0)
|
||||||
&& nonzero_bits (op0, mode) == 1)
|
&& nonzero_bits (op0, mode) == 1)
|
||||||
{
|
{
|
||||||
op0 = expand_compound_operation (op0);
|
op0 = expand_compound_operation (op0);
|
||||||
@ -4376,6 +4380,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
|
|||||||
else if (STORE_FLAG_VALUE == 1
|
else if (STORE_FLAG_VALUE == 1
|
||||||
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
|
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
|
||||||
&& op1 == const0_rtx
|
&& op1 == const0_rtx
|
||||||
|
&& mode == GET_MODE (op0)
|
||||||
&& (num_sign_bit_copies (op0, mode)
|
&& (num_sign_bit_copies (op0, mode)
|
||||||
== GET_MODE_BITSIZE (mode)))
|
== GET_MODE_BITSIZE (mode)))
|
||||||
{
|
{
|
||||||
@ -4396,6 +4401,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
|
|||||||
else if (STORE_FLAG_VALUE == -1
|
else if (STORE_FLAG_VALUE == -1
|
||||||
&& new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
|
&& new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
|
||||||
&& op1 == const0_rtx
|
&& op1 == const0_rtx
|
||||||
|
&& mode == GET_MODE (op0)
|
||||||
&& nonzero_bits (op0, mode) == 1)
|
&& nonzero_bits (op0, mode) == 1)
|
||||||
{
|
{
|
||||||
op0 = expand_compound_operation (op0);
|
op0 = expand_compound_operation (op0);
|
||||||
@ -4406,6 +4412,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
|
|||||||
else if (STORE_FLAG_VALUE == -1
|
else if (STORE_FLAG_VALUE == -1
|
||||||
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
|
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
|
||||||
&& op1 == const0_rtx
|
&& op1 == const0_rtx
|
||||||
|
&& mode == GET_MODE (op0)
|
||||||
&& (num_sign_bit_copies (op0, mode)
|
&& (num_sign_bit_copies (op0, mode)
|
||||||
== GET_MODE_BITSIZE (mode)))
|
== GET_MODE_BITSIZE (mode)))
|
||||||
{
|
{
|
||||||
@ -4418,6 +4425,7 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
|
|||||||
else if (STORE_FLAG_VALUE == -1
|
else if (STORE_FLAG_VALUE == -1
|
||||||
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
|
&& new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
|
||||||
&& op1 == const0_rtx
|
&& op1 == const0_rtx
|
||||||
|
&& mode == GET_MODE (op0)
|
||||||
&& nonzero_bits (op0, mode) == 1)
|
&& nonzero_bits (op0, mode) == 1)
|
||||||
{
|
{
|
||||||
op0 = expand_compound_operation (op0);
|
op0 = expand_compound_operation (op0);
|
||||||
|
132
gcc/machmode.def
132
gcc/machmode.def
@ -48,98 +48,100 @@ Boston, MA 02111-1307, USA. */
|
|||||||
MODE_VECTOR_INT, MODE_VECTOR_FLOAT - vector
|
MODE_VECTOR_INT, MODE_VECTOR_FLOAT - vector
|
||||||
MODE_RANDOM - anything else
|
MODE_RANDOM - anything else
|
||||||
|
|
||||||
Fourth argument is the relative size of the object, in bytes.
|
Fourth argument is the relative size of the object, in bits,
|
||||||
|
so we can have modes smaller than 1 byte.
|
||||||
|
|
||||||
|
Fifth argument is the relative size of the object, in bytes.
|
||||||
It is zero when the size is meaningless or not determined.
|
It is zero when the size is meaningless or not determined.
|
||||||
A byte's size is determined by BITS_PER_UNIT in tm.h.
|
A byte's size is determined by BITS_PER_UNIT in tm.h.
|
||||||
|
|
||||||
|
Sixth arg is the relative size of subunits of the object.
|
||||||
Fifth arg is the relative size of subunits of the object.
|
|
||||||
It is same as the fourth argument except for complexes,
|
It is same as the fourth argument except for complexes,
|
||||||
since they are really made of two equal size subunits.
|
since they are really made of two equal size subunits.
|
||||||
|
|
||||||
Sixth arg is next wider natural mode of the same class.
|
Seventh arg is next wider natural mode of the same class.
|
||||||
0 if there is none. */
|
0 if there is none. */
|
||||||
|
|
||||||
/* VOIDmode is used when no mode needs to be specified,
|
/* VOIDmode is used when no mode needs to be specified,
|
||||||
as for example on CONST_INT RTL expressions. */
|
as for example on CONST_INT RTL expressions. */
|
||||||
DEF_MACHMODE (VOIDmode, "VOID", MODE_RANDOM, 0, 0, VOIDmode)
|
DEF_MACHMODE (VOIDmode, "VOID", MODE_RANDOM, 0, 0, 0, VOIDmode)
|
||||||
|
|
||||||
DEF_MACHMODE (PQImode, "PQI", MODE_PARTIAL_INT, 1, 1, PHImode)
|
DEF_MACHMODE (BImode, "BI", MODE_INT, 1, 1, 1, QImode)
|
||||||
DEF_MACHMODE (QImode, "QI", MODE_INT, 1, 1, HImode) /* int types */
|
DEF_MACHMODE (QImode, "QI", MODE_INT, 8, 1, 1, HImode)
|
||||||
DEF_MACHMODE (PHImode, "PHI", MODE_PARTIAL_INT, 2, 2, PSImode)
|
DEF_MACHMODE (HImode, "HI", MODE_INT, 16, 2, 2, SImode)
|
||||||
DEF_MACHMODE (HImode, "HI", MODE_INT, 2, 2, SImode)
|
DEF_MACHMODE (SImode, "SI", MODE_INT, 32, 4, 4, DImode)
|
||||||
/* Pointers on some machines use this type to distinguish them from ints.
|
DEF_MACHMODE (DImode, "DI", MODE_INT, 64, 8, 8, TImode)
|
||||||
Useful if a pointer is 4 bytes but has some bits that are not significant,
|
DEF_MACHMODE (TImode, "TI", MODE_INT, 128, 16, 16, OImode)
|
||||||
so it is really not quite as wide as an integer. */
|
DEF_MACHMODE (OImode, "OI", MODE_INT, 256, 32, 32, VOIDmode)
|
||||||
DEF_MACHMODE (PSImode, "PSI", MODE_PARTIAL_INT, 4, 4, PDImode)
|
|
||||||
DEF_MACHMODE (SImode, "SI", MODE_INT, 4, 4, DImode)
|
|
||||||
DEF_MACHMODE (PDImode, "PDI", MODE_PARTIAL_INT, 8, 8, VOIDmode)
|
|
||||||
DEF_MACHMODE (DImode, "DI", MODE_INT, 8, 8, TImode)
|
|
||||||
DEF_MACHMODE (TImode, "TI", MODE_INT, 16, 16, OImode)
|
|
||||||
DEF_MACHMODE (OImode, "OI", MODE_INT, 32, 32, VOIDmode)
|
|
||||||
|
|
||||||
DEF_MACHMODE (QFmode, "QF", MODE_FLOAT, 1, 1, HFmode)
|
/* Pointers on some machines use these types to distinguish them from
|
||||||
DEF_MACHMODE (HFmode, "HF", MODE_FLOAT, 2, 2, TQFmode)
|
ints. Useful if a pointer is 4 bytes but has some bits that are
|
||||||
DEF_MACHMODE (TQFmode, "TQF", MODE_FLOAT, 3, 3, SFmode) /* MIL-STD-1750A */
|
not significant, so it is really not quite as wide as an integer. */
|
||||||
DEF_MACHMODE (SFmode, "SF", MODE_FLOAT, 4, 4, DFmode)
|
DEF_MACHMODE (PQImode, "PQI", MODE_PARTIAL_INT, 8, 1, 1, PHImode)
|
||||||
DEF_MACHMODE (DFmode, "DF", MODE_FLOAT, 8, 8, XFmode)
|
DEF_MACHMODE (PHImode, "PHI", MODE_PARTIAL_INT, 16, 2, 2, PSImode)
|
||||||
DEF_MACHMODE (XFmode, "XF", MODE_FLOAT, 12, 12, TFmode) /* IEEE extended */
|
DEF_MACHMODE (PSImode, "PSI", MODE_PARTIAL_INT, 32, 4, 4, PDImode)
|
||||||
DEF_MACHMODE (TFmode, "TF", MODE_FLOAT, 16, 16, VOIDmode)
|
DEF_MACHMODE (PDImode, "PDI", MODE_PARTIAL_INT, 64, 8, 8, VOIDmode)
|
||||||
|
|
||||||
|
DEF_MACHMODE (QFmode, "QF", MODE_FLOAT, 8, 1, 1, HFmode)
|
||||||
|
DEF_MACHMODE (HFmode, "HF", MODE_FLOAT, 16, 2, 2, TQFmode)
|
||||||
|
DEF_MACHMODE (TQFmode, "TQF", MODE_FLOAT, 24, 3, 3, SFmode) /* MIL-STD-1750A */
|
||||||
|
DEF_MACHMODE (SFmode, "SF", MODE_FLOAT, 32, 4, 4, DFmode)
|
||||||
|
DEF_MACHMODE (DFmode, "DF", MODE_FLOAT, 64, 8, 8, XFmode)
|
||||||
|
DEF_MACHMODE (XFmode, "XF", MODE_FLOAT, 96, 12, 12, TFmode) /* IEEE extended */
|
||||||
|
DEF_MACHMODE (TFmode, "TF", MODE_FLOAT, 128, 16, 16, VOIDmode)
|
||||||
|
|
||||||
/* Complex modes. */
|
/* Complex modes. */
|
||||||
DEF_MACHMODE (QCmode, "QC", MODE_COMPLEX_FLOAT, 2, 1, HCmode)
|
DEF_MACHMODE (QCmode, "QC", MODE_COMPLEX_FLOAT, 16, 2, 1, HCmode)
|
||||||
DEF_MACHMODE (HCmode, "HC", MODE_COMPLEX_FLOAT, 4, 2, SCmode)
|
DEF_MACHMODE (HCmode, "HC", MODE_COMPLEX_FLOAT, 32, 4, 2, SCmode)
|
||||||
DEF_MACHMODE (SCmode, "SC", MODE_COMPLEX_FLOAT, 8, 4, DCmode)
|
DEF_MACHMODE (SCmode, "SC", MODE_COMPLEX_FLOAT, 64, 8, 4, DCmode)
|
||||||
DEF_MACHMODE (DCmode, "DC", MODE_COMPLEX_FLOAT, 16, 8, XCmode)
|
DEF_MACHMODE (DCmode, "DC", MODE_COMPLEX_FLOAT, 128, 16, 8, XCmode)
|
||||||
DEF_MACHMODE (XCmode, "XC", MODE_COMPLEX_FLOAT, 24, 12, TCmode)
|
DEF_MACHMODE (XCmode, "XC", MODE_COMPLEX_FLOAT, 192, 24, 12, TCmode)
|
||||||
DEF_MACHMODE (TCmode, "TC", MODE_COMPLEX_FLOAT, 32, 16, VOIDmode)
|
DEF_MACHMODE (TCmode, "TC", MODE_COMPLEX_FLOAT, 256, 32, 16, VOIDmode)
|
||||||
|
|
||||||
DEF_MACHMODE (CQImode, "CQI", MODE_COMPLEX_INT, 2, 1, CHImode)
|
DEF_MACHMODE (CQImode, "CQI", MODE_COMPLEX_INT, 16, 2, 1, CHImode)
|
||||||
DEF_MACHMODE (CHImode, "CHI", MODE_COMPLEX_INT, 4, 2, CSImode)
|
DEF_MACHMODE (CHImode, "CHI", MODE_COMPLEX_INT, 32, 4, 2, CSImode)
|
||||||
DEF_MACHMODE (CSImode, "CSI", MODE_COMPLEX_INT, 8, 4, CDImode)
|
DEF_MACHMODE (CSImode, "CSI", MODE_COMPLEX_INT, 64, 8, 4, CDImode)
|
||||||
DEF_MACHMODE (CDImode, "CDI", MODE_COMPLEX_INT, 16, 8, CTImode)
|
DEF_MACHMODE (CDImode, "CDI", MODE_COMPLEX_INT, 128, 16, 8, CTImode)
|
||||||
DEF_MACHMODE (CTImode, "CTI", MODE_COMPLEX_INT, 32, 16, COImode)
|
DEF_MACHMODE (CTImode, "CTI", MODE_COMPLEX_INT, 256, 32, 16, COImode)
|
||||||
DEF_MACHMODE (COImode, "COI", MODE_COMPLEX_INT, 64, 32, VOIDmode)
|
DEF_MACHMODE (COImode, "COI", MODE_COMPLEX_INT, 512, 64, 32, VOIDmode)
|
||||||
|
|
||||||
/* Vector modes. */
|
/* Vector modes. */
|
||||||
/* There are no V1xx vector modes. These are equivalent to normal non-vector
|
/* There are no V1xx vector modes. These are equivalent to normal
|
||||||
modes. */
|
scalar modes. */
|
||||||
DEF_MACHMODE (V2QImode, "V2QI", MODE_VECTOR_INT, 2, 1, VOIDmode)
|
DEF_MACHMODE (V2QImode, "V2QI", MODE_VECTOR_INT, 16, 2, 1, VOIDmode)
|
||||||
DEF_MACHMODE (V2HImode, "V2HI", MODE_VECTOR_INT, 4, 2, VOIDmode)
|
DEF_MACHMODE (V2HImode, "V2HI", MODE_VECTOR_INT, 32, 4, 2, VOIDmode)
|
||||||
DEF_MACHMODE (V2SImode, "V2SI", MODE_VECTOR_INT, 8, 4, VOIDmode)
|
DEF_MACHMODE (V2SImode, "V2SI", MODE_VECTOR_INT, 64, 8, 4, VOIDmode)
|
||||||
DEF_MACHMODE (V2DImode, "V2DI", MODE_VECTOR_INT, 16, 8, VOIDmode)
|
DEF_MACHMODE (V2DImode, "V2DI", MODE_VECTOR_INT, 128, 16, 8, VOIDmode)
|
||||||
|
|
||||||
DEF_MACHMODE (V4QImode, "V4QI", MODE_VECTOR_INT, 4, 1, VOIDmode)
|
DEF_MACHMODE (V4QImode, "V4QI", MODE_VECTOR_INT, 32, 4, 1, VOIDmode)
|
||||||
DEF_MACHMODE (V4HImode, "V4HI", MODE_VECTOR_INT, 8, 2, VOIDmode)
|
DEF_MACHMODE (V4HImode, "V4HI", MODE_VECTOR_INT, 64, 8, 2, VOIDmode)
|
||||||
DEF_MACHMODE (V4SImode, "V4SI", MODE_VECTOR_INT, 16, 4, VOIDmode)
|
DEF_MACHMODE (V4SImode, "V4SI", MODE_VECTOR_INT, 128, 16, 4, VOIDmode)
|
||||||
DEF_MACHMODE (V4DImode, "V4DI", MODE_VECTOR_INT, 32, 8, VOIDmode)
|
DEF_MACHMODE (V4DImode, "V4DI", MODE_VECTOR_INT, 256, 32, 8, VOIDmode)
|
||||||
|
|
||||||
DEF_MACHMODE (V8QImode, "V8QI", MODE_VECTOR_INT, 8, 1, VOIDmode)
|
DEF_MACHMODE (V8QImode, "V8QI", MODE_VECTOR_INT, 64, 8, 1, VOIDmode)
|
||||||
DEF_MACHMODE (V8HImode, "V8HI", MODE_VECTOR_INT, 16, 2, VOIDmode)
|
DEF_MACHMODE (V8HImode, "V8HI", MODE_VECTOR_INT, 128, 16, 2, VOIDmode)
|
||||||
DEF_MACHMODE (V8SImode, "V8SI", MODE_VECTOR_INT, 32, 4, VOIDmode)
|
DEF_MACHMODE (V8SImode, "V8SI", MODE_VECTOR_INT, 256, 32, 4, VOIDmode)
|
||||||
DEF_MACHMODE (V8DImode, "V8DI", MODE_VECTOR_INT, 64, 8, VOIDmode)
|
DEF_MACHMODE (V8DImode, "V8DI", MODE_VECTOR_INT, 512, 64, 8, VOIDmode)
|
||||||
|
|
||||||
DEF_MACHMODE (V2SFmode, "V2SF", MODE_VECTOR_FLOAT, 8, 4, VOIDmode)
|
DEF_MACHMODE (V2SFmode, "V2SF", MODE_VECTOR_FLOAT, 64, 8, 4, VOIDmode)
|
||||||
DEF_MACHMODE (V2DFmode, "V2DF", MODE_VECTOR_FLOAT, 16, 8, VOIDmode)
|
DEF_MACHMODE (V2DFmode, "V2DF", MODE_VECTOR_FLOAT, 128, 16, 8, VOIDmode)
|
||||||
|
|
||||||
DEF_MACHMODE (V4SFmode, "V4SF", MODE_VECTOR_FLOAT, 16, 4, VOIDmode)
|
DEF_MACHMODE (V4SFmode, "V4SF", MODE_VECTOR_FLOAT, 128, 16, 4, VOIDmode)
|
||||||
DEF_MACHMODE (V4DFmode, "V4DF", MODE_VECTOR_FLOAT, 32, 8, VOIDmode)
|
DEF_MACHMODE (V4DFmode, "V4DF", MODE_VECTOR_FLOAT, 256, 32, 8, VOIDmode)
|
||||||
|
|
||||||
DEF_MACHMODE (V8SFmode, "V8SF", MODE_VECTOR_FLOAT, 32, 4, VOIDmode)
|
DEF_MACHMODE (V8SFmode, "V8SF", MODE_VECTOR_FLOAT, 256, 32, 4, VOIDmode)
|
||||||
DEF_MACHMODE (V8DFmode, "V8DF", MODE_VECTOR_FLOAT, 64, 8, VOIDmode)
|
DEF_MACHMODE (V8DFmode, "V8DF", MODE_VECTOR_FLOAT, 512, 64, 8, VOIDmode)
|
||||||
|
|
||||||
/* BLKmode is used for structures, arrays, etc.
|
/* BLKmode is used for structures, arrays, etc.
|
||||||
that fit no more specific mode. */
|
that fit no more specific mode. */
|
||||||
DEF_MACHMODE (BLKmode, "BLK", MODE_RANDOM, 0, 0, VOIDmode)
|
DEF_MACHMODE (BLKmode, "BLK", MODE_RANDOM, 0, 0, 0, VOIDmode)
|
||||||
|
|
||||||
/* The modes for representing the condition codes come last. CCmode is
|
/* The modes for representing the condition codes come last. CCmode
|
||||||
always defined. Additional modes for the condition code can be specified
|
is always defined. Additional modes for the condition code can be
|
||||||
in the EXTRA_CC_MODES macro.
|
specified in the EXTRA_CC_MODES macro. All MODE_CC modes are the
|
||||||
All MODE_CC modes are the same width as SImode and have VOIDmode as their
|
same width as SImode and have VOIDmode as their next wider mode. */
|
||||||
next wider mode.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CC(E, M) DEF_MACHMODE (E, M, MODE_CC, 4, 4, VOIDmode)
|
#define CC(E, M) DEF_MACHMODE (E, M, MODE_CC, 32, 4, 4, VOIDmode)
|
||||||
|
|
||||||
CC (CCmode, "CC")
|
CC (CCmode, "CC")
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ Boston, MA 02111-1307, USA. */
|
|||||||
|
|
||||||
/* Make an enum class that gives all the machine modes. */
|
/* Make an enum class that gives all the machine modes. */
|
||||||
|
|
||||||
#define DEF_MACHMODE(SYM, NAME, TYPE, SIZE, UNIT, WIDER) SYM,
|
#define DEF_MACHMODE(SYM, NAME, TYPE, BITSIZE, SIZE, UNIT, WIDER) SYM,
|
||||||
|
|
||||||
enum machine_mode {
|
enum machine_mode {
|
||||||
#include "machmode.def"
|
#include "machmode.def"
|
||||||
@ -93,7 +93,8 @@ extern const unsigned int mode_unit_size[];
|
|||||||
|
|
||||||
/* Get the size in bits of an object of mode MODE. */
|
/* Get the size in bits of an object of mode MODE. */
|
||||||
|
|
||||||
#define GET_MODE_BITSIZE(MODE) (BITS_PER_UNIT * mode_size[(int) (MODE)])
|
extern const unsigned int mode_bitsize[];
|
||||||
|
#define GET_MODE_BITSIZE(MODE) (mode_bitsize[(int) (MODE)])
|
||||||
|
|
||||||
#ifdef HOST_WIDE_INT
|
#ifdef HOST_WIDE_INT
|
||||||
|
|
||||||
|
35
gcc/rtl.c
35
gcc/rtl.c
@ -128,7 +128,7 @@ const char * const rtx_name[] = {
|
|||||||
/* Indexed by machine mode, gives the name of that machine mode.
|
/* Indexed by machine mode, gives the name of that machine mode.
|
||||||
This name does not include the letters "mode". */
|
This name does not include the letters "mode". */
|
||||||
|
|
||||||
#define DEF_MACHMODE(SYM, NAME, CLASS, SIZE, UNIT, WIDER) NAME,
|
#define DEF_MACHMODE(SYM, NAME, CLASS, BITSIZE, SIZE, UNIT, WIDER) NAME,
|
||||||
|
|
||||||
const char * const mode_name[(int) MAX_MACHINE_MODE + 1] = {
|
const char * const mode_name[(int) MAX_MACHINE_MODE + 1] = {
|
||||||
#include "machmode.def"
|
#include "machmode.def"
|
||||||
@ -139,10 +139,9 @@ const char * const mode_name[(int) MAX_MACHINE_MODE + 1] = {
|
|||||||
|
|
||||||
#undef DEF_MACHMODE
|
#undef DEF_MACHMODE
|
||||||
|
|
||||||
/* Indexed by machine mode, gives the length of the mode, in bytes.
|
/* Indexed by machine mode, gives the class mode for GET_MODE_CLASS. */
|
||||||
GET_MODE_CLASS uses this. */
|
|
||||||
|
|
||||||
#define DEF_MACHMODE(SYM, NAME, CLASS, SIZE, UNIT, WIDER) CLASS,
|
#define DEF_MACHMODE(SYM, NAME, CLASS, BITSIZE, SIZE, UNIT, WIDER) CLASS,
|
||||||
|
|
||||||
const enum mode_class mode_class[(int) MAX_MACHINE_MODE] = {
|
const enum mode_class mode_class[(int) MAX_MACHINE_MODE] = {
|
||||||
#include "machmode.def"
|
#include "machmode.def"
|
||||||
@ -150,10 +149,21 @@ const enum mode_class mode_class[(int) MAX_MACHINE_MODE] = {
|
|||||||
|
|
||||||
#undef DEF_MACHMODE
|
#undef DEF_MACHMODE
|
||||||
|
|
||||||
|
/* Indexed by machine mode, gives the length of the mode, in bits.
|
||||||
|
GET_MODE_BITSIZE uses this. */
|
||||||
|
|
||||||
|
#define DEF_MACHMODE(SYM, NAME, CLASS, BITSIZE, SIZE, UNIT, WIDER) BITSIZE,
|
||||||
|
|
||||||
|
const unsigned int mode_bitsize[(int) MAX_MACHINE_MODE] = {
|
||||||
|
#include "machmode.def"
|
||||||
|
};
|
||||||
|
|
||||||
|
#undef DEF_MACHMODE
|
||||||
|
|
||||||
/* Indexed by machine mode, gives the length of the mode, in bytes.
|
/* Indexed by machine mode, gives the length of the mode, in bytes.
|
||||||
GET_MODE_SIZE uses this. */
|
GET_MODE_SIZE uses this. */
|
||||||
|
|
||||||
#define DEF_MACHMODE(SYM, NAME, CLASS, SIZE, UNIT, WIDER) SIZE,
|
#define DEF_MACHMODE(SYM, NAME, CLASS, BITSIZE, SIZE, UNIT, WIDER) SIZE,
|
||||||
|
|
||||||
const unsigned int mode_size[(int) MAX_MACHINE_MODE] = {
|
const unsigned int mode_size[(int) MAX_MACHINE_MODE] = {
|
||||||
#include "machmode.def"
|
#include "machmode.def"
|
||||||
@ -164,7 +174,7 @@ const unsigned int mode_size[(int) MAX_MACHINE_MODE] = {
|
|||||||
/* Indexed by machine mode, gives the length of the mode's subunit.
|
/* Indexed by machine mode, gives the length of the mode's subunit.
|
||||||
GET_MODE_UNIT_SIZE uses this. */
|
GET_MODE_UNIT_SIZE uses this. */
|
||||||
|
|
||||||
#define DEF_MACHMODE(SYM, NAME, CLASS, SIZE, UNIT, WIDER) UNIT,
|
#define DEF_MACHMODE(SYM, NAME, CLASS, BITSIZE, SIZE, UNIT, WIDER) UNIT,
|
||||||
|
|
||||||
const unsigned int mode_unit_size[(int) MAX_MACHINE_MODE] = {
|
const unsigned int mode_unit_size[(int) MAX_MACHINE_MODE] = {
|
||||||
#include "machmode.def" /* machine modes are documented here */
|
#include "machmode.def" /* machine modes are documented here */
|
||||||
@ -176,7 +186,7 @@ const unsigned int mode_unit_size[(int) MAX_MACHINE_MODE] = {
|
|||||||
(QI -> HI -> SI -> DI, etc.) Widening multiply instructions
|
(QI -> HI -> SI -> DI, etc.) Widening multiply instructions
|
||||||
use this. */
|
use this. */
|
||||||
|
|
||||||
#define DEF_MACHMODE(SYM, NAME, CLASS, SIZE, UNIT, WIDER) \
|
#define DEF_MACHMODE(SYM, NAME, CLASS, BITSIZE, SIZE, UNIT, WIDER) \
|
||||||
(unsigned char) WIDER,
|
(unsigned char) WIDER,
|
||||||
|
|
||||||
const unsigned char mode_wider_mode[(int) MAX_MACHINE_MODE] = {
|
const unsigned char mode_wider_mode[(int) MAX_MACHINE_MODE] = {
|
||||||
@ -185,8 +195,8 @@ const unsigned char mode_wider_mode[(int) MAX_MACHINE_MODE] = {
|
|||||||
|
|
||||||
#undef DEF_MACHMODE
|
#undef DEF_MACHMODE
|
||||||
|
|
||||||
#define DEF_MACHMODE(SYM, NAME, CLASS, SIZE, UNIT, WIDER) \
|
#define DEF_MACHMODE(SYM, NAME, CLASS, BITSIZE, SIZE, UNIT, WIDER) \
|
||||||
((SIZE) * BITS_PER_UNIT >= HOST_BITS_PER_WIDE_INT) ? ~(unsigned HOST_WIDE_INT)0 : ((unsigned HOST_WIDE_INT) 1 << (SIZE) * BITS_PER_UNIT) - 1,
|
((BITSIZE) >= HOST_BITS_PER_WIDE_INT) ? ~(unsigned HOST_WIDE_INT)0 : ((unsigned HOST_WIDE_INT) 1 << (BITSIZE)) - 1,
|
||||||
|
|
||||||
/* Indexed by machine mode, gives mask of significant bits in mode. */
|
/* Indexed by machine mode, gives mask of significant bits in mode. */
|
||||||
|
|
||||||
@ -196,7 +206,12 @@ const unsigned HOST_WIDE_INT mode_mask_array[(int) MAX_MACHINE_MODE] = {
|
|||||||
|
|
||||||
/* Indexed by mode class, gives the narrowest mode for each class.
|
/* Indexed by mode class, gives the narrowest mode for each class.
|
||||||
The Q modes are always of width 1 (2 for complex) - it is impossible
|
The Q modes are always of width 1 (2 for complex) - it is impossible
|
||||||
for any mode to be narrower. */
|
for any mode to be narrower.
|
||||||
|
|
||||||
|
Note that we use QImode instead of BImode for MODE_INT, since
|
||||||
|
otherwise the middle end will try to use it for bitfields in
|
||||||
|
structures and the like, which we do not want. Only the target
|
||||||
|
md file should generate BImode widgets. */
|
||||||
|
|
||||||
const enum machine_mode class_narrowest_mode[(int) MAX_MODE_CLASS] = {
|
const enum machine_mode class_narrowest_mode[(int) MAX_MODE_CLASS] = {
|
||||||
/* MODE_RANDOM */ VOIDmode,
|
/* MODE_RANDOM */ VOIDmode,
|
||||||
|
Loading…
Reference in New Issue
Block a user