Skip to content
  1. Mar 24, 2010
  2. Mar 19, 2010
  3. Mar 07, 2010
  4. Mar 03, 2010
  5. Mar 02, 2010
    • Chris Lattner's avatar
      Rewrite chain handling validation and input TokenFactor handling · b884fe86
      Chris Lattner authored
      stuff now that we don't care about emulating the old broken 
      behavior of the old isel.  This eliminates the 
      'CheckChainCompatible' check (along with IsChainCompatible) which
      did an incorrect and inefficient scan *up* the chain nodes which
      happened as the pattern was being formed and does the validation
      at the end in HandleMergeInputChains when it forms a structural 
      pattern.  This scans "down" the graph, which means that it is
      quickly bounded by nodes already selected.  This also handles
      token factors that get "trapped" in the dag.
      
      Removing the CheckChainCompatible nodes also shrinks the 
      generated tables by about 6K for X86 (down to 83K).
      
      There are two pieces remaining before I can nuke PreprocessRMW:
      1. I xfailed a test because we're now producing worse code in a 
         case that has nothing to do with the change: it turns out that
         our use of MorphNodeTo will leave dead nodes in the graph
         which (depending on how the graph is walked) end up causing
         bogus uses of chains and blocking matches.  This is really 
         bad for other reasons, so I'll fix this in a follow-up patch.
      
      2. CheckFoldableChainNode needs to be improved to handle the TF.
      
      llvm-svn: 97539
      b884fe86
  6. Mar 01, 2010
    • Chris Lattner's avatar
      eliminate the CheckMultiOpcodeMatcher code and have each · 053a28a3
      Chris Lattner authored
      ComplexPattern at the root be generated multiple times, once
      for each opcode they are part of.  This encourages factoring
      because the opcode checks get treated just like everything
      else in the matcher.
      
      llvm-svn: 97439
      053a28a3
    • Chris Lattner's avatar
      add a new OPC_SwitchOpcode which is semantically equivalent · f4d17752
      Chris Lattner authored
      to a scope where every child starts with a CheckOpcode, but
      executes more efficiently.  Enhance DAGISelMatcherOpt to 
      form it.
      
      This also fixes a bug in CheckOpcode: apparently the SDNodeInfo
      objects are not pointer comparable, we have to compare the
      enum name.
      
      llvm-svn: 97438
      f4d17752
  7. Feb 28, 2010
  8. Feb 27, 2010
  9. Feb 25, 2010
  10. Feb 24, 2010
  11. Feb 22, 2010
  12. Feb 21, 2010
    • Chris Lattner's avatar
      implement the last known missing feature: updating uses of results · 79eaeb4c
      Chris Lattner authored
      of the matched pattern to use the newly created node results.  Onto
      the "making it actually work" phase!
      
      llvm-svn: 96724
      79eaeb4c
    • Chris Lattner's avatar
      Lots of improvements to the new dagisel emitter. This gets it to · 132df652
      Chris Lattner authored
      the point where it is to the 95% feature complete mark, it just
      needs result updating to be done (then testing, optimization 
      etc).
      
      More specificallly, this adds support for chain and flag handling
      on the result nodes, support for sdnodexforms, support for variadic
      nodes, memrefs, pinned physreg inputs, and probably lots of other
      stuff.
      
      In the old DAGISelEmitter, this deletes the dead code related to
      OperatorMap, cleans up a variety of dead stuff handling "implicit
      remapping" from things like globaladdr -> targetglobaladdr (which
      is no longer used because globaladdr always needs to be legalized),
      and some minor formatting fixes.
      
      llvm-svn: 96716
      132df652
  13. Feb 18, 2010
  14. Feb 17, 2010
  15. Feb 16, 2010
  16. Feb 15, 2010
    • Chris Lattner's avatar
      Check in the first big step of rewriting DAGISelEmitter to · b02cdaaa
      Chris Lattner authored
      produce a table based matcher instead of gobs of C++ Code.
      
      Though it's not done yet, the shrinkage seems promising,
      the table for the X86 ISel is 75K and still has a lot of 
      optimization to come (compare to the ~1.5M of .o generated
      the old way, much of which will go away).
      
      The code is currently disabled by default (the #if 0 in
      DAGISelEmitter.cpp).  When enabled it generates a dead
      SelectCode2 function in the DAGISel Header which will
      eventually replace SelectCode.
      
      There is still a lot of stuff left to do, which are
      documented with a trail of FIXMEs.
      
      llvm-svn: 96215
      b02cdaaa
Loading