aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoern Rennecke <amylaar@gcc.gnu.org>2002-10-11 10:59:06 +0100
committerJoern Rennecke <amylaar@gcc.gnu.org>2002-10-11 10:59:06 +0100
commit0488fa7c8f0e7d014cdfdeb0ddac6f9ffc235db6 (patch)
treef1b7dd6ee730b907128000deff13e31ed77a885a
parentd92b6b949d1e674672f93bb618efb8da3cb14bf1 (diff)
downloadgcc-0488fa7c8f0e7d014cdfdeb0ddac6f9ffc235db6.zip
gcc-0488fa7c8f0e7d014cdfdeb0ddac6f9ffc235db6.tar.gz
gcc-0488fa7c8f0e7d014cdfdeb0ddac6f9ffc235db6.tar.bz2
*** empty log message ***
From-SVN: r58050
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/emit-rtl.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/simd-5.c12
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b49819b..c2c29c5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Fri Oct 11 10:56:17 2002 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * emit-rtl.c (gen_lowpart_common): When asked to make a vector from
+ an integer, use simplify_gen_subreg.
+
2002-10-10 Aldy Hernandez <aldyh@redhat.com>
* extend.texi (Vector Extensions): Remove comment about single
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 889064f..2cf4107 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -999,6 +999,10 @@ gen_lowpart_common (mode, x)
else if (GET_CODE (x) == SUBREG || GET_CODE (x) == REG
|| GET_CODE (x) == CONCAT || GET_CODE (x) == CONST_VECTOR)
return simplify_gen_subreg (mode, x, GET_MODE (x), offset);
+ else if ((GET_MODE_CLASS (mode) == MODE_VECTOR_INT
+ || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
+ && GET_MODE (x) == VOIDmode)
+ return simplify_gen_subreg (mode, x, int_mode_for_mode (mode), offset);
/* If X is a CONST_INT or a CONST_DOUBLE, extract the appropriate bits
from the low-order part of the constant. */
else if ((GET_MODE_CLASS (mode) == MODE_INT
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 78787bc..d54efb1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+Fri Oct 11 10:56:49 2002 Richard Shann <richard.shann@superh.com>
+
+ * gcc.c-torture/compile/simd-5.c: New test.
+
2002-10-10 Jim Wilson <wilson@redhat.com>
* gcc.c-torture/execute/20021010-1.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/simd-5.c b/gcc/testsuite/gcc.c-torture/compile/simd-5.c
new file mode 100644
index 0000000..016cccd
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/simd-5.c
@@ -0,0 +1,12 @@
+#define vector64 __attribute__((vector_size(8)))
+
+main(){
+
+ vector64 int c;
+vector64 int a = {1, -1};
+vector64 int b = {2, -2};
+c = -a + b*b*(-1LL);
+/* c is now {5, 3} */
+
+ printf("result is %llx\n", (long long)c);
+}