Reid Spencer
69904f939a
Guard further against APInt operations with operands of unequal bit width.
...
llvm-svn: 34897
2007-03-04 01:25:35 +00:00
Chris Lattner
1f7648efba
Implement PR1179/PR1232 and test/Transforms/IndVarsSimplify/loop_evaluate_[234].ll
...
This makes -indvars require and use LCSSA, updating it as appropriate.
llvm-svn: 34896
2007-03-04 01:00:28 +00:00
Chris Lattner
dd3f9f8c3b
New testcases for PR1179/PR1232.
...
llvm-svn: 34895
2007-03-04 00:54:06 +00:00
Reid Spencer
ed2ce58244
Get the version number for the LLVM from the autoconf/configure.ac file
...
when building the documentation for the web site.
llvm-svn: 34894
2007-03-04 00:45:50 +00:00
Chris Lattner
ca401aac31
Fix CodeGen/Generic/fpowi-promote.ll and PR1239
...
llvm-svn: 34893
2007-03-03 23:43:21 +00:00
Chris Lattner
6053ad4252
New testcase for PR1239
...
llvm-svn: 34892
2007-03-03 23:42:50 +00:00
Chris Lattner
ed30abf0cb
Make RewriteLoopExitValues far less nested by using continue in the loop
...
llvm-svn: 34891
2007-03-03 22:48:48 +00:00
Chris Lattner
567b9254cd
Add an expand action for ISD label which just deletes the label.
...
This "fixes" PR1238.
llvm-svn: 34890
2007-03-03 19:21:38 +00:00
Reid Spencer
04a1829559
Remove unnecessary #include.
...
llvm-svn: 34889
2007-03-03 18:29:16 +00:00
Reid Spencer
e586f2e7f7
1. Handle errors around the ModuleProvider. This is necessary since it is
...
reading bytecode.
2. The interpreter can delete the ModuleProvider and replace it with
another so don't depend on it being around after the EE is created.
3. Don't just run llvm_shutdown on exit but actually delete the EE as well.
This cleans up a vast amount of memory (but not all) that EE retained
through exit.
llvm-svn: 34888
2007-03-03 18:21:44 +00:00
Reid Spencer
603682ad1d
Deal with error handling better.
...
llvm-svn: 34887
2007-03-03 18:19:18 +00:00
Reid Spencer
30ed3bdaf2
Make the creation functions take an error string. This will help the
...
ExecutionEngine report errors on creation (like bytecode stuff) and also
help to get rid of exception handling.
llvm-svn: 34886
2007-03-03 18:18:11 +00:00
Reid Spencer
1f87660d29
Make sure that when we store a value it is masked to its correct bit
...
width. This helps CBE work with non-standard integer bit widths.
llvm-svn: 34885
2007-03-03 16:33:33 +00:00
Reid Spencer
ec8c51c1b1
Complete the APIntification of the interpreter. All asserts for > 64 bits
...
have been removed and dealt with. The interpreter should now be able to
execute any LLVM program using any bit width.
llvm-svn: 34884
2007-03-03 08:38:04 +00:00
Reid Spencer
00919f5769
Avoid memory leakage by having caller construct the APInt for the
...
destination value of LoadValueFromMemory.
llvm-svn: 34883
2007-03-03 08:36:29 +00:00
Reid Spencer
c3bfe13ed5
Require the destination GlobalValue for LoadValueFromMemory to be passed
...
in as a parameter instead of returned.
llvm-svn: 34882
2007-03-03 08:35:14 +00:00
Reid Spencer
94a48f06e5
Regularize the interface for conversion functions to/from float/double.
...
llvm-svn: 34881
2007-03-03 08:34:02 +00:00
Reid Spencer
50d7ad9183
Fix constant folding of fp->int bitcast for vectors.
...
llvm-svn: 34880
2007-03-03 08:32:46 +00:00
Reid Spencer
cfe415c4e1
Add APIntVal as a possible GenericeValue.
...
llvm-svn: 34879
2007-03-03 07:36:44 +00:00
Evan Cheng
d74cb0e194
Only propagate IsKill if the last use is a kill.
...
llvm-svn: 34878
2007-03-03 06:32:37 +00:00
Reid Spencer
54c6e84c83
Implement APInt support for the binary operators.
...
Move the getConstantExpr function towards the end of the file so we don't
need a dozen forward declarations.
llvm-svn: 34877
2007-03-03 06:22:22 +00:00
Reid Spencer
72aafa1d49
1. Have the ExecutionContext keep track of the APInt's allocated and
...
ensure they are cleaned up when the stack frame exits.
2. Move a function to the Execution.cpp file where it belongs.
llvm-svn: 34876
2007-03-03 06:19:55 +00:00
Nate Begeman
323cf8f602
http://llvm.org/bugs/show_bug.cgi?id=1237
...
llvm-svn: 34875
2007-03-03 06:18:18 +00:00
Reid Spencer
815f8dd225
Implement loading and storing of APInt values from memory.
...
llvm-svn: 34874
2007-03-03 06:18:03 +00:00
Reid Spencer
1a7d446963
Make getNumWords public so that those using getRawData stand a chance of
...
not reading beyond the end of the buffer returned.
llvm-svn: 34873
2007-03-03 06:17:23 +00:00
Reid Spencer
22c4fedabf
Add names for some of the operators. This is needed for the macros in
...
the Interpreter.
llvm-svn: 34872
2007-03-03 05:37:23 +00:00
Nick Lewycky
e6049c2f08
Emit low/high immediate loads properly for Linux/PPC.
...
llvm-svn: 34871
2007-03-03 05:29:51 +00:00
Chris Lattner
da1d04a057
my recent change caused a failure in a bswap testcase, because it changed
...
the order that instcombine processed instructions in the testcase. The end
result is that instcombine finished with:
define i16 @test1(i16 %a) {
%tmp = zext i16 %a to i32 ; <i32> [#uses=2]
%tmp21 = lshr i32 %tmp, 8 ; <i32> [#uses=1]
%tmp5 = shl i32 %tmp, 8 ; <i32> [#uses=1]
%tmp.upgrd.32 = or i32 %tmp21, %tmp5 ; <i32> [#uses=1]
%tmp.upgrd.3 = trunc i32 %tmp.upgrd.32 to i16 ; <i16> [#uses=1]
ret i16 %tmp.upgrd.3
}
which can't get matched as a bswap.
This patch makes instcombine more sophisticated about removing truncating
casts, allowing it to turn this into:
define i16 @test2(i16 %a) {
%tmp211 = lshr i16 %a, 8
%tmp52 = shl i16 %a, 8
%tmp.upgrd.323 = or i16 %tmp211, %tmp52
ret i16 %tmp.upgrd.323
}
which then matches as bswap. This fixes bswap.ll and implements
InstCombine/cast2.ll:test[12]. This also implements cast elimination of
add/sub.
llvm-svn: 34870
2007-03-03 05:27:34 +00:00
Chris Lattner
05e93d7f05
new testcase: instcombine should remove all the casts.
...
llvm-svn: 34869
2007-03-03 05:24:06 +00:00
Nick Lewycky
db42295ff2
Translate bit operations to English.
...
llvm-svn: 34868
2007-03-03 03:14:40 +00:00
Chris Lattner
c1991789c5
instcombine doesn't do CSE, simplify unrelated detail
...
llvm-svn: 34867
2007-03-03 02:27:02 +00:00
Evan Cheng
3fd728596e
Watch out for cases like this:
...
entry (0x8b056f0, LLVM BB @0x8b01b30, ID#0):
Live Ins: %r0 %r1 %r2 %r3
%reg1032 = tMOVrr %r3<kill>
%reg1033 = tMOVri8 1
%reg1034 = tMOVri8 0
tCMPi8 %reg1029<kill>, 0
tBcc mbb<entry,0x8b06a10>, 0
Successors according to CFG: 0x8b06980 0x8b06a10
entry (0x8b06980, LLVM BB @0x8b01b30, ID#12):
Predecessors according to CFG: 0x8b056f0
%reg1036 = tMOVrr %reg1034<kill>
Successors according to CFG: 0x8b06a10
entry (0x8b06a10, LLVM BB @0x8b01b30, ID#13):
Predecessors according to CFG: 0x8b056f0 0x8b06980
%reg1024<dead> = tMOVrr %reg1030<kill>
...
reg1030 and r1 have already been joined. When reg1024 and reg1030 are joined,
r1 live range from function entry to the tMOVrr instruction are dead. Eliminate
r1 from the livein set of the entry BB, not the BB where the copy is.
llvm-svn: 34866
2007-03-03 02:18:00 +00:00
Chris Lattner
960a543037
add a top-level iteration loop to instcombine. This means that it will never
...
finish without combining something it is capable of.
llvm-svn: 34865
2007-03-03 02:04:50 +00:00
Reid Spencer
c34dedf686
APIntify this pass.
...
llvm-svn: 34863
2007-03-03 00:48:31 +00:00
Reid Spencer
3588ab15d1
Add isPositive for symmetry with isNegative.
...
llvm-svn: 34862
2007-03-03 00:24:39 +00:00
Reid Spencer
53a3739c80
Finally get this patch right :)
...
Replace expensive getZExtValue() == 0 calls with isZero() calls.
llvm-svn: 34861
2007-03-02 23:51:25 +00:00
Reid Spencer
ba547cbb2a
Dang, I've done that twice now! Undo previous commit.
...
llvm-svn: 34860
2007-03-02 23:37:53 +00:00
Reid Spencer
558990e189
Use more efficient test for one value in a ConstantInt.
...
llvm-svn: 34859
2007-03-02 23:35:28 +00:00
Reid Spencer
29fe20a98b
Guard against huge loop trip counts in an APInt safe way.
...
llvm-svn: 34858
2007-03-02 23:31:34 +00:00
Evan Cheng
deaea25eb9
X86-64 VACOPY needs custom expansion. va_list is a struct { i32, i32, i8*, i8* }.
...
llvm-svn: 34857
2007-03-02 23:16:35 +00:00
Reid Spencer
dec03a08d6
Make sure debug code is not evaluated in non-debug case.
...
llvm-svn: 34856
2007-03-02 23:15:21 +00:00
Reid Spencer
1e102971d2
1. Sort switch cases using APInt safe comparison.
...
2. Make sure debug output of APInt values is safe for all bit widths.
llvm-svn: 34855
2007-03-02 23:05:28 +00:00
Reid Spencer
43376a74af
Use APInt safe isOne() method on ConstantInt instead of getZExtValue()==1
...
llvm-svn: 34854
2007-03-02 23:03:17 +00:00
Reid Spencer
bb38d79ad6
Make sorting of ConstantInt be APInt clean through use of ult function.
...
llvm-svn: 34853
2007-03-02 23:01:14 +00:00
Reid Spencer
1825dd0d7c
Fix ashr for bitwidths > 64. This is now validated up to 1024 bits.
...
llvm-svn: 34852
2007-03-02 22:39:11 +00:00
Anton Korobeynikov
e41e3fc74e
Fix uninitialized use of variable. Remove tabs and fix identation.
...
llvm-svn: 34850
2007-03-02 22:19:41 +00:00
Anton Korobeynikov
57af2a4f3b
Simplify things
...
llvm-svn: 34849
2007-03-02 21:50:27 +00:00
Chris Lattner
b15e2b182f
Fix a significant algorithm problem with the instcombine worklist. removing
...
a value from the worklist required scanning the entire worklist to remove all
entries. We now use a combination map+vector to prevent duplicates from
happening and prevent the scan. This speeds up instcombine on a large file
from the llvm-gcc bootstrap from 189.7s to 4.84s in a debug build and from
5.04s to 1.37s in a release build.
llvm-svn: 34848
2007-03-02 21:28:56 +00:00
Chris Lattner
51f5457ad4
minor cleanup
...
llvm-svn: 34846
2007-03-02 19:59:19 +00:00
Chris Lattner
c3b68788bb
Fix PR1234 by working around a compiler bug.
...
llvm-svn: 34845
2007-03-02 18:16:29 +00:00