https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103660
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2021-12-12
CC| |pinskia at gcc dot gnu.org
Status|UNCONFIRMED |NEW
Severity|normal |enhancement
Ever confirmed|0 |1
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
For min3/min4:
_3 = a_7(D) < b_8(D) ? a_7(D) : 0;
_6 = a_7(D) >= b_8(D) ? b_8(D) : 0;
_9 = _3 | _6;
A pattern like:
(for op (add bit_ior)
(simplify
(op:c
(cond (lt @0 @1) @0 integer_zero_p@2)
(cond (ge @0 @1) @0 @2))
(min @0 @1)))
And make one for the others too.
min5/6 is more complex:
min5:
_1 = a_5(D) < b_6(D);
c_7 = (const int) _1;
_2 = a_5(D) * c_7;
_3 = 1 - c_7;
_4 = _3 * b_6(D);
_8 = _2 + _4;
min6:
_5 = a_1(D) < b_2(D);
_6 = (int) _5;
_7 = a_1(D) * _6;
_8 = a_1(D) >= b_2(D);
_9 = (int) _8;
_10 = b_2(D) * _9;
_11 = _7 + _10;
I think I have a patch which helps these, I have to finish it up and then it
goes back to min3/min4 issue.