From d33e2bd3bac34f402a7227363bbc3c4559b10b18 Mon Sep 17 00:00:00 2001 From: nickc Date: Tue, 17 Sep 2002 13:03:40 +0000 Subject: [PATCH] * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57248 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 11 +++++++++++ gcc/c-common.c | 2 ++ gcc/machmode.def | 3 +-- gcc/rtl.c | 2 +- gcc/tree.c | 3 +++ gcc/tree.h | 4 ++++ 6 files changed, 22 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 84b891eee70..a7a68f494fe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2002-09-17 Nick Clifton + + * 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 * doc/objc.texi (Constant string objects): Extended documentation diff --git a/gcc/c-common.c b/gcc/c-common.c index bdb8a5819d4..0da5ce8e3a1 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 fe4b96eca20..5013e1f7cbe 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) diff --git a/gcc/rtl.c b/gcc/rtl.c index 292dcc35184..c8b36b77fb7 100644 --- a/gcc/rtl.c +++ b/gcc/rtl.c @@ -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 }; diff --git a/gcc/tree.c b/gcc/tree.c index 1d0da06aa5a..83b8b5dea8a 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -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 diff --git a/gcc/tree.h b/gcc/tree.h index 6eab3307c8c..f95f363792e 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -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 -- 2.11.4.GIT