Skip to content
  1. Nov 26, 2008
    • 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
  2. Nov 25, 2008
  3. Nov 24, 2008
  4. 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
  5. Nov 19, 2008
    • Devang Patel's avatar
      Let instcombiner remove redundant dbg intrinsics. · 827bced2
      Devang Patel authored
      llvm-svn: 59658
      827bced2
    • Devang Patel's avatar
      · 7ed6c531
      Devang Patel authored
      If there are two consecutive llvm.dbg.stoppoint calls then
      it is likely that the optimizer deleted code in between these
      two intrinsics. Keep only the last llvm.dbg.stoppoint in this case.
      
      llvm-svn: 59657
      7ed6c531
  6. Nov 18, 2008
  7. Nov 17, 2008
  8. Nov 16, 2008
Loading