]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix PR 47408 and 47385
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Mon, 24 Jan 2011 16:47:16 +0000 (16:47 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Mon, 24 Jan 2011 16:47:16 +0000 (16:47 +0000)
From-SVN: r169167

17 files changed:
gcc/ChangeLog
gcc/config/rs6000/altivec.md
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/altivec-15.C
gcc/testsuite/g++.dg/ext/altivec-types-1.C
gcc/testsuite/g++.dg/ext/altivec-types-2.C
gcc/testsuite/g++.dg/ext/altivec-types-3.C
gcc/testsuite/g++.dg/ext/altivec-types-4.C
gcc/testsuite/gcc.target/powerpc/altivec-11.c
gcc/testsuite/gcc.target/powerpc/altivec-14.c
gcc/testsuite/gcc.target/powerpc/altivec-33.c
gcc/testsuite/gcc.target/powerpc/altivec-types-1.c
gcc/testsuite/gcc.target/powerpc/altivec-types-2.c
gcc/testsuite/gcc.target/powerpc/altivec-types-3.c
gcc/testsuite/gcc.target/powerpc/altivec-types-4.c
gcc/testsuite/gcc.target/powerpc/ppc-vector-memcpy.c
gcc/testsuite/gcc.target/powerpc/ppc-vector-memset.c

index 7f3148aca82186a9b9e172f42f9568c99ac28e57..d13b62759754bafce21fa8e8944c2f6716c62fd7 100644 (file)
@@ -1,3 +1,10 @@
+2011-01-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       PR target/47385
+       * config/rs6000/altivec.md (vector constant splitters): Add
+       support for creating vector single precision constants if -mvsx is
+       used and we would create the constant using Altivec primitives.
+
 2011-01-23  Bernd Schmidt  <bernds@codesourcery.com>
            Richard Sandiford  <rdsandiford@googlemail.com>
 
index b7819f59dfc8fa9f4bd0f2960b8d2ed5ea0df774..d21d5762ce597d5d0e1779852708d7b8f90d3a30 100644 (file)
 (define_split
   [(set (match_operand:VM 0 "altivec_register_operand" "")
        (match_operand:VM 1 "easy_vector_constant_msb" ""))]
-  "VECTOR_UNIT_ALTIVEC_P (<MODE>mode) && reload_completed"
+  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode) && reload_completed"
   [(const_int 0)]
 {
   rtx dest = operands[0];
 (define_split
   [(set (match_operand:VM 0 "altivec_register_operand" "")
        (match_operand:VM 1 "easy_vector_constant_add_self" ""))]
-  "VECTOR_UNIT_ALTIVEC_P (<MODE>mode) && reload_completed"
+  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode) && reload_completed"
   [(set (match_dup 0) (match_dup 3))
    (set (match_dup 0) (match_dup 4))]
 {
index 33d1cda13095b429010fe364cb75a5a24616a12b..d9b1f19afd6f30b01ac62e49aa93149c3717d499 100644 (file)
@@ -1,3 +1,21 @@
+2011-01-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       PR target/47408
+       * gcc.target/powerpc/altivec-11.c: Add explicit -mno-vsx.
+       * gcc.target/powerpc/altivec-14.c: Ditto.
+       * gcc.target/powerpc/altivec-33.c: Ditto.
+       * gcc.target/powerpc/altivec-types-1.c: Ditto.
+       * gcc.target/powerpc/altivec-types-2.c: Ditto.
+       * gcc.target/powerpc/altivec-types-3.c: Ditto.
+       * gcc.target/powerpc/altivec-types-4.c: Ditto.
+       * gcc.target/powerpc/ppc-vector-memcpy.c: Ditto.
+       * gcc.target/powerpc/ppc-vector-memset.c: Ditto.
+       * g++.dg/ext/altivec-15.C: Ditto.
+       * g++.dg/ext/altivec-types-1.C: Ditto.
+       * g++.dg/ext/altivec-types-2.C: Ditto.
+       * g++.dg/ext/altivec-types-3.C: Ditto.
+       * g++.dg/ext/altivec-types-4.C: Ditto.
+
 2011-01-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        * lib/scanasm.exp (dg-function-on-line): Handle mips-sgi-irix*.
index ed1c088ccaaaa0d02dba8fa61da60dad5026e412..d8e982db4ff67f29154d0e51598212250c4df95c 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile { target powerpc*-*-* } } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec" } */
+/* { dg-options "-maltivec -mno-vsx" } */
 
 /* This test was added for an internal compiler error.  The number and
    content of error messages is irrelevant.  */
index 710ce4bff4dc2a48cdf735ea11272b41caed1551..f54aeec46af5a4451cf364c8ae952f5af522dcd6 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec -std=c++98" } */
+/* { dg-options "-maltivec -mno-vsx -std=c++98" } */
 
 /* Valid AltiVec vector types should be accepted with no warnings.  */
 
index f64c0c5aa2153ce71ebe738bf9d12cf871f21f59..cee6c8f263f48bb7c2f3bd879bfece69a0867e8f 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target ilp32 } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec" } */
+/* { dg-options "-maltivec -mno-vsx" } */
 
 /* These should get warnings for 32-bit code.  */
 
index 2fe965986b3e7806460a873a8ac4042565638b98..6bea9a145c6888f087e501e4ae972dcf9faf79ff 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
 /* { dg-require-effective-target lp64 } */
-/* { dg-options "-maltivec" } */
+/* { dg-options "-maltivec -mno-vsx" } */
 
 /* These should be rejected for 64-bit code.  */
 
index 212f67339390fec2f48df6175d86a6724e9b4515..b937f3cf1b1edee3d42dc5869b03ba2906fe0936 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target ilp32 } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec -mno-warn-altivec-long" } */
+/* { dg-options "-maltivec -mno-vsx -mno-warn-altivec-long" } */
 
 /* These should not get warnings for 32-bit code when the warning is
    disabled.  */
index 648993ab86c446a1387d0a1954b0d280ee09ec54..7e3510c3160a9d34de0aa66ffb18bbd412fe2d50 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile { target powerpc*-*-* } } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-O2 -maltivec -mabi=altivec" } */
+/* { dg-options "-O2 -maltivec -mno-vsx -mabi=altivec" } */
 /* { dg-final { scan-assembler-not "lvx" } } */
 #include <altivec.h>
 
index 4d3cf4f8cf974d9b85861961b626006335a54817..55acb0b35ce52350d0a795e1a94dbc7eda86c5c1 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec" } */
+/* { dg-options "-maltivec -mno-vsx" } */
 
 #include <altivec.h>
 
index c1c935a1c59a79b1984f417496a113297fb07c77..8e912679d2f879abde250d4ab25fa526dc428817 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-O2 -maltivec" } */
+/* { dg-options "-O2 -maltivec -mno-vsx" } */
 
 /* We should only produce one vspltw as we already splatted the value.  */
 /* { dg-final { scan-assembler-times "vspltw" 1 } } */
index 41de95225b34374775dde24c1a916699262cd4c9..9096892ee6ad15a6fed4fc2c676cd8eea6dc2c9d 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec" } */
+/* { dg-options "-maltivec -mno-vsx" } */
 
 /* Valid AltiVec vector types should be accepted with no warnings.  */
 
index f64c0c5aa2153ce71ebe738bf9d12cf871f21f59..cee6c8f263f48bb7c2f3bd879bfece69a0867e8f 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target ilp32 } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec" } */
+/* { dg-options "-maltivec -mno-vsx" } */
 
 /* These should get warnings for 32-bit code.  */
 
index 38c4d6c164259d5d69ec2f0870cb732e9121d88b..ea371ce7730448b926b26b450f96223feebb8c6e 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target lp64 } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec" } */
+/* { dg-options "-maltivec -mno-vsx" } */
 
 /* These should be rejected for 64-bit code.  */
 
index 212f67339390fec2f48df6175d86a6724e9b4515..52fa91453d5e595758d853d75c1747ba67d67228 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile { target powerpc*-*-linux* } } */
 /* { dg-require-effective-target ilp32 } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec -mno-warn-altivec-long" } */
+/* { dg-options "-maltivec -mno-warn-altivec-long -mno-vsx" } */
 
 /* These should not get warnings for 32-bit code when the warning is
    disabled.  */
index a9a16ab2f5cd8320f61d57dc707fc62d4babc6c8..797c4074dadb0abf3de31167b6826aeab48f3b2d 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile { target powerpc*-*-* } } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-O -maltivec" } */
+/* { dg-options "-O -maltivec -mno-vsx" } */
 /* { dg-final { scan-assembler "lvx" } } */
 
 void foo(void)
index 1a290719c321c0a2006e2bb47851d412b2f47de8..ad7aadea938555ba2391176f64d44904ac1166d7 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile { target powerpc*-*-* } } */
 /* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-O -maltivec" } */
+/* { dg-options "-O -maltivec -mno-vsx" } */
 /* { dg-final { scan-assembler "stvx" } } */
 
 #include <string.h>