Hi Segher,

on 2022/3/27 11:02 PM, Segher Boessenkool wrote:
> Hi!
> 
> On Thu, Mar 24, 2022 at 10:00:43AM +0800, Kewen.Lin wrote:
>> Commit r12-7687 exposed one miss optimization chance in function
>> rs6000_maybe_emit_maxc_minc, for now it only considers comparison
>> codes GE/GT/LE/LT, but it can support more variants with codes
>> UNLT/UNLE/UNGT/UNGE by reversing them into the equivalent ones
>> with GE/GT/LE/LT.
> 
>> +  /* Canonicalize UN[GL][ET] to [LG][TE].  */
>> +  if (code == UNGE || code == UNGT || code == UNLE || code == UNLT)
>> +    {
>> +      code = reverse_condition_maybe_unordered (code);
>> +      std::swap (true_cond, false_cond);
>> +    }
> 
> Typically you would have to generate code to compensate for the reversed
> comparison.  It works out fine here, but could you please restructure
> the code to make that less tricky / more obvious?  Or at least add a
> comment?
> 
> I wouldn't call it "canonicalisation" btw, LT is by no means more
> standard than UNGE is.  You can say you are folding things so you later
> have to support fewer cases, or similar?
> 

Thanks for the review!  Sorry for the late reply (I'm just back from
vacation).  I just posted v2 by adding more comments to describe the
reversions and changing the bad "canonicalisation" word, hope it looks
better to you.  :)

v2: https://gcc.gnu.org/pipermail/gcc-patches/2022-April/592624.html

BR,
Kewen

Reply via email to