hanchenye-llvm-project/llvm/lib/CodeGen/SelectionDAG
Kevin Qin 5cd73c9e0a [AArch64 NEON] Fix invalid constant used in vselect condition.
There is a wrong assumption that the vector element type and the
type of each ConstantSDNode in the build_vector were the same.
However, when promoting the integer operand of a legally typed
build_vector, the operand type and the vector element type do not
need to be the same
(See method 'DAGTypeLegalizer::PromoteIntOp_BUILD_VECTOR' in
LegalizeIntegerTypes.cpp).

  in AArch64 backend, the following dag sequence:

  C0: i1 = Constant<0>
  C1: i1 = Constant<-1>
  V: v8i1 = BUILD_VECTOR C1, C1, C0, C0, C0, C0, C0, C0

  is type-legalized into:

  NewC0: i32 = Constant<0>
  NewC1: i32 = Constant<1>
  V: v8i8 = BUILD_VECTOR NewC1, NewC1, NewC0, NewC0, NewC0, NewC0, NewC0, NewC0

Forcing a getZeroExtend to VTBits to ensure that the new constant
is correctly.

llvm-svn: 198582
2014-01-06 02:26:10 +00:00
..
CMakeLists.txt
DAGCombiner.cpp [AArch64 NEON] Fix invalid constant used in vselect condition. 2014-01-06 02:26:10 +00:00
FastISel.cpp Avoid illegal integer promotion in fastisel 2013-11-15 19:09:27 +00:00
FunctionLoweringInfo.cpp [stackprotector] Use analysis from the StackProtector pass for stack layout in PEI a nd LocalStackSlot passes. 2013-12-19 03:17:11 +00:00
InstrEmitter.cpp Fix patchpoint comments. 2013-11-19 05:05:43 +00:00
InstrEmitter.h
LLVMBuild.txt
LegalizeDAG.cpp Add support for legalizing SETNE/SETEQ by inverting the condition code and the result of the comparison. 2013-11-21 13:24:49 +00:00
LegalizeFloatTypes.cpp
LegalizeIntegerTypes.cpp
LegalizeTypes.cpp [DAG] Refactor vector splitting code in SelectionDAG. No functional change intended. 2013-11-19 21:20:17 +00:00
LegalizeTypes.h Correct word hyphenations 2013-12-05 05:44:44 +00:00
LegalizeTypesGeneric.cpp SelectionDAG: Optimize expansion of vec_type = BITCAST scalar_type 2013-11-22 00:41:05 +00:00
LegalizeVectorOps.cpp
LegalizeVectorTypes.cpp Correct word hyphenations 2013-12-05 05:44:44 +00:00
Makefile
ResourcePriorityQueue.cpp
SDNodeDbgValue.h
ScheduleDAGFast.cpp
ScheduleDAGRRList.cpp
ScheduleDAGSDNodes.cpp
ScheduleDAGSDNodes.h
ScheduleDAGVLIW.cpp
SelectionDAG.cpp Teach DAGCombiner how to fold a SIGN_EXTEND_INREG of a BUILD_VECTOR of 2013-12-27 20:20:28 +00:00
SelectionDAGBuilder.cpp [stackprotector] Use analysis from the StackProtector pass for stack layout in PEI a nd LocalStackSlot passes. 2013-12-19 03:17:11 +00:00
SelectionDAGBuilder.h Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
SelectionDAGDumper.cpp Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
SelectionDAGISel.cpp Add a machine code print in DEBUG() following instruction selection. 2013-12-17 02:01:10 +00:00
SelectionDAGPrinter.cpp
TargetLowering.cpp Refactor function that checks that __builtin_returnaddress's argument is constant. 2014-01-06 00:43:20 +00:00
TargetSelectionDAGInfo.cpp