llvm-6502/lib/Transforms
David Majnemer b1b738e036 InstCombine: (icmp eq B, 0) | (icmp ult A, B) -> (icmp ule A, B-1)
This transform allows us to turn IR that looks like:
  %1 = icmp eq i64 %b, 0
  %2 = icmp ult i64 %a, %b
  %3 = or i1 %1, %2
  ret i1 %3

into:
  %0 = add i64 %b, -1
  %1 = icmp uge i64 %0, %a
  ret i1 %1

which means we go from lowering:
        cmpq    %rsi, %rdi
        setb    %cl
        testq   %rsi, %rsi
        sete    %al
        orb     %cl, %al
        ret

to lowering:
        decq    %rsi
        cmpq    %rdi, %rsi
        setae   %al
        ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185677 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-05 00:31:17 +00:00
..
Hello
InstCombine InstCombine: (icmp eq B, 0) | (icmp ult A, B) -> (icmp ule A, B-1) 2013-07-05 00:31:17 +00:00
Instrumentation Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. 2013-07-04 01:31:24 +00:00
IPO Tabs to spaces. No functionality change. 2013-07-04 03:51:53 +00:00
ObjCARC [objc-arc-opts] Make IsTrackingImpreciseReleases a const method. 2013-06-21 20:52:49 +00:00
Scalar Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. 2013-07-04 01:31:24 +00:00
Utils SimplifyCFG: Teach switch generation some patterns that instcombine forms. 2013-07-04 14:22:02 +00:00
Vectorize Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. 2013-07-04 01:31:24 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile