- Oct 21, 2011
-
-
Craig Topper authored
Remove intrinsics for X86 BLSI, BLSMSK, and BLSR intrinsics and replace with custom isel lowering code. llvm-svn: 142642
-
Chandler Carruth authored
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 llvm-svn: 142641
-
Bill Wendling authored
llvm-svn: 142640
-
Chandler Carruth authored
Clang. llvm-svn: 142631
-
Richard Smith authored
llvm-svn: 142630
-
Owen Anderson authored
llvm-svn: 142626
-
Owen Anderson authored
llvm-svn: 142624
-
- Oct 20, 2011
-
-
David Meyer authored
Remove unused include of sys/uio.h in MemoryBuffer.cpp. It was not correctly protected by ifdef either. llvm-svn: 142623
-
Owen Anderson authored
llvm-svn: 142622
-
Dan Gohman authored
top-down scheduling and top-down scheduling is going away. llvm-svn: 142621
-
Dan Gohman authored
because they don't support physical register dependencies. llvm-svn: 142620
-
Owen Anderson authored
Separate out ARM MSR instructions into M-class versions and AR-class versions. This fixes some roundtripping failures. llvm-svn: 142618
-
-
Duncan Sands authored
llvm-svn: 142608
-
Duncan Sands authored
the last compiler built for the previous flavour is used for the next, for example the Debug clang compiler was being used for the initial build of the Release LLVM. Flavors should be independent of each other. This especially matters if the compiler built for the previous flavour doesn't actually work! llvm-svn: 142607
-
Lang Hames authored
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. llvm-svn: 142605
-
Chad Rosier authored
causing one of the unit tests to infinitely loop, which resulted in the buildbots stalling. llvm-svn: 142604
-
Devang Patel authored
llvm-svn: 142593
-
Devang Patel authored
llvm-svn: 142592
-
Jim Grosbach authored
llvm-svn: 142591
-
Jim Grosbach authored
llvm-svn: 142583
-
Jim Grosbach authored
llvm-svn: 142582
-
Jim Grosbach authored
llvm-svn: 142581
-
Nadav Rotem authored
llvm-svn: 142579
-
Duncan Sands authored
In fact this commit is not intended to change anything unless you use one of the new command line flags. llvm-svn: 142577
-
Duncan Sands authored
compiler warnings. llvm-svn: 142574
-
Duncan Sands authored
llvm-svn: 142573
-
Eli Friedman authored
Refactor code from inlining and globalopt that checks whether a function 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. llvm-svn: 142572
-
Eli Friedman authored
llvm-svn: 142570
-
Eli Friedman authored
llvm-svn: 142569
-
Eli Friedman authored
llvm-svn: 142567
-
Bill Wendling authored
llvm-svn: 142559
-
Nick Lewycky authored
correctly in GetStringLength, fixing PR11181! llvm-svn: 142558
-
Chad Rosier authored
llvm-svn: 142557
-
Devang Patel authored
Patch by Pranav Bhandarkar! llvm-svn: 142556
-
-
- Oct 19, 2011
-
-
Nadav Rotem authored
When checking the availability of instructions using the TLI, a 'promoted' instruction IS available. It means that the value is bitcasted to another type for which there is an operation. The correct check for the availablity of an instruction is to check if it should be expanded. llvm-svn: 142542
-
Rafael Espindola authored
llvm-svn: 142537
-
David Blaikie authored
llvm-svn: 142535
-
James Molloy authored
Use literal pool loads instead of MOVW/MOVT for materializing global addresses when optimizing for size. On spec/gcc, this caused a codesize improvement of ~1.9% for ARM mode and ~4.9% for Thumb(2) mode. This is codesize including literal pools. The pools themselves doubled in size for ARM mode and quintupled for Thumb mode, leaving suggestion that there is still perhaps redundancy in LLVM's use of constant pools that could be decreased by sharing entries. Fixes PR11087. llvm-svn: 142530
-