Reid Spencer
16353d6583
valgrind clean version of llvm-upgrade
...
llvm-svn: 32090
2006-12-01 20:36:40 +00:00
Reid Spencer
2daa57894f
First version of llvm-upgrade that can correctly upgrade a large test
...
case.
llvm-svn: 32089
2006-12-01 20:26:20 +00:00
Chris Lattner
70359e75bf
Remove dead methods
...
llvm-svn: 32088
2006-12-01 20:14:47 +00:00
Chris Lattner
defd8470aa
These should be rewritten to fold without using the 'Rules' mechanism, but
...
until this happens at least make sext from bool and sitofp from bool do the
right thing.
llvm-svn: 32087
2006-12-01 19:50:54 +00:00
Chris Lattner
6dde72735e
test1 is miscompiled
...
llvm-svn: 32086
2006-12-01 19:50:04 +00:00
Jim Laskey
b0862be332
wrong spot
...
llvm-svn: 32084
2006-12-01 19:39:32 +00:00
Jim Laskey
ba0f15c676
Test for float varargs.
...
llvm-svn: 32083
2006-12-01 19:29:20 +00:00
Chris Lattner
710ebaf377
this logic is broken for trunc to bool, replace the folding logic for trunc
...
completely, as it is trivial. We should probably do this for the rest of the
cast operations. This fixes ConstProp/2006-12-01-TruncBoolBug.ll.
llvm-svn: 32081
2006-12-01 19:22:41 +00:00
Chris Lattner
f16661c3c6
add a new ConstantIntegral::get method. Simplify the implementation of
...
ConstantInt::get
llvm-svn: 32080
2006-12-01 19:20:02 +00:00
Chris Lattner
635ed246d7
new 'cast' miscompilation, reduced from perlbmk by Evan
...
llvm-svn: 32079
2006-12-01 19:02:56 +00:00
Chris Lattner
e6b2c29c27
enable this now that codegen support is in place
...
llvm-svn: 32076
2006-12-01 18:04:08 +00:00
Evan Cheng
b689d32b20
Copy and paste error. An initialized global cannot be a weak reference.
...
llvm-svn: 32075
2006-12-01 17:39:22 +00:00
Jim Laskey
1b0bc794e6
1. In ppc64 mode we need only use one GPR.
...
2. Float values need to be promoted to double when they are vararg.
llvm-svn: 32074
2006-12-01 16:30:47 +00:00
Jim Laskey
311622f912
ExternalWeak case in wrong location.
...
llvm-svn: 32073
2006-12-01 14:37:39 +00:00
Evan Cheng
80361a9297
This test is meant for X86 CPU which does not support SSE2.
...
llvm-svn: 32072
2006-12-01 10:17:36 +00:00
Evan Cheng
845bd6e096
Fix 2005-05-08-FPStackifierPHI.ll failure.
...
llvm-svn: 32071
2006-12-01 10:11:51 +00:00
Evan Cheng
3fe5331483
Add a extern weak test case.
...
llvm-svn: 32070
2006-12-01 09:18:20 +00:00
Evan Cheng
5fb2c76d59
A initialized global variable cannot be extern weak. However, if a global value's initializer is itself a external weak symbol, emit the weak reference.
...
llvm-svn: 32069
2006-12-01 09:13:26 +00:00
Evan Cheng
fa54c0b6fb
Darwin PPC external weak linkage support.
...
llvm-svn: 32068
2006-12-01 07:56:37 +00:00
Evan Cheng
5b020349f2
Minor code clean up.
...
llvm-svn: 32067
2006-12-01 07:38:23 +00:00
Evan Cheng
db66456285
Fix indentation.
...
llvm-svn: 32066
2006-12-01 07:17:00 +00:00
Evan Cheng
6476a3b4ba
Darwin X86 external weak linkage support.
...
llvm-svn: 32065
2006-12-01 07:15:24 +00:00
Chris Lattner
8bbf5e20cc
new testcase to verify external weak continues to work
...
llvm-svn: 32064
2006-12-01 07:14:26 +00:00
Chris Lattner
18f6fe36ce
new testcase for PR1027
...
llvm-svn: 32063
2006-12-01 06:34:56 +00:00
Chris Lattner
d1d5693149
Fix a typo introduced by the cast patch that horribly broke a lot of vector
...
code. Testcase here: Transforms/ConstProp/2006-11-30-vector-cast.ll
llvm-svn: 32062
2006-12-01 05:55:25 +00:00
Chris Lattner
5145977cd8
new testcase
...
llvm-svn: 32061
2006-12-01 05:54:48 +00:00
Reid Spencer
6f05d73938
Don't fold "ptrtoint GV to bool" since this should be doing a truncate not
...
a comparison against zero. Instead fold setne(GV,null) and seteq(GV,null)
to ConstantBool::True or ConstantBool::False, respectively.
llvm-svn: 32060
2006-12-01 03:56:30 +00:00
Reid Spencer
30477cd88e
Define the HAVE_PTHREAD symbol.
...
llvm-svn: 32059
2006-12-01 03:46:01 +00:00
Reid Spencer
6c0676d4e6
The InstCombine hack has been removed, no need to XFAIL this any more.
...
llvm-svn: 32058
2006-12-01 01:50:45 +00:00
Chris Lattner
09ed0ff2ac
Fix the CodeGen/PowerPC/vec_constants.ll regression.
...
llvm-svn: 32057
2006-12-01 01:45:39 +00:00
Nick Lewycky
f0371198ec
Remove extra header.
...
llvm-svn: 32056
2006-12-01 01:05:14 +00:00
Nick Lewycky
e5a8617778
Fix opt -o option. Don't pass a pointer to an auto variable which is going
...
away before it's needed, and don't try to delete that pointer!
llvm-svn: 32055
2006-12-01 00:43:14 +00:00
Reid Spencer
d43999259b
For PR1019:
...
Add HAVE_PTHREAD to makefiles with support from configure and use it to
determine whether to build examples/ParallelJIT.
Patch by Anton Korobeynikov.
llvm-svn: 32054
2006-12-01 00:37:14 +00:00
Reid Spencer
d5e19444a7
Regenerate.
...
llvm-svn: 32053
2006-12-01 00:33:46 +00:00
Anton Korobeynikov
12c94949e0
Introducing external weak linkage. Darwin codegen should be added later.
...
llvm-svn: 32052
2006-12-01 00:25:12 +00:00
Reid Spencer
ad05ee9f39
Remove 4 FIXMEs to hack around cast-to-bool problems which no longer exist.
...
llvm-svn: 32051
2006-11-30 23:13:36 +00:00
Anton Korobeynikov
6dbdfe2baa
Factor out GVRequiresExtraLoad() from .h to .cpp
...
llvm-svn: 32048
2006-11-30 22:42:55 +00:00
Evan Cheng
6104a1aa9e
Add X86-64 load / store codegen tests.
...
llvm-svn: 32047
2006-11-30 22:07:00 +00:00
Evan Cheng
ae1cd75af7
- Use a different wrapper node for RIP-relative GV, etc.
...
- Proper support for both small static and PIC modes under X86-64
- Some (non-optimal) support for medium modes.
llvm-svn: 32046
2006-11-30 21:55:46 +00:00
Jim Laskey
f52337299a
better check for version
...
llvm-svn: 32045
2006-11-30 18:29:23 +00:00
Chris Lattner
c8978c5272
make it clear that this is always a zext
...
llvm-svn: 32044
2006-11-30 17:35:08 +00:00
Chris Lattner
3ede00b376
One more bugfix, 3 cases of making casts explicit.
...
llvm-svn: 32043
2006-11-30 17:32:29 +00:00
Chris Lattner
0390b9e6bb
Fix a bug in globalopt due to the recent cast patch.
...
llvm-svn: 32042
2006-11-30 17:26:08 +00:00
Reid Spencer
3867383db0
Allow llvm-upgrade to read from stdin. Configure the lexer for reading
...
from C++ std::istream.
llvm-svn: 32041
2006-11-30 16:50:26 +00:00
Jim Laskey
b12ab5fadb
Add compile unit size test
...
llvm-svn: 32040
2006-11-30 15:36:44 +00:00
Jim Laskey
e6f6890438
Correct comment
...
llvm-svn: 32039
2006-11-30 15:31:49 +00:00
Jim Laskey
030b840234
Pubnames test
...
llvm-svn: 32038
2006-11-30 15:25:59 +00:00
Jim Laskey
4d98e2e79d
Update docs
...
llvm-svn: 32037
2006-11-30 14:36:22 +00:00
Jim Laskey
b5b14060a8
Change global descriptor names to provide name, full name and linkage name.
...
llvm-svn: 32036
2006-11-30 14:35:45 +00:00
Jim Laskey
aa2843ad4a
Temp fix to deal gdb issue.
...
llvm-svn: 32035
2006-11-30 11:09:42 +00:00
Evan Cheng
aafeaef8c8
MachineInstr::setOpcode -> MachineInstr::setInstrDescriptor
...
llvm-svn: 32034
2006-11-30 07:12:03 +00:00
Evan Cheng
fef6400f01
Remove the ugly SPARCV9 TargetInstrDescriptors hack.
...
llvm-svn: 32033
2006-11-30 07:10:43 +00:00
Evan Cheng
3c3ce98530
- MachineInstr now keeps a ptr to TargetInstrDescriptor instead of Opcode.
...
- Remove the ugly TargetInstrDescriptors hack.
llvm-svn: 32032
2006-11-30 07:08:44 +00:00
Reid Spencer
120b380bb5
Ignore generated files.
...
llvm-svn: 32031
2006-11-30 06:37:43 +00:00
Reid Spencer
8e60eec519
Initial, non-functional, version of llvm-upgrade. This version just echos
...
its input. Committed for safekeeping purposes. Don't use this yet.
llvm-svn: 32030
2006-11-30 06:36:44 +00:00
Evan Cheng
983ac81fb0
New LSR test case.
...
llvm-svn: 32029
2006-11-29 23:48:37 +00:00
Evan Cheng
7a9238c84d
In PIC mode, GV not requiring an extra load can be used as address immediate.
...
llvm-svn: 32028
2006-11-29 23:48:14 +00:00
Evan Cheng
8c84c7cd0d
Clean up.
...
llvm-svn: 32027
2006-11-29 23:46:27 +00:00
Evan Cheng
0b1692216d
Fix for PR1018 - Better support for X86-64 Linux in small code model.
...
llvm-svn: 32026
2006-11-29 23:19:46 +00:00
Reid Spencer
70c3dd4eff
Get the delegation right for InstVisitor.
...
llvm-svn: 32025
2006-11-29 21:37:00 +00:00
Chris Lattner
2f648fc55d
Fix bug codegen'ing FP constant vectors with integer splats. Make sure the
...
created intrinsics have the right integer types. This fixes
PowerPC/2006-11-29-AltivecFPSplat.ll
llvm-svn: 32024
2006-11-29 19:58:49 +00:00
Chris Lattner
c386b40714
new testcase
...
llvm-svn: 32023
2006-11-29 19:57:55 +00:00
Evan Cheng
a743fada65
Avoid inifinite looping if READCYCLECOUNTER isn't custom lowered.
...
llvm-svn: 32022
2006-11-29 19:13:47 +00:00
Jim Laskey
01b74b6f7b
Eliminate unnecessary scopes.
...
llvm-svn: 32020
2006-11-29 16:55:57 +00:00
Jim Laskey
152671f0bf
Offset for load of 32-bit arg in 64-bit world was incorrect.
...
llvm-svn: 32019
2006-11-29 13:37:09 +00:00
Evan Cheng
e2e0a33e6c
Add x86-64 llvm.readcyclecounter test.
...
llvm-svn: 32018
2006-11-29 08:29:59 +00:00
Evan Cheng
28a9e9b230
Custom lower READCYCLECOUNTER for x86-64.
...
llvm-svn: 32017
2006-11-29 08:28:13 +00:00
Evan Cheng
6973993e9c
Allow target to custom lower READCYCLECOUNTER (when it doesn't have to be expanded).
...
llvm-svn: 32016
2006-11-29 08:26:18 +00:00
Evan Cheng
c24ce795a3
Fix test.
...
llvm-svn: 32015
2006-11-29 08:22:59 +00:00
Bill Wendling
7ec1a5befa
Oops! didn't mean to put this in there yet.
...
llvm-svn: 32014
2006-11-29 07:31:23 +00:00
Chris Lattner
0d67dde00a
done
...
llvm-svn: 32013
2006-11-29 07:21:46 +00:00
Chris Lattner
aeddf5f077
new bswap idiom
...
llvm-svn: 32012
2006-11-29 07:21:08 +00:00
Chris Lattner
960acb008b
implement cast.ll:test35. With this, we recognize:
...
unsigned short swp(unsigned short a) {
return ((a & 0xff00) >> 8 | (a & 0x00ff) << 8);
}
as an idiom for bswap.
llvm-svn: 32011
2006-11-29 07:18:39 +00:00
Chris Lattner
19d72c9f4f
new testcase
...
llvm-svn: 32010
2006-11-29 07:17:32 +00:00
Chris Lattner
d747f015ff
Teach instcombine to turn trunc(srl x, c) -> srl (trunc(x), c) when safe.
...
This implements InstCombine/cast.ll:test34. It fires hundreds of times on
176.gcc.
llvm-svn: 32009
2006-11-29 07:04:07 +00:00
Chris Lattner
544dfa013c
new testcase
...
llvm-svn: 32008
2006-11-29 07:03:00 +00:00
Chris Lattner
7b34c1391a
This fails on mainline.
...
llvm-svn: 32007
2006-11-29 05:19:32 +00:00
Chris Lattner
a7942b7bbd
Implement Regression/Transforms/InstCombine/bswap-fold.ll,
...
folding seteq (bswap(x)), c -> seteq(x,bswap(c))
llvm-svn: 32006
2006-11-29 05:02:16 +00:00
Chris Lattner
e7f83dcf4b
new testcase, bswaps should be eliminated.
...
llvm-svn: 32005
2006-11-29 05:00:14 +00:00
Evan Cheng
8facb43593
16-byte stack alignment for X86-64 ELF. Patch by Dan Gohman.
...
llvm-svn: 32004
2006-11-29 02:00:40 +00:00
Evan Cheng
feba507a97
Fix for PR1023 by Dan Gohman.
...
llvm-svn: 32003
2006-11-29 01:58:12 +00:00
Evan Cheng
79ca238966
Add test cases for PR1022, 1023.
...
llvm-svn: 32002
2006-11-29 01:57:06 +00:00
Chris Lattner
38084725a2
Upgrade the ugly darwin 64-bit bswap idiom (bswap %eax / bswap %edx /
...
xchgl %eax, %edx) to llvm.bswap.i64. This compiles:
long long test2(long long A) {
return _OSSwapInt64(A);
}
to:
_test2:
movl 8(%esp), %eax
movl 4(%esp), %edx
bswapl %eax
bswapl %edx
ret
instead of:
_test2:
movl 8(%esp), %edx
movl 4(%esp), %eax
bswap %eax
bswap %edx
xchgl %eax, %edx
ret
GCC manages (with -fomit-frame-pointer) the uglier:
_test2:
subl $4, %esp
movl 8(%esp), %eax
movl 12(%esp), %edx
bswap %eax
bswap %edx
xchgl %eax, %edx
addl $4, %esp
ret
llvm-svn: 32001
2006-11-29 01:48:01 +00:00
Evan Cheng
6e12a052ff
Fix for PR1022 (folding loads of static initializers) by Dan Gohman.
...
llvm-svn: 32000
2006-11-29 01:38:07 +00:00
Chris Lattner
0fc6ae0c3d
Trivially lower 'bswap $0' into llvm.bswap. This fixes hexxagon with the
...
JIT on darwin/x86, which has htonl implemented as inline asm.
llvm-svn: 31999
2006-11-29 01:14:06 +00:00
Bill Wendling
18739dc03f
WTF? These weird newlines got in there...
...
llvm-svn: 31998
2006-11-29 01:14:00 +00:00
Chris Lattner
90f4238c38
add a hook to allow targets to hack on inline asms to lower them to llvm
...
when they want to.
llvm-svn: 31997
2006-11-29 01:12:32 +00:00
Reid Spencer
a736fdf216
Join a split line.
...
llvm-svn: 31996
2006-11-29 01:11:01 +00:00
Bill Wendling
5c3966aa68
Converted to using llvm streams instead of <iostream>s
...
llvm-svn: 31992
2006-11-29 00:39:47 +00:00
Bill Wendling
afd54eb8b6
Replacing std::iostreams with llvm iostreams. Some of these changes involve
...
adding a temporary wrapper around the ostream to make it friendly to
functions expecting an LLVM stream. This should be fixed in the future.
llvm-svn: 31990
2006-11-29 00:19:40 +00:00
Bill Wendling
a531ac291c
Convert to using llvm streams instead of iostreams.
...
llvm-svn: 31989
2006-11-28 23:33:06 +00:00
Bill Wendling
a38b3e15be
Support for llvm_ostreams.
...
llvm-svn: 31988
2006-11-28 23:31:42 +00:00
Andrew Lenharth
904ca9c688
gcc doesn't like an empty colbber list
...
llvm-svn: 31987
2006-11-28 23:07:32 +00:00
Bill Wendling
be6ce9d1c7
Use ostream instead of iostream
...
llvm-svn: 31986
2006-11-28 22:49:32 +00:00
Bill Wendling
787b77320f
Use llvm streams instead of <iostream>
...
llvm-svn: 31985
2006-11-28 22:48:48 +00:00
Bill Wendling
6c1740f31f
Removed #include <iostream> and used llvm streams
...
llvm-svn: 31984
2006-11-28 22:47:12 +00:00
Bill Wendling
597d451fea
Removed some of the iostream #includes. Moved towards converting to using
...
llvm streams
llvm-svn: 31983
2006-11-28 22:46:12 +00:00
Bill Wendling
a60d8edfc9
Support for llvm streams.
...
llvm-svn: 31982
2006-11-28 22:45:17 +00:00
Chris Lattner
228bcd3802
Add a helper function
...
llvm-svn: 31981
2006-11-28 22:32:35 +00:00
Andrew Lenharth
f52ae7ec72
Identities are default now
...
llvm-svn: 31980
2006-11-28 22:28:08 +00:00
Andrew Lenharth
8b59fd03c2
Make identity default, and fix PR1020
...
llvm-svn: 31979
2006-11-28 22:25:32 +00:00
Bill Wendling
f89955be1b
Added a temporary hack to get the llvm-streams to work for future checkins.
...
llvm-svn: 31978
2006-11-28 22:21:29 +00:00
Reid Spencer
116ad83aa0
Undo the last patch until 253.perlbmk passes with these changes.
...
llvm-svn: 31977
2006-11-28 20:23:51 +00:00
Evan Cheng
69b1825488
New entries.
...
llvm-svn: 31976
2006-11-28 19:59:25 +00:00
Andrew Lenharth
7f739d5bdd
update comments
...
llvm-svn: 31975
2006-11-28 19:56:02 +00:00
Andrew Lenharth
212f15fa8a
Get the asminfo for the target most closely matching the module and use that for inline asm
...
llvm-svn: 31974
2006-11-28 19:53:36 +00:00
Andrew Lenharth
2675e23a7e
X86 asm -> gcc asm translation table (incomplete)
...
llvm-svn: 31973
2006-11-28 19:52:49 +00:00
Andrew Lenharth
ff35b449a0
Add per-target support for asm translation in the cbe
...
llvm-svn: 31972
2006-11-28 19:52:20 +00:00
Jim Laskey
40182179b6
Remove debug code.
...
llvm-svn: 31970
2006-11-28 18:27:02 +00:00
Jim Laskey
ec05b046c7
Prime text sections to improve branch locality in large object files.
...
llvm-svn: 31969
2006-11-28 18:21:52 +00:00
Jim Laskey
f4e2e009d9
32-bit int space was not accounted for properly in lowerCall.
...
llvm-svn: 31966
2006-11-28 14:53:52 +00:00
Reid Spencer
55f1fbee2e
Regenerate.
...
llvm-svn: 31965
2006-11-28 07:29:44 +00:00
Reid Spencer
d47017990b
Implement signedness caching for values, value lists, constants and
...
constant lists. This is just an internal change to the parser in
preparation for some backwards compatibility code that is to follow.
This will allow things like "uint 4000000000" to retain the unsignedness
of the integer constant as the value moves through the parser. In the
future, all integer types will be signless but parsing "uint" and friends
will be retained for backwards compatibility.
llvm-svn: 31964
2006-11-28 07:28:14 +00:00
Reid Spencer
59fe2d89ae
Remove 4 FIXME's from the CAST patch now that the back end is correctly
...
producing code for "trunc to bool". This passes all tests on Linux.
llvm-svn: 31963
2006-11-28 07:23:01 +00:00
Reid Spencer
d077fe70e9
Add an -append-exit-code option to bugpoint. This will cause bugpoint to
...
append "exit <retcode>" to the end of the output file. This is used by
the nightly tester to make bugpoint match the output generated by the
RunSafely.sh script so it doesn't find false positives.
llvm-svn: 31960
2006-11-28 07:04:10 +00:00
Reid Spencer
21052cd48f
Fix a typo.
...
llvm-svn: 31959
2006-11-28 06:14:06 +00:00
Bill Wendling
bc0d5f8bcb
Put the #include for a module first.
...
llvm-svn: 31958
2006-11-28 03:31:29 +00:00
Evan Cheng
b2a6b0dbad
Clean up.
...
llvm-svn: 31957
2006-11-28 02:25:34 +00:00
Evan Cheng
db8f19fb90
Fix indentation.
...
llvm-svn: 31956
2006-11-28 02:22:51 +00:00
Bill Wendling
dfc91897df
Changed to using LLVM streams.
...
llvm-svn: 31955
2006-11-28 02:09:03 +00:00
Bill Wendling
3f6f0fd028
Changed to using llvm streams.
...
llvm-svn: 31954
2006-11-28 02:08:17 +00:00
Bill Wendling
cd2f1a897f
Added helper function to transition to using llvm streams.
...
llvm-svn: 31953
2006-11-28 02:07:29 +00:00
Evan Cheng
8ddbdc70b7
Fix JIT encoding bugs for shift / rotate by one ops.
...
llvm-svn: 31952
2006-11-28 01:28:00 +00:00
Chris Lattner
e88ff3a961
testcase for pr1016
...
llvm-svn: 31951
2006-11-28 01:26:37 +00:00
Chris Lattner
3abb63651b
Fix PR1016
...
llvm-svn: 31950
2006-11-28 01:03:30 +00:00
Bill Wendling
5834fdb371
Removed #include <iostream> and replaced streams with llvm streams.
...
llvm-svn: 31949
2006-11-27 23:54:50 +00:00
Andrew Lenharth
e8c64aba11
Preliminary support for inline asm in the cbe. The target specific ugliness
...
is still in Writer, but issolated to a single function. This might be split
into something in each target directory. This is sufficient to get through
archie and an strcpy impl on linux-x86.
Module level asm is not handled.
llvm-svn: 31948
2006-11-27 23:50:49 +00:00
Evan Cheng
20350c4025
Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead
...
of opcode and number of operands.
llvm-svn: 31947
2006-11-27 23:37:22 +00:00
Chris Lattner
5230e9175a
remove dead tag
...
llvm-svn: 31944
2006-11-27 21:53:28 +00:00
Chris Lattner
5d5916b4d1
Fix the dag combiner bug corresponding to PR1014.
...
llvm-svn: 31943
2006-11-27 21:50:02 +00:00
Chris Lattner
f36cc15a84
this doesn't pass with CVS HEAD.
...
llvm-svn: 31942
2006-11-27 20:01:48 +00:00
Chris Lattner
8e9a7b73d9
Fix PR1014 and InstCombine/2006-11-27-XorBug.ll.
...
llvm-svn: 31941
2006-11-27 19:55:07 +00:00
Reid Spencer
5fb4da8c5d
Add 3 more test cases for ptrtoint, fptoui and fptosi
...
llvm-svn: 31940
2006-11-27 19:54:23 +00:00
Chris Lattner
2c2e34b2c4
testcase for PR1014
...
llvm-svn: 31939
2006-11-27 19:47:22 +00:00
Reid Spencer
16eaffe595
When truncating to bool, it is necessary to & with 1 for all casts that
...
can result in a bool. Previously PtrToInt, FPToUI and FPToSI were missing
this operation.
llvm-svn: 31938
2006-11-27 18:51:06 +00:00
Bill Wendling
f790e9de2c
Protect against null streams.
...
llvm-svn: 31937
2006-11-27 10:45:49 +00:00
Bill Wendling
7339b8dbfd
Removed #include <iostream> and replaced with llvm_* streams.
...
llvm-svn: 31936
2006-11-27 10:09:12 +00:00
Reid Spencer
141519fbc0
Alter these tests to ensure they match a "test $1, X" X86 instruction that
...
is now generated by the LLVM backend for "trunc to bool" instructions.
llvm-svn: 31935
2006-11-27 05:08:03 +00:00
Reid Spencer
b3281892d9
Add a test to ensure a bitcast/and/trunc combination eliminates the bitcast.
...
llvm-svn: 31934
2006-11-27 05:06:58 +00:00
Chris Lattner
3da631f29a
For better or worse, load from i1 is assumed to be zero extended. Do not
...
form a load from i1 from larger loads that may not be zext'd.
llvm-svn: 31933
2006-11-27 04:40:53 +00:00
Chris Lattner
db18938355
If a brcond condition is promoted, make sure to zero extend it, even if not
...
expanded into BR_CC.
llvm-svn: 31932
2006-11-27 04:39:56 +00:00
Reid Spencer
6c38f0bb07
For PR950:
...
The long awaited CAST patch. This introduces 12 new instructions into LLVM
to replace the cast instruction. Corresponding changes throughout LLVM are
provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the
exception of 175.vpr which fails only on a slight floating point output
difference.
llvm-svn: 31931
2006-11-27 01:05:10 +00:00
Reid Spencer
afbc00bc38
Don't use bitcast yet!
...
llvm-svn: 31930
2006-11-26 21:22:01 +00:00
Reid Spencer
2dd1741565
Make this test case easier to read. No functional changes.
...
llvm-svn: 31929
2006-11-26 18:27:09 +00:00
Bill Wendling
3750ae25a0
Removed #include <iostream> and replace with llvm_* streams.
...
llvm-svn: 31927
2006-11-26 10:52:51 +00:00
Bill Wendling
a88968b9c4
Add method that will take a function pointer so that it can handle things
...
like "llvm_cerr << std::flush";
llvm-svn: 31926
2006-11-26 10:51:51 +00:00
Bill Wendling
4ae401074c
Remove #include <iostream> and use llvm_* streams instead.
...
llvm-svn: 31925
2006-11-26 10:17:54 +00:00
Bill Wendling
8f13b5c43e
Replace #include <iostream> with llvm_* streams.
...
llvm-svn: 31924
2006-11-26 10:02:32 +00:00
Bill Wendling
5dbf43c983
Removed #include <iostream> and replaced with llvm_* streams.
...
llvm-svn: 31923
2006-11-26 09:46:52 +00:00
Bill Wendling
a7459ca813
Removed #include <iostream> and used the llvm_cerr/DOUT streams instead.
...
llvm-svn: 31922
2006-11-26 09:17:06 +00:00
Duraid Madina
24cdf575e7
fix storing bools to mem and unordered FP ops
...
llvm-svn: 31920
2006-11-26 04:34:26 +00:00
Reid Spencer
aa5c220665
Make the absolute/relative tolerance information easier to read/understand.
...
llvm-svn: 31908
2006-11-25 08:38:44 +00:00
Reid Spencer
6968c497de
Add newline at end of file.
...
llvm-svn: 31902
2006-11-25 05:41:02 +00:00
Reid Spencer
6984a15600
Only show the first few lines of difference.
...
llvm-svn: 31901
2006-11-25 04:07:06 +00:00
Reid Spencer
17782030cf
Add an option to enable lli (interpreter mode) testing.
...
llvm-svn: 31899
2006-11-24 20:34:16 +00:00
Reid Spencer
3c3324c7fa
Fix some typos.
...
llvm-svn: 31897
2006-11-23 16:45:52 +00:00
Reid Spencer
0e43e15fc9
Promote GEP ubyte indices to uint. Backwards compatibility for 1.2 and
...
older features will be dropped soon and these test cases must not rely
on the upgrade capability.
llvm-svn: 31896
2006-11-23 15:14:52 +00:00
Nick Lewycky
09b7e4d3ab
Update to new predicate simplifier VRP design. Fixes PR966 and PR967.
...
Remove predicate simplifier from default gcc3 pipeline. New design is too
slow to enable by default.
Add new testcases for problems encountered in development.
llvm-svn: 31895
2006-11-22 23:49:16 +00:00
Reid Spencer
fff57ce9cd
Stop early if there is no mis-optimization.
...
llvm-svn: 31893
2006-11-22 03:46:45 +00:00
John Criswell
4666c085f3
Documented the --disable-compression option in gccld and gccas.
...
llvm-svn: 31892
2006-11-21 22:53:12 +00:00
John Criswell
dffef2d2f5
Added the --disable-compression option which controls whether the
...
generated bytecode uses compression.
llvm-svn: 31891
2006-11-21 22:50:24 +00:00
Chris Lattner
ec45a4c88c
This xform is handled by FoldOpIntoPhi in visitCastInst in a more elegant way.
...
llvm-svn: 31889
2006-11-21 17:05:13 +00:00
Anton Korobeynikov
5b96cdebb0
Refactored *GVRequiresExtraLoad() to Subtarget method.
...
llvm-svn: 31887
2006-11-21 00:01:06 +00:00
Jim Laskey
efcaa4a8f5
Test for PR1013.
...
llvm-svn: 31886
2006-11-20 21:58:02 +00:00
Chris Lattner
e06180bab8
new testcase
...
llvm-svn: 31885
2006-11-20 21:20:57 +00:00
Chris Lattner
ec5dbccdcf
in ppc64-mode, don't allocate the 32-bit version of r13 either.
...
llvm-svn: 31884
2006-11-20 20:48:05 +00:00
Jim Laskey
d7f53cdaec
Global label not handled correctly.
...
llvm-svn: 31883
2006-11-20 20:29:06 +00:00
Chris Lattner
ac36360348
r13 is the thread pointer on darwin/ppc64, don't allocate it.
...
llvm-svn: 31882
2006-11-20 19:33:51 +00:00
Chris Lattner
1f96052d41
Fix PR1005
...
llvm-svn: 31881
2006-11-20 18:57:02 +00:00
Chris Lattner
55b8683d24
Fix PR1001, patch by Nikhil Patil!
...
llvm-svn: 31880
2006-11-20 18:54:33 +00:00
Chris Lattner
3e96211bc8
Fix codegen for x86-64 on systems (like ppc or i386) that don't have 64-bit
...
features autodetected. This fixes PR1010 and Regression/CodeGen/X86/xmm-r64.ll
on non-x86-64 hosts.
llvm-svn: 31879
2006-11-20 18:16:05 +00:00
Chris Lattner
3676a994ca
Fix PR1011 and CodeGen/Generic/2006-11-20-DAGCombineCrash.ll
...
llvm-svn: 31878
2006-11-20 18:05:46 +00:00
Chris Lattner
bffbec4482
Testcase for PR1011
...
llvm-svn: 31877
2006-11-20 18:05:26 +00:00
Chris Lattner
539df43e4b
setOperand should not zap the operand list or add implicit operands to an
...
instruction. Doing so breaks the FP stackifier, the alpha branch selector
the sparc fpmover.
This fixes PR1012 and CodeGen/X86/fp-stack-compare.ll
llvm-svn: 31876
2006-11-20 17:57:22 +00:00
Chris Lattner
2ae1230764
Testcase for pr1012
...
llvm-svn: 31875
2006-11-20 17:55:30 +00:00
Anton Korobeynikov
37d080b11d
We should perform extra load for dllimported calls
...
llvm-svn: 31874
2006-11-20 10:46:14 +00:00
Tanya Lattner
84252caf72
Fixed typo
...
llvm-svn: 31871
2006-11-20 06:07:10 +00:00
Tanya Lattner
da2d1e2319
Adding 1.9 release and removing references to cfrontend
...
llvm-svn: 31870
2006-11-20 06:04:46 +00:00
Tanya Lattner
b0babee602
Changing cfrontend dir to llvm-gcc3.4 as the example.
...
llvm-svn: 31869
2006-11-20 05:52:06 +00:00
Reid Spencer
d9436b6837
For PR950:
...
First in a series of patches to convert SetCondInst into ICmpInst and
FCmpInst using only two opcodes and having the instructions contain their
predicate value. Nothing uses these classes yet. More patches to follow.
llvm-svn: 31867
2006-11-20 01:22:35 +00:00
Reid Spencer
9f4448a26e
For PR950:
...
Retain the signedness of the old integer types in a new TypeInfo structure
so that it can be used in the grammar to implement auto-upgrade of things
that depended on signedness of types. This doesn't implement any new
functionality in the AsmParser, its just plumbing for future changes.
llvm-svn: 31866
2006-11-19 23:07:00 +00:00
Reid Spencer
f69acf3e26
Corrections from review.
...
llvm-svn: 31865
2006-11-19 03:00:14 +00:00
Chris Lattner
ea017f66f7
Don't transform in another bad case: if the block is empty, it should be
...
simplified before we do this xform so that our cost model is accurate.
llvm-svn: 31864
2006-11-18 22:25:39 +00:00
Chris Lattner
56ec81ff73
Fix another case we *don't* want to do this xform.
...
llvm-svn: 31861
2006-11-18 21:56:39 +00:00
Reid Spencer
e008326b86
Update a reference to the old setcc instruction.
...
llvm-svn: 31860
2006-11-18 21:55:45 +00:00
Reid Spencer
c828a0e3fe
For PR950:
...
Documentation preview of the upcoming icmp and fcmp instructions that
will replace the various setcc instructions.
llvm-svn: 31859
2006-11-18 21:50:54 +00:00
Chris Lattner
995a0175df
MachineInstr includes this
...
llvm-svn: 31858
2006-11-18 21:48:05 +00:00
Chris Lattner
ace542fa6c
Implement operator<< for machine basic blocks to make it easier to dump them.
...
llvm-svn: 31857
2006-11-18 21:47:36 +00:00
Chris Lattner
7acdc17fe4
make the previous change more aggressive, moving any block with no fallthrough.
...
This speeds up yacr2 by 7% on a core2.
llvm-svn: 31856
2006-11-18 21:30:35 +00:00
Chris Lattner
47ce26158f
Minor code layout tweak: if we have something like this:
...
if (cond) goto BB2
BB1:
...
return;
BB2:
...
Move BB1 to the end of the function so that the code falls through in the
non-return case. This has the effect of moving assert (and other no-return
call) bodies and return blocks out of loops.
llvm-svn: 31855
2006-11-18 20:47:54 +00:00
Chris Lattner
95adf8f1da
Do not convert massive blocks on phi nodes into select statements. Instead
...
only do these transformations if there are a small number of phi's.
This speeds up Ptrdist/ks from 2.35s to 2.19s on my mac pro.
llvm-svn: 31853
2006-11-18 19:19:36 +00:00
Chris Lattner
bfbc7ace7d
converting massive blocks of phis into selects like this is silly.
...
llvm-svn: 31852
2006-11-18 19:17:52 +00:00
Reid Spencer
4924c53b5e
Make the awk filter print out which files its eliminating.
...
llvm-svn: 31851
2006-11-18 18:30:18 +00:00
Reid Spencer
2ca613bcad
This is a utility for preparing patches against LLVM. It runs cvs diff with
...
the correct options, places the patch content in order that makes sense for
review, and filters cruft out of the patch (like diffs in *.cvs files). It
produces both a NAME.patch.raw (unfiltered) and NAME.patch (filtered) file.
llvm-svn: 31850
2006-11-18 18:02:30 +00:00
Reid Spencer
170ff02764
Provide a list of gccld optimization switches.
...
llvm-svn: 31849
2006-11-18 17:14:09 +00:00
Reid Spencer
e7c6fcdbf3
Fix bugs in this. What was I thinking??? :)
...
llvm-svn: 31848
2006-11-18 08:06:17 +00:00
Anton Korobeynikov
e7cbbfcb30
Movind newly-intorudced dll* linkage stuff & windows CC to "supported"
...
list
llvm-svn: 31847
2006-11-18 08:04:48 +00:00
Chris Lattner
ef22b57922
fix bug
...
llvm-svn: 31846
2006-11-18 07:52:10 +00:00
Chris Lattner
b81f10efaa
first draft of 1.9 release notes
...
llvm-svn: 31845
2006-11-18 07:51:14 +00:00
Reid Spencer
d8bd8def37
Fail even if opt doesn't print anything.
...
llvm-svn: 31844
2006-11-18 06:08:21 +00:00
Reid Spencer
178afb1f9c
Add a simple test to make sure getModRefInfo is 1/2 way sane.
...
llvm-svn: 31842
2006-11-18 05:52:18 +00:00
Reid Spencer
ceeed00be7
Have ConstantExprs upgrade opcodes the same way as instructions.
...
llvm-svn: 31841
2006-11-18 04:37:19 +00:00
Chris Lattner
2cca385fbb
on ppc64, float arguments take 8-byte stack slots not 4-byte stack slots.
...
Also, valist should create a pointer RC reg class value, not a GPRC value.
llvm-svn: 31840
2006-11-18 01:57:19 +00:00
Chris Lattner
572e238c14
make sure to safe LR8 in the right stack slot for PPC64
...
llvm-svn: 31839
2006-11-18 01:34:43 +00:00
Chris Lattner
9ca15c8914
Pretty print 'rldicr r2, r2, 2, 61' as 'sldi r2, r2, 2'.
...
llvm-svn: 31838
2006-11-18 01:23:56 +00:00
Chris Lattner
542dfd5510
Rewrite the branch selector to be correct in the face of large functions.
...
The algorithm it used before wasn't 100% correct, we now use an iterative
expansion model. This fixes assembler errors when compiling 403.gcc with
tail merging enabled.
Change the way the branch selector works overall: Now, the isel generates
PPC::BCC instructions (as it used to) directly, and these BCC instructions
are emitted to the output or jitted directly if branches don't need
expansion. Only if branches need expansion are instructions rewritten
and created. This should make branch select faster, and eliminates the
Bxx instructions from the .td file.
llvm-svn: 31837
2006-11-18 00:32:03 +00:00
Chris Lattner
33fc1d45e5
add encoding for BCC, after finally wrestling strange ppc/tblgen endianness
...
issues to the ground.
llvm-svn: 31836
2006-11-17 23:53:28 +00:00
Chris Lattner
be9377a1e3
convert PPC::BCC to use the 'pred' operand instead of separate predicate
...
value and CR reg #. This requires swapping the order of these everywhere
that touches BCC and requires us to write custom matching logic for
PPCcondbranch :(
llvm-svn: 31835
2006-11-17 22:37:34 +00:00
Chris Lattner
e0263794f4
rename PPC::COND_BRANCH to PPC::BCC
...
llvm-svn: 31834
2006-11-17 22:14:47 +00:00
Chris Lattner
8c6a41ea12
start using PPC predicates more consistently.
...
llvm-svn: 31833
2006-11-17 22:10:59 +00:00
Evan Cheng
9e8093ae20
For unsigned 8-bit division. Use movzbw to set the lower 8 bits of AX while
...
clearing the upper 8-bits instead of issuing two instructions. This also
eliminates the need to target the AH register which can be problematic on
x86-64.
llvm-svn: 31832
2006-11-17 22:10:14 +00:00
Jim Laskey
de5fa025ab
Hopefully a good crack at making debugging work on intel -disable-fp-elim.
...
llvm-svn: 31830
2006-11-17 21:19:15 +00:00
Evan Cheng
bae950131c
Add a x86-64 test case: movb %sil, %ah is illegal.
...
llvm-svn: 31829
2006-11-17 20:41:55 +00:00
Jim Laskey
73106b5e2a
Assert unhandled case.
...
llvm-svn: 31828
2006-11-17 18:49:39 +00:00
Jim Laskey
716f64c30b
Case sensitive not.
...
llvm-svn: 31827
2006-11-17 18:00:39 +00:00
Jim Laskey
63228b3450
Check for MaxAlign.
...
llvm-svn: 31826
2006-11-17 17:19:49 +00:00
Jim Laskey
6684f2f0a7
Tests to verify PowerPC ABI.
...
llvm-svn: 31825
2006-11-17 16:54:21 +00:00
Jim Laskey
1823346b3e
1. Ignore the -disable-fp-elim when the routine is a leaf.
...
2. Offsets on 64-bit stores are still in bytes.
llvm-svn: 31824
2006-11-17 16:09:31 +00:00
Jim Laskey
91542a4f2d
Typo. Fix the nightly tests.
...
llvm-svn: 31823
2006-11-17 14:06:41 +00:00
Jim Laskey
da0add3fd0
Fixing the ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1 build.
...
llvm-svn: 31822
2006-11-17 13:07:55 +00:00
Bill Wendling
0d630c33b2
Need <iostream> for the time being.
...
llvm-svn: 31821
2006-11-17 10:09:22 +00:00
Bill Wendling
605795ea8c
Need iostream to be included for the time being.
...
llvm-svn: 31820
2006-11-17 10:05:07 +00:00
Bill Wendling
9594f3a196
Moved definition of llvm_ostream wrappers to the Streams.cpp file.
...
llvm-svn: 31819
2006-11-17 09:54:47 +00:00
Bill Wendling
7d9eb5dd33
Used llvm_ostream instead of std::ostream objects. This will reduce use
...
of the icky <iostream> class.
llvm-svn: 31818
2006-11-17 09:52:49 +00:00
Bill Wendling
3315869498
Added wrappers for the std::cerr/std::cout objects. The wrappers will
...
soon replace all uses of those objects.
llvm-svn: 31817
2006-11-17 09:51:22 +00:00
Bill Wendling
9b04e3b875
Needed <iostream> for now.
...
llvm-svn: 31816
2006-11-17 09:44:28 +00:00
Bill Wendling
4479c92da5
Needs the iostream include.
...
llvm-svn: 31815
2006-11-17 09:38:03 +00:00
Bill Wendling
6a462f1e99
Removed iostream #includes. Replaced std::cerr with DOUT.
...
llvm-svn: 31814
2006-11-17 08:03:48 +00:00
Bill Wendling
c8e81b8d48
Removed even more std::cerr and #include <iostream> things.
...
llvm-svn: 31813
2006-11-17 07:52:03 +00:00
Bill Wendling
4b1a04ac62
Replaced DEBUG(std::cerr with DOUT.
...
llvm-svn: 31812
2006-11-17 07:36:54 +00:00
Bill Wendling
fc9063e9cd
Replace DEBUG(std::cerr with DOUT. Removed some iostream #includes.
...
llvm-svn: 31811
2006-11-17 07:33:59 +00:00
Bill Wendling
3216551491
Removed unneeded <iostream> #include.
...
llvm-svn: 31810
2006-11-17 07:10:51 +00:00
Chris Lattner
21eba2da26
If an indvar with a variable stride is used by the exit condition, go ahead
...
and handle it like constant stride vars. This fixes some bad codegen in
variable stride cases. For example, it compiles this:
void foo(int k, int i) {
for (k=i+i; k <= 8192; k+=i)
flags2[k] = 0;
}
to:
LBB1_1: #bb.preheader
movl %eax, %ecx
addl %ecx, %ecx
movl L_flags2$non_lazy_ptr, %edx
LBB1_2: #bb
movb $0, (%edx,%ecx)
addl %eax, %ecx
cmpl $8192, %ecx
jle LBB1_2 #bb
LBB1_5: #return
ret
or (if the array is local and we are in dynamic-nonpic or static mode):
LBB3_2: #bb
movb $0, _flags2(%ecx)
addl %eax, %ecx
cmpl $8192, %ecx
jle LBB3_2 #bb
and:
lis r2, ha16(L_flags2$non_lazy_ptr)
lwz r2, lo16(L_flags2$non_lazy_ptr)(r2)
slwi r3, r4, 1
LBB1_2: ;bb
li r5, 0
add r6, r4, r3
stbx r5, r2, r3
cmpwi cr0, r6, 8192
bgt cr0, LBB1_5 ;return
instead of:
leal (%eax,%eax,2), %ecx
movl %eax, %edx
addl %edx, %edx
addl L_flags2$non_lazy_ptr, %edx
xorl %esi, %esi
LBB1_2: #bb
movb $0, (%edx,%esi)
movl %eax, %edi
addl %esi, %edi
addl %ecx, %esi
cmpl $8192, %esi
jg LBB1_5 #return
and:
lis r2, ha16(L_flags2$non_lazy_ptr)
lwz r2, lo16(L_flags2$non_lazy_ptr)(r2)
mulli r3, r4, 3
slwi r5, r4, 1
li r6, 0
add r2, r2, r5
LBB1_2: ;bb
li r5, 0
add r7, r3, r6
stbx r5, r2, r6
add r6, r4, r6
cmpwi cr0, r7, 8192
ble cr0, LBB1_2 ;bb
This speeds up Benchmarks/Shootout/sieve from 8.533s to 6.464s and
implements LoopStrengthReduce/var_stride_used_by_compare.ll
llvm-svn: 31809
2006-11-17 06:17:33 +00:00
Chris Lattner
0727eeaeac
New testcase.
...
llvm-svn: 31808
2006-11-17 06:09:49 +00:00
Reid Spencer
4b8067f37b
Undo removal of the runtime libraries. While this may have been a bit
...
premature, these libraries will be going away for the 2.0 release. Other
arrangements for profiling, gc, etc. should be made in the next few months.
llvm-svn: 31807
2006-11-17 03:32:33 +00:00
Bill Wendling
9d46fcd59c
More removal of std::cerr and DEBUG, replacing with DOUT instead.
...
llvm-svn: 31806
2006-11-17 02:09:07 +00:00
Chris Lattner
3b7261b18e
implement a todo: change a map into a vector
...
llvm-svn: 31805
2006-11-17 01:52:23 +00:00
Evan Cheng
71adba6dce
Add opcode to TargetInstrDescriptor.
...
llvm-svn: 31804
2006-11-17 01:46:27 +00:00
Bill Wendling
ca6f6a43e0
#ifndef NDEBUG the "if (Stream) ..." stuff.
...
llvm-svn: 31803
2006-11-17 01:43:48 +00:00
Evan Cheng
84dd67e08a
Add opcode to TargetInstrDescriptor.
...
llvm-svn: 31802
2006-11-17 01:36:01 +00:00
Bill Wendling
fc01016c75
Adjusted the // comments so that doxygen picks them up.
...
llvm-svn: 31801
2006-11-17 01:13:12 +00:00
Bill Wendling
d108b9a60d
Replace std::cerr uses of the "DEBUG" macro with "DOUT" instead. Removes
...
a #include of iostream.
llvm-svn: 31800
2006-11-17 00:50:36 +00:00
Chris Lattner
be1a4d80b3
fix typo
...
llvm-svn: 31799
2006-11-17 00:49:36 +00:00
Bill Wendling
d7fda04420
Added "DOUT" macro. This is used as a replacement for the std::cerr
...
stream. It centralizes the use of std::cerr so that static c'tor/d'tors
aren't scattered around all over the place. The way to use it is like this:
DOUT << "This is a status line: " << Var << "\n";
If "-debug" is specified, it will print. Otherwise, it'll not print. If
NDEBUG is defined, the DOUT does nothing.
llvm-svn: 31798
2006-11-17 00:49:12 +00:00
Chris Lattner
a715288b40
implicit_def_vrrc doesn't generate code.
...
llvm-svn: 31797
2006-11-16 23:49:52 +00:00
Evan Cheng
538e9cafae
New test case.
...
llvm-svn: 31796
2006-11-16 23:38:21 +00:00
Evan Cheng
572dc9cb4e
Correct instructions for moving data between GR64 and SSE registers; also correct load i64 / store i64 from v2i64.
...
llvm-svn: 31795
2006-11-16 23:33:25 +00:00
Evan Cheng
7ae482c52a
Fix a potential bug: MOVPDI2DI, etc. are not copy instructions.
...
llvm-svn: 31794
2006-11-16 23:22:26 +00:00
Reid Spencer
3f97d03f86
In LLVM 2.0 we won't use the runtime libraries as llvm-gcc3 support will
...
be dropped. This patch pertains to removing the runtime directory from LLVM.
llvm-svn: 31793
2006-11-16 23:17:27 +00:00
Jim Laskey
48850c10c0
This is a general clean up of the PowerPC ABI. Address several problems and
...
bugs including making sure that the TOS links back to the previous frame,
that the maximum call frame size is not included twice when using frame
pointers, no longer growing the frame on calls, double storing of SP and
a cleaner/faster dynamic alloca.
llvm-svn: 31792
2006-11-16 22:43:37 +00:00
Chris Lattner
30055b9208
fix a regression that I introduced. stdu should scale the offset by 4
...
before printing it.
llvm-svn: 31791
2006-11-16 21:45:30 +00:00
Evan Cheng
c5e769710e
Align stubs on 4 byte boundary. This fixes 447.dealII.
...
llvm-svn: 31790
2006-11-16 20:13:34 +00:00
Bill Wendling
8969ebca44
*** empty log message ***
...
llvm-svn: 31789
2006-11-16 20:11:33 +00:00
Evan Cheng
e03ca9b0b4
Allow target to specify alignment for function stub.
...
llvm-svn: 31788
2006-11-16 20:04:54 +00:00
Evan Cheng
9fd73b8a7f
Match MachineCodeEmitter changes.
...
llvm-svn: 31787
2006-11-16 20:04:04 +00:00
Reid Spencer
b3030c42e0
Use a release version of bugpoint, if found. Include gccld passes.
...
llvm-svn: 31786
2006-11-16 18:32:47 +00:00
Chris Lattner
96d7386006
add a statistic
...
llvm-svn: 31785
2006-11-16 18:13:49 +00:00
Bill Wendling
ae2a3097e6
Cleaned up the document. Added "doc_code" divisions for code examples.
...
llvm-svn: 31784
2006-11-16 09:31:19 +00:00
Bill Wendling
d811cc6818
Don't recompute getNumOperands for each iteration.
...
llvm-svn: 31783
2006-11-16 07:35:18 +00:00
Bill Wendling
cc9816c87b
Added "removeRange", which takes and removes an entire LiveRange.
...
llvm-svn: 31781
2006-11-16 02:43:32 +00:00
Bill Wendling
c7969fd1e7
Added a new method "CreateNewLiveInterval" which, given a list of
...
LiveRanges, creates a new LiveInterval from them. The LiveRanges should
have existed already in another LiveInterval, but removed.
llvm-svn: 31780
2006-11-16 02:41:50 +00:00
Chris Lattner
2ccd16c0af
make this harder
...
llvm-svn: 31779
2006-11-16 01:22:52 +00:00
Chris Lattner
a7ff5162b0
fix broken encoding
...
llvm-svn: 31778
2006-11-16 01:01:28 +00:00
Chris Lattner
e0a70388c2
enable the branch folding pass for the JIT.
...
llvm-svn: 31777
2006-11-16 01:00:07 +00:00
Chris Lattner
e742d9a4b7
add ppc64 r+i stores with update.
...
llvm-svn: 31776
2006-11-16 00:57:19 +00:00
Chris Lattner
6f5840c409
add patterns for ppc32 preinc stores. ppc64 next.
...
llvm-svn: 31775
2006-11-16 00:41:37 +00:00
Chris Lattner
3a494989a6
switch these back to the 'bad old way'
...
llvm-svn: 31774
2006-11-16 00:33:34 +00:00
Evan Cheng
f64da389f8
Fix an incorrectly inverted condition.
...
llvm-svn: 31773
2006-11-16 00:08:20 +00:00
Evan Cheng
8ae58b5828
ChangeToRegister should clear IsImp bit.
...
llvm-svn: 31772
2006-11-15 23:55:03 +00:00
Chris Lattner
b4e911d15a
Fix ppc64 epilog bug.
...
llvm-svn: 31771
2006-11-15 23:35:30 +00:00
Chris Lattner
5771156be0
Stop using isTwoAddress, switching to operand constraints instead.
...
Tell the codegen emitter that specific operands are not to be encoded, fixing
JIT regressions w.r.t. pre-inc loads and stores (e.g. lwzu, which we generate
even when general preinc loads are not enabled).
llvm-svn: 31770
2006-11-15 23:24:18 +00:00
Chris Lattner
78a403f90e
Remove the isTwoAddress property from the CodeGenInstruction class. It should
...
not be used for anything other than backwards compat constraint handling.
Add support for a new DisableEncoding property which contains a list of
registers that should not be encoded by the generated code emitter. Convert
the codeemitter generator to use this, fixing some PPC JIT regressions.
llvm-svn: 31769
2006-11-15 23:23:02 +00:00
Chris Lattner
5c23899c7d
add a new field needed by the code emitter generator.
...
llvm-svn: 31768
2006-11-15 22:55:04 +00:00
Chris Lattner
7cab3de0da
Fix typo pointed out by Bryan Adams
...
llvm-svn: 31766
2006-11-15 21:04:15 +00:00
Evan Cheng
dc2c8748a7
Properly transfer kill / dead info.
...
llvm-svn: 31765
2006-11-15 20:58:11 +00:00
Evan Cheng
bbbcac39e6
Kill / dead info has been moved to MI's.
...
llvm-svn: 31764
2006-11-15 20:56:39 +00:00
Evan Cheng
c57819d4a3
commuteInstruction should propagate kill / dead info.
...
llvm-svn: 31763
2006-11-15 20:56:03 +00:00
Evan Cheng
0ffff1c629
Match live variable changes.
...
llvm-svn: 31762
2006-11-15 20:55:15 +00:00
Evan Cheng
ebb0357b4c
Minor updates.
...
llvm-svn: 31761
2006-11-15 20:54:29 +00:00
Evan Cheng
12ea213de9
A register def can be partially dead when the whole register has use(s) but a subreg does not.
...
llvm-svn: 31760
2006-11-15 20:54:11 +00:00
Evan Cheng
70ec52896e
Do away with kill / dead maps. Move kill / dead info onto MI's.
...
llvm-svn: 31759
2006-11-15 20:51:59 +00:00
Evan Cheng
5b536a0be9
Add copyKillDeadInfo to copy kill / dead info; other minor updates.
...
llvm-svn: 31758
2006-11-15 20:48:17 +00:00
Chris Lattner
474b5b7c95
fix ldu/stu jit encoding. Swith 64-bit preinc load instrs to use memri
...
addrmodes.
llvm-svn: 31757
2006-11-15 19:55:13 +00:00
Devang Patel
9f3083eef0
Add run(Function &F) support in FunctionPassManager_New
...
llvm-svn: 31756
2006-11-15 19:39:54 +00:00
Chris Lattner
2775aba51d
Simplify IntrinsicLowering and clarify that it is only for use by the
...
CBE and interpreter.
llvm-svn: 31755
2006-11-15 18:00:10 +00:00
Chris Lattner
60c2a0154a
Remove unneeded forward decls
...
llvm-svn: 31754
2006-11-15 17:53:13 +00:00
Chris Lattner
30d08801ef
remove dead #include
...
llvm-svn: 31753
2006-11-15 17:51:15 +00:00
Chris Lattner
0e117c7e9d
Fix the PPC regressions last night
...
llvm-svn: 31752
2006-11-15 17:40:51 +00:00
Chris Lattner
e3a63d136d
Fix a gcc 4.2 warning.
...
llvm-svn: 31751
2006-11-15 04:53:24 +00:00
Reid Spencer
8f73ba7e05
Add a method to get the bit width of a packed type.
...
llvm-svn: 31750
2006-11-15 03:02:41 +00:00
Chris Lattner
1396961e85
Switch loads over to use memri as the operand instead of a reg/imm operand
...
pair for cleanliness. Add instructions for PPC32 preinc-stores with commented
out patterns. More improvement is needed to enable the patterns, but we're
getting close.
llvm-svn: 31749
2006-11-15 02:43:19 +00:00
Chris Lattner
c94f214d22
ADd support for adding constraints to suboperands
...
llvm-svn: 31748
2006-11-15 02:38:17 +00:00
Devang Patel
af87fa3a63
Add doInitialization and doFinalization support in FunctionManager_New.
...
llvm-svn: 31747
2006-11-15 02:07:25 +00:00
Devang Patel
4a3fa4ff26
Tidy up marking of last analysis user pass.
...
llvm-svn: 31746
2006-11-15 01:48:14 +00:00
Devang Patel
ff631ae600
Add doInitialization and doFinalization support in FunctionManager_New.
...
llvm-svn: 31745
2006-11-15 01:27:05 +00:00
Devang Patel
42add710fa
Do not derive CommonPassManagerImpl from Pass.
...
Now BasicBlockPassManager_New is a FunctionPass,
FunctionPassManager_New is a ModulePass
llvm-svn: 31744
2006-11-15 01:11:27 +00:00
Chris Lattner
c75081b7a8
restore some 'magic' code that I removed: it is needed. Add comments explaining
...
why.
llvm-svn: 31743
2006-11-14 22:17:10 +00:00
Chris Lattner
c5dd5b11a4
minimal hack to get patterns whose result type is iPTR to be selected.
...
llvm-svn: 31742
2006-11-14 21:50:27 +00:00
Devang Patel
07f4f58945
Copy initializeAnalysisImpl() implementation from PassManagerT.
...
Update LastUser to recursively walk required transitive set.
llvm-svn: 31741
2006-11-14 21:49:36 +00:00
Chris Lattner
75165d07a0
remove some dead code
...
llvm-svn: 31740
2006-11-14 21:41:35 +00:00
Chris Lattner
7c9f48cefb
Add support for nodes that return iPTR.
...
llvm-svn: 31739
2006-11-14 21:32:01 +00:00
Chris Lattner
110c777f2c
changes to get ptr_rc to be accepted in patterns. This is needed for ppc preinc
...
stores.
llvm-svn: 31738
2006-11-14 21:18:40 +00:00
Evan Cheng
cf772f7eca
Revert. This wasn't meant to be checked in.
...
llvm-svn: 31737
2006-11-14 19:20:33 +00:00
Chris Lattner
e79a451475
group load and store instructions together. No functionality change.
...
llvm-svn: 31736
2006-11-14 19:19:53 +00:00
Chris Lattner
58e8bed48e
Fix predicates for unindexed stores so they don't accidentally match indexed
...
stores.
llvm-svn: 31735
2006-11-14 19:13:39 +00:00
Chris Lattner
44dbdbe5cf
Rework PPC64 calls. Now we have a LR8/CTR8 register which the PPC64 calls
...
clobber. This allows LR8 to be save/restored correctly as a 64-bit quantity,
instead of handling it as a 32-bit quantity. This unbreaks ppc64 codegen when
the code is actually located above the 4G boundary.
llvm-svn: 31734
2006-11-14 18:44:47 +00:00
Chris Lattner
b542925b22
remove a ton of custom selection logic no longer needed
...
llvm-svn: 31733
2006-11-14 18:43:11 +00:00
Chris Lattner
f8c06b335d
Fix a bug handling nodes with variable arguments. The code was fixed to assume
...
that there were two input operands before the variable operand portion. This
*happened* to be true for all call instructions, which took a chain and a
destination, but was not true for the PPC BCTRL instruction, whose destination
is implicit.
Making this code more general allows elimination of the custom selection logic
for BCTRL.
llvm-svn: 31732
2006-11-14 18:41:38 +00:00
Chris Lattner
4916acbd0f
it would be nice of ctlz were lowered to bsf etc.
...
llvm-svn: 31730
2006-11-14 08:08:46 +00:00
Chris Lattner
f05d69ae72
implement InstCombine/shift-simplify.ll by transforming:
...
(X >> Z) op (Y >> Z) -> (X op Y) >> Z
for all shifts and all ops={and/or/xor}.
llvm-svn: 31729
2006-11-14 07:46:50 +00:00
Chris Lattner
c348c50c38
new testcase
...
llvm-svn: 31728
2006-11-14 07:45:36 +00:00
Chris Lattner
d12a4bf799
implement InstCombine/and-compare.ll:test1. This compiles:
...
typedef struct { unsigned prefix : 4; unsigned code : 4; unsigned unsigned_p : 4; } tree_common;
int foo(tree_common *a, tree_common *b) { return a->code == b->code; }
into:
_foo:
movl 4(%esp), %eax
movl 8(%esp), %ecx
movl (%eax), %eax
xorl (%ecx), %eax
# TRUNCATE movb %al, %al
shrb $4, %al
testb %al, %al
sete %al
movzbl %al, %eax
ret
instead of:
_foo:
movl 8(%esp), %eax
movb (%eax), %al
shrb $4, %al
movl 4(%esp), %ecx
movb (%ecx), %cl
shrb $4, %cl
cmpb %al, %cl
sete %al
movzbl %al, %eax
ret
saving one cycle by eliminating a shift.
llvm-svn: 31727
2006-11-14 06:06:06 +00:00
Chris Lattner
9adf8294ef
new testcase
...
llvm-svn: 31726
2006-11-14 06:04:35 +00:00
Chris Lattner
97ff46b3cc
lower "X = seteq Y, Z" to '(shr (ctlz (xor Y, Z)), 5)' instead of
...
'(shr (ctlz (sub Y, Z)), 5)'.
The use of xor better exposes the operation to bit-twiddling logic in the
dag combiner. For example, this:
typedef struct {
unsigned prefix : 4;
unsigned code : 4;
unsigned unsigned_p : 4;
} tree_common;
int foo(tree_common *a, tree_common *b) {
return a->code == b->code;
}
Now compiles to:
_foo:
lwz r2, 0(r4)
lwz r3, 0(r3)
xor r2, r3, r2
rlwinm r2, r2, 28, 28, 31
cntlzw r2, r2
srwi r3, r2, 5
blr
instead of:
_foo:
lbz r2, 3(r4)
lbz r3, 3(r3)
srwi r2, r2, 4
srwi r3, r3, 4
subf r2, r2, r3
cntlzw r2, r2
srwi r3, r2, 5
blr
saving a cycle.
llvm-svn: 31725
2006-11-14 05:28:08 +00:00
Andrew Lenharth
0ad1e3845b
A shim over other AA impls to catch incorrect uses
...
llvm-svn: 31724
2006-11-14 05:21:04 +00:00
Reid Spencer
1b89a7bcc1
Discard code that supported old bytecode formats. This makes the Bytecode
...
Reader code much easier to read and maintain. Backwards compatibility from
version 5 format has been retained. Older formats will produce an error.
llvm-svn: 31723
2006-11-14 04:47:22 +00:00
Devang Patel
ca1892699c
Implement removeDeadPasses().
...
llvm-svn: 31722
2006-11-14 03:05:08 +00:00
Devang Patel
3f0832a3b5
Keep track of Last user of analysis phase.
...
llvm-svn: 31721
2006-11-14 02:54:23 +00:00
Devang Patel
f60b5d9676
Use std::map to map AnalysisID and Pass.
...
llvm-svn: 31720
2006-11-14 01:59:59 +00:00
Chris Lattner
6dc22332bf
add a note
...
llvm-svn: 31719
2006-11-14 01:57:53 +00:00
Chris Lattner
683712583a
minor tweaks, reject vector preinc.
...
llvm-svn: 31717
2006-11-14 01:38:31 +00:00
Devang Patel
050ec72ae4
Manage analysis passes during run.
...
llvm-svn: 31716
2006-11-14 01:23:29 +00:00
Tanya Lattner
9ce0379da2
Updating configure script for 2.0
...
llvm-svn: 31715
2006-11-14 00:59:52 +00:00
Devang Patel
dafa4ddc46
Update comments.
...
llvm-svn: 31713
2006-11-14 00:03:04 +00:00
Evan Cheng
dbd3d294e6
Matches MachineInstr changes.
...
llvm-svn: 31712
2006-11-13 23:36:35 +00:00
Evan Cheng
77af6ac5e8
- Let MachineInstr ctors add implicit def and use operands. Other operands
...
will be inserted before these operands. If the opcode changes (by
setOpcode), the implicit operands are updated as well.
- Added IsKill, IsDead fields to MachineOperand in preparation for changes
that move kill / dead info to MachineInstr's.
llvm-svn: 31711
2006-11-13 23:34:06 +00:00
Devang Patel
7086844634
Update PassManagerImpl_New::analysisCurrentlyAvailable to check all
...
managed passmanagers.
llvm-svn: 31710
2006-11-13 22:53:19 +00:00
Devang Patel
ebba970a6d
Check currently available anlysis in active managers.
...
llvm-svn: 31709
2006-11-13 22:40:09 +00:00
Chris Lattner
1121e50f7e
teach the g5 hazard recognizer about update loads. This fixes
...
Ptrdist/anagram among others.
llvm-svn: 31708
2006-11-13 20:11:06 +00:00
Reid Spencer
3d1027193f
For PR950:
...
Changes for new cast instructions that are backwards compatible.
llvm-svn: 31707
2006-11-13 18:00:52 +00:00
Reid Spencer
7354395590
Don't hard code test names into the test.
...
llvm-svn: 31706
2006-11-13 17:55:34 +00:00
Reid Spencer
83c7a1e710
Fix 80 cols violations.
...
llvm-svn: 31705
2006-11-13 16:21:09 +00:00
Reid Spencer
5953e4e805
For PR950:
...
Use the notcast script in preparation for 12 casts.
llvm-svn: 31704
2006-11-13 16:13:38 +00:00
Reid Spencer
6170dff047
For PR950:
...
Use the notcast script in preparation for 12 cast instructions.
llvm-svn: 31703
2006-11-13 16:12:25 +00:00
Reid Spencer
7debe5e948
Make it handle plain old cast too, for old assembly.
...
llvm-svn: 31702
2006-11-13 16:11:14 +00:00
Reid Spencer
6f406f91d2
Handle ptrtoint and inttoptr
...
llvm-svn: 31701
2006-11-13 16:09:37 +00:00
Reid Spencer
cac60e8eb4
Add some output so the user is informed while they wait.
...
llvm-svn: 31700
2006-11-13 16:08:51 +00:00
Reid Spencer
e473e41e59
Add a link to the GEP FAQ.
...
llvm-svn: 31698
2006-11-13 08:03:59 +00:00
Chris Lattner
5c833df633
remove redundant code
...
llvm-svn: 31697
2006-11-13 01:10:12 +00:00
Nick Lewycky
0df2ada9d4
Cute example from Chris Lattner.
...
llvm-svn: 31696
2006-11-13 00:23:28 +00:00
Bill Wendling
ad75361d42
Initialize some pointers to quiet the compiler (when doing build_gcc
...
builds).
llvm-svn: 31694
2006-11-12 11:10:39 +00:00
Reid Spencer
5b9506439a
Document new constant expr operators, rename bitconvert as bitcast.
...
llvm-svn: 31693
2006-11-11 23:08:07 +00:00
Reid Spencer
b608daeec3
Revert premature patch.
...
llvm-svn: 31692
2006-11-11 23:06:47 +00:00
Reid Spencer
8b8913ba61
Document new constant expr operators, rename bitconvert as bitcast.
...
llvm-svn: 31691
2006-11-11 22:34:59 +00:00
Jim Laskey
1dfc6110ff
Make sure stack link is set in 64-bit.
...
llvm-svn: 31690
2006-11-11 22:22:07 +00:00
Jim Laskey
a3262ee8ec
XFAIL All but powerpc
...
llvm-svn: 31689
2006-11-11 22:14:46 +00:00
Reid Spencer
b7344ff025
Add a preview of two new conversion operators: ptrtoint and inttoptr. Update
...
the defintion of bitconvert correspondingly.
llvm-svn: 31688
2006-11-11 21:00:47 +00:00
Reid Spencer
06d8e0fa3b
Remvoe a do-nothing else block.
...
llvm-svn: 31687
2006-11-11 20:27:49 +00:00
Reid Spencer
2230144a75
Make an assert comment match the tested assertion.
...
llvm-svn: 31686
2006-11-11 20:07:59 +00:00
Reid Spencer
3005d47797
Minor style fixes from review.
...
llvm-svn: 31685
2006-11-11 19:59:25 +00:00