summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
...
* [NVPTX] Emit .weak when linkage is not external, internal, or privateJustin Holewinski2014-06-271-0/+7
| | | | llvm-svn: 211926
* [NVPTX] Just use getTypeAllocSize() when computing return value size for ↵Justin Holewinski2014-06-271-17/+1
| | | | | | structures and vectors llvm-svn: 211925
* [x86] Fix a miscompile in the new shuffle lowering uncovered byChandler Carruth2014-06-271-13/+13
| | | | | | | | | a bootstrap. I managed to mis-remember how PACKUS worked on x86, and was using undef for the high bytes instead of zero. The fix is fairly obvious. llvm-svn: 211922
* R600: Move trivial getters into header, use initializer listMatt Arsenault2014-06-272-95/+82
| | | | llvm-svn: 211917
* [FastISel][X86] Fix typos.Juergen Ributzka2014-06-271-13/+13
| | | | llvm-svn: 211911
* R600: Don't crash on unhandled instruction in promote allocaMatt Arsenault2014-06-271-2/+24
| | | | llvm-svn: 211906
* Clean up unused variable warning in release build.Alexander Kornienko2014-06-271-0/+1
| | | | llvm-svn: 211902
* [PowerPC] Constrain base register in PPCRegisterInfo::resolveFrameIndexUlrich Weigand2014-06-271-0/+8
| | | | | | | | | | | | | | | | | | | | | | I've run into a bug where current LLVM at -O0 (with fast-isel) generated invalid code like: ld 0, 20936(1) # 8-byte Folded Reload stw 12, 10348(0) stw 12, 10344(0) The underlying vreg had been introduced as base register by the Local Stack Slot Allocation pass. That register was constrained to G8RC by PPCRegisterInfo::materializeFrameBaseRegister to match the ADDI instruction used to set it, but it was *not* constrained to G8RC_NOX0 to fit the *use* of the register in an address. That should have happened in PPCRegisterInfo::resolveFrameIndex. This patch adds an appropriate constrainRegClass call. Reviewed by Hal Finkel. llvm-svn: 211897
* [x86] Clean up some unused variables, especially in release builds.Chandler Carruth2014-06-271-9/+6
| | | | llvm-svn: 211894
* [x86] Teach the target combine step to aggressively fold pshufd insturcions.Chandler Carruth2014-06-271-11/+77
| | | | | | | | | | | | | Summary: This allows it to fold pshufd instructions across intervening half-shuffles and other noise. This pattern actually shows up in the generic lowering tests, but I've also added direct tests using intrinsics to make sure that the specific desired functionality is working even if the lowering stuff changes in the future. Differential Revision: http://reviews.llvm.org/D4292 llvm-svn: 211892
* [x86] Teach the target-specific combining how to aggressively foldChandler Carruth2014-06-271-0/+90
| | | | | | | | | | | | | | | | | | half-shuffles, even looking through intervening instructions in a chain. Summary: This doesn't happen to show up with any test cases I've found for the current shuffle lowering, but previous attempts would benefit from this and it seems generally useful. I've tested it directly using intrinsics, which also shows that it will work with hand vectorized code as well. Note that even though pshufd isn't directly used in these tests, it gets exercised because we combine some of the half shuffles into a pshufd first, and then merge them. Differential Revision: http://reviews.llvm.org/D4291 llvm-svn: 211890
* [x86] Teach the X86 backend to DAG-combine SSE2 shuffles that areChandler Carruth2014-06-271-1/+101
| | | | | | | | | | | | | | | | | trivially redundant. This fixes several cases in the new vector shuffle lowering algorithm which would generate redundant shuffle instructions for the sake of simplicity. I'm also deleting a testcase which was somewhat ridiculous. It was checking for a bug in 2007 about incorrectly transforming shuffles by looking for the string "-86" in the output of a pretty substantial function. This test case doesn't seem to have any value at this point. Differential Revision: http://reviews.llvm.org/D4240 llvm-svn: 211889
* [x86] Begin a significant overhaul of how vector lowering is done in theChandler Carruth2014-06-271-0/+1029
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x86 backend. This sketches out a new code path for vector lowering, hidden behind an off-by-default flag while it is under development. The fundamental idea behind the new code path is to aggressively break down the problem space in ways that ease selecting the odd set of instructions available on x86, and carefully avoid scalarizing code even when forced to use older ISAs. Notably, this starts off restricting itself to SSE2 and implements the complete vector shuffle and blend space for 128-bit vectors in SSE2 without scalarizing. The plan is to layer on top of this ISA extensions where we can bail out of the complex SSE2 lowering and opt for a cheaper, specialized instruction (or set of instructions). It also needs to be generalized to AVX and AVX512 vector widths. Currently, this does a decent but not perfect job for SSE2. There are some specific shortcomings that I plan to address: - We need a peephole combine to fold together shuffles where possible. There are cases where a previous shuffle could be modified slightly to arrange for elements to be in the correct position and a later shuffle eliminated. Doing this eagerly added quite a bit of complexity, and so my plan is to combine away these redundancies afterward. - There are a lot more clever ways to use unpck and pack that need to be added. This is essential for real world shuffles as it turns out... Once SSE2 is polished a bit I should be able to get interesting numbers on performance improvements on benchmarks conducive to vectorization. All of this will be off by default until it is functionally equivalent of course. Differential Revision: http://reviews.llvm.org/D4225 llvm-svn: 211888
* Remove the caching of the target machine from SystemZTargetLowering.Eric Christopher2014-06-272-21/+33
| | | | | | Update all callers and uses accordingly. llvm-svn: 211880
* Remove target machine caching from SystemZInstrInfo andEric Christopher2014-06-275-20/+18
| | | | | | | | SystemZRegisterInfo and replace it with the subtarget as that's all they needed in the first place. Update all uses and calls accordingly. llvm-svn: 211877
* Have SystemZSelectionDAGInfo constructor take a DataLayout ratherEric Christopher2014-06-273-6/+4
| | | | | | | than a target machine since it doesn't need anything past the DataLayout. llvm-svn: 211870
* Rename getX86ConditonCode -> getX86ConditionCodeCraig Topper2014-06-271-5/+5
| | | | llvm-svn: 211869
* Have MipsSelectionDAGInfo constructor take a DataLayout ratherEric Christopher2014-06-273-4/+4
| | | | | | | than a target machine since it doesn't need anything past the DataLayout. llvm-svn: 211863
* Move NVPTX subtarget dependent variables from the target machineEric Christopher2014-06-275-49/+70
| | | | | | to the subtarget. llvm-svn: 211860
* Use the target lowering we can get off of the DAG rather than offEric Christopher2014-06-271-1/+1
| | | | | | of the cached target machine. llvm-svn: 211858
* Fix missing newline and simplify debug printing.Matt Arsenault2014-06-271-5/+5
| | | | llvm-svn: 211850
* R600: Move load/store ReplaceNodeResults to common code.Matt Arsenault2014-06-272-14/+14
| | | | | | Future patches will want to custom lower loads on SI. llvm-svn: 211848
* Move the constructor for NVPTXFrameLowering into the implementationEric Christopher2014-06-272-5/+6
| | | | | | file in preparation for the subtarget move. llvm-svn: 211847
* Remove unnecessary caching of the TargetMachine on NVPTXFrameLowering.Eric Christopher2014-06-273-14/+17
| | | | | | Adjust the constructor accordingly. llvm-svn: 211846
* Rework the logic for setting the TargetName. This appears toEric Christopher2014-06-271-11/+5
| | | | | | be shorter and identical in goal. llvm-svn: 211845
* Remove caching of the target machine in NVPTXInstrInfo andEric Christopher2014-06-273-5/+4
| | | | | | update constructor accordingly. llvm-svn: 211840
* Remove comment that duplicated information in the constructorEric Christopher2014-06-271-6/+6
| | | | | | that it's after. llvm-svn: 211839
* Remove commented out code.Eric Christopher2014-06-271-8/+0
| | | | llvm-svn: 211838
* Remove extraneous parens and extraneous const cast (and fix theEric Christopher2014-06-271-3/+3
| | | | | | prototype for the function to patch what we were returning). llvm-svn: 211837
* Move the subtarget dependent features from the target machine toEric Christopher2014-06-274-41/+53
| | | | | | the subtarget for the MSP430 target. llvm-svn: 211836
* Remove uses and caches of the target machine and subtarget fromEric Christopher2014-06-275-19/+8
| | | | | | | | both MSP430InstrInfo and MSP430RegisterInfo. Remove unused member variable StackAlign from MSP430RegisterInfo. Update constructors accordingly. llvm-svn: 211835
* Remove caching of an unused subtarget from MSP430FrameLowering.Eric Christopher2014-06-272-8/+3
| | | | llvm-svn: 211830
* [X86] AVX512: Add vbroadcasti*Adam Nemet2014-06-271-0/+22
| | | | | | | | | For now I used a separate template for these sub-vector/tuple broadcasts rather than sharing the mem variants with avx512_int_broadcast_rm. <rdar://problem/17402869> llvm-svn: 211828
* Remove unnecessary caching of variables by MSP430TargetLowering andEric Christopher2014-06-272-14/+5
| | | | | | | make the constructor more general since it only needs a target machine. llvm-svn: 211827
* Have MSP430SelectionDAGInfo constructor take a DataLayout ratherEric Christopher2014-06-273-4/+4
| | | | | | | than a target machine since it doesn't need anything past the DataLayout. llvm-svn: 211826
* Move all of the hexagon subtarget dependent variables from the targetEric Christopher2014-06-274-29/+46
| | | | | | machine to the subtarget. llvm-svn: 211824
* Have HexagonSelectionDAGInfo take a DataLayout rather than aEric Christopher2014-06-273-6/+4
| | | | | | target machine since that's all it needs. llvm-svn: 211822
* Make HexagonISelLowering not dependent upon a HexagonTargetMachine,Eric Christopher2014-06-272-21/+25
| | | | | | but a normal TargetMachine and remove a few cached uses. llvm-svn: 211821
* Reduce indentation.Eric Christopher2014-06-271-362/+360
| | | | llvm-svn: 211820
* Remove unnecessary caching of the subtarget for HexagonFrameLowering and ↵Eric Christopher2014-06-273-8/+4
| | | | | | remove the unused constructor argument. llvm-svn: 211819
* InstrItineraryData is already on the subtarget, no reason toEric Christopher2014-06-272-10/+6
| | | | | | cache it on the target as well. llvm-svn: 211818
* Revert "Introduce a string_ostream string builder facilty"Alp Toker2014-06-266-11/+19
| | | | | | Temporarily back out commits r211749, r211752 and r211754. llvm-svn: 211814
* Move the various Subtarget dependent members down to the subtargetEric Christopher2014-06-264-65/+81
| | | | | | | | for the Sparc port. Use the same initializeSubtargetDependencies function to handle initialization similar to the other ports to handle dependencies. llvm-svn: 211811
* Have SparcSelectionDAGInfo take a DataLayout to initialize sinceEric Christopher2014-06-263-5/+5
| | | | | | that's all it needs. llvm-svn: 211810
* Remove the storage and use of the subtarget out of the sparc frameEric Christopher2014-06-262-9/+11
| | | | | | lowering code. llvm-svn: 211809
* Remove extraneous includes from the target machines.Eric Christopher2014-06-264-20/+0
| | | | llvm-svn: 211800
* Move all of the ARM subtarget features down onto the subtargetEric Christopher2014-06-264-121/+102
| | | | | | rather than the target machine. llvm-svn: 211799
* Move the frame lowering constructors out of line to avoid circularEric Christopher2014-06-264-9/+9
| | | | | | includes. llvm-svn: 211798
* R600/SI: Add FP mode bits to binary.Matt Arsenault2014-06-263-14/+128
| | | | | | | | The default rounding mode to initialize the mode register needs to be reported to the runtime. Fill in other bits a kernel may be interested in setting for future use. llvm-svn: 211791
* Silencing a warning about isZExtFree hiding an inherited virtual function. ↵Aaron Ballman2014-06-262-0/+5
| | | | | | No functional change intended. llvm-svn: 211783
OpenPOWER on IntegriCloud