* machmode.def (V1DImode): New mode. A single element vector.
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Sep 2002 13:03:40 +0000 (13:03 +0000)
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Sep 2002 13:03:40 +0000 (13:03 +0000)
* 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
gcc/c-common.c
gcc/machmode.def
gcc/rtl.c
gcc/tree.c
gcc/tree.h

index 84b891e..a7a68f4 100644 (file)
@@ -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
index bdb8a58..0da5ce8 100644 (file)
@@ -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:
index fe4b96e..5013e1f 100644 (file)
@@ -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)
index 292dcc3..c8b36b7 100644 (file)
--- 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
 };
 
index 1d0da06..83b8b5d 100644 (file)
@@ -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
index 6eab330..f95f363 100644 (file)
@@ -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