diff options
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/c-common.c | 2 | ||||
-rw-r--r-- | gcc/machmode.def | 3 | ||||
-rw-r--r-- | gcc/rtl.c | 2 | ||||
-rw-r--r-- | gcc/tree.c | 3 | ||||
-rw-r--r-- | gcc/tree.h | 4 |
6 files changed, 22 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 84b891e..a7a68f4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2002-09-17 Nick Clifton <nickc@redhat.com> + + * machmode.def (V1DImode): New mode. A single element vector. + * tree.h (TI_UV1DI_TYPE, TI_V1DI_TYPE): New tree_index enums. + (unsigned_V1DI_type_node, V1D1_type_node): New type nodes. + * tree.c (build_common_tree_nodes_2): Build + unsigned_V1DI_type_node and V1D1_type_node. + * c-common.c (c_common_type_for_mode): Return + unsigned_V1DI_type_node or V1D1_type_node for V1DImode. + * rtl.c (class_narrowest_): Start integer vector nodes with V1DImode. + Tue Sep 17 13:40:13 2002 Nicola Pero <n.pero@mi.flashnet.it> * doc/objc.texi (Constant string objects): Extended documentation diff --git a/gcc/c-common.c b/gcc/c-common.c index bdb8a58..0da5ce8 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -2029,6 +2029,8 @@ c_common_type_for_mode (mode, unsignedp) return unsignedp ? unsigned_V4HI_type_node : V4HI_type_node; case V8QImode: return unsignedp ? unsigned_V8QI_type_node : V8QI_type_node; + case V1DImode: + return unsignedp ? unsigned_V1DI_type_node : V1DI_type_node; case V16SFmode: return V16SF_type_node; case V4SFmode: diff --git a/gcc/machmode.def b/gcc/machmode.def index fe4b96e..5013e1f 100644 --- a/gcc/machmode.def +++ b/gcc/machmode.def @@ -113,11 +113,10 @@ DEF_MACHMODE (CTImode, "CTI", MODE_COMPLEX_INT, BITS_PER_UNIT*32, 32, 16, COImod DEF_MACHMODE (COImode, "COI", MODE_COMPLEX_INT, BITS_PER_UNIT*64, 64, 32, VOIDmode, OImode) /* Vector modes. */ -/* There are no V1xx vector modes. These are equivalent to normal - scalar modes. */ /* The wider mode field for vectors follows in order of increasing bit size with QI coming before HI, HI before SI, and SI before DI within same bit sizes. */ +DEF_MACHMODE (V1DImode, "V1DI", MODE_VECTOR_INT, BITS_PER_UNIT*8, 8, 8, V2QImode, DImode) DEF_MACHMODE (V2QImode, "V2QI", MODE_VECTOR_INT, BITS_PER_UNIT*2, 2, 1, V4QImode, QImode) DEF_MACHMODE (V2HImode, "V2HI", MODE_VECTOR_INT, BITS_PER_UNIT*4, 4, 2, V8QImode, HImode) DEF_MACHMODE (V2SImode, "V2SI", MODE_VECTOR_INT, BITS_PER_UNIT*8, 8, 4, V16QImode, SImode) @@ -152,7 +152,7 @@ const enum machine_mode class_narrowest_mode[(int) MAX_MODE_CLASS] = { /* MODE_CC */ CCmode, /* MODE_COMPLEX_INT */ CQImode, /* MODE_COMPLEX_FLOAT */ QCmode, - /* MODE_VECTOR_INT */ V2QImode, + /* MODE_VECTOR_INT */ V1DImode, /* MODE_VECTOR_FLOAT */ V2SFmode }; @@ -4775,6 +4775,8 @@ build_common_tree_nodes_2 (short_double) = make_vector (V8HImode, unsigned_intHI_type_node, 1); unsigned_V16QI_type_node = make_vector (V16QImode, unsigned_intQI_type_node, 1); + unsigned_V1DI_type_node + = make_vector (V1DImode, unsigned_intDI_type_node, 1); V16SF_type_node = make_vector (V16SFmode, float_type_node, 0); V4SF_type_node = make_vector (V4SFmode, float_type_node, 0); @@ -4787,6 +4789,7 @@ build_common_tree_nodes_2 (short_double) V2SF_type_node = make_vector (V2SFmode, float_type_node, 0); V2DF_type_node = make_vector (V2DFmode, double_type_node, 0); V16QI_type_node = make_vector (V16QImode, intQI_type_node, 0); + V1DI_type_node = make_vector (V1DImode, intDI_type_node, 0); } /* Returns a vector tree node given a vector mode, the inner type, and @@ -1968,6 +1968,7 @@ enum tree_index TI_UV2SI_TYPE, TI_UV2SF_TYPE, TI_UV2DI_TYPE, + TI_UV1DI_TYPE, TI_UV16QI_TYPE, TI_V4SF_TYPE, @@ -1980,6 +1981,7 @@ enum tree_index TI_V2SF_TYPE, TI_V2DF_TYPE, TI_V2DI_TYPE, + TI_V1DI_TYPE, TI_V16QI_TYPE, TI_MAIN_IDENTIFIER, @@ -2048,6 +2050,7 @@ extern GTY(()) tree global_trees[TI_MAX]; #define unsigned_V4HI_type_node global_trees[TI_UV4HI_TYPE] #define unsigned_V2SI_type_node global_trees[TI_UV2SI_TYPE] #define unsigned_V2DI_type_node global_trees[TI_UV2DI_TYPE] +#define unsigned_V1DI_type_node global_trees[TI_UV1DI_TYPE] #define V16QI_type_node global_trees[TI_V16QI_TYPE] #define V4SF_type_node global_trees[TI_V4SF_TYPE] @@ -2060,6 +2063,7 @@ extern GTY(()) tree global_trees[TI_MAX]; #define V2DI_type_node global_trees[TI_V2DI_TYPE] #define V2DF_type_node global_trees[TI_V2DF_TYPE] #define V16SF_type_node global_trees[TI_V16SF_TYPE] +#define V1DI_type_node global_trees[TI_V1DI_TYPE] /* An enumeration of the standard C integer types. These must be ordered so that shorter types appear before longer ones, and so |