Skip to content
  1. Nov 27, 2008
  2. 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
  3. Nov 25, 2008
  4. Nov 24, 2008
  5. Nov 21, 2008
    • Devang Patel's avatar
      Fix build failure. · 702f45df
      Devang Patel authored
      llvm-svn: 59844
      702f45df
    • Devang Patel's avatar
      Silence unused variable warnings. · cb181bb2
      Devang Patel authored
      llvm-svn: 59841
      cb181bb2
    • Chris Lattner's avatar
      reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an · dd708345
      Chris Lattner authored
      arbitrary integer width for the count.
      
      llvm-svn: 59823
      dd708345
    • Bill Wendling's avatar
      Revert r59802. It was breaking the build of llvm-gcc: · 4bce2bff
      Bill Wendling authored
      g++ -m32 -c -g -DIN_GCC -W -Wall -Wwrite-strings -Wmissing-format-attribute -fno-common -mdynamic-no-pic -DHAVE_CONFIG_H -Wno-unused -DTARGET_NAME=\"i386-apple-darwin9.5.0\" -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include  -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include -DENABLE_LLVM -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/../llvm.src/include  -D_DEBUG  -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS   -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include  -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include ../../llvm-gcc.src/gcc/llvm-types.cpp -o llvm-types.o
      ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemCpy(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
      ../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i32' is not a member of 'llvm::Intrinsic'
      ../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i64' is not a member of 'llvm::Intrinsic'
      ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemMove(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
      ../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i32' is not a member of 'llvm::Intrinsic'
      ../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i64' is not a member of 'llvm::Intrinsic'
      ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemSet(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)':
      ../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i32' is not a member of 'llvm::Intrinsic'
      ../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i64' is not a member of 'llvm::Intrinsic'
      make[3]: *** [llvm-convert.o] Error 1
      make[3]: *** Waiting for unfinished jobs....
      rm fsf-funding.pod gcov.pod gfdl.pod cpp.pod gpl.pod gcc.pod
      make[2]: *** [all-stage1-gcc] Error 2
      make[1]: *** [stage1-bubble] Error 2
      make: *** [all] Error 2
      
      llvm-svn: 59809
      4bce2bff
    • Sanjiv Gupta's avatar
      Make mem[cpy,move,set] intrinsics overloaded. · 09a20376
      Sanjiv Gupta authored
      llvm-svn: 59802
      09a20376
    • Nick Lewycky's avatar
      Optimize (x/y)*y into x-(x%y) in general. Div and rem are about the same, and · 07d726ec
      Nick Lewycky authored
      a subtract is cheaper than a multiply. This generalizes an existing transform.
      
      llvm-svn: 59800
      07d726ec
    • Devang Patel's avatar
      Fix unused variable warnings. · 45f1ae02
      Devang Patel authored
      llvm-svn: 59778
      45f1ae02
    • Bill Wendling's avatar
      Fix error where it wasn't getting the correct caller function. · f5260d29
      Bill Wendling authored
      llvm-svn: 59758
      f5260d29
    • Bill Wendling's avatar
      If the function being inlined has a higher stack protection level than the · 26c6a3e7
      Bill Wendling authored
      inlining function, then increase the stack protection level on the inlining
      function.
      
      llvm-svn: 59757
      26c6a3e7
  6. Nov 20, 2008
  7. Nov 19, 2008
Loading