- Nov 27, 2008
-
-
Evan Cheng authored
llvm-svn: 60141
-
Evan Cheng authored
On x86 favors folding short immediate into some arithmetic operations (e.g. add, and, xor, etc.) because materializing an immediate in a register is expensive in turns of code size. e.g. movl 4(%esp), %eax addl $4, %eax is 2 bytes shorter than movl $4, %eax addl 4(%esp), %eax llvm-svn: 60139
-
Dale Johannesen authored
llvm-svn: 60137
-
Evan Cheng authored
llvm-svn: 60135
-
Ted Kremenek authored
llvm-svn: 60134
-
- Nov 26, 2008
-
-
Mikhail Glushenkov authored
llvm-svn: 60127
-
Bill Wendling authored
llvm-svn: 60125
-
Bill Wendling authored
the conditional for the BRCOND statement. For instance, it will generate: addl %eax, %ecx jo LOF instead of addl %eax, %ecx ; About 10 instructions to compare the signs of LHS, RHS, and sum. jl LOF llvm-svn: 60123
-
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
-
Bill Wendling authored
llvm-svn: 60113
-
Bill Wendling authored
llvm-svn: 60112
-
Devang Patel authored
llvm-svn: 60111
-
Evan Cheng authored
llvm-svn: 60110
-
Duncan Sands authored
and operation legalization does something useful. llvm-svn: 60108
-
Mikhail Glushenkov authored
llvm-svn: 60105
-
Sanjiv Gupta authored
llvm-svn: 60102
-
Mikhail Glushenkov authored
llvm-svn: 60101
-
Mikhail Glushenkov authored
llvm-svn: 60100
-
Mikhail Glushenkov authored
llvm-svn: 60099
-
Sanjiv Gupta authored
Custom lower AND, OR, XOR bitwise operations. llvm-svn: 60098
-
Dan Gohman authored
llvm-svn: 60095
-
Dan Gohman authored
and the LiveInterval.h top-level comment and accordingly. This fixes blocks having spurious live-in registers in boundary cases. llvm-svn: 60092
-
Chris Lattner authored
llvm-svn: 60088
-
Devang Patel authored
llvm-svn: 60087
-
Ted Kremenek authored
Add 'tell' method to raw_fd_ostream that clients can use to query the current location in the file the stream is writing to. llvm-svn: 60085
-
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
-
Nick Lewycky authored
__attribute__ notation which is supported on more platforms. llvm-svn: 60083
-
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
-
Zhongxing Xu authored
llvm-svn: 60081
-
Chris Lattner authored
llvm-svn: 60080
-
-
Chris Lattner authored
llvm-svn: 60076
-
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
-
Evan Cheng authored
Revert r60042. IndVarSimplify should check if APFloat is PPCDoubleDouble first before trying to convert it to an integer. llvm-svn: 60072
-
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
-
Chris Lattner authored
llvm-svn: 60067
-
Chris Lattner authored
llvm-svn: 60066
-
Nuno Lopes authored
change AnnotationManager to use 'const char*' instead of std::string. this fixes the leakage of those strings and avoids the creation of such strings in static cosntructors (should result in a little improvement of startup time) llvm-svn: 60064
-
- Nov 25, 2008
-
-
Oscar Fuentes authored
llvm-svn: 60052
-
Mikhail Glushenkov authored
llvm-svn: 60049
-