llvm-project/llvm/lib/Transforms
Sanjay Patel 1f65903dc1 [InstCombine] move add after smin/smax
Follow-up to rL355221.
This isn't specifically called for within PR14613,
but we'll get there eventually if it's not already
requested in some other bug report.

https://rise4fun.com/Alive/5b0

  Name: smax
  Pre: WillNotOverflowSignedSub(C1,C0)
  %a = add nsw i8 %x, C0
  %cond = icmp sgt i8 %a, C1
  %r = select i1 %cond, i8 %a, i8 C1
  =>
  %c2 = icmp sgt i8 %x, C1-C0
  %u2 = select i1 %c2, i8 %x, i8 C1-C0
  %r = add nsw i8 %u2, C0

  Name: smin
  Pre: WillNotOverflowSignedSub(C1,C0)
  %a = add nsw i32 %x, C0
  %cond = icmp slt i32 %a, C1
  %r = select i1 %cond, i32 %a, i32 C1
  =>
  %c2 = icmp slt i32 %x, C1-C0
  %u2 = select i1 %c2, i32 %x, i32 C1-C0
  %r = add nsw i32 %u2, C0

llvm-svn: 355272
2019-03-02 16:45:10 +00:00
..
AggressiveInstCombine Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Coroutines [opaque pointer types] Pass value type to LoadInst creation. 2019-02-01 20:44:24 +00:00
Hello Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IPO Add a module pass for order file instrumentation 2019-02-28 20:13:38 +00:00
InstCombine [InstCombine] move add after smin/smax 2019-03-02 16:45:10 +00:00
Instrumentation Try to fix NetBSD buildbot breakage introduced in D57463. 2019-03-01 15:25:24 +00:00
ObjCARC [opaque pointer types] Pass function type for CallBase::setCalledFunction. 2019-02-01 20:44:54 +00:00
Scalar [LICM] Infer proper alignment from loads during scalar promotion 2019-03-01 18:45:05 +00:00
Utils Make MergeBlockIntoPredecessor conformant to the precondition of calling DTU.applyUpdates 2019-02-28 16:47:18 +00:00
Vectorize Hide two unused debugging methods, NFCI. 2019-03-01 17:15:21 +00:00
CMakeLists.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00