Skip to content
  1. Jan 07, 2011
  2. Jan 06, 2011
  3. Jan 05, 2011
  4. Jan 04, 2011
  5. Jan 03, 2011
  6. Jan 02, 2011
    • Chris Lattner's avatar
      split dom frontier handling stuff out to its own DominanceFrontier header, · bf0aa927
      Chris Lattner authored
      so that Dominators.h is *just* domtree.  Also prune #includes a bit.
      
      llvm-svn: 122714
      bf0aa927
    • Benjamin Kramer's avatar
      Try to reuse the value when lowering memset. · 25e6e06e
      Benjamin Kramer authored
      This allows us to compile:
        void test(char *s, int a) {
          __builtin_memset(s, a, 15);
        }
      into 1 mul + 3 stores instead of 3 muls + 3 stores.
      
      llvm-svn: 122710
      25e6e06e
    • Benjamin Kramer's avatar
      Lower the i8 extension in memset to a multiply instead of a potentially long... · 2fdea4c8
      Benjamin Kramer authored
      Lower the i8 extension in memset to a multiply instead of a potentially long series of shifts and ors.
      
      We could implement a DAGCombine to turn x * 0x0101 back into logic operations
      on targets that doesn't support the multiply or it is slow (p4) if someone cares
      enough.
      
      Example code:
        void test(char *s, int a) {
            __builtin_memset(s, a, 4);
        }
      before:
        _test:                                  ## @test
          movzbl  8(%esp), %eax
          movl  %eax, %ecx
          shll  $8, %ecx
          orl %eax, %ecx
          movl  %ecx, %eax
          shll  $16, %eax
          orl %ecx, %eax
          movl  4(%esp), %ecx
          movl  %eax, 4(%ecx)
          movl  %eax, (%ecx)
          ret
      after:
        _test:                                  ## @test
          movzbl  8(%esp), %eax
          imull $16843009, %eax, %eax   ## imm = 0x1010101
          movl  4(%esp), %ecx
          movl  %eax, 4(%ecx)
          movl  %eax, (%ecx)
          ret
      
      llvm-svn: 122707
      2fdea4c8
  7. Dec 30, 2010
  8. Dec 29, 2010
  9. Dec 28, 2010
  10. Dec 27, 2010
    • Cameron Zwarich's avatar
      Change an assertion to assert what the code actually relies upon. · 5e5cfbe8
      Cameron Zwarich authored
      llvm-svn: 122586
      5e5cfbe8
    • Cameron Zwarich's avatar
      Land a first cut at StrongPHIElimination. There are only 5 new test failures · 25d046ce
      Cameron Zwarich authored
      when running without the verifier, and I have not yet checked them to see if
      the new results are still correct. There are more verifier failures, but they
      all seem to be additional occurrences of verifier failures that occur with the
      existing PHIElimination pass. There are a few obvious issues with the code:
      
      1) It doesn't properly update the register equivalence classes during copy
      insertion, and instead recomputes them before merging live intervals and
      renaming registers. I wanted to keep this first patch simple for debugging
      purposes, but it shouldn't be very hard to do this.
      
      2) It doesn't mix the renaming and live interval merging with the copy insertion
      process, which leads to a lot of virtual register churn. Virtual registers and
      live intervals are created, only to later be merged into others. The code should
      be smarter and only create a new virtual register if there is no existing
      register in the same congruence class.
      
      3) In one place the code uses a DenseMap per basic block, which is unnecessary
      heap allocation. There should be an inline storage version of DenseMap.
      
      I did a quick compile-time test of running llc on 403.gcc with and without
      StrongPHIElimination. It is slightly slower with StrongPHIElimination, because
      the small decrease in the coalescer runtime can't beat the increase in phi
      elimination runtime. Perhaps fixing the above performance issues will narrow
      the gap.
      
      I also haven't yet run any tests of the quality of the generated code.
      
      llvm-svn: 122582
      25d046ce
    • Cameron Zwarich's avatar
      Add knowledge of phi-def and phi-kill valnos to MachineVerifier's predecessor · b95bfe16
      Cameron Zwarich authored
      valno verification. The "Different value live out of predecessor" check is
      incorrect in the case of phi-def valnos, so just skip that check for phi-def
      valnos and instead check that all of the valnos for predecessors have phi-kill.
      Fixes PR8863.
      
      llvm-svn: 122581
      b95bfe16
  11. Dec 24, 2010
Loading