[InstCombine] add folds for icmp + sub (PR36969)
authorSanjay Patel <spatel@rotateright.com>
Mon, 2 Apr 2018 20:37:40 +0000 (20:37 +0000)
committerSanjay Patel <spatel@rotateright.com>
Mon, 2 Apr 2018 20:37:40 +0000 (20:37 +0000)
commitcbb0450540ed03d3c630996cbb8ef719a8f6b6d5
tree6e2396373f5e266b24d2bd3816f12237ef4d0597
parentbe0442eeaaefbce1e3ed1f0f1af5b7044544b99f
[InstCombine] add folds for icmp + sub (PR36969)

(A - B) >u A --> A <u B
C <u (C - D) --> C <u D

https://rise4fun.com/Alive/e7j

Name: ugt
  %sub = sub i8 %x, %y
  %cmp = icmp ugt i8 %sub, %x
=>
  %cmp = icmp ult i8 %x, %y

Name: ult
  %sub = sub i8 %x, %y
  %cmp = icmp ult i8 %x, %sub
=>
  %cmp = icmp ult i8 %x, %y

This should fix:
https://bugs.llvm.org/show_bug.cgi?id=36969

llvm-svn: 329011
llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
llvm/test/Transforms/InstCombine/icmp.ll