llvm-6502/lib/Transforms/InstCombine
Benjamin Kramer 4fc719e607 instcombine: fold (x & y) | (~x & z) and (x & y) ^ (~x & z) into ((y ^ z) & x) ^ z which is one instruction shorter. (PR6773)
before:
  %and = and i32 %y, %x
  %neg = xor i32 %x, -1
  %and4 = and i32 %z, %neg
  %xor = xor i32 %and4, %and

after:
  %xor1 = xor i32 %z, %y
  %and2 = and i32 %xor1, %x
  %xor = xor i32 %and2, %z


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108136 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 11:54:45 +00:00
..
CMakeLists.txt split and/or/xor out into one overly-large (2000LOC) file. However, I think 2010-01-05 07:50:36 +00:00
InstCombine.h use ArgOperand API, also tighten the type of visitFree to make this work out smoothly 2010-06-24 12:21:15 +00:00
InstCombineAddSub.cpp Floating-point add, sub, and mul are now spelled fadd, fsub, and fmul, 2010-03-02 01:11:08 +00:00
InstCombineAndOrXor.cpp instcombine: fold (x & y) | (~x & z) and (x & y) ^ (~x & z) into ((y ^ z) & x) ^ z which is one instruction shorter. (PR6773) 2010-07-12 11:54:45 +00:00
InstCombineCalls.cpp use getArgOperand (corrected by CallInst::ArgOffset) instead of getOperand 2010-06-30 12:38:26 +00:00
InstCombineCasts.cpp Fix instcombine's handling of alloca to accept non-i32 types. 2010-05-28 04:33:04 +00:00
InstCombineCompares.cpp Convert some tab stops into spaces. 2010-07-12 08:16:59 +00:00
InstCombineLoadStoreAlloca.cpp do not repeatedly dereference use_iterator 2010-07-09 12:23:50 +00:00
InstCombineMulDivRem.cpp Floating-point add, sub, and mul are now spelled fadd, fsub, and fmul, 2010-03-02 01:11:08 +00:00
InstCombinePHI.cpp fix PR6512, a case where instcombine would incorrectly merge loads 2010-03-05 18:53:28 +00:00
InstCombineSelect.cpp Teach instcombine to transform 2010-07-08 11:39:10 +00:00
InstCombineShifts.cpp use ArgOperand API 2010-06-24 00:44:01 +00:00
InstCombineSimplifyDemanded.cpp use ArgOperand API 2010-06-28 16:45:00 +00:00
InstCombineVectorOps.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
InstCombineWorklist.h I got tired of VISIBILITY_HIDDEN colliding with the gcc enum. Rename it 2010-05-11 20:16:09 +00:00
InstructionCombining.cpp cache result of operator* 2010-07-09 15:01:36 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00