llvm-project/llvm/lib/CodeGen/SelectionDAG
Dan Gohman 3f323847bc Avoid forming a SELECT_CC in a type that the target doesn't
support. This isn't immediately interesting, because Legalize
ends up lowering SELECT_CC if the target doesn't support it,
but this simplifies the process.

Also, if the SELECT_CC would be expanded in Legalize, it
can potentially end up with two copies of the condition
expression. By leaving it as SELECT+SETCC, the SELECT can be
expanded into two SELECTs that use a single SETCC.

The two comparisons are usually CSE'd, but depending on
when various expressions get legalized, the comparison
expression could involve calls to library functions, such
that the comparison expression may not be able to be CSE'd.
This will be needed by a future patch.

llvm-svn: 77896
2009-08-02 16:19:38 +00:00
..
CMakeLists.txt Lexically order files in CMakeLists.txt files. 2009-07-15 21:08:16 +00:00
CallingConvLower.cpp Get rid of the Pass+Context magic. 2009-07-22 00:24:57 +00:00
DAGCombiner.cpp Avoid forming a SELECT_CC in a type that the target doesn't 2009-08-02 16:19:38 +00:00
FastISel.cpp Move a few more APIs back to 2.5 forms. The only remaining ones left to change back are 2009-07-31 20:28:14 +00:00
LegalizeDAG.cpp Move more code back to 2.5 APIs. 2009-07-30 23:03:37 +00:00
LegalizeFloatTypes.cpp Convert a few more things to use raw_ostream. 2009-07-25 01:43:01 +00:00
LegalizeIntegerTypes.cpp Convert a few more things to use raw_ostream. 2009-07-25 01:43:01 +00:00
LegalizeTypes.cpp Use a range insert instead of an explicit loop. 2009-07-31 23:36:06 +00:00
LegalizeTypes.h Nowadays vectors are only split if they have an even 2009-07-08 21:34:03 +00:00
LegalizeTypesGeneric.cpp Move types back to the 2.5 API. 2009-07-29 22:17:13 +00:00
LegalizeVectorOps.cpp Make SINT_TO_FP/UINT_TO_FP vector legalization queries query on the 2009-06-06 03:27:50 +00:00
LegalizeVectorTypes.cpp Move types back to the 2.5 API. 2009-07-29 22:17:13 +00:00
Makefile remove dead makefile flags. 2009-06-24 05:29:56 +00:00
ScheduleDAGFast.cpp llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +00:00
ScheduleDAGList.cpp llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +00:00
ScheduleDAGRRList.cpp llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +00:00
ScheduleDAGSDNodes.cpp Move more to raw_ostream, provide support for writing MachineBasicBlock, 2009-07-24 10:36:58 +00:00
ScheduleDAGSDNodes.h Rename COPY_TO_SUBCLASS to COPY_TO_REGCLASS, and generalize 2009-04-13 21:06:25 +00:00
ScheduleDAGSDNodesEmit.cpp Optimize some common usage patterns of atomic built-ins __sync_add_and_fetch() and __sync_sub_and_fetch. 2009-07-30 08:33:02 +00:00
SelectionDAG.cpp Print the target flags as an int instead of a char, as they aren't 2009-08-01 19:13:38 +00:00
SelectionDAGBuild.cpp Allow target intrinsics that return multiple values, i.e., struct types, 2009-07-31 22:41:21 +00:00
SelectionDAGBuild.h llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 2009-07-14 16:55:14 +00:00
SelectionDAGISel.cpp Delete a redundant variable. 2009-08-01 04:18:29 +00:00
SelectionDAGPrinter.cpp Switch to getNameStr(). 2009-07-24 08:24:36 +00:00
TargetLowering.cpp Allow targets to define libcall names for mem(cpy,set,move) intrinsics, rather than hardcoding them in DAG lowering. 2009-07-30 09:12:56 +00:00