+2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ * config/s390/s390.c (s390_contiguous_bitmask_vector_p): Reject if
+ the vector element is bigger than 64 bit.
+
2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* config/s390/vx-builtins.md ("vec_vmal<mode>", "vec_vmah<mode>")
return false;
size = GET_MODE_UNIT_BITSIZE (GET_MODE (op));
+
+ /* We cannot deal with V1TI/V1TF. This would require a vgmq. */
+ if (size > 64)
+ return false;
+
mask = UINTVAL (elt);
if (s390_contiguous_bitmask_p (mask, size, start,
end != NULL ? &length : NULL))
+2015-09-10 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ * gcc.target/s390/vector/vec-genbytemask-1.c: Add check for V1TI
+ initialization with a byte mask. No change expected here.
+ * gcc.target/s390/vector/vec-genmask-1.c: Fix whitespace.
+ * gcc.target/s390/vector/vec-genmask-2.c: Add check for V1TI
+ initialization with contigious bitmask. Literal pool is expectd
+ to be used here.
+
2015-09-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/67439
/* { dg-do run } */
/* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */
/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target int128 } */
typedef unsigned char uv16qi __attribute__((vector_size(16)));
typedef unsigned short uv8hi __attribute__((vector_size(16)));
typedef unsigned int uv4si __attribute__((vector_size(16)));
typedef unsigned long long uv2di __attribute__((vector_size(16)));
+typedef unsigned __int128 uv1ti __attribute__((vector_size(16)));
uv2di __attribute__((noinline))
foo1 ()
0xff, 0, 0xff, 0,
0, 0xff, 0, 0xff };
}
+
+uv1ti __attribute__((noinline))
+foo5 ()
+{
+ return (uv1ti){ 0xff00ff00ff00ff00ULL };
+}
+
/* { dg-final { scan-assembler-times "vgbm\t%v24,61605" 1 } } */
int
if (foo4()[1] != 0xff)
__builtin_abort ();
+
+ if (foo5()[0] != 0xff00ff00ff00ff00ULL)
+ __builtin_abort ();
+
return 0;
}
__builtin_abort ();
return 0;
}
-
/* { dg-do compile } */
/* { dg-options "-O3 -mzarch -march=z13" } */
+/* { dg-require-effective-target int128 } */
typedef unsigned char uv16qi __attribute__((vector_size(16)));
typedef unsigned short uv8hi __attribute__((vector_size(16)));
typedef unsigned int uv4si __attribute__((vector_size(16)));
typedef unsigned long long uv2di __attribute__((vector_size(16)));
+typedef unsigned __int128 uv1ti __attribute__((vector_size(16)));
/* The elements differ. */
uv2di __attribute__((noinline))
0x82, 0x82, 0x82, 0x82,
0x82, 0x82, 0x82, 0x82 };
}
+
+/* We do not have vgmq. */
+uv1ti
+foo5()
+{
+ return (uv1ti){ ((unsigned __int128)1 << 53) - 1 };
+}
/* { dg-final { scan-assembler-not "vgm" } } */