+2011-02-15 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/47755
+ * config/rs6000/predicates.md (easy_vector_constant): Allow V2DI
+ mode for vector constants. Remove code that checks for TImode.
+
2011-02-15 Alexandre Oliva <aoliva@redhat.com>
PR debug/47106
if (TARGET_PAIRED_FLOAT)
return false;
- if ((VSX_VECTOR_MODE (mode) || mode == TImode) && zero_constant (op, mode))
- return true;
-
- if (ALTIVEC_VECTOR_MODE (mode))
+ if (VECTOR_MEM_ALTIVEC_OR_VSX_P (mode))
{
if (zero_constant (op, mode))
- return true;
+ return true;
+
return easy_altivec_constant (op, mode);
}
+2011-02-15 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/47755
+ * gcc.target/powerpc/pr47755.c: New file, test all 0 vector
+ constant does not generate a load from memory.
+
2011-02-15 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/47725
--- /dev/null
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7" } */
+/* { dg-final { scan-assembler "xxlxor" } } */
+/* { dg-final { scan-assembler-not "lxvd2x" } } */
+/* { dg-final { scan-assembler-not "lxvw4x" } } */
+/* { dg-final { scan-assembler-not "lvx" } } */
+
+/* PR 47755: Compiler loads vector constant of 0 from TOC instead of using
+ xxlxor. */
+void
+func (vector long long *p)
+{
+ *p = (vector long long) { 0LL, 0LL };
+}