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 Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
CallingConvLower.h Define CallSDNode, an SDNode subclass for use with ISD::CALL. 2008-09-13 01:54:27 +00:00
DAGISelHeader.h Delete unnecessary elses. 2009-01-28 18:03:09 +00:00
DebugLoc.h Print out a new label only if the debug location *tuple* is different. The debug 2009-02-19 09:16:38 +00:00
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 Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
FastISel.h optimize FastISel::UpdateValueMap to avoid duplicate map lookups, 2009-04-12 07:45:01 +00:00
FileWriters.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
GCMetadata.h Rename some GC classes so that their roll will hopefully be clearer. 2008-08-17 18:44:35 +00:00
GCMetadataPrinter.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
GCs.h Rename some GC classes so that their roll will hopefully be clearer. 2008-08-17 18:44:35 +00:00
GCStrategy.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
IntrinsicLowering.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
LatencyPriorityQueue.h Fix some register-alias-related bugs in the post-RA scheduler liveness 2008-12-16 03:25:46 +00:00
LinkAllAsmWriterComponents.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
LinkAllCodegenComponents.h Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph 2009-01-15 19:20:50 +00:00
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 Fix the name of an argument. 2009-01-26 20:27:11 +00:00
LiveVariables.h Fix PR3243: a LiveVariables bug. When HandlePhysRegKill is checking whether the last reference is also the last def (i.e. dead def), it should also check if last reference is the current machine instruction being processed. This can happen when it is processing a physical register use and setting the current machine instruction as sub-register's last ref. 2009-01-20 21:25:12 +00:00
MachineBasicBlock.h Reapply 68073, with fixes. EH Landing-pad basic blocks are not 2009-03-31 18:39:13 +00:00
MachineCodeEmitter.h Add support to the JIT for true non-lazy operation. When a call to a function 2009-02-18 08:31:02 +00:00
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 Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
MachineFrameInfo.h Fix a bunch of Doxygen syntax issues. Escape special characters, 2009-03-03 02:55:14 +00:00
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 Factor out the code to add a MachineOperand to a MachineInstrBuilder. 2009-02-18 05:45:50 +00:00
MachineJumpTableInfo.h Fix more -Wshorten-64-to-32 warnings. 2008-05-05 18:30:58 +00:00
MachineLocation.h Switch the MachineOperand accessors back to the short names like 2008-10-03 15:45:36 +00:00
MachineLoopInfo.h Eliminate several more unnecessary intptr_t casts. 2009-02-18 05:09:16 +00:00
MachineMemOperand.h Change the FoldingSetNodeID usage for objects which carry 2008-08-20 15:58:01 +00:00
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 Comment MO_FPImmediate and doxygenate surrounding comments. 2008-12-23 18:20:16 +00:00
MachinePassRegistry.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineRegisterInfo.h Add empty() methods for register def lists. 2009-01-07 22:28:56 +00:00
MachineRelocation.h Fix MachineCodeEmitter to use uintptr_t instead of intptr_t. This avoids some overflow issues. Patch by Thomas Jablin. 2008-12-10 02:32:19 +00:00
MachORelocation.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
Passes.h Implement stack protectors as function attributes: "ssp" and "sspreq". 2008-11-13 01:02:14 +00:00
PseudoSourceValue.h Have PseudoSourceValue override Value::dump, so that it works 2008-12-03 21:37:21 +00:00
RegAllocRegistry.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
RegisterCoalescer.h Fix a bunch of Doxygen syntax issues. Escape special characters, 2009-03-03 02:55:14 +00:00
RegisterScavenging.h Don't pass BitVectors by value, pass them by reference. 2009-02-06 09:16:15 +00:00
RuntimeLibcalls.h Few targets like PIC16 wants libcall generation for illegal type i16. 2009-01-18 18:25:27 +00:00
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 Initial hazard recognizer support in post-pass scheduling. This includes 2009-01-16 01:33:36 +00:00
SchedulerRegistry.h When scheduling a block in parts, keep track of the overall 2009-02-11 04:27:20 +00:00
SelectionDAG.h Remove the obsolete SelectionDAG::getNodeValueTypes and simplify 2009-04-09 23:54:40 +00:00
SelectionDAGISel.h When scheduling a block in parts, keep track of the overall 2009-02-11 04:27:20 +00:00
SelectionDAGNodes.h Change SelectionDAG type legalization to allow BUILD_VECTOR operands to be 2009-04-13 22:05:19 +00:00
ValueTypes.h Fix PR3453 and probably a bunch of other potential 2009-02-01 18:06:53 +00:00
ValueTypes.td Added support for vector widening. 2008-12-18 20:03:17 +00:00