Skip to content
  1. Nov 28, 2008
  2. Nov 27, 2008
  3. Nov 26, 2008
    • Chris Lattner's avatar
      Turn on my codegen prepare heuristic by default. It doesn't affect · 397a11cc
      Chris Lattner authored
      performance in most cases on the Grawp tester, but does speed some 
      things up (like shootout/hash by 15%).  This also doesn't impact 
      compile time in a noticable way on the Grawp tester.
      
      It also, of course, gets the testcase it was designed for right :)
      
      llvm-svn: 60120
      397a11cc
    • Chris Lattner's avatar
      teach the new heuristic how to handle inline asm. · fef04acc
      Chris Lattner authored
      llvm-svn: 60088
      fef04acc
    • Chris Lattner's avatar
      Improve ValueAlreadyLiveAtInst with a cheap and dirty, but effective · 6d71b7fb
      Chris Lattner authored
      heuristic: the value is already live at the new memory operation if
      it is used by some other instruction in the memop's block.  This is
      cheap and simple to compute (moreso than full liveness).
      
      This improves the new heuristic even more.  For example, it cuts two
      out of three new instructions out of 255.vortex:DbmFileInGrpHdr, 
      which is one of the functions that the heuristic regressed.  This
      overall eliminates another 40 instructions from 403.gcc and visibly
      reduces register pressure in 255.vortex (though this only actually
      ends up saving the 2 instructions from the whole program).
      
      llvm-svn: 60084
      6d71b7fb
    • Chris Lattner's avatar
      Start rewroking a subpiece of the profitability heuristic to be · e34fe2c5
      Chris Lattner authored
      phrased in terms of liveness instead of as a horrible hack.  :)
      
      In pratice, this doesn't change the generated code for either 
      255.vortex or 403.gcc, but it could cause minor code changes in 
      theory.  This is framework for coming changes.
      
      llvm-svn: 60082
      e34fe2c5
    • Chris Lattner's avatar
      add a comment, make save/restore logic more obvious. · 383a797f
      Chris Lattner authored
      llvm-svn: 60076
      383a797f
    • Chris Lattner's avatar
      This adds in some code (currently disabled unless you pass · eb3e4fb6
      Chris Lattner authored
      -enable-smarter-addr-folding to llc) that gives CGP a better
      cost model for when to sink computations into addressing modes.
      The basic observation is that sinking increases register 
      pressure when part of the addr computation has to be available
      for other reasons, such as having a use that is a non-memory
      operation.  In cases where it works, it can substantially reduce
      register pressure.
      
      This code is currently an overall win on 403.gcc and 255.vortex
      (the two things I've been looking at), but there are several 
      things I want to do before enabling it by default:
      
      1. This isn't doing any caching of results, so it is much slower 
         than it could be.  It currently slows down release-asserts llc 
         by 1.7% on 176.gcc: 27.12s -> 27.60s.
      2. This doesn't think about inline asm memory operands yet.
      3. The cost model botches the case when the needed value is live
         across the computation for other reasons.
      
      I'll continue poking at this, and eventually turn it on as llcbeta.
      
      llvm-svn: 60074
      eb3e4fb6
    • Evan Cheng's avatar
      Revert r60042. IndVarSimplify should check if APFloat is PPCDoubleDouble first... · 496b042e
      Evan Cheng authored
      Revert r60042. IndVarSimplify should check if APFloat is PPCDoubleDouble first before trying to convert it to an integer.
      
      llvm-svn: 60072
      496b042e
    • Chris Lattner's avatar
      Teach CodeGenPrepare to look through Bitcast instructions when attempting to · a9ab165b
      Chris Lattner authored
      optimize addressing modes.  This allows us to optimize things like isel-sink2.ll
      into:
      
      	movl	4(%esp), %eax
      	cmpb	$0, 4(%eax)
      	jne	LBB1_2	## F
      LBB1_1:	## TB
      	movl	$4, %eax
      	ret
      LBB1_2:	## F
      	movzbl	7(%eax), %eax
      	ret
      
      instead of:
      
      _test:
      	movl	4(%esp), %eax
      	cmpb	$0, 4(%eax)
      	leal	4(%eax), %eax
      	jne	LBB1_2	## F
      LBB1_1:	## TB
      	movl	$4, %eax
      	ret
      LBB1_2:	## F
      	movzbl	3(%eax), %eax
      	ret
      
      This shrinks (e.g.) 403.gcc from 1133510 to 1128345 lines of .s.
      
      Note that the 2008-10-16-SpillerBug.ll testcase is dubious at best, I doubt
      it is really testing what it thinks it is.
      
      llvm-svn: 60068
      a9ab165b
  4. Nov 25, 2008
  5. Nov 24, 2008
Loading