summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86DomainReassignment.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [X86] Refactor DomainReassignment pass to make the Closure class not stores ↵Craig Topper2017-12-201-78/+89
| | | | | | | | | | | | references to the main data structures of the pass itself Multiple Closure objects can be created and stored for a single function. It's not a good idea to devote so many fields of it to storing pointers and references to global data structures of the pass. The closure class should only store the things needed to represent the closure itself. This patch refactors many of the methods of Closure to belong to the pass object and to pass around a reference to the current Closure. The Closure class gains a few simple methods to add instructions and edges, and to return iterators to edges and instructions Differential Revision: https://reviews.llvm.org/D41327 llvm-svn: 321213
* [X86DomainReassignment] Store legal domains in a std::bitset instead of ↵Craig Topper2017-12-171-16/+18
| | | | | | using a SmallVector that really only ever has one element as a set. llvm-svn: 320940
* MachineFunction: Return reference from getFunction(); NFCMatthias Braun2017-12-151-1/+1
| | | | | | The Function can never be nullptr so we can return a reference. llvm-svn: 320884
* Remove redundant includes from lib/Target/X86.Michael Zolotukhin2017-12-131-1/+0
| | | | llvm-svn: 320636
* [X86] Fix a bug in handling GRXX subclasses in Domain Reassignment passGuy Blank2017-12-051-4/+4
| | | | | | | | | | | When trying to determine the correct Mask register class corresponding to a GPR register class, not all register classes were handled. This caused an assertion to be raised on some scenarios. Differential Revision: https://reviews.llvm.org/D40290 llvm-svn: 319745
* Fix a bunch more layering of CodeGen headers that are in TargetDavid Blaikie2017-11-171-1/+1
| | | | | | | | All these headers already depend on CodeGen headers so moving them into CodeGen fixes the layering (since CodeGen depends on Target, not the other way around). llvm-svn: 318490
* Fix a -Wpedantic warning.Haojian Wu2017-10-231-1/+1
| | | | llvm-svn: 316315
* [X86] Add a pass to convert instruction chains between domains.Guy Blank2017-10-221-0/+752
The pass scans the function to find instruction chains that define registers in the same domain (closures). It then calculates the cost of converting the closure to another domain. If found profitable, the instructions are converted to instructions in the other domain and the register classes are changed accordingly. This commit adds the pass infrastructure and a simple conversion from the GPR domain to the Mask domain. Differential Revision: https://reviews.llvm.org/D37251 Change-Id: Ic2cf1d76598110401168326d411128ae2580a604 llvm-svn: 316288
OpenPOWER on IntegriCloud