[Bug tree-optimization/126455] [16/17 Regression] Wrong folding of (a < b) ^ (a > b) to a != b for vector (FP)

"pinskia at gcc dot gnu.org via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126455

Drea Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[16/17 Regression] Wrong    |[16/17 Regression] Wrong
                   |folding of (a < b) ^ (a >   |folding of (a < b) ^ (a >
                   |b) to a != b for FP vectors |b) to a != b for vector
                   |                            |(FP)
           Keywords|needs-bisection             |
      Known to work|15.2.1                      |

--- Comment #3 from Drea Pinski <pinskia at gcc dot gnu.org> ---
Oh I did but not for vector types:
/* Optimize (a CMP b) ^ (a CMP b)  */
/* Optimize (a CMP b) != (a CMP b)  */
(for op (bit_xor ne)
 (for cmp1 (lt lt lt le le le)
      cmp2 (gt eq ne ge eq ne)
      rcmp (ne le gt ne lt ge)
  (simplify
   (op:c (cmp1:c @0 @1) (cmp2 @0 @1))
   (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
      || POINTER_TYPE_P (TREE_TYPE (@0))
      || (VECTOR_TYPE_P (TREE_TYPE (@1))
      && expand_vec_cmp_expr_p (TREE_TYPE (@0), type, rcmp)))
    (rcmp @0 @1)))))

/* Optimize (a CMP b) == (a CMP b)  */
(for cmp1 (lt lt lt le le le)
     cmp2 (gt eq ne ge eq ne)
     rcmp (eq gt le eq ge lt)
 (simplify
  (eq:c (cmp1:c @0 @1) (cmp2 @0 @1))
  (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
                || POINTER_TYPE_P (TREE_TYPE (@0))
      || (VECTOR_TYPE_P (TREE_TYPE (@0))
      && expand_vec_cmp_expr_p (TREE_TYPE (@0), type,  rcmp)))
    (rcmp @0 @1))))


Well my patch didn't allow vector types. that was extended by
r16-2134-gf33cc3af8fd9c4 which didn't test for integral vector types.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.