llvm/lib/Transforms/InstCombine
Chris Lattner 8e76764de8 add one more bitfield optimization, allowing clang to generate
good code on PR4216:

_test_bitfield:                                             ## @test_bitfield
	orl	$32962, %edi
	movl	$4294941946, %eax
	andq	%rdi, %rax
	ret

instead of:

_test_bitfield:
        movl    $4294941696, %ecx
        movl    %edi, %eax
        orl     $194, %edi
        orl     $32768, %eax
        andq    $250, %rdi
        andq    %rax, %rcx
        movq    %rdi, %rax
        orq     %rcx, %rax
        ret

Evan is looking into the remaining andq+imm -> andl optimization.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93147 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-11 06:55:24 +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 inline and remove the rest of commonIntCastTransforms. 2010-01-10 01:00:46 +00:00
InstCombineAddSub.cpp reduce indentation 2010-01-05 20:56:24 +00:00
InstCombineAndOrXor.cpp add one more bitfield optimization, allowing clang to generate 2010-01-11 06:55:24 +00:00
InstCombineCalls.cpp Remove unnecessary dyn_cast and add a comment. Part of a WIP. 2010-01-08 21:37:11 +00:00
InstCombineCasts.cpp Extend CanEvaluateZExtd to handle and/or/xor more aggressively in the 2010-01-11 04:05:13 +00:00
InstCombineCompares.cpp tidy up some stuff duncan pointed out. 2010-01-08 17:48:19 +00:00
InstCombineLoadStoreAlloca.cpp split out load/store/alloca. 2010-01-05 05:57:49 +00:00
InstCombineMulDivRem.cpp Convert a ton of simple integer type equality tests to the new predicate. 2010-01-05 20:07:06 +00:00
InstCombinePHI.cpp Add newline at EOF. 2010-01-05 13:32:48 +00:00
InstCombineSelect.cpp Convert a ton of simple integer type equality tests to the new predicate. 2010-01-05 20:07:06 +00:00
InstCombineShifts.cpp change the preferred canonical form for a sign extension to be 2010-01-10 07:08:30 +00:00
InstCombineSimplifyDemanded.cpp move the 'SimplifyDemandedFoo' methods out to their own file, cutting 1K lines out of instcombine.cpp 2010-01-04 07:17:19 +00:00
InstCombineVectorOps.cpp reduce indentation 2010-01-05 05:42:08 +00:00
InstCombineWorklist.h remove a ton of unneeded LLVMContext stuff. 2010-01-04 07:02:48 +00:00
InstructionCombining.cpp teach ComputeNumSignBits to look through PHI nodes. 2010-01-07 23:44:37 +00:00
Makefile