Do not expand vector comparison with VEC_COND_EXPR.
gcc/ChangeLog: PR tree-optimization/96128 * tree-vect-generic.c (expand_vector_comparison): Do not expand vector comparison with VEC_COND_EXPR. gcc/testsuite/ChangeLog: PR tree-optimization/96128 * gcc.target/s390/vector/pr96128.c: New test.
This commit is contained in:
parent
c4c22e8302
commit
55c9695cbe
35
gcc/testsuite/gcc.target/s390/vector/pr96128.c
Normal file
35
gcc/testsuite/gcc.target/s390/vector/pr96128.c
Normal file
@ -0,0 +1,35 @@
|
||||
/* PR tree-optimization/96128 */
|
||||
/* { dg-options "-march=z13" } */
|
||||
|
||||
#define B_TEST(TYPE) { TYPE v __attribute__((vector_size(16))); (void)((v < v) < v); }
|
||||
#ifdef __cplusplus
|
||||
#define T_TEST(TYPE) { TYPE s; TYPE v __attribute__((vector_size(16))); __typeof((v<v)[0]) iv __attribute__((vector_size(16))); (void)((iv ? s : s) < v); }
|
||||
#else
|
||||
#define T_TEST(TYPE)
|
||||
#endif
|
||||
#define T(TYPE) B_TEST(TYPE) T_TEST(TYPE)
|
||||
#ifdef __SIZEOF_INT128__
|
||||
#define SIZEOF_MAXINT __SIZEOF_INT128__
|
||||
#else
|
||||
#define SIZEOF_MAXINT __SIZEOF_LONG_LONG__
|
||||
#endif
|
||||
|
||||
void f ()
|
||||
{
|
||||
T(short)
|
||||
T(int)
|
||||
T(long)
|
||||
T(long long)
|
||||
|
||||
T_TEST(float)
|
||||
T_TEST(double)
|
||||
/* Avoid trouble with non-power-of-two sizes.
|
||||
Also avoid trouble with long double larger than integral types. */
|
||||
#if !defined(__i386__) && !defined(__x86_64__) && !defined(__m68k__) \
|
||||
&& !defined(__ia64__) && !defined(__hppa__) \
|
||||
&& (__SIZEOF_LONG_DOUBLE__ & (__SIZEOF_LONG_DOUBLE__ - 1)) == 0 \
|
||||
&& __SIZEOF_LONG_DOUBLE__ <= 16 \
|
||||
&& __SIZEOF_LONG_DOUBLE__ <= SIZEOF_MAXINT
|
||||
T_TEST(long double)
|
||||
#endif
|
||||
}
|
@ -419,8 +419,7 @@ expand_vector_comparison (gimple_stmt_iterator *gsi, tree type, tree op0,
|
||||
return NULL_TREE;
|
||||
|
||||
tree t;
|
||||
if (!expand_vec_cmp_expr_p (TREE_TYPE (op0), type, code)
|
||||
&& !expand_vec_cond_expr_p (type, TREE_TYPE (op0), code))
|
||||
if (!expand_vec_cmp_expr_p (TREE_TYPE (op0), type, code))
|
||||
{
|
||||
if (VECTOR_BOOLEAN_TYPE_P (type)
|
||||
&& SCALAR_INT_MODE_P (TYPE_MODE (type))
|
||||
|
Loading…
Reference in New Issue
Block a user