summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Make AttributeSet::getFnAttributes() return an AttributeSet instead of an ↵Bill Wendling2013-01-215-20/+45
| | | | | | | | | Attribute. This is more code to isolate the use of the Attribute class to that of just holding one attribute instead of a collection of attributes. llvm-svn: 173094
* Transform (sub 0, (zext bool to A)) to (sext bool to A) andPaul Redmond2013-01-211-0/+10
| | | | | | | | | (sub 0, (sext bool to A)) to (zext bool to A). Patch by Muhammad Ahmad Reviewed by Duncan Sands llvm-svn: 173093
* Fix some incorrectly named u10 / lu10 instructions.Richard Osborne2013-01-211-25/+12
| | | | llvm-svn: 173090
* Remove unused multiclass.Richard Osborne2013-01-211-12/+0
| | | | llvm-svn: 173087
* Add instruction encodings / disassembly support for u6 / lu6 instructions.Richard Osborne2013-01-212-59/+42
| | | | llvm-svn: 173086
* Add instruction encoding / disassembly support for ru6 / lru6 instructions.Richard Osborne2013-01-213-94/+97
| | | | llvm-svn: 173085
* Use correct format for the LDAWCP instruction (u6).Richard Osborne2013-01-211-7/+3
| | | | llvm-svn: 173083
* Fix a heinous inefficiency introduced in r149918, wherein reading each byte of aChris Lattner2013-01-211-9/+8
| | | | | | | | BLOB (i.e., large, performance intensive data) in a bitcode file was switched to invoking one virtual method call per byte read. Now we do one virtual call per BLOB. llvm-svn: 173065
* Introduce a new data structure, the SparseMultiSet, and changes to the MI ↵Michael Ilseman2013-01-211-45/+33
| | | | | | | | scheduler to use it. A SparseMultiSet adds multiset behavior to SparseSet, while retaining SparseSet's desirable properties. Essentially, SparseMultiSet provides multiset behavior by storing its dense data in doubly linked lists that are inlined into the dense vector. This allows it to provide good data locality as well as vector-like constant-time clear() and fast constant time find(), insert(), and erase(). It also allows SparseMultiSet to have a builtin recycler rather than keeping SparseSet's behavior of always swapping upon removal, which allows it to preserve more iterators. It's often a better alternative to a SparseSet of a growable container or vector-of-vector. llvm-svn: 173064
* wean Blob handling logic off of banging on NextChar directly. Instead, makeChris Lattner2013-01-211-10/+13
| | | | | | | it reason about the current bit position, which is always independent of the underlying cursors word size. llvm-svn: 173063
* rename "SkipToWord" to "SkipToFourByteBoundary" since a word is not always 4 ↵Chris Lattner2013-01-211-3/+3
| | | | | | bytes. llvm-svn: 173062
* Fix a comment. Induction vars dont need to start at zero.Nadav Rotem2013-01-211-1/+1
| | | | llvm-svn: 173061
* R600/SI: Use unnormalized coordinates for sampling with the RECT target.Tom Stellard2013-01-212-0/+13
| | | | | | | | | Patch by: Michel Dänzer Reviewed-by: Tom Stellard <thomas.stellard@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> llvm-svn: 173053
* R600/SI: Take target parameter for sample intrinsics.Tom Stellard2013-01-212-4/+4
| | | | | | | | | Patch by: Michel Dänzer Reviewed-by: Tom Stellard <thomas.stellard@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> llvm-svn: 173052
* R600/SI: Derive all sample intrinsics from a single class.Tom Stellard2013-01-211-3/+5
| | | | | | | | | Patch by: Michel Dänzer Reviewed-by: Tom Stellard <thomas.stellard@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> llvm-svn: 173051
* R600/SILowerControlFlow.cpp: Fix a warning. [-Wunused-variable]NAKAMURA Takumi2013-01-211-3/+2
| | | | llvm-svn: 173040
* Switch CodeMetrics itself over to use TTI to determine if an instructionChandler Carruth2013-01-215-88/+27
| | | | | | | | | | | | is free. The whole CodeMetrics API should probably be reworked more, but this is enough to allow deleting the duplicate code there for computing whether an instruction is free. All of the passes using this have been updated to pull in TTI and hand it to the CodeMetrics stuff. Further, a dead CodeMetrics API (analyzeFunction) is nuked for lack of users. llvm-svn: 173036
* Sink InlineCost.cpp into IPA -- it is now officially an interproceduralChandler Carruth2013-01-213-1/+1
| | | | | | | | | | analysis. How cute that it wasn't previously. ;] Part of this confusion stems from the flattened header file tree. Thanks to Benjamin for pointing out the goof on IRC, and we're considering un-flattening the headers, so speak now if that would bug you. llvm-svn: 173033
* Move the inline cost analysis's primary cost query to TTI instead of theChandler Carruth2013-01-211-4/+4
| | | | | | | | old CodeMetrics system. TTI has the specific advantage of being extensible and customizable by targets to reflect target-specific cost metrics. llvm-svn: 173032
* Now that the inline cost analysis is a pass, we can easily have itChandler Carruth2013-01-211-12/+20
| | | | | | | | | | | depend on and use other analyses (as long as they're either immutable passes or CGSCC passes of course -- nothing in the pass manager has been fixed here). Leverage this to thread TargetTransformInfo down through the inline cost analysis. No functionality changed here, this just threads things through. llvm-svn: 173031
* Make the inline cost a proper analysis pass. This remains essentiallyChandler Carruth2013-01-213-26/+57
| | | | | | | | | | | | | | | | a dynamic analysis done on each call to the routine. However, now it can use the standard pass infrastructure to reference other analyses, instead of a silly setter method. This will become more interesting as I teach it about more analysis passes. This updates the two inliner passes to use the inline cost analysis. Doing so highlights how utterly redundant these two passes are. Either we should find a cheaper way to do always inlining, or we should merge the two and just fiddle with the thresholds to get the desired behavior. I'm leaning increasingly toward the latter as it would also remove the Inliner sub-class split. llvm-svn: 173030
* Formatting and comment fixes to the always inliner.Chandler Carruth2013-01-211-25/+28
| | | | | | Formatting fixes brought to you by clang-format. llvm-svn: 173029
* Clean up the formatting and doxygen for the simple inliner a bit. NoChandler Carruth2013-01-211-18/+29
| | | | | | functionality changed. llvm-svn: 173028
* Use <0 checks in place of ==-1 because it results in simpler code.Craig Topper2013-01-211-3/+3
| | | | llvm-svn: 173010
* Use MVT instead of EVT in LowerVECTOR_SHUFFLEtoBlend.Craig Topper2013-01-211-6/+5
| | | | llvm-svn: 173009
* Remove trailing whitespace.Craig Topper2013-01-211-9/+9
| | | | llvm-svn: 173008
* Fix some 80 column violations.Craig Topper2013-01-211-7/+9
| | | | llvm-svn: 173006
* Make helper method static.Craig Topper2013-01-212-4/+2
| | | | llvm-svn: 173005
* Introduce a generic interface for querying an operation's expectedChandler Carruth2013-01-211-1/+122
| | | | | | | | | | | | | | | lowered cost. Currently, this is a direct port of the logic implementing isInstructionFree in CodeMetrics. The hope is that the interface can be improved (f.ex. supporting un-formed instruction queries) and the implementation abstracted so that as we have test cases and target knowledge we can expose increasingly accurate heuristics to clients. I'll start switching existing consumers over and kill off the routine in CodeMetrics in subsequent commits. llvm-svn: 172998
* Convert more EVT's to MVT's in the lowering methods.Craig Topper2013-01-201-23/+24
| | | | llvm-svn: 172995
* Capitalize lowerTRUNCATE so that it matches the other lower functions in ↵Craig Topper2013-01-202-3/+3
| | | | | | this file despite it not matching coding standards. llvm-svn: 172994
* Revert CostTable algorithm, will re-writeRenato Golin2013-01-202-111/+102
| | | | llvm-svn: 172992
* LoopVectorize: Fix a C++11 incompatibility.Benjamin Kramer2013-01-201-1/+1
| | | | llvm-svn: 172990
* Add instruction encodings / disassembly support for l2rus instructions.Richard Osborne2013-01-203-23/+81
| | | | llvm-svn: 172987
* Add instruction encodings / disassembly support for l3r instructions.Richard Osborne2013-01-203-56/+172
| | | | llvm-svn: 172986
* Add instruction encodings / disassembler support for 2rus instructions.Richard Osborne2013-01-203-23/+90
| | | | llvm-svn: 172985
* Add instruction encodings / disassembly support 3r instructions.Richard Osborne2013-01-203-85/+167
| | | | | | | | It is not possible to distinguish 3r instructions from 2r / rus instructions using only the fixed bits. Therefore if an instruction doesn't match the 2r / rus format try to decode it as a 3r instruction before returning Fail. llvm-svn: 172984
* Fix a build error.Nadav Rotem2013-01-201-2/+3
| | | | llvm-svn: 172971
* Make LowerVSETCC a static function and use MVT instead of EVT.Craig Topper2013-01-202-63/+65
| | | | llvm-svn: 172969
* Revert 172708.Nadav Rotem2013-01-203-40/+10
| | | | | | | | | The optimization handles esoteric cases but adds a lot of complexity both to the X86 backend and to other backends. This optimization disables an important canonicalization of chains of SEXT nodes and makes SEXT and ZEXT asymmetrical. Disabling the canonicalization of consecutive SEXT nodes into a single node disables other DAG optimizations that assume that there is only one SEXT node. The AVX mask optimizations is one example. Additionally this optimization does not update the cost model. llvm-svn: 172968
* LoopVectorizer: Implement a new heuristics for selecting the unroll factor.Nadav Rotem2013-01-201-22/+65
| | | | | | | We ignore the cpu frontend and focus on pipeline utilization. We do this because we don't have a good way to estimate the loop body size at the IR level. llvm-svn: 172964
* trivial micro-optimization: lazily call the virtual method instead of ↵Chris Lattner2013-01-201-1/+1
| | | | | | eagerly calling it. llvm-svn: 172953
* convert the bitstream reader itself and the IR .bc file parser to use the ↵Chris Lattner2013-01-202-248/+214
| | | | | | | | new advance() APIs, simplifying things and making a bunch of details more private to BitstreamCursor. llvm-svn: 172947
* The last of PR14471 - emission of constant floatsDavid Blaikie2013-01-202-4/+19
| | | | llvm-svn: 172941
* stringref'ize readRecord and properly capitalize it. Add a compatibility ↵Chris Lattner2013-01-201-6/+7
| | | | | | | | method to easy the transition. llvm-svn: 172940
* Make some helper methods static.Craig Topper2013-01-202-9/+3
| | | | llvm-svn: 172936
* Remove DebugLoc argument from static function. It can easily be obtained ↵Craig Topper2013-01-201-4/+5
| | | | | | from the SVOp passed in. llvm-svn: 172935
* Use MVT instead of EVT in more instruction lowering code.Craig Topper2013-01-201-17/+17
| | | | llvm-svn: 172933
* move some private methods out of line, add a skipRecord() method.Chris Lattner2013-01-201-3/+111
| | | | llvm-svn: 172931
* Use MVT instead of EVT in more of the shuffle lowering code.Craig Topper2013-01-191-15/+15
| | | | llvm-svn: 172930
OpenPOWER on IntegriCloud