[PATCH] D51929: [DAGCombiner] use UADDO to optimize saturated unsigned add

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 21 01:16:00 PDT 2018


lebedev.ri added a comment.

Do we somehow enforce that in `%r = select i1 %c, i32 -1, i32 %a`, `-1` is in the middle?
If not, we miss at least one case i think:

  $ ~/src/alive/alive.py /tmp/test.txt 
  ----------------------------------------
  Optimization: 1
  Precondition: true
    %a = add i32 %x, 42
    %c = icmp ugt i32 %x, -43
    %r = select i1 %c, i32 -1, i32 %a
  =>
    %c2 = icmp ult i32 %x, -43
    %r = select i1 %c2, i32 %a, i32 -1
  
  Done: 1
  Optimization is correct!

I thought there was some more case with inverted/negated `42` / `-43` but i can't find it right now.


https://reviews.llvm.org/D51929





More information about the llvm-commits mailing list