Skip to content
  1. Oct 21, 2011
    • Anton Korobeynikov's avatar
      Fix build on mingw-w64. · b27f11e0
      Anton Korobeynikov authored
      Patch by Ruben Van Boxem!
      
      llvm-svn: 142646
      b27f11e0
    • Chandler Carruth's avatar
      Add loop aligning to MachineBlockPlacement based on review discussion so · 8b9737cb
      Chandler Carruth authored
      it's a bit more plausible to use this instead of CodePlacementOpt. The
      code for this was shamelessly stolen from CodePlacementOpt, and then
      trimmed down a bit. There doesn't seem to be much utility in returning
      true/false from this pass as we may or may not have rewritten all of the
      blocks. Also, the statistic of counting how many loops were aligned
      doesn't seem terribly important so I removed it. If folks would like it
      to be included, I'm happy to add it back.
      
      This was probably the most egregious of the missing features, and now
      I'm going to start gathering some performance numbers and looking at
      specific loop structures that have different layout between the two.
      
      Test is updated to include both basic loop alignment and nested loop
      alignment.
      
      llvm-svn: 142645
      8b9737cb
    • Chandler Carruth's avatar
      Add a very basic test for MachineBlockPlacement. This is essentially the · ddfeaafd
      Chandler Carruth authored
      canonical example I used when developing it, and is one of the primary
      motivating real-world use cases for __builtin_expect (when burried under
      a macro).
      
      I'm working on more test cases here, but I'm trying to make sure both
      that the pass is doing the right thing with the test cases and that they
      aren't too brittle to changes elsewhere in the code generation pipeline.
      
      Feedback and/or suggestions on how to test this are very welcome.
      Especially feedback on whether testing the block comments is a good
      strategy; I couldn't find any good examples to steal from but all the
      other ideas I had were a lot uglier or more fragile.
      
      llvm-svn: 142644
      ddfeaafd
    • Bill Wendling's avatar
      Modify the script to output the regressions and passes into categories. My... · 7e9a7c4a
      Bill Wendling authored
      Modify the script to output the regressions and passes into categories. My Python-fu could use some improving...
      
      llvm-svn: 142643
      7e9a7c4a
    • Craig Topper's avatar
      Remove intrinsics for X86 BLSI, BLSMSK, and BLSR intrinsics and replace with... · 039a7906
      Craig Topper authored
      Remove intrinsics for X86 BLSI, BLSMSK, and BLSR intrinsics and replace with custom isel lowering code.
      
      llvm-svn: 142642
      039a7906
    • Chandler Carruth's avatar
      Implement a block placement pass based on the branch probability and · 10281425
      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
      10281425
    • Bill Wendling's avatar
      Check for divide by zero. · d1bb6441
      Bill Wendling authored
      llvm-svn: 142640
      d1bb6441
    • Chandler Carruth's avatar
      Remove a now dead function, fixing -Wunused-function warnings from · 00115378
      Chandler Carruth authored
      Clang.
      
      llvm-svn: 142631
      00115378
    • Richard Smith's avatar
      Fix unused variable warning. · c842c2ff
      Richard Smith authored
      llvm-svn: 142630
      c842c2ff
    • Owen Anderson's avatar
    • Owen Anderson's avatar
      Fix decoding tests for fixed MSR encodings. · 608c60c7
      Owen Anderson authored
      llvm-svn: 142624
      608c60c7
  2. Oct 20, 2011
Loading