Chris Lattner [Wed, 25 Feb 2004 21:35:13 +0000 (21:35 +0000)]
Add a new pass, run internalize first
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11839
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 21:35:02 +0000 (21:35 +0000)]
Add a new pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11838
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 21:34:51 +0000 (21:34 +0000)]
Add prototype
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11837
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 21:34:36 +0000 (21:34 +0000)]
My faith in programmers has been found to be totally misplaced. One would
assume that if they don't intend to write to a global variable, that they
would mark it as constant. However, there are people that don't understand
that the compiler can do nice things for them if they give it the information
it needs.
This pass looks for blatently obvious globals that are only ever read from.
Though it uses a trivially simple "alias analysis" of sorts, it is still able
to do amazing things to important benchmarks. 253.perlbmk, for example,
contains several ***GIANT*** function pointer tables that are not marked
constant and should be. Marking them constant allows the optimizer to turn
a whole bunch of indirect calls into direct calls. Note that only a link-time
optimizer can do this transformation, but perlbmk does have several strings
and other minor globals that can be marked constant by this pass when run
from GCCAS.
176.gcc has a ton of strings and large tables that are marked constant, both
at compile time (38 of them) and at link time (48 more). Other benchmarks
give similar results, though it seems like big ones have disproportionally
more than small ones.
This pass is extremely quick and does good things. I'm going to enable it
in gccas & gccld. Not bad for 50 SLOC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11836
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 25 Feb 2004 21:03:02 +0000 (21:03 +0000)]
SparcV8 regs are really 32-bit, not 64! Thanks, Chris.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11835
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 25 Feb 2004 21:02:21 +0000 (21:02 +0000)]
Clean up the tablegen descriptions for SparcV8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11834
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 25 Feb 2004 21:00:05 +0000 (21:00 +0000)]
Fix the SparcV8 register definitions that were imported from PPC template.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11833
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 25 Feb 2004 20:52:20 +0000 (20:52 +0000)]
SparcV8 has different types of instructions, but F1 is only used for CALL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11832
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 25 Feb 2004 20:34:02 +0000 (20:34 +0000)]
Note that this test is currently expected to fail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11831
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 19:37:44 +0000 (19:37 +0000)]
Add an assertion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11830
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 19:30:19 +0000 (19:30 +0000)]
Fix failures in 099.go due to the cfgsimplify pass creating switch instructions
where there did not used to be any before
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11829
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 25 Feb 2004 19:28:19 +0000 (19:28 +0000)]
SparcV8 skeleton
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11828
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 25 Feb 2004 19:08:12 +0000 (19:08 +0000)]
Great renaming part II: Sparc --> SparcV9 (also includes command-line options and Makefiles)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11827
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 25 Feb 2004 18:44:15 +0000 (18:44 +0000)]
Great renaming: Sparc --> SparcV9
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11826
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 17:43:20 +0000 (17:43 +0000)]
Add a bunch more functions used by perlbmk
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11824
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Wed, 25 Feb 2004 17:15:02 +0000 (17:15 +0000)]
Updated to use llc to generate CBE code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11823
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 16:36:51 +0000 (16:36 +0000)]
Substantial improvements and cleanups for the release notes. We were missing
a bunch of stuff! :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11822
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 15:15:04 +0000 (15:15 +0000)]
Fix incorrect debug code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11821
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 07:00:55 +0000 (07:00 +0000)]
Teach the instruction selector how to transform 'array' GEP computations into X86
scaled indexes. This allows us to compile GEP's like this:
int* %test([10 x { int, { int } }]* %X, int %Idx) {
%Idx = cast int %Idx to long
%X = getelementptr [10 x { int, { int } }]* %X, long 0, long %Idx, ubyte 1, ubyte 0
ret int* %X
}
Into a single address computation:
test:
mov %EAX, DWORD PTR [%ESP + 4]
mov %ECX, DWORD PTR [%ESP + 8]
lea %EAX, DWORD PTR [%EAX + 8*%ECX + 4]
ret
Before it generated:
test:
mov %EAX, DWORD PTR [%ESP + 4]
mov %ECX, DWORD PTR [%ESP + 8]
shl %ECX, 3
add %EAX, %ECX
lea %EAX, DWORD PTR [%EAX + 4]
ret
This is useful for things like int/float/double arrays, as the indexing can be folded into
the loads&stores, reducing register pressure and decreasing the pressure on the decode unit.
With these changes, I expect our performance on 256.bzip2 and gzip to improve a lot. On
bzip2 for example, we go from this:
10665 asm-printer - Number of machine instrs printed
40 ra-local - Number of loads/stores folded into instructions
1708 ra-local - Number of loads added
1532 ra-local - Number of stores added
1354 twoaddressinstruction - Number of instructions added
1354 twoaddressinstruction - Number of two-address instructions
2794 x86-peephole - Number of peephole optimization performed
to this:
9873 asm-printer - Number of machine instrs printed
41 ra-local - Number of loads/stores folded into instructions
1710 ra-local - Number of loads added
1521 ra-local - Number of stores added
789 twoaddressinstruction - Number of instructions added
789 twoaddressinstruction - Number of two-address instructions
2142 x86-peephole - Number of peephole optimization performed
... and these types of instructions are often in tight loops.
Linear scan is also helped, but not as much. It goes from:
8787 asm-printer - Number of machine instrs printed
2389 liveintervals - Number of identity moves eliminated after coalescing
2288 liveintervals - Number of interval joins performed
3522 liveintervals - Number of intervals after coalescing
5810 liveintervals - Number of original intervals
700 spiller - Number of loads added
487 spiller - Number of stores added
303 spiller - Number of register spills
1354 twoaddressinstruction - Number of instructions added
1354 twoaddressinstruction - Number of two-address instructions
363 x86-peephole - Number of peephole optimization performed
to:
7982 asm-printer - Number of machine instrs printed
1759 liveintervals - Number of identity moves eliminated after coalescing
1658 liveintervals - Number of interval joins performed
3282 liveintervals - Number of intervals after coalescing
4940 liveintervals - Number of original intervals
635 spiller - Number of loads added
452 spiller - Number of stores added
288 spiller - Number of register spills
789 twoaddressinstruction - Number of instructions added
789 twoaddressinstruction - Number of two-address instructions
258 x86-peephole - Number of peephole optimization performed
Though I'm not complaining about the drop in the number of intervals. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11820
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 06:13:04 +0000 (06:13 +0000)]
* Make the previous patch more efficient by not allocating a temporary MachineInstr
to do analysis.
*** FOLD getelementptr instructions into loads and stores when possible,
making use of some of the crazy X86 addressing modes.
For example, the following C++ program fragment:
struct complex {
double re, im;
complex(double r, double i) : re(r), im(i) {}
};
inline complex operator+(const complex& a, const complex& b) {
return complex(a.re+b.re, a.im+b.im);
}
complex addone(const complex& arg) {
return arg + complex(1,0);
}
Used to be compiled to:
_Z6addoneRK7complex:
mov %EAX, DWORD PTR [%ESP + 4]
mov %ECX, DWORD PTR [%ESP + 8]
*** mov %EDX, %ECX
fld QWORD PTR [%EDX]
fld1
faddp %ST(1)
*** add %ECX, 8
fld QWORD PTR [%ECX]
fldz
faddp %ST(1)
*** mov %ECX, %EAX
fxch %ST(1)
fstp QWORD PTR [%ECX]
*** add %EAX, 8
fstp QWORD PTR [%EAX]
ret
Now it is compiled to:
_Z6addoneRK7complex:
mov %EAX, DWORD PTR [%ESP + 4]
mov %ECX, DWORD PTR [%ESP + 8]
fld QWORD PTR [%ECX]
fld1
faddp %ST(1)
fld QWORD PTR [%ECX + 8]
fldz
faddp %ST(1)
fxch %ST(1)
fstp QWORD PTR [%EAX]
fstp QWORD PTR [%EAX + 8]
ret
Other programs should see similar improvements, across the board. Note that
in addition to reducing instruction count, this also reduces register pressure
a lot, always a good thing on X86. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11819
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 06:01:07 +0000 (06:01 +0000)]
Add a helper to create an addressing mode given all of the pieces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11818
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 03:45:50 +0000 (03:45 +0000)]
add an inefficient way of folding structure and constant array indexes together
into a single LEA instruction. This should improve the code generated for
things like X->A.B.C[12].D.
The bigger benefit is still coming though. Note that this uses an LEA instruction
instead of an add, giving the register allocator more freedom. We should probably
never generate ADDri32's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11817
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 25 Feb 2004 02:56:58 +0000 (02:56 +0000)]
Implement special case for storing an immediate into memory so that we don't need
an intermediate register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11816
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 25 Feb 2004 01:53:45 +0000 (01:53 +0000)]
Cygwin defines log2 as a macro. Undef it here IFF it has already been defined,
so that we always get the inline function instead. Remember, kids, like it says
in the GCC manual, "An Inline Function is As Fast As a Macro."
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11815
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 24 Feb 2004 22:58:31 +0000 (22:58 +0000)]
small portability fix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11814
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 22:17:00 +0000 (22:17 +0000)]
Add support for 'rename'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11813
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 22:06:07 +0000 (22:06 +0000)]
Make the verifier a little more explicit about this problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11811
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 22:02:48 +0000 (22:02 +0000)]
Add support for remove, fwrite, and fread
Also fix problem where we didn't check to see if a node pointer was null.
Though fclose(null) doesn't make a lot of sense, 300.twolf does it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11810
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Tue, 24 Feb 2004 21:43:38 +0000 (21:43 +0000)]
Added the VTune tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11809
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 24 Feb 2004 19:46:00 +0000 (19:46 +0000)]
FunctionLiveVarInfo.h moved: include/llvm/CodeGen -> lib/Target/Sparc/LiveVar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11804
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 18:34:10 +0000 (18:34 +0000)]
Fix some unexpected fallout from the config.h changes. Because the CBE no
longer was getting this #include, it always fell back on the less precise
floating point initializer values, causing some testsuite failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11803
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 18:10:14 +0000 (18:10 +0000)]
Fix a faulty optimization on FP values
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11801
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Tue, 24 Feb 2004 16:13:56 +0000 (16:13 +0000)]
Fixed minor typos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11800
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 16:09:21 +0000 (16:09 +0000)]
If a block is made dead, make sure to promptly remove it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11799
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 24 Feb 2004 08:58:30 +0000 (08:58 +0000)]
Move machine code rewriter and spiller outside the register
allocator.
The implementation is completely rewritten and now employs several
optimizations not exercised before. For example for 164.gzip we have
997 loads and 699 stores vs the 1221 loads and 880 stores we have
before.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11798
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 07:23:58 +0000 (07:23 +0000)]
Implement SimplifyCFG/switch_switch_fold.ll
This case occurs many times in various benchmarks, especially when combined
with the previous patch. This allows it to get stuff like:
if (X == 4 || X == 3)
if (X == 5 || X == 8)
and
switch (X) {
case 4: case 5: case 6:
if (X == 4 || X == 5)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11797
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 07:21:09 +0000 (07:21 +0000)]
New testcase. Switch instructions that go to switch instructions should be
merged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11796
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 24 Feb 2004 06:30:36 +0000 (06:30 +0000)]
Add predicates for checking if a virtual register has a physical
register mapping or a stack slot mapping.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11795
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 06:26:00 +0000 (06:26 +0000)]
Add some helpful methods for dealing with switch instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11794
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 05:54:22 +0000 (05:54 +0000)]
Rearrange code a bit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11793
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 05:38:11 +0000 (05:38 +0000)]
Implement: test/Regression/Transforms/SimplifyCFG/switch_create.ll
This turns code like this:
if (X == 4 | X == 7)
and
if (X != 4 & X != 7)
into switch instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11792
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 05:34:44 +0000 (05:34 +0000)]
The simplifycfg pass should be able to turn stuff like:
if (X == 4 || X == 7)
and
if (X != 4 && X != 7)
into switch instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11791
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 04:54:45 +0000 (04:54 +0000)]
Wow, the description of the 'switch' instruction was out of date.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11790
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 04:02:20 +0000 (04:02 +0000)]
we no longer include boost
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11789
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 03:54:22 +0000 (03:54 +0000)]
Hrm, my find must have been faulty. It didn't remove these as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11788
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 03:53:00 +0000 (03:53 +0000)]
Boost is now unneeded, thanks to the fix for PR253, contributed by Reid Spencer!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11787
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 03:50:24 +0000 (03:50 +0000)]
Now that's a new feature!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11786
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 03:50:05 +0000 (03:50 +0000)]
Use the new LLVM is_class template instead of the boost one, allowing us to
remove our dependency on boost! Thanks to Reid Spencer for making this possible!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11785
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 03:49:29 +0000 (03:49 +0000)]
Check in a new type_traits header which provides the mysterious is_class
template. Thanks go out to Reid Spencer for skillfully extracting this
from boost!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11784
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 24 Feb 2004 03:47:25 +0000 (03:47 +0000)]
Noone cares about similarity to boost
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11783
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 23:49:40 +0000 (23:49 +0000)]
Make enum private as it is an implementation detail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11782
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 23:47:10 +0000 (23:47 +0000)]
Remove '4Virt' from member function names as it is obvious.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11781
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 23:08:11 +0000 (23:08 +0000)]
Refactor VirtRegMap out of RegAllocLinearScan as the first part of bug
251 (providing a generic machine code rewriter/spiller).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11780
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 22:42:51 +0000 (22:42 +0000)]
Include Config/config.h for SHLIBEXT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11779
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 22:07:26 +0000 (22:07 +0000)]
DataTypes.h is now output from configure, and shortened
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11778
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 22:07:01 +0000 (22:07 +0000)]
Add SUBSTing checks for sys/types.h and inttypes.h; add DataTypes.h to AC_OUTPUT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11777
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 22:07:00 +0000 (22:07 +0000)]
Regenerated with autoconf-2.57.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11776
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 21:46:58 +0000 (21:46 +0000)]
Generate much more efficient code in programs like pifft
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11775
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 21:46:42 +0000 (21:46 +0000)]
Fix a small typeo in my checkin last night that broke vortex and other programs :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11774
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 21:30:39 +0000 (21:30 +0000)]
Regenerated with autoheader-2.57.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11773
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 21:30:37 +0000 (21:30 +0000)]
Regenerated with autoconf-2.57.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11772
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 21:30:36 +0000 (21:30 +0000)]
Change test for pthreads to use AC_SUBST; add ThreadSupport.h as an AC_OUTPUT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11771
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 21:30:29 +0000 (21:30 +0000)]
ThreadSupport.h is now output from configure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11770
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 21:12:58 +0000 (21:12 +0000)]
Remove check for slist
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11769
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 20:30:06 +0000 (20:30 +0000)]
Fix InstCombine/2004-02-23-ShiftShiftOverflow.ll
Also, turn 'shr int %X, 1234' into 'shr int %X, 31'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11768
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 20:24:16 +0000 (20:24 +0000)]
Test for the other way also
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11767
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 20:19:51 +0000 (20:19 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11766
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:56:36 +0000 (18:56 +0000)]
Renamed to hash_set.in; move to using autoconf substitution tags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11765
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:56:35 +0000 (18:56 +0000)]
Renamed to hash_map.in; move to using autoconf substitution tags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11764
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:56:05 +0000 (18:56 +0000)]
Add include/Support/hash_map and include/Support/hash_set as AC_OUTPUT files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11763
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:56:04 +0000 (18:56 +0000)]
Regenerated using autoheader-2.57.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11762
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:56:03 +0000 (18:56 +0000)]
Move HASH_* checks to using AC_SUBST instead of AC_DEFINE. Tighten up some whitespace and comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11761
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:56:02 +0000 (18:56 +0000)]
Regenerated using autoconf-2.57.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11760
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 18:45:32 +0000 (18:45 +0000)]
Add number of spilled registers statistic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11759
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 18:40:08 +0000 (18:40 +0000)]
Fix bugs in finegrainification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11758
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 18:38:20 +0000 (18:38 +0000)]
Finegrainify namespacification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11757
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 18:36:38 +0000 (18:36 +0000)]
Use MachineBasicBlock::getParent().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11756
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 18:28:35 +0000 (18:28 +0000)]
Remove implementation of default constructor as it is useless now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11755
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:16:10 +0000 (18:16 +0000)]
Renamed from include/Support/iterator. Doxygenify comments; add autoconf substitution tags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11754
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:16:10 +0000 (18:16 +0000)]
Replaced by include/Support/iterator.in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11753
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:16:09 +0000 (18:16 +0000)]
Regenerated with autoheader-2.57.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11752
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:16:08 +0000 (18:16 +0000)]
Add include/Support/iterator as an AC_OUTPUT file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11751
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:16:07 +0000 (18:16 +0000)]
Make all iterator checks use AC_SUBST instead of AC_DEFINE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11750
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 23 Feb 2004 18:16:06 +0000 (18:16 +0000)]
Regenerated with autoconf-2.57.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11749
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 18:14:48 +0000 (18:14 +0000)]
Refactor rewinding code for finding the first terminator of a basic
block into MachineBasicBlock::getFirstTerminator().
This also fixes a bug in the implementation of the above in both
RegAllocLocal and InstrSched, where instructions where added after the
terminator if the basic block's only instruction was a terminator (it
shouldn't matter for RegAllocLocal since this case never occurs in
practice).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11748
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 07:42:19 +0000 (07:42 +0000)]
Simplify code a bit, don't go off the end of the block, now that the current
block we are in might be empty
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11744
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 07:29:45 +0000 (07:29 +0000)]
We were forgetting to add FP_REG_KILL instructions to basic blocks which will
eventually get an assignment due to elimination of PHIs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11743
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 07:16:20 +0000 (07:16 +0000)]
Implement cast.ll::test14/15
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11742
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 07:16:03 +0000 (07:16 +0000)]
Add tests for casts that should be eliminated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11741
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 06:38:22 +0000 (06:38 +0000)]
Refactor some code. In the mul - setcc folding case, we really care about
whether this is the sign bit or not, so check unsigned comparisons as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11740
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 06:37:33 +0000 (06:37 +0000)]
Handle the unsigned form as well
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11739
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 06:10:13 +0000 (06:10 +0000)]
Improved PhysRegTracker interface. RegAlloc lazily allocates the register tracker using a std::auto_ptr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11738
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 06:00:11 +0000 (06:00 +0000)]
Implement mul.ll:test11
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11737
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 05:59:52 +0000 (05:59 +0000)]
Add a slight variant of test10
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11736
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 05:47:48 +0000 (05:47 +0000)]
Implement "strength reduction" of X <= C and X >= C
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11735
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 05:39:21 +0000 (05:39 +0000)]
Implement InstCombine/mul.ll:test10, which is a case that occurs when dealing
with "predication"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11734
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 05:38:47 +0000 (05:38 +0000)]
This multiply can be eliminated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11733
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 23 Feb 2004 04:12:30 +0000 (04:12 +0000)]
Simplify iterator usage now that we have next(). Also don't pass iterators by reference now that MachineInstr* are in an ilist
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11732
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 03:51:34 +0000 (03:51 +0000)]
Update the 'new features' section
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11731
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Feb 2004 03:36:36 +0000 (03:36 +0000)]
Bug fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11730
91177308-0d34-0410-b5e6-
96231b3b80d8