Skip to content
  1. Mar 04, 2010
  2. Mar 03, 2010
  3. Mar 02, 2010
    • Chris Lattner's avatar
      Fix some issues in WalkChainUsers dealing with · dd030701
      Chris Lattner authored
      CopyToReg/CopyFromReg/INLINEASM.  These are annoying because
      they have the same opcode before an after isel.  Fix this by
      setting their NodeID to -1 to indicate that they are selected,
      just like what automatically happens when selecting things that
      end up being machine nodes.
      
      With that done, give IsLegalToFold a new flag that causes it to
      ignore chains.  This lets the HandleMergeInputChains routine be
      the one place that validates chains after a match is successful,
      enabling the new hotness in chain processing.  This smarter
      chain processing eliminates the need for "PreprocessRMW" in the
      X86 and MSP430 backends and enables MSP to start matching it's
      multiple mem operand instructions more aggressively.
      
      I currently #if out the dead code in the X86 backend and MSP 
      backend, I'll remove it for real in a follow-on patch.
      
      The testcase changes are:
        test/CodeGen/X86/sse3.ll: we generate better code
        test/CodeGen/X86/store_op_load_fold2.ll: PreprocessRMW was 
            miscompiling this before, we now generate correct code
            Convert it to filecheck while I'm at it.
        test/CodeGen/MSP430/Inst16mm.ll: Add a testcase for mem/mem
            folding to make anton happy. :)
      
      llvm-svn: 97596
      dd030701
    • Bill Wendling's avatar
      Okay. One last attempt: · ce153aff
      Bill Wendling authored
      Place the LSDA into the TEXT section on Mach-O. This saves space.
      
      llvm-svn: 97592
      ce153aff
    • Chris Lattner's avatar
      run HandleMergeInputChains even if we only have one input chain. · 27a184b8
      Chris Lattner authored
      llvm-svn: 97581
      27a184b8
    • Evan Cheng's avatar
      Swap parameters of isSafeToMove and isSafeToReMat for consistency. · 62e795ab
      Evan Cheng authored
      llvm-svn: 97578
      62e795ab
    • Evan Cheng's avatar
      Fix typo. · 10194a42
      Evan Cheng authored
      llvm-svn: 97577
      10194a42
    • Devang Patel's avatar
      Fix grammar. · f200b39d
      Devang Patel authored
      Thanks Duncan!
      
      llvm-svn: 97572
      f200b39d
    • Chris Lattner's avatar
      Fix the xfail I added a couple of patches back. The issue · 925ac71f
      Chris Lattner authored
      was that we weren't properly handling the case when interior
      nodes of a matched pattern become dead after updating chain
      and flag uses.  Now we handle this explicitly in 
      UpdateChainsAndFlags.
      
      llvm-svn: 97561
      925ac71f
    • Chris Lattner's avatar
      I was confused about this, it turns out that MorphNodeTo · 350bb062
      Chris Lattner authored
      *does* delete ex-operands that become dead.
      
      llvm-svn: 97559
      350bb062
    • Chris Lattner's avatar
      factor node morphing out to its own helper method. · 9732ab6d
      Chris Lattner authored
      llvm-svn: 97558
      9732ab6d
    • Chris Lattner's avatar
      Sink InstructionSelect() out of each target into SDISel, and rename it · f98f124a
      Chris Lattner authored
      DoInstructionSelection.  Inline "SelectRoot" into it from DAGISelHeader.
      Sink some other stuff out of DAGISelHeader into SDISel.
      
      Eliminate the various 'Indent' stuff from various targets, which dates
      to when isel was recursive.
      
       17 files changed, 114 insertions(+), 430 deletions(-)
      
      llvm-svn: 97555
      f98f124a
    • Eric Christopher's avatar
      Add file to CMakeLists.txt · 1dd31c78
      Eric Christopher authored
      llvm-svn: 97545
      1dd31c78
    • Evan Cheng's avatar
      Add skeleton of a machine level cse pass. · 036aa49d
      Evan Cheng authored
      llvm-svn: 97543
      036aa49d
    • Chris Lattner's avatar
      Use the right induction variable. · 2f846eea
      Chris Lattner authored
      llvm-svn: 97541
      2f846eea
    • 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
    • Dan Gohman's avatar
      Fix several places to handle vector operands properly. · 4cec5439
      Dan Gohman authored
      Based on a patch by Micah Villmow for PR6438.
      
      llvm-svn: 97538
      4cec5439
    • Bill Wendling's avatar
      Remove dead parameter passing. · 78c5b7a7
      Bill Wendling authored
      llvm-svn: 97536
      78c5b7a7
    • Devang Patel's avatar
      Constructors and operators for anonymous aggregates does not names. Do not... · d0fa304d
      Devang Patel authored
      Constructors and operators for anonymous aggregates does not names. Do not force empty AT_name attribute in such cases.
      
      llvm-svn: 97533
      d0fa304d
Loading