Commit 256e9fd2 by Nick Clifton Committed by Nick Clifton

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
parent 838c4534
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> Tue Sep 17 13:40:13 2002 Nicola Pero <n.pero@mi.flashnet.it>
* doc/objc.texi (Constant string objects): Extended documentation * doc/objc.texi (Constant string objects): Extended documentation
......
...@@ -2029,6 +2029,8 @@ c_common_type_for_mode (mode, unsignedp) ...@@ -2029,6 +2029,8 @@ c_common_type_for_mode (mode, unsignedp)
return unsignedp ? unsigned_V4HI_type_node : V4HI_type_node; return unsignedp ? unsigned_V4HI_type_node : V4HI_type_node;
case V8QImode: case V8QImode:
return unsignedp ? unsigned_V8QI_type_node : V8QI_type_node; return unsignedp ? unsigned_V8QI_type_node : V8QI_type_node;
case V1DImode:
return unsignedp ? unsigned_V1DI_type_node : V1DI_type_node;
case V16SFmode: case V16SFmode:
return V16SF_type_node; return V16SF_type_node;
case V4SFmode: case V4SFmode:
......
...@@ -113,11 +113,10 @@ DEF_MACHMODE (CTImode, "CTI", MODE_COMPLEX_INT, BITS_PER_UNIT*32, 32, 16, COImod ...@@ -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) DEF_MACHMODE (COImode, "COI", MODE_COMPLEX_INT, BITS_PER_UNIT*64, 64, 32, VOIDmode, OImode)
/* Vector modes. */ /* 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 /* 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 size with QI coming before HI, HI before SI, and SI before DI
within same bit sizes. */ 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 (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 (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) 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] = { ...@@ -152,7 +152,7 @@ const enum machine_mode class_narrowest_mode[(int) MAX_MODE_CLASS] = {
/* MODE_CC */ CCmode, /* MODE_CC */ CCmode,
/* MODE_COMPLEX_INT */ CQImode, /* MODE_COMPLEX_INT */ CQImode,
/* MODE_COMPLEX_FLOAT */ QCmode, /* MODE_COMPLEX_FLOAT */ QCmode,
/* MODE_VECTOR_INT */ V2QImode, /* MODE_VECTOR_INT */ V1DImode,
/* MODE_VECTOR_FLOAT */ V2SFmode /* MODE_VECTOR_FLOAT */ V2SFmode
}; };
......
...@@ -4775,6 +4775,8 @@ build_common_tree_nodes_2 (short_double) ...@@ -4775,6 +4775,8 @@ build_common_tree_nodes_2 (short_double)
= make_vector (V8HImode, unsigned_intHI_type_node, 1); = make_vector (V8HImode, unsigned_intHI_type_node, 1);
unsigned_V16QI_type_node unsigned_V16QI_type_node
= make_vector (V16QImode, unsigned_intQI_type_node, 1); = 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); V16SF_type_node = make_vector (V16SFmode, float_type_node, 0);
V4SF_type_node = make_vector (V4SFmode, 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) ...@@ -4787,6 +4789,7 @@ build_common_tree_nodes_2 (short_double)
V2SF_type_node = make_vector (V2SFmode, float_type_node, 0); V2SF_type_node = make_vector (V2SFmode, float_type_node, 0);
V2DF_type_node = make_vector (V2DFmode, double_type_node, 0); V2DF_type_node = make_vector (V2DFmode, double_type_node, 0);
V16QI_type_node = make_vector (V16QImode, intQI_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 /* Returns a vector tree node given a vector mode, the inner type, and
......
...@@ -1968,6 +1968,7 @@ enum tree_index ...@@ -1968,6 +1968,7 @@ enum tree_index
TI_UV2SI_TYPE, TI_UV2SI_TYPE,
TI_UV2SF_TYPE, TI_UV2SF_TYPE,
TI_UV2DI_TYPE, TI_UV2DI_TYPE,
TI_UV1DI_TYPE,
TI_UV16QI_TYPE, TI_UV16QI_TYPE,
TI_V4SF_TYPE, TI_V4SF_TYPE,
...@@ -1980,6 +1981,7 @@ enum tree_index ...@@ -1980,6 +1981,7 @@ enum tree_index
TI_V2SF_TYPE, TI_V2SF_TYPE,
TI_V2DF_TYPE, TI_V2DF_TYPE,
TI_V2DI_TYPE, TI_V2DI_TYPE,
TI_V1DI_TYPE,
TI_V16QI_TYPE, TI_V16QI_TYPE,
TI_MAIN_IDENTIFIER, TI_MAIN_IDENTIFIER,
...@@ -2048,6 +2050,7 @@ extern GTY(()) tree global_trees[TI_MAX]; ...@@ -2048,6 +2050,7 @@ extern GTY(()) tree global_trees[TI_MAX];
#define unsigned_V4HI_type_node global_trees[TI_UV4HI_TYPE] #define unsigned_V4HI_type_node global_trees[TI_UV4HI_TYPE]
#define unsigned_V2SI_type_node global_trees[TI_UV2SI_TYPE] #define unsigned_V2SI_type_node global_trees[TI_UV2SI_TYPE]
#define unsigned_V2DI_type_node global_trees[TI_UV2DI_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 V16QI_type_node global_trees[TI_V16QI_TYPE]
#define V4SF_type_node global_trees[TI_V4SF_TYPE] #define V4SF_type_node global_trees[TI_V4SF_TYPE]
...@@ -2060,6 +2063,7 @@ extern GTY(()) tree global_trees[TI_MAX]; ...@@ -2060,6 +2063,7 @@ extern GTY(()) tree global_trees[TI_MAX];
#define V2DI_type_node global_trees[TI_V2DI_TYPE] #define V2DI_type_node global_trees[TI_V2DI_TYPE]
#define V2DF_type_node global_trees[TI_V2DF_TYPE] #define V2DF_type_node global_trees[TI_V2DF_TYPE]
#define V16SF_type_node global_trees[TI_V16SF_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 /* An enumeration of the standard C integer types. These must be
ordered so that shorter types appear before longer ones, and so ordered so that shorter types appear before longer ones, and so
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment