https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101808
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2021-08-06
Status|UNCONFIRMED |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot
gnu.org
Ever confirmed|0 |1
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I am going to try to fix this.
A simple thing like this might work (I am going to reuse gimple_truth in other
places too):
#if GIMPLE
(match gimple_truth SSA_NAME@0
(if (get_nonzero_bits (@0) == 1)))
(simplify
(lt gimple_truth@0 gimple_truth@1)
(bit_and (xor! @0 { build_one_cst (type); }) @1)
(simplify
(le gimple_truth@0 gimple_truth@1)
(bit_or (xor! @0 { build_one_cst (type); }) @1)
(simplify
(gt gimple_truth@0 gimple_truth@1)
(bit_and (xor! @1 { build_one_cst (type); }) @0)
(simplify
(ge gimple_truth@0 gimple_truth@1)
(bit_or (xor! @1 { build_one_cst (type); }) @0)
#endif
I have never used the ! in match-and-simplify before either.