aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2002-09-17 13:03:40 +0000
committerNick Clifton <nickc@gcc.gnu.org>2002-09-17 13:03:40 +0000
commit256e9fd21abe2cbebfb52396a47ecfd06412d144 (patch)
treefb359f00ee19f191ffc7a8b4452f5cac139d0ac1
parent838c4534d4aebb1efb7d968d289606d6f1c89374 (diff)
downloadgcc-256e9fd21abe2cbebfb52396a47ecfd06412d144.zip
gcc-256e9fd21abe2cbebfb52396a47ecfd06412d144.tar.gz
gcc-256e9fd21abe2cbebfb52396a47ecfd06412d144.tar.bz2
machmode.def (V1DImode): New mode.
* 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. From-SVN: r57248
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/c-common.c2
-rw-r--r--gcc/machmode.def3
-rw-r--r--gcc/rtl.c2
-rw-r--r--gcc/tree.c3
-rw-r--r--gcc/tree.h4
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)
diff --git a/gcc/rtl.c b/gcc/rtl.c
index 292dcc3..c8b36b7 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 1d0da06..83b8b5d 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 6eab330..f95f363 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