summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon
Commit message (Collapse)AuthorAgeFilesLines
...
* [Hexagon] Use general purpose registers to spill pred/mod registers intoKrzysztof Parzyszek2016-01-224-78/+310
| | | | | | Patch by Tobias Edler Von Koch. llvm-svn: 258527
* PR26172: unnecessary indirection in HexagonCopyToCombine.cppKrzysztof Parzyszek2016-01-211-1/+1
| | | | llvm-svn: 258395
* Fixed MSVC Win64 warning of implicit conversion of 32-bit shift to 64-bits.Simon Pilgrim2016-01-181-1/+1
| | | | llvm-svn: 258084
* [Hexagon] Recognize more copy-equivalents in RDF optimizationsKrzysztof Parzyszek2016-01-181-14/+59
| | | | llvm-svn: 258076
* [RDF] Improvements to copy propagationKrzysztof Parzyszek2016-01-182-72/+145
| | | | | | | - Allow any instruction to define equality between registers. - Keep the DFG updated. llvm-svn: 258075
* [RDF] Improve compile-time performance of dead code eliminationKrzysztof Parzyszek2016-01-182-12/+42
| | | | llvm-svn: 258074
* [RDF] Allow unlinking ref nodes from data-flow chains onlyKrzysztof Parzyszek2016-01-183-14/+23
| | | | llvm-svn: 258073
* GlobalValue: use getValueType() instead of getType()->getPointerElementType().Manuel Jacob2016-01-161-1/+1
| | | | | | | | | | | | Reviewers: mjacob Subscribers: jholewinski, arsenm, dsanders, dblaikie Patch by Eduard Burtescu. Differential Revision: http://reviews.llvm.org/D16260 llvm-svn: 257999
* [Hexagon] Generate CONST64 when optimizing for size in copy-to-combineKrzysztof Parzyszek2016-01-151-11/+64
| | | | llvm-svn: 257891
* [Hexagon] Handle DBG_VALUE instructions in copy-to-combineKrzysztof Parzyszek2016-01-151-7/+49
| | | | llvm-svn: 257890
* [Hexagon] Use S2_lsr_i_r instead of S2_extractu to obtain upper halfwordKrzysztof Parzyszek2016-01-141-3/+2
| | | | llvm-svn: 257815
* [Hexagon] Handle HVX registers in bit simplificationKrzysztof Parzyszek2016-01-141-0/+6
| | | | llvm-svn: 257811
* Update to use new name alignTo().Rui Ueyama2016-01-141-2/+2
| | | | llvm-svn: 257804
* [Hexagon] Expand pseudo instruction Insert4Krzysztof Parzyszek2016-01-141-0/+30
| | | | llvm-svn: 257771
* [Hexagon] Handle branches with non-mbb operandsKrzysztof Parzyszek2016-01-142-0/+7
| | | | llvm-svn: 257768
* Convert a few assert failures into proper errors.Rafael Espindola2016-01-131-3/+4
| | | | | | Fixes PR25944. llvm-svn: 257697
* [Hexagon] Fix the options controlling jump table generationKrzysztof Parzyszek2016-01-131-2/+2
| | | | llvm-svn: 257679
* [Hexagon] Do not insert non-phis before phis in bit simplificationKrzysztof Parzyszek2016-01-131-7/+19
| | | | llvm-svn: 257606
* Replace inherited constructor with an explicit oneKrzysztof Parzyszek2016-01-121-2/+2
| | | | | | Some bots failed when the inherited constructor was used. llvm-svn: 257508
* [Hexagon] Implement RDF-based post-RA optimizationsKrzysztof Parzyszek2016-01-125-2/+372
| | | | | | | | - Handle simple cases of register copies (what current RDF CP allows). - Hexagon-specific dead code elimination: handles dead address updates in post-increment instructions. llvm-svn: 257504
* RDF: Copy propagationKrzysztof Parzyszek2016-01-123-0/+229
| | | | | | | | | | This is a very limited implementation of DFG-based copy propagation. It only handles actual COPY instructions (does not handle other equivalents such as add-immediate with a 0 operand). The major limitation is that it does not update the DFG: that will be the change required to make it more robust (hopefully coming up soon). llvm-svn: 257490
* RDF: Dead code eliminationKrzysztof Parzyszek2016-01-123-0/+270
| | | | | | Utility class to perform DFG-based dead code elimination. llvm-svn: 257485
* Fix compiler warnings from r257477Krzysztof Parzyszek2016-01-121-2/+2
| | | | llvm-svn: 257483
* RDF: Implement register liveness analysisKrzysztof Parzyszek2016-01-123-0/+955
| | | | | | Compute block live-ins and operand kill flags from the DFG. llvm-svn: 257480
* Register Data Flow: data flow graphKrzysztof Parzyszek2016-01-123-0/+2558
| | | | | | | | | Target independent, SSA-based data flow framework for representing data flow between physical registers. This commit implements the creation of the actual data flow graph. llvm-svn: 257477
* [Hexagon] Make helper function static. NFC.Benjamin Kramer2016-01-121-3/+3
| | | | llvm-svn: 257476
* [Hexagon] Add check for nullptr in getFixupNoBitsKrzysztof Parzyszek2016-01-111-15/+15
| | | | llvm-svn: 257338
* [Hexagon] Add implicit uses of GP to GP-relative loads and storesKrzysztof Parzyszek2016-01-111-1/+3
| | | | llvm-svn: 257337
* [Hexagon] Mark D14 and GP as reserved registersKrzysztof Parzyszek2016-01-111-0/+2
| | | | llvm-svn: 257336
* [Hexagon] Replace a static member variable in HexagonCVIResource (NFC)Tobias Edler von Koch2016-01-082-20/+19
| | | | | | | This creates one instance of TUL per HexagonShuffler, which avoids thread-safety issues with future changes. llvm-svn: 257215
* [Hexagon] Add system instructions for cache manipulationKrzysztof Parzyszek2016-01-062-0/+115
| | | | llvm-svn: 256936
* [TableGen] Modify the AsmMatcherEmitter to only apply the table growth from ↵Craig Topper2015-12-311-0/+5
| | | | | | | | | | | | | | r252440 to the Hexagon target. This restores the previous behavior of not including the mnemonic in the classes table for every target that starts instruction lines with the mnemonic. Not only did the table size increase by 1 entry, but the class enum increased in size which caused every class in the array to increase in size. It also grew the size of the function that parsers tokens into classes by a substantial amount. This adds a new HasMnemonicFirst flag to all AsmParsers. It's set to 1 by default and Hexagon target overrides it to 0. For the X86 target alone this recovers 324KB of size on the llvm-mc executable. I believe the current state is still a bad design choice for the Hexagon target as it causes most of the parsing to do a linear search through the entire match table to comparing operands against every instruction until it finds one that works. At least for the other targets we do a binary search based on mnemonic over which to do the linear scan. llvm-svn: 256669
* [Hexagon] Add PIC supportKrzysztof Parzyszek2015-12-187-153/+155
| | | | llvm-svn: 256025
* [Hexagon] Misc fixes to r255807Krzysztof Parzyszek2015-12-161-8/+3
| | | | llvm-svn: 255811
* [Hexagon] Update the Hexagon packetizerKrzysztof Parzyszek2015-12-164-888/+1235
| | | | llvm-svn: 255807
* [Hexagon] Make memcpy lowering thread-safeTobias Edler von Koch2015-12-163-21/+38
| | | | | | | | This removes an unpleasant hack involving a global variable for special lowering of certain memcpy calls. These are now lowered as intended in EmitTargetCodeForMemcpy in the same way that other targets do it. llvm-svn: 255785
* [Hexagon] Preprocess mapped instructions before lowering to MCKrzysztof Parzyszek2015-12-153-3/+391
| | | | llvm-svn: 255653
* [Hexagon] Add "const" to function parameters in HexagonInstrInfoKrzysztof Parzyszek2015-12-142-35/+37
| | | | llvm-svn: 255544
* [Packetizer] Add AliasAnalysis as a parameter to the packetizerKrzysztof Parzyszek2015-12-141-1/+1
| | | | | | | | This will make the depedence graph more accurate if an alias analysis is provided. If nullptr is specified in its place, the behavior will remain as it is currently. llvm-svn: 255540
* Add "const" to function arguments in DFAPacketizerKrzysztof Parzyszek2015-12-141-7/+7
| | | | llvm-svn: 255526
* [Hexagon] Subtarget features/default CPU correctionsKrzysztof Parzyszek2015-12-146-15/+22
| | | | llvm-svn: 255501
* Normalize MBB's successors' probabilities in several locations.Cong Hou2015-12-131-1/+2
| | | | | | | | | | | | This patch adds some missing calls to MBB::normalizeSuccProbs() in several locations where it should be called. Those places are found by checking if the sum of successors' probabilities is approximate one in MachineBlockPlacement pass with some instrumented code (not in this patch). Differential revision: http://reviews.llvm.org/D15259 llvm-svn: 255455
* [Hexagon] Add NewValueJump support for C4_cmpneq, C4_cmplte, C4_cmplteuRon Lieberman2015-12-081-0/+18
| | | | llvm-svn: 255027
* fix 'the the '; NFCSanjay Patel2015-12-072-2/+2
| | | | llvm-svn: 254928
* Use make_range to reduce mentions of iterator type. NFCCraig Topper2015-12-061-2/+1
| | | | llvm-svn: 254872
* [Hexagon] Don't call getNumImplicitDefs and then iterate over the count. ↵Craig Topper2015-12-051-24/+25
| | | | | | getNumImplicitDefs contains a loop so its better to just loop over the null terminated implicit def list. NFC llvm-svn: 254852
* Replace uint16_t with the MCPhysReg typedef in many places. A lot of ↵Craig Topper2015-12-055-32/+32
| | | | | | physical register arrays already use this typedef. llvm-svn: 254843
* [Hexagon] Simplify LowerCONCAT_VECTORS, handle different types betterKrzysztof Parzyszek2015-12-041-58/+55
| | | | llvm-svn: 254724
* [Hexagon] Using multiply instead of shift on signed number which can be UBColin LeMahieu2015-12-041-2/+2
| | | | llvm-svn: 254719
* [Hexagon] Adding shuffling resources for HVX instructions and tests for ↵Colin LeMahieu2015-12-032-7/+131
| | | | | | instruction encodings. llvm-svn: 254652
OpenPOWER on IntegriCloud