llvm-6502/lib/CodeGen/SelectionDAG
Benjamin Kramer b6516aeef1 Reimplement CTPOP legalization with the "best" algorithm from
http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel

In a silly microbenchmark on a 65 nm core2 this is 1.5x faster than the old
code in 32 bit mode and about 2x faster in 64 bit mode. It's also a lot shorter,
especially when counting 64 bit population on a 32 bit target.

I hope this is fast enough to replace Kernighan-style counting loops even when
the input is rather sparse.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123547 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-15 20:30:30 +00:00
..
CMakeLists.txt
DAGCombiner.cpp Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there. 2011-01-10 12:39:04 +00:00
FastISel.cpp If dbg_declare() or dbg_value() is not lowered by isel then emit DEBUG message instead of creating DBG_VALUE for undefined value in reg0. 2010-12-06 22:39:26 +00:00
FunctionLoweringInfo.cpp Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there. 2011-01-10 12:39:04 +00:00
InstrEmitter.cpp Simplify a bunch of isVirtualRegister() and isPhysicalRegister() logic. 2011-01-10 02:58:51 +00:00
InstrEmitter.h
LegalizeDAG.cpp Reimplement CTPOP legalization with the "best" algorithm from 2011-01-15 20:30:30 +00:00
LegalizeFloatTypes.cpp PR5207: Rename overloaded APInt methods set(), clear(), flip() to 2010-12-01 08:53:58 +00:00
LegalizeIntegerTypes.cpp Move ExpandAtomic into the integer expansion routines - it's only used there. 2011-01-11 00:36:08 +00:00
LegalizeTypes.cpp Move ExpandAtomic into the integer expansion routines - it's only used there. 2011-01-11 00:36:08 +00:00
LegalizeTypes.h Add some fairly duplicated code to let type legalization split illegal 2011-01-06 22:28:56 +00:00
LegalizeTypesGeneric.cpp Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept. 2010-11-23 03:31:01 +00:00
LegalizeVectorOps.cpp Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept. 2010-11-23 03:31:01 +00:00
LegalizeVectorTypes.cpp Change EXTRACT_SUBVECTOR to require a constant index. 2011-01-07 04:58:56 +00:00
Makefile
ScheduleDAGFast.cpp flags -> glue for selectiondag 2010-12-23 17:24:32 +00:00
ScheduleDAGList.cpp Various bits of framework needed for precise machine-level selection 2010-12-24 05:03:26 +00:00
ScheduleDAGRRList.cpp Support for precise scheduling of the instruction selection DAG, 2011-01-14 21:11:41 +00:00
ScheduleDAGSDNodes.cpp flags -> glue for selectiondag 2010-12-23 17:24:32 +00:00
ScheduleDAGSDNodes.h rename MVT::Flag to MVT::Glue. "Flag" is a terrible name for 2010-12-21 02:38:05 +00:00
SDNodeDbgValue.h Merge System into Support. 2010-11-29 18:16:10 +00:00
SDNodeOrdering.h
SelectionDAG.cpp Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there. 2011-01-10 12:39:04 +00:00
SelectionDAGBuilder.cpp Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there. 2011-01-10 12:39:04 +00:00
SelectionDAGBuilder.h Avoid zero extend bit test operands to pointer type if all the masks fit in 2011-01-06 01:02:44 +00:00
SelectionDAGISel.cpp Delete an assignment to ThisBB which isn't needed, and tidy up some 2011-01-14 22:26:16 +00:00
SelectionDAGPrinter.cpp flags -> glue for selectiondag 2010-12-23 17:24:32 +00:00
TargetLowering.cpp Fix PR 8916 (qv for analysis), at least the immediate problem. 2011-01-10 21:53:07 +00:00
TargetSelectionDAGInfo.cpp