llvm-6502/include/llvm
Nate Begeman abc0199680 Adapt the x86 build_vector dagcombine to the current state of the legalizer.
build vectors with i64 elements will only appear on 32b x86 before legalize.
Since vector widening occurs during legalize, and produces i64 build_vector 
elements, the dag combiner is never run on these before legalize splits them
into 32b elements.

Teach the build_vector dag combine in x86 back end to recognize consecutive 
loads producing the low part of the vector.

Convert the two uses of TLI's consecutive load recognizer to pass LoadSDNodes
since that was required implicitly.

Add a testcase for the transform.

Old:
	subl	$28, %esp
	movl	32(%esp), %eax
	movl	4(%eax), %ecx
	movl	%ecx, 4(%esp)
	movl	(%eax), %eax
	movl	%eax, (%esp)
	movaps	(%esp), %xmm0
	pmovzxwd	%xmm0, %xmm0
	movl	36(%esp), %eax
	movaps	%xmm0, (%eax)
	addl	$28, %esp
	ret

New:
	movl	4(%esp), %eax
	pmovzxwd	(%eax), %xmm0
	movl	8(%esp), %eax
	movaps	%xmm0, (%eax)
	ret




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72957 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05 21:37:30 +00:00
..
ADT fix build on VC++2k8. 2009-06-02 20:32:59 +00:00
Analysis Move SCEVExpander::getOrInsertCanonicalInductionVariable out of line. 2009-06-05 16:35:53 +00:00
Assembly
Bitcode Give embedded metadata its own type instead of relying on EmptyStructTy. 2009-05-30 05:06:04 +00:00
CodeGen Use uint8_t and int32_t in {JIT,Machine}CodeEmiters 2009-06-04 00:15:51 +00:00
CompilerDriver
Config Properly detect malloc_zone_statistics in CMake build system 2009-06-04 17:22:52 +00:00
Debugger
ExecutionEngine Use uint8_t and int32_t in {JIT,Machine}CodeEmiters 2009-06-04 00:15:51 +00:00
Support Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
System Fix comments. 2009-06-04 08:18:25 +00:00
Target Adapt the x86 build_vector dagcombine to the current state of the legalizer. 2009-06-05 21:37:30 +00:00
Transforms Re-apply 70645, converting ScalarEvolution to use 2009-05-04 22:30:44 +00:00
AbstractTypeUser.h Another attempt at fixing PR2975. 2009-04-07 17:23:02 +00:00
Argument.h
Attributes.h Add new function attribute - noredzone. 2009-06-04 22:05:33 +00:00
AutoUpgrade.h
BasicBlock.h
CallGraphSCCPass.h
CallingConv.h
CMakeLists.txt CMake: Have generated Xcode projects also contain the LLVM header files. 2009-04-01 15:40:21 +00:00
Constant.h
Constants.h Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
DerivedTypes.h
Function.h
GlobalAlias.h
GlobalValue.h available_externall linkage is not local, this was confusing the codegenerator, 2009-05-23 14:06:57 +00:00
GlobalVariable.h
InlineAsm.h
InstrTypes.h Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
Instruction.def Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
Instruction.h Allow readonly functions to unwind exceptions. Teach 2009-05-06 06:49:50 +00:00
Instructions.h Remove getType() overrides for ExtractValueInst and InsertValueInst. 2009-05-18 18:46:57 +00:00
IntrinsicInst.h
Intrinsics.h
Intrinsics.td Update the names of the exception handling sjlj instrinsics to 2009-05-14 00:46:35 +00:00
IntrinsicsAlpha.td
IntrinsicsARM.td
IntrinsicsCellSPU.td
IntrinsicsPowerPC.td
IntrinsicsX86.td
IntrinsicsXCore.td
LinkAllPasses.h
LinkAllVMCore.h
Linker.h
MDNode.h Give embedded metadata its own type instead of relying on EmptyStructTy. 2009-05-30 05:06:04 +00:00
Module.h
ModuleProvider.h
OperandTraits.h
Pass.h Remove dead code. 2009-04-01 21:27:08 +00:00
PassAnalysisSupport.h Simplify assertion message to avoid confusion. 2009-06-02 17:26:29 +00:00
PassManager.h
PassManagers.h Clean up pass manager cache after each run. 2009-04-01 22:34:41 +00:00
PassSupport.h
SymbolTableListTraits.h
Type.h Give embedded metadata its own type instead of relying on EmptyStructTy. 2009-05-30 05:06:04 +00:00
TypeSymbolTable.h Fixed spelling. 2009-04-01 16:13:29 +00:00
Use.h Add a comment to refer to the section of the programmer's manual that explains what the pointer tagging in Use is for. 2009-04-30 23:28:50 +00:00
User.h
Value.h Add support for embedded metadata to LLVM. This introduces two new types of 2009-04-04 07:22:01 +00:00
ValueSymbolTable.h