diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2001-12-11 19:33:39 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2001-12-11 19:33:39 +0000 |
commit | 0afeef64be52defd45b00c47464183dd43381725 (patch) | |
tree | 84e24cc2300c3468b223984903faa944b7798df6 /gcc/c-common.c | |
parent | 3c612a619d0c4476cd0fde1feb1daafddba7c069 (diff) | |
download | gcc-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.c | 48 |
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; |