llvm-6502/include/llvm/CodeGen
Bob Wilson b1303d05a8 Change SelectionDAG type legalization to allow BUILD_VECTOR operands to be
promoted to legal types without changing the type of the vector.  This is
following a suggestion from Duncan
(http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/019923.html).
The transformation that used to be done during type legalization is now
postponed to DAG legalization.  This allows the BUILD_VECTORs to be optimized
and potentially handled specially by target-specific code.

It turns out that this is also consistent with an optimization done by the
DAG combiner: a BUILD_VECTOR and INSERT_VECTOR_ELT may be combined by
replacing one of the BUILD_VECTOR operands with the newly inserted element;
but INSERT_VECTOR_ELT allows its scalar operand to be larger than the
element type, with any extra high bits being implicitly truncated.  The
result is a BUILD_VECTOR where one of the operands has a type larger the
the vector element type.

Any code that operates on BUILD_VECTORs may now need to be aware of the
potential type discrepancy between the vector element type and the
BUILD_VECTOR operands.  This patch updates all of the places that I could
find to handle that case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68996 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13 22:05:19 +00:00
..
AsmPrinter.h Pass in the std::string parameter instead of returning it by value. 2009-04-10 00:12:49 +00:00
BreakCriticalMachineEdge.h
CallingConvLower.h
DAGISelHeader.h
DebugLoc.h
DwarfWriter.h Right now, Debugging information to encode scopes (DW_TAG_lexical_block) relies on DBG_LABEL. Unfortunately this intefers with the quality of optimized code. 2009-04-13 18:13:16 +00:00
ELFRelocation.h
FastISel.h optimize FastISel::UpdateValueMap to avoid duplicate map lookups, 2009-04-12 07:45:01 +00:00
FileWriters.h
GCMetadata.h
GCMetadataPrinter.h
GCs.h
GCStrategy.h
IntrinsicLowering.h
LatencyPriorityQueue.h
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h
LiveInterval.h Use CHAR_BIT instead of hard-coding 8 in several places where it 2009-04-01 18:45:54 +00:00
LiveIntervalAnalysis.h Fix PR3391 and PR3864. Reg allocator infinite looping. 2009-03-23 18:24:37 +00:00
LiveStackAnalysis.h
LiveVariables.h
MachineBasicBlock.h Reapply 68073, with fixes. EH Landing-pad basic blocks are not 2009-03-31 18:39:13 +00:00
MachineCodeEmitter.h
MachineConstantPool.h Use CHAR_BIT instead of hard-coding 8 in several places where it 2009-04-01 18:45:54 +00:00
MachineDominators.h
MachineFrameInfo.h
MachineFunction.h Revert r67844. This fixes the llvm-gcc-4.2 build on Darwin. 2009-03-27 18:37:13 +00:00
MachineFunctionPass.h Add a new "available_externally" linkage type. This is intended 2009-04-13 05:44:34 +00:00
MachineInstr.h Fix pr3954. The register scavenger asserts for inline assembly with 2009-04-09 17:16:43 +00:00
MachineInstrBuilder.h
MachineJumpTableInfo.h
MachineLocation.h
MachineLoopInfo.h
MachineMemOperand.h
MachineModuleInfo.h DebugLabelFolder ruthlessly deletes redundant labels. However, sometimes the redundant labels is referenced by debug info somewhere else. This patch provies a way so that dwarf writer can mark labels as used. 2009-04-10 18:58:59 +00:00
MachineOperand.h
MachinePassRegistry.h
MachineRegisterInfo.h
MachineRelocation.h
MachORelocation.h
Passes.h
PseudoSourceValue.h
RegAllocRegistry.h
RegisterCoalescer.h
RegisterScavenging.h
RuntimeLibcalls.h
ScheduleDAG.h Add a new bit to SUnit to record whether a node has implicit physreg 2009-03-23 16:10:52 +00:00
ScheduleHazardRecognizer.h
SchedulerRegistry.h
SelectionDAG.h Remove the obsolete SelectionDAG::getNodeValueTypes and simplify 2009-04-09 23:54:40 +00:00
SelectionDAGISel.h
SelectionDAGNodes.h Change SelectionDAG type legalization to allow BUILD_VECTOR operands to be 2009-04-13 22:05:19 +00:00
ValueTypes.h
ValueTypes.td