Skip to content
  1. Jun 18, 2010
  2. Jun 03, 2010
  3. May 24, 2010
  4. Apr 30, 2010
  5. Apr 28, 2010
  6. Apr 21, 2010
    • Chris Lattner's avatar
      teach the x86 address matching stuff to handle · 84776786
      Chris Lattner authored
      (shl (or x,c), 3) the same as (shl (add x, c), 3)
      when x doesn't have any bits from c set.
      
      This finishes off PR1135.  Before we compiled the block to:
      to:
      
      LBB0_3:                                 ## %bb
      	cmpb	$4, %dl
      	sete	%dl
      	addb	%dl, %cl
      	movb	%cl, %dl
      	shlb	$2, %dl
      	addb	%r8b, %dl
      	shlb	$2, %dl
      	movzbl	%dl, %edx
      	movl	%esi, (%rdi,%rdx,4)
      	leaq	2(%rdx), %r9
      	movl	%esi, (%rdi,%r9,4)
      	leaq	1(%rdx), %r9
      	movl	%esi, (%rdi,%r9,4)
      	addq	$3, %rdx
      	movl	%esi, (%rdi,%rdx,4)
      	incb	%r8b
      	decb	%al
      	movb	%r8b, %dl
      	jne	LBB0_1
      
      Now we produce:
      
      LBB0_3:                                 ## %bb
      	cmpb	$4, %dl
      	sete	%dl
      	addb	%dl, %cl
      	movb	%cl, %dl
      	shlb	$2, %dl
      	addb	%r8b, %dl
      	shlb	$2, %dl
      	movzbl	%dl, %edx
      	movl	%esi, (%rdi,%rdx,4)
      	movl	%esi, 8(%rdi,%rdx,4)
      	movl	%esi, 4(%rdi,%rdx,4)
      	movl	%esi, 12(%rdi,%rdx,4)
      	incb	%r8b
      	decb	%al
      	movb	%r8b, %dl
      	jne	LBB0_1
      
      llvm-svn: 101958
      84776786
  7. Apr 17, 2010
    • Dan Gohman's avatar
      Use const qualifiers with TargetLowering. This eliminates several · 21cea8ac
      Dan Gohman authored
      const_casts, and it reinforces the design of the Target classes being
      immutable.
      
      SelectionDAGISel::IsLegalToFold is now a static member function, because
      PIC16 uses it in an unconventional way. There is more room for API
      cleanup here.
      
      And PIC16's AsmPrinter no longer uses TargetLowering.
      
      llvm-svn: 101635
      21cea8ac
  8. Apr 15, 2010
  9. Apr 14, 2010
  10. Apr 02, 2010
  11. Mar 18, 2010
  12. Mar 14, 2010
  13. Mar 04, 2010
  14. Mar 03, 2010
  15. Mar 02, 2010
    • Chris Lattner's avatar
      eliminate PreprocessForRMW now that isel handles it. · 1eb6eb05
      Chris Lattner authored
      We still preprocess calls and fp return stuff.
      
      llvm-svn: 97598
      1eb6eb05
    • 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
    • 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
  16. Mar 01, 2010
  17. Feb 23, 2010
  18. Feb 21, 2010
  19. Feb 17, 2010
  20. Feb 16, 2010
    • Chris Lattner's avatar
      fix rdar://7653908, a crash on a case where we would fold a load · afac7dad
      Chris Lattner authored
      into a roundss intrinsic, producing a cyclic dag.  The root cause
      of this is badness handling ComplexPattern nodes in the old dagisel
      that I noticed through inspection.  Eliminate a copy of the of the
      code that handled ComplexPatterns by making EmitChildMatchCode call
      into EmitMatchCode.
      
      llvm-svn: 96408
      afac7dad
  21. Feb 15, 2010
    • Evan Cheng's avatar
      Split SelectionDAGISel::IsLegalAndProfitableToFold to · 5e73ff2e
      Evan Cheng authored
      IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use.
      
      This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses.
      
      llvm-svn: 96255
      5e73ff2e
    • David Greene's avatar
      · cbd39c5d
      David Greene authored
      Remove an assumption of default arguments.  This is in anticipation of a
      change to SelectionDAG build APIs.
      
      llvm-svn: 96239
      cbd39c5d
  22. Feb 11, 2010
  23. Feb 09, 2010
  24. Jan 21, 2010
    • Dan Gohman's avatar
      Re-implement the main strength-reduction portion of LoopStrengthReduction. · 51ad99d2
      Dan Gohman authored
      This new version is much more aggressive about doing "full" reduction in
      cases where it reduces register pressure, and also more aggressive about
      rewriting induction variables to count down (or up) to zero when doing so
      reduces register pressure.
      
      It currently uses fairly simplistic algorithms for finding reuse
      opportunities, but it introduces a new framework allows it to combine
      multiple strategies at once to form hybrid solutions, instead of doing
      all full-reduction or all base+index.
      
      llvm-svn: 94061
      51ad99d2
  25. Jan 20, 2010
    • David Greene's avatar
      · 0985160c
      David Greene authored
      When XDEBUG is enabled, check for SelectionDAG cycles at some key
      points.  This will help us find future problems like the one
      described in PR6019.
      
      llvm-svn: 94019
      0985160c
  26. Jan 16, 2010
    • David Greene's avatar
      · b0c0e643
      David Greene authored
      Fix PR6019.  A load has more than one use if it feeds a bitconvert that
      has more than one use.
      
      llvm-svn: 93576
      b0c0e643
  27. Jan 12, 2010
  28. Jan 11, 2010
  29. Jan 05, 2010
  30. Jan 04, 2010
  31. Dec 23, 2009
  32. Dec 18, 2009
Loading