aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-common.c
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2001-12-11 19:33:39 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2001-12-11 19:33:39 +0000
commit0afeef64be52defd45b00c47464183dd43381725 (patch)
tree84e24cc2300c3468b223984903faa944b7798df6 /gcc/c-common.c
parent3c612a619d0c4476cd0fde1feb1daafddba7c069 (diff)
downloadgcc-0afeef64be52defd45b00c47464183dd43381725.zip
gcc-0afeef64be52defd45b00c47464183dd43381725.tar.gz
gcc-0afeef64be52defd45b00c47464183dd43381725.tar.bz2
c-common.c (type_for_mode): Handle unsigned vectors.
2001-12-10 Aldy Hernandez <aldyh@redhat.com> * c-common.c (type_for_mode): Handle unsigned vectors. (type_for_mode): Remove redundant calls to TYPE_MODE. * tree.c (make_vector): New. (build_common_tree_nodes_2): Use make_vector for vector types. Add unsigned vector types. * tree.h (tree_index): Add unsigned types for vectors. (unsigned_V16QI_type_node): New. (unsigned_V4SI_type_node): New. (unsigned_V8QI_type_node): New. (unsigned_V8HI_type_node): New. (unsigned_V4HI_type_node): New. (unsigned_V2SI_type_node): New. From-SVN: r47889
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r--gcc/c-common.c48
1 files changed, 28 insertions, 20 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 29bb059..ad58594 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -1315,16 +1315,16 @@ type_for_mode (mode, unsignedp)
return unsignedp ? widest_unsigned_literal_type_node
: widest_integer_literal_type_node;
- if (mode == TYPE_MODE (intQI_type_node))
+ if (mode == QImode)
return unsignedp ? unsigned_intQI_type_node : intQI_type_node;
- if (mode == TYPE_MODE (intHI_type_node))
+ if (mode == HImode)
return unsignedp ? unsigned_intHI_type_node : intHI_type_node;
- if (mode == TYPE_MODE (intSI_type_node))
+ if (mode == SImode)
return unsignedp ? unsigned_intSI_type_node : intSI_type_node;
- if (mode == TYPE_MODE (intDI_type_node))
+ if (mode == DImode)
return unsignedp ? unsigned_intDI_type_node : intDI_type_node;
#if HOST_BITS_PER_WIDE_INT >= 64
@@ -1348,22 +1348,30 @@ type_for_mode (mode, unsignedp)
return build_pointer_type (integer_type_node);
#ifdef VECTOR_MODE_SUPPORTED_P
- if (mode == TYPE_MODE (V16QI_type_node) && VECTOR_MODE_SUPPORTED_P (mode))
- return V16QI_type_node;
- if (mode == TYPE_MODE (V8HI_type_node) && VECTOR_MODE_SUPPORTED_P (mode))
- return V8HI_type_node;
- if (mode == TYPE_MODE (V4SF_type_node) && VECTOR_MODE_SUPPORTED_P (mode))
- return V4SF_type_node;
- if (mode == TYPE_MODE (V4SI_type_node) && VECTOR_MODE_SUPPORTED_P (mode))
- return V4SI_type_node;
- if (mode == TYPE_MODE (V2SI_type_node) && VECTOR_MODE_SUPPORTED_P (mode))
- return V2SI_type_node;
- if (mode == TYPE_MODE (V4HI_type_node) && VECTOR_MODE_SUPPORTED_P (mode))
- return V4HI_type_node;
- if (mode == TYPE_MODE (V8QI_type_node) && VECTOR_MODE_SUPPORTED_P (mode))
- return V8QI_type_node;
- if (mode == TYPE_MODE (V2SF_type_node) && VECTOR_MODE_SUPPORTED_P (mode))
- return V2SF_type_node;
+ if (VECTOR_MODE_SUPPORTED_P (mode))
+ {
+ switch (mode)
+ {
+ case V16QImode:
+ return unsignedp ? unsigned_V16QI_type_node : V16QI_type_node;
+ case V8HImode:
+ return unsignedp ? unsigned_V8HI_type_node : V8HI_type_node;
+ case V4SImode:
+ return unsignedp ? unsigned_V4SI_type_node : V4SI_type_node;
+ case V2SImode:
+ return unsignedp ? unsigned_V2SI_type_node : V2SI_type_node;
+ case V4HImode:
+ return unsignedp ? unsigned_V4HI_type_node : V4HI_type_node;
+ case V8QImode:
+ return unsignedp ? unsigned_V8QI_type_node : V8QI_type_node;
+ case V4SFmode:
+ return V4SF_type_node;
+ case V2SFmode:
+ return V2SF_type_node;
+ default:
+ break;
+ }
+ }
#endif
return 0;