aboutsummaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* Remove intrinsics for X86 BLSI, BLSMSK, and BLSR intrinsics and replace with ↵Craig Topper2011-10-211-16/+4
| | | | | | custom isel lowering code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142642 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement a block placement pass based on the branch probability andChandler Carruth2011-10-212-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | block frequency analyses. This differs substantially from the existing block-placement pass in LLVM: 1) It operates on the Machine-IR in the CodeGen layer. This exposes much more (and more precise) information and opportunities. Also, the results are more stable due to fewer transforms ocurring after the pass runs. 2) It uses the generalized probability and frequency analyses. These can model static heuristics, code annotation derived heuristics as well as eventual profile loading. By basing the optimization on the analysis interface it can work from any (or a combination) of these inputs. 3) It uses a more aggressive algorithm, both building chains from tho bottom up to maximize benefit, and using an SCC-based walk to layout chains of blocks in a profitable ordering without O(N^2) iterations which the old pass involves. The pass is currently gated behind a flag, and not enabled by default because it still needs to grow some important features. Most notably, it needs to support loop aligning and careful layout of loop structures much as done by hand currently in CodePlacementOpt. Once it supports these, and has sufficient testing and quality tuning, it should replace both of these passes. Thanks to Nick Lewycky and Richard Smith for help authoring & debugging this, and to Jakob, Andy, Eric, Jim, and probably a few others I'm forgetting for reviewing and answering all my questions. Writing a backend pass is *sooo* much better now than it used to be. =D git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142641 91177308-0d34-0410-b5e6-96231b3b80d8
* Delete the list-tdrr scheduler. Top-down schedulers are going awayDan Gohman2011-10-202-6/+0
| | | | | | | because they don't support physical register dependencies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142620 91177308-0d34-0410-b5e6-96231b3b80d8
* Haven't yet found a nice way to handle TargetData verification in theLang Hames2011-10-201-13/+21
| | | | | | | | | AsmParser. This patch adds validation for target data layout strings upon construction of TargetData objects. An attempt to construct a TargetData object from a malformed string will trigger an assertion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142605 91177308-0d34-0410-b5e6-96231b3b80d8
* Comment out or remove unused parameter names so as to avoid a slew ofDuncan Sands2011-10-201-63/+69
| | | | | | | compiler warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142574 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid warnings about the parameter G being unused.Duncan Sands2011-10-201-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142573 91177308-0d34-0410-b5e6-96231b3b80d8
* Refactor code from inlining and globalopt that checks whether a function ↵Eli Friedman2011-10-201-0/+6
| | | | | | definition is unused, and enhance it so it can tell that functions which are only used by a blockaddress are in fact dead. This probably doesn't happen much on most code, but the Linux kernel's _THIS_IP_ can trigger this issue with blockaddress. (GlobalDCE can also handle the given tescase, but we only run that at -O3.) Found while looking at PR11180. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142572 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove useless code.Eli Friedman2011-10-201-6/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142570 91177308-0d34-0410-b5e6-96231b3b80d8
* Add NAME MemberDavid Greene2011-10-191-0/+7
| | | | | | | | Add a Value named "NAME" to each Record. This will be set to the def or defm name when instantiating multiclasses. This will replace the #NAME# processing hack once paste functionality is in place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142518 91177308-0d34-0410-b5e6-96231b3b80d8
* Call Record InitializerDavid Greene2011-10-191-0/+2
| | | | | | Call the common Record initializer code from constructors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142509 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Name Init Record ConstructorDavid Greene2011-10-191-0/+3
| | | | | | | Add a Record constructor that takes the Record name as an Init. This is more work toward paste functionality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142508 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix 80-col ViolationDavid Greene2011-10-191-1/+3
| | | | | | Split up the initializer list for Record to avoid 80-col issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142507 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix Name CheckDavid Greene2011-10-191-4/+4
| | | | | | Avoid a potential assert by asking for record names as strings explicitly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142503 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix Name CheckDavid Greene2011-10-191-1/+1
| | | | | | | Record names may not be fully resolved at this point so ask for the record name as a string explicitly. This avoids a potential assert. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142502 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Record InitDavid Greene2011-10-191-0/+1
| | | | | | Add an init function to be shared among Record constructors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142501 91177308-0d34-0410-b5e6-96231b3b80d8
* Make Template Arg Names InitsDavid Greene2011-10-191-4/+10
| | | | | | | | Allow template arg names to be Inits. This is further work to implement paste as it allows template names to participate in paste operations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142500 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Utility to Scope NamesDavid Greene2011-10-191-0/+10
| | | | | | | | Add a couple of utility functions to take a variable name and qualify it with the namespace of the enclosing class and/or multiclass. This is inpreparation for making template arg names first-class Inits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142498 91177308-0d34-0410-b5e6-96231b3b80d8
* Make VarInit Name an InitDavid Greene2011-10-191-3/+9
| | | | | | | | Make the VarInit name an Init itself. We need this to implement paste functionality so we can reference variables whose names are not yet completely resolved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142497 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Value AccessorsDavid Greene2011-10-191-2/+9
| | | | | | | | Add accessors to get Record values by Init name. This lets us look up Record values whose names are not yet fully resolved. More work toward paste. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142496 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Name Init AccessorsDavid Greene2011-10-191-0/+7
| | | | | | | Add a utility to get the name init and get the string representation of the name. This will be used for paste functionality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142495 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Init AccessorsDavid Greene2011-10-191-0/+4
| | | | | | | Add a couple of utility functions to get at the name init and return the name init as a string. This will be used for paste functionality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142494 91177308-0d34-0410-b5e6-96231b3b80d8
* Add pass printing support to BlockFrequencyInfo pass. The implementationChandler Carruth2011-10-191-0/+1
| | | | | | | | | | | | | layer already had support for printing the results of this analysis, but the wiring was missing. Now that printing the analysis works, actually bring some of this analysis, and the BranchProbabilityInfo analysis that it wraps, under test! I'm planning on fixing some bugs and doing other work here, so having a nice place to add regression tests and a way to observe the results is really useful. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142491 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename PEXTR to PEXT. Add intrinsics for BMI instructions.Craig Topper2011-10-191-0/+34
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142480 91177308-0d34-0410-b5e6-96231b3b80d8
* Whitespace.Eric Christopher2011-10-181-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142438 91177308-0d34-0410-b5e6-96231b3b80d8
* Object/COFF: Change type from a struct to a uint16_t. The struct would beMichael J. Spencer2011-10-181-4/+9
| | | | | | incorrect for bigendian systems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142403 91177308-0d34-0410-b5e6-96231b3b80d8
* Use ARM/t2PseudoInst class from ARM/Thumb2 special adds/subs patterns.Andrew Trick2011-10-181-0/+9
| | | | | | | | | Clean up the patterns, fix comments, and avoid confusing both tools and coders. Note that the special adds/subs SelectionDAG nodes no longer have the dummy cc_out operand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142397 91177308-0d34-0410-b5e6-96231b3b80d8
* whitespaceAndrew Trick2011-10-181-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142394 91177308-0d34-0410-b5e6-96231b3b80d8
* Backing out patch. Will refactor to remove the AsmParser dependency on Target.Lang Hames2011-10-181-21/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142323 91177308-0d34-0410-b5e6-96231b3b80d8
* Object: Add some types to SymbolRef::Type.Michael J. Spencer2011-10-171-1/+3
| | | | | | | | Some of these can be true at the same time and there are a lot to add, so this should be turned into a bitfield. Some of the other accessors should probably be folded into this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142318 91177308-0d34-0410-b5e6-96231b3b80d8
* Object: Add isSymbolAbsolute and getSymbolSection.Michael J. Spencer2011-10-173-49/+75
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142317 91177308-0d34-0410-b5e6-96231b3b80d8
* Object: Add isSymbolWeak.Michael J. Spencer2011-10-174-1/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142316 91177308-0d34-0410-b5e6-96231b3b80d8
* Object/COFF: Expose more data in the public API.Michael J. Spencer2011-10-171-4/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142315 91177308-0d34-0410-b5e6-96231b3b80d8
* Object: Implement casting for concrete classes.Michael J. Spencer2011-10-172-0/+11
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142314 91177308-0d34-0410-b5e6-96231b3b80d8
* 80-col.Michael J. Spencer2011-10-171-1/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142309 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-applying the target data layout verification patch from r142288, plus ↵Lang Hames2011-10-171-13/+21
| | | | | | | | | appropriate CMake dependencies. Thanks to Raphael Espindola for tracking down the CMake issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142306 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for a new extension to the .file directive:Nick Lewycky2011-10-174-3/+18
| | | | | | | | | | | .file filenumber "directory" "filename" This removes one join+split of the directory+filename in MC internals. Because bitcode files have independent fields for directory and filenames in debug info, this patch may change the .o files written by existing .bc files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142300 91177308-0d34-0410-b5e6-96231b3b80d8
* 142288 broke the build:Rafael Espindola2011-10-171-21/+13
| | | | | | | | | | | | Linking CXX executable ../../bin/llvm-as ../../lib/libLLVMAsmParser.a(LLParser.cpp.o):/home/espindola/llvm/llvm/lib/AsmParser/LLParser.cpp:function llvm::LLParser::ParseTargetDefinition(): error: undefined reference to 'llvm::TargetData::parseSpecifier(llvm::StringRef, llvm::TargetData*)' clang-3: error: linker command failed with exit code 1 (use -v to see invocation) Revert "Validate target data layout strings." This reverts commit 599d2d4c25d3aee63a21d9c67a88cd43bd971b7e. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142296 91177308-0d34-0410-b5e6-96231b3b80d8
* Validate target data layout strings.Lang Hames2011-10-171-13/+21
| | | | | | | Invalid strings in asm files will result in parse errors. Invalid string literals passed to TargetData constructors will result in an assertion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142288 91177308-0d34-0410-b5e6-96231b3b80d8
* Add an accessor to get the underlying MachO representation.Owen Anderson2011-10-171-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142261 91177308-0d34-0410-b5e6-96231b3b80d8
* Use the correct predicate for determining if a branch is conditional or not.Owen Anderson2011-10-171-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142257 91177308-0d34-0410-b5e6-96231b3b80d8
* MCOperand is pod-like.Benjamin Kramer2011-10-171-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142253 91177308-0d34-0410-b5e6-96231b3b80d8
* Object: Fix redundant name.Michael J. Spencer2011-10-173-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142238 91177308-0d34-0410-b5e6-96231b3b80d8
* Correct over-zealous removal of hack.Bill Wendling2011-10-171-0/+4
| | | | | | | | Some code want to check that *any* call within a function has the 'returns twice' attribute, not just that the current function has one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142221 91177308-0d34-0410-b5e6-96231b3b80d8
* Add comments to TargetLowering.h indicating that the set*Alignment functions ↵Hal Finkel2011-10-171-3/+5
| | | | | | take arguments in log2(bytes) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142213 91177308-0d34-0410-b5e6-96231b3b80d8
* Now that we have the ReturnsTwice function attribute, this method isBill Wendling2011-10-171-4/+0
| | | | | | | | obsolete. Check the attribute instead. <rdar://problem/8031714> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142212 91177308-0d34-0410-b5e6-96231b3b80d8
* Admonish that MI is not IR and virtual registers have constraints.Jakob Stoklund Olesen2011-10-171-0/+8
| | | | | | | | In machine code, you can't just replaceRegWith() the same way you can replaceAllUsesWith() in IR. Virtual registers may have different register classes that need to be merged first. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142201 91177308-0d34-0410-b5e6-96231b3b80d8
* svn mv Target/ARM/ARMGlobalMerge.cpp Transforms/Scalar/GlobalMerge.cppDevang Patel2011-10-172-0/+3
| | | | | | | There is no reason to have simple IR level pass in lib/Target. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142200 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a routine to swap branch instruction operands, and update anyChandler Carruth2011-10-171-0/+7
| | | | | | | | | | | | profile metadata at the same time. Use it to preserve metadata attached to a branch when re-writing it in InstCombine. Add metadata to the canonicalize_branch InstCombine test, and check that it is tranformed correctly. Reviewed by Nick Lewycky! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142168 91177308-0d34-0410-b5e6-96231b3b80d8
* Add AsmToken::getEndLoc and use it to add ranges to x86 asm register parsing.Benjamin Kramer2011-10-161-0/+1
| | | | | | | | <stdin>:1:12: error: register %rax is only available in 64-bit mode incl %rax ^~~~ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142137 91177308-0d34-0410-b5e6-96231b3b80d8
* PR11143: Save the old diagnostic handler and call it when munging ↵Benjamin Kramer2011-10-161-0/+3
| | | | | | | | diagnostics for #line directives. This reenables proper inline asm diagnostics in clang git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142132 91177308-0d34-0410-b5e6-96231b3b80d8