llvm-6502/lib/CodeGen/SelectionDAG
Chris Lattner f9d95c8835 Fix two problems in SelectionDAGLegalize::ExpandBUILD_VECTOR's handling
of BUILD_VECTORS that only have two unique elements:

1. The previous code was nondeterminstic, because it walked a map in
   SDOperand order, which isn't determinstic.
2. The previous code didn't handle the case when one element was undef
   very well.  Now we ensure that the generated shuffle mask has the
   undef vector on the RHS (instead of potentially being on the LHS)
   and that any elements that refer to it are themselves undef.  This
   allows us to compile CodeGen/X86/vec_set-9.ll into:

_test3:
	movd	%rdi, %xmm0
	punpcklqdq	%xmm0, %xmm0
	ret

instead of:

_test3:
	movd	%rdi, %xmm1
	#IMPLICIT_DEF %xmm0
	punpcklqdq	%xmm1, %xmm0
	ret

... saving a register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48060 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-09 00:29:42 +00:00
..
CallingConvLower.cpp Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
DAGCombiner.cpp Rename isOperand() to isOperandOf() (and other similar methods). It always confuses me. 2008-03-04 00:41:45 +00:00
LegalizeDAG.cpp Fix two problems in SelectionDAGLegalize::ExpandBUILD_VECTOR's handling 2008-03-09 00:29:42 +00:00
LegalizeTypes.cpp LegalizeTypes support for EXTRACT_VECTOR_ELT. The 2008-02-27 13:34:40 +00:00
LegalizeTypes.h LegalizeTypes support for EXTRACT_VECTOR_ELT. The 2008-02-27 13:34:40 +00:00
LegalizeTypesExpand.cpp Codegen support for i128 UINT_TO_FP. This just fixes a 2008-03-05 02:07:31 +00:00
LegalizeTypesPromote.cpp LegalizeTypes support for EXTRACT_VECTOR_ELT. The 2008-02-27 13:34:40 +00:00
LegalizeTypesScalarize.cpp LegalizeTypes support for EXTRACT_VECTOR_ELT. The 2008-02-27 13:34:40 +00:00
LegalizeTypesSplit.cpp Add a FIXME about the VECTOR_SHUFFLE evil hack. 2008-02-27 17:39:13 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00
ScheduleDAG.cpp Some improvements related to the computation of heights, depths of SUnits. 2008-03-04 11:19:43 +00:00
ScheduleDAGList.cpp Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
ScheduleDAGRRList.cpp Rename isOperand() to isOperandOf() (and other similar methods). It always confuses me. 2008-03-04 00:41:45 +00:00
SelectionDAG.cpp Teach SD some vector identities, allowing us to compile vec_set-9 into: 2008-03-08 23:43:36 +00:00
SelectionDAGISel.cpp Implement x86 support for @llvm.prefetch. It corresponds to prefetcht{0|1|2} and prefetchnta instructions. 2008-03-08 00:58:38 +00:00
SelectionDAGPrinter.cpp Final de-tabification. 2008-02-27 06:33:05 +00:00
TargetLowering.cpp Codegen support for i128 SINT_TO_FP. 2008-03-05 01:08:17 +00:00