summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/SSEDomainFix.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Eliminate MachineBasicBlock::const_livein_iterator and makeDan Gohman2010-04-131-1/+1
| | | | | | | | MachineBasicBlock::livein_iterator a const_iterator, because clients shouldn't ever be using the iterator interface to mutate the livein set. llvm-svn: 101147
* Fix a number of clang -Wsign-compare warnings that didn't have an obviousJohn McCall2010-04-061-1/+1
| | | | | | | solution. The only reason these don't fire with gcc-4.2 is that gcc turns off part of -Wsign-compare in C++ on accident. llvm-svn: 100581
* Don't try to collapse DomainValues onto an incompatible SSE domain.Jakob Stoklund Olesen2010-04-061-4/+12
| | | | | | This fixes the Bullet regression on i386/nocona. llvm-svn: 100553
* Clean up SSEDomainFix pass.Jakob Stoklund Olesen2010-04-041-55/+77
| | | | | | | Restrict bit mask operations to the DomainValue class. Rename methods for clarity. llvm-svn: 100353
* Switch SSEDomainFix to SpecificBumpPtrAllocator.Jakob Stoklund Olesen2010-04-041-58/+37
| | | | llvm-svn: 100332
* reduce indentation, minor cleanups.Chris Lattner2010-03-311-38/+42
| | | | llvm-svn: 100042
* Use spaces, not tabsJakob Stoklund Olesen2010-03-311-1/+1
| | | | llvm-svn: 100037
* Fix PR6750. Don't try to merge a DomainValue with itself.Jakob Stoklund Olesen2010-03-311-0/+2
| | | | llvm-svn: 100016
* Fix typo. Thank you, valgrind.Jakob Stoklund Olesen2010-03-311-1/+1
| | | | llvm-svn: 99974
* Add cross-block inference to SSEDomainFix.Jakob Stoklund Olesen2010-03-301-29/+85
| | | | llvm-svn: 99916
* Be gentle to MSVC. C++ is hard, after all.Jakob Stoklund Olesen2010-03-301-2/+3
| | | | llvm-svn: 99855
* Basic implementation of SSEDomainFix pass.Jakob Stoklund Olesen2010-03-291-13/+350
| | | | | | Cross-block inference is primitive and wrong, but the pass is working otherwise. llvm-svn: 99848
* Fix -Asserts warning, again.Daniel Dunbar2010-03-251-0/+1
| | | | llvm-svn: 99542
* Add a late SSEDomainFix pass that twiddles SSE instructions to avoid domain ↵Jakob Stoklund Olesen2010-03-251-0/+98
| | | | | | | | | | | | | | | | | | | | | | crossings. On Nehalem and newer CPUs there is a 2 cycle latency penalty on using a register in a different domain than where it was defined. Some instructions have equvivalents for different domains, like por/orps/orpd. The SSEDomainFix pass tries to minimize the number of domain crossings by changing between equvivalent opcodes where possible. This is a work in progress, in particular the pass doesn't do anything yet. SSE instructions are tagged with their execution domain in TableGen using the last two bits of TSFlags. Note that not all instructions are tagged correctly. Life just isn't that simple. The SSE execution domain issue is very similar to the ARM NEON/VFP pipeline issue handled by NEONMoveFixPass. This pass may become target independent to handle both. llvm-svn: 99524
* Revert "Add a late SSEDomainFix pass that twiddles SSE instructions to avoid ↵Jakob Stoklund Olesen2010-03-231-536/+0
| | | | | | | | domain crossings." This reverts commit 99345. It was breaking buildbots. llvm-svn: 99352
* Add a late SSEDomainFix pass that twiddles SSE instructions to avoid domain ↵Jakob Stoklund Olesen2010-03-231-0/+536
crossings. This is work in progress. So far, SSE execution domain tables are added to X86InstrInfo, and a skeleton pass is enabled with -sse-domain-fix. llvm-svn: 99345
OpenPOWER on IntegriCloud