From 4a5eab38a41b2750c849bcf504e6e21cce281be1 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 16 Mar 2004 20:37:31 +0000 Subject: c-common.c (c_common_type_for_mode): Build vector types on demand. gcc/ChangeLog 2004-03-16 Paolo Bonzini * c-common.c (c_common_type_for_mode): Build vector types on demand. (handle_mode_attribute): Deprecate using the mode attribute to create vector types. Fix indentation. (vector_type_node_list): Remove. (handle_vector_size_attribute): Create vector types on demand. Strip a NON_LVALUE_EXPR from the attribute if there is one. * c-typeck.c (comptypes): Make vector types compatible if they have the same underlying mode. (convert_for_assignment): Use comptypes to convert between vector types. * tree.c (build_common_tree_nodes_2): Do not create vector types. * config/arm/arm.c (arm_init_iwmmxt_builtins): Create necessary vector types. * tree.h: Remove vector types. * config/i386/i386.c (i386_init_mmx_sse_builtins): Likewise. * config/rs6000/rs6000.c (rs6000_init_builtins): Likewise. (V16QI_type_node, V2SI_type_node, V2SF_type_node, V4HI_type_node, V4SI_type_node, V4SF_type_node, V8HI_type_node): New globals. * doc/extend.texi (Vector Types): Document how to use the vector_size attribute to create vectors, rather than mode. * config/arm/mmintrin.h: Use vector_size attribute, not mode. * config/i386/emmintrin.h: Likewise. * config/i386/mmintrin.h: Likewise. * config/i386/xmmintrin.h: Likewise. * config/sh/ushmedia.h: Likwise. testsuite/ChangeLog 2004-03-16 Paolo Bonzini * g++.dg/eh/simd-1.C: Use vector_size attribute, not mode. * g++.dg/eh/simd-2.C: Likewise. * g++.dg/init/array10.C: Likewise. * gcc.c-torture/compile/simd-1.c: Likewise. * gcc.c-torture/compile/simd-2.c: Likewise. * gcc.c-torture/compile/simd-3.c: Likewise. * gcc.c-torture/compile/simd-4.c: Likewise. * gcc.c-torture/compile/simd-6.c: Likewise. * gcc.c-torture/execute/simd-1.c: Likewise. * gcc.c-torture/execute/simd-2.c: Likewise. * gcc.dg/compat/vector-defs.h: Likewise. * gcc.dg/20020531-1.c: Likewise. * gcc.dg/altivec-3.c: Likewise. * gcc.dg/altivec-4.c: Likewise. * gcc.dg/altivec-varargs-1.c: Likewise. * testsuite/gcc.dg/compat/vector-defs.h: Likewise. * gcc.dg/i386-mmx-3.c: Likewise. * gcc.dg/i386-sse-4.c: Likewise. * gcc.dg/i386-sse-5.c: Likewise. * gcc.dg/i386-sse-8.c: Likewise. * gcc.dg/simd-1.c: Likewise. * gcc.dg/20030218-1.c: Likewise. Plus, do not declare __ev64_opaque__ since the machine description provides it. Index: c-common.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/c-common.c,v retrieving revision 1.487 diff -u -r1.487 c-common.c --- c-common.c 26 Feb 2004 01:24:37 -0000 1.487 +++ c-common.c 10 Mar 2004 10:25:28 -0000 @@ -1874,38 +1874,12 @@ if (mode == TYPE_MODE (build_pointer_type (integer_type_node))) return unsignedp ? make_unsigned_type (mode) : make_signed_type (mode); - switch (mode) + if (VECTOR_MODE_P (mode)) { - case V16QImode: From-SVN: r79544 --- gcc/testsuite/gcc.c-torture/compile/simd-1.c | 2 +- gcc/testsuite/gcc.c-torture/compile/simd-2.c | 2 +- gcc/testsuite/gcc.c-torture/compile/simd-3.c | 2 +- gcc/testsuite/gcc.c-torture/compile/simd-4.c | 2 +- gcc/testsuite/gcc.c-torture/compile/simd-6.c | 2 +- gcc/testsuite/gcc.c-torture/execute/simd-1.c | 2 +- gcc/testsuite/gcc.c-torture/execute/simd-2.c | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) (limited to 'gcc/testsuite/gcc.c-torture') diff --git a/gcc/testsuite/gcc.c-torture/compile/simd-1.c b/gcc/testsuite/gcc.c-torture/compile/simd-1.c index c113bd4..6a07bbb 100644 --- a/gcc/testsuite/gcc.c-torture/compile/simd-1.c +++ b/gcc/testsuite/gcc.c-torture/compile/simd-1.c @@ -1,4 +1,4 @@ -typedef int v2si __attribute__ ((mode(V2SI))); +typedef int v2si __attribute__ ((vector_size (8))); typedef unsigned di __attribute__ ((mode(DI))); void foo(unsigned long); void bar() { diff --git a/gcc/testsuite/gcc.c-torture/compile/simd-2.c b/gcc/testsuite/gcc.c-torture/compile/simd-2.c index 694e94f..480c712 100644 --- a/gcc/testsuite/gcc.c-torture/compile/simd-2.c +++ b/gcc/testsuite/gcc.c-torture/compile/simd-2.c @@ -1,4 +1,4 @@ -typedef float floatvect2 __attribute__((mode(V2SF))); +typedef float floatvect2 __attribute__((vector_size (8))); typedef union { diff --git a/gcc/testsuite/gcc.c-torture/compile/simd-3.c b/gcc/testsuite/gcc.c-torture/compile/simd-3.c index f7dc54e..42a38ae 100644 --- a/gcc/testsuite/gcc.c-torture/compile/simd-3.c +++ b/gcc/testsuite/gcc.c-torture/compile/simd-3.c @@ -3,7 +3,7 @@ /* If double is not wider than float, we probably don't have DFmode, or at least it's not as wide as double. */ #if DBL_MANT_DIG > FLT_MANT_DIG -typedef float floatvect2 __attribute__((mode(V2DF))); +typedef double floatvect2 __attribute__((vector_size (16))); typedef union { diff --git a/gcc/testsuite/gcc.c-torture/compile/simd-4.c b/gcc/testsuite/gcc.c-torture/compile/simd-4.c index 6ede943..6329fc0 100644 --- a/gcc/testsuite/gcc.c-torture/compile/simd-4.c +++ b/gcc/testsuite/gcc.c-torture/compile/simd-4.c @@ -1,4 +1,4 @@ -typedef float floatvect2 __attribute__((mode(V4SF))); +typedef float floatvect2 __attribute__((vector_size (16))); typedef union { diff --git a/gcc/testsuite/gcc.c-torture/compile/simd-6.c b/gcc/testsuite/gcc.c-torture/compile/simd-6.c index 9106a73..7998e15 100644 --- a/gcc/testsuite/gcc.c-torture/compile/simd-6.c +++ b/gcc/testsuite/gcc.c-torture/compile/simd-6.c @@ -1,3 +1,3 @@ -typedef int __attribute__((mode(V2SI))) vec; +typedef int __attribute__((vector_size (8))) vec; vec a[] = {(vec) {1, 2}, {3, 4}}; diff --git a/gcc/testsuite/gcc.c-torture/execute/simd-1.c b/gcc/testsuite/gcc.c-torture/execute/simd-1.c index e103fd7..df9f1a9 100644 --- a/gcc/testsuite/gcc.c-torture/execute/simd-1.c +++ b/gcc/testsuite/gcc.c-torture/execute/simd-1.c @@ -4,7 +4,7 @@ regardless of if the target has SIMD instructions. */ -typedef int __attribute__((mode(V4SI))) vecint; +typedef int __attribute__((vector_size (16))) vecint; typedef int __attribute__((mode(SI))) siint; vecint i = { 150, 100, 150, 200 }; diff --git a/gcc/testsuite/gcc.c-torture/execute/simd-2.c b/gcc/testsuite/gcc.c-torture/execute/simd-2.c index 2d1b922..d4f506a 100644 --- a/gcc/testsuite/gcc.c-torture/execute/simd-2.c +++ b/gcc/testsuite/gcc.c-torture/execute/simd-2.c @@ -3,7 +3,7 @@ regardless of if the target has SIMD instructions. */ -typedef int __attribute__((mode(V8HI))) vecint; +typedef short __attribute__((vector_size (16))) vecint; vecint i = { 150, 100, 150, 200, 0, 0, 0, 0 }; vecint j = { 10, 13, 20, 30, 1, 1, 1, 1 }; -- cgit v1.1