Brian Gaeke [Thu, 4 Mar 2004 00:56:25 +0000 (00:56 +0000)]
Simple copyConstantToReg support, SETHIi and ORri
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12107
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 3 Mar 2004 23:03:14 +0000 (23:03 +0000)]
Support add - note, still missing important copyConstantToRegister stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12106
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 3 Mar 2004 23:00:19 +0000 (23:00 +0000)]
Fix a minor bug handling incomplete programs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12105
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 3 Mar 2004 22:01:09 +0000 (22:01 +0000)]
Fix a DSA bug that caused DSA to generate incredibly huge graphs and take forever to
do it on povray. The problem is that we were not copying globals from callees to
callers unless the existed in both graphs. We should have copied them in the case
where the global pointed to a node that was copied as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12104
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 3 Mar 2004 22:00:20 +0000 (22:00 +0000)]
Rename method, add new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12103
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 3 Mar 2004 20:55:27 +0000 (20:55 +0000)]
Deinline methods, add fast exit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12102
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 3 Mar 2004 20:55:15 +0000 (20:55 +0000)]
De-inline methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12101
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 3 Mar 2004 19:07:27 +0000 (19:07 +0000)]
Make MachineOperand's value named 'contents'. Make really, really sure
it is always completely initialized and copied.
Also, fix up many comments and asserts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12100
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 3 Mar 2004 17:38:51 +0000 (17:38 +0000)]
Squash /usr/dcs path; use a 'require <version>' instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12099
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 3 Mar 2004 08:14:25 +0000 (08:14 +0000)]
Add my regression finding by binary searching cvs script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12095
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 3 Mar 2004 05:34:31 +0000 (05:34 +0000)]
Fix a node mapping problem that was causing the pool allocator to locally allocate
nodes that were globally live, thus breaking programs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12094
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 3 Mar 2004 02:14:15 +0000 (02:14 +0000)]
SPECIFY a target data to initialize the CBE target with. Until now we have
been using the default target data layout object to lower malloc instructions,
causing us to allocate more memory than we needed! This could improve the
performance of the CBE generated code substantially!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12088
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 3 Mar 2004 02:12:47 +0000 (02:12 +0000)]
Add a new constructor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12087
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 3 Mar 2004 01:40:53 +0000 (01:40 +0000)]
Don't emit things like malloc(16*1). Allocation instructions are fixed arity now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12086
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 2 Mar 2004 21:39:43 +0000 (21:39 +0000)]
FINALLY be able to get symbolic type names in the globals graph!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12082
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 2 Mar 2004 20:46:18 +0000 (20:46 +0000)]
Really, only if reopen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12080
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Tue, 2 Mar 2004 15:54:25 +0000 (15:54 +0000)]
Added EH support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12075
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 2 Mar 2004 03:36:10 +0000 (03:36 +0000)]
Make <di> into <dt> (definition list term).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12072
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 2 Mar 2004 00:22:19 +0000 (00:22 +0000)]
Doxygenify comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12071
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 2 Mar 2004 00:20:57 +0000 (00:20 +0000)]
Implement ExtractCodeRegion()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12070
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 2 Mar 2004 00:20:32 +0000 (00:20 +0000)]
Add prototype for ExtractCodeRegion()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12069
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 2 Mar 2004 00:19:09 +0000 (00:19 +0000)]
Make a note that this is usually used via bugpoint.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12068
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 1 Mar 2004 23:53:11 +0000 (23:53 +0000)]
Doxygenify some comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12064
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 1 Mar 2004 23:25:38 +0000 (23:25 +0000)]
Fix <p> missing <p> tag
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12063
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 1 Mar 2004 23:18:15 +0000 (23:18 +0000)]
Add a spiller option to llc. A simple spiller will come soon. When we get CFG in the machine code represenation a global spiller will also be possible. Also document the linear scan register allocator but mark it as experimental for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12062
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 1 Mar 2004 20:05:10 +0000 (20:05 +0000)]
Add the long awaited memory operand folding support for linear scan
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12058
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 1 Mar 2004 19:48:13 +0000 (19:48 +0000)]
* If a badref has a name, print it out for ease of debugging
* Doxygenify (some) comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12057
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2004 19:36:50 +0000 (19:36 +0000)]
Add new method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12056
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2004 19:02:54 +0000 (19:02 +0000)]
Correctly add an array marker on a node when appropriate!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12055
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 1 Mar 2004 18:31:19 +0000 (18:31 +0000)]
Fix grammar and doxygenify comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12054
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 1 Mar 2004 18:28:34 +0000 (18:28 +0000)]
* Add implementation of ExtractBasicBlock()
* Add comments to ExtractLoop()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12053
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 1 Mar 2004 18:27:13 +0000 (18:27 +0000)]
Add ability to extract a single basic block into a new function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12052
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 1 Mar 2004 18:21:04 +0000 (18:21 +0000)]
* HTML 4.01 Strict compliance
* Removed unnecessary tabs in the entire file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12051
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 1 Mar 2004 17:47:27 +0000 (17:47 +0000)]
HTML 4.01 Strict compliance.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12050
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2004 15:28:27 +0000 (15:28 +0000)]
Add this back, as its absence introduces assertions, and it seems to work now
that Instructions are annotable again
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12045
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Mon, 1 Mar 2004 15:05:17 +0000 (15:05 +0000)]
fix bug in previous checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12044
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 1 Mar 2004 06:43:29 +0000 (06:43 +0000)]
TargetCacheInfo has been removed; its only uses were to propagate a constant
(16) into certain areas of the SPARC V9 back-end. I'm fairly sure the US IIIi's
dcache has 32-byte lines, so I'm not sure where the 16 came from. However, in
the interest of not breaking things any more than they already are, I'm going
to leave the constant alone.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12043
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Mon, 1 Mar 2004 02:50:57 +0000 (02:50 +0000)]
Adding new Modulo Scheduling graph files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12031
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Mon, 1 Mar 2004 02:50:01 +0000 (02:50 +0000)]
Removing old graph files with new graph files that I wrote. Updated ModuloScheduling pass, but still in progress.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12030
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2004 02:44:44 +0000 (02:44 +0000)]
Expand on my note-to-self
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12029
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2004 02:42:43 +0000 (02:42 +0000)]
Handle passing constant integers to functions much more efficiently. Instead
of generating this code:
mov %EAX, 4
mov DWORD PTR [%ESP], %EAX
mov %AX, 123
movsx %EAX, %AX
mov DWORD PTR [%ESP + 4], %EAX
call Y
we now generate:
mov DWORD PTR [%ESP], 4
mov DWORD PTR [%ESP + 4], 123
call Y
Which hurts the eyes less. :)
Considering that register pressure around call sites is already high (with all
of the callee clobber registers n stuff), this may help a lot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12028
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Mon, 1 Mar 2004 02:41:22 +0000 (02:41 +0000)]
Don't look in the .libs directories that libtool makes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12027
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2004 02:34:08 +0000 (02:34 +0000)]
Fix a minor code-quality issue. When passing 8 and 16-bit integer constants
to function calls, we would emit dead code, like this:
int Y(int, short, double);
int X() {
Y(4, 123, 4);
}
--- Old
X:
sub %ESP, 20
mov %EAX, 4
mov DWORD PTR [%ESP], %EAX
*** mov %AX, 123
mov %AX, 123
movsx %EAX, %AX
mov DWORD PTR [%ESP + 4], %EAX
fld QWORD PTR [.CPIX_0]
fstp QWORD PTR [%ESP + 8]
call Y
mov %EAX, 0
# IMPLICIT_USE %EAX %ESP
add %ESP, 20
ret
Now we emit:
X:
sub %ESP, 20
mov %EAX, 4
mov DWORD PTR [%ESP], %EAX
mov %AX, 123
movsx %EAX, %AX
mov DWORD PTR [%ESP + 4], %EAX
fld QWORD PTR [.CPIX_0]
fstp QWORD PTR [%ESP + 8]
call Y
mov %EAX, 0
# IMPLICIT_USE %EAX %ESP
add %ESP, 20
ret
Next up, eliminate the mov AX and movsx entirely!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12026
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2004 01:42:26 +0000 (01:42 +0000)]
Fix the "partial pool allocator" on em3d and others. The problem is that
DSNodes, unlike other GraphTraits nodes, can have null outgoing edges, and
df_iterator doesn't take this into consideration. As a workaround, the
successor iterator now handles null nodes and 'indicates' that null has
no successors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12025
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2004 01:25:37 +0000 (01:25 +0000)]
Make Module annotable. Reid has a bunch of code that depends on this, and
we really don't win that much by eliminating this (not many Modules are
allocated), so it's not worth it. When we can, we should revisit this in
the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12023
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 Mar 2004 01:12:13 +0000 (01:12 +0000)]
Disable tail duplication in a case that breaks on Olden/tsp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12021
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sun, 29 Feb 2004 23:55:11 +0000 (23:55 +0000)]
Doxygenify comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12015
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sun, 29 Feb 2004 23:09:10 +0000 (23:09 +0000)]
* Remove function to find "main" in a Module, there's a method for that
* Removing extraneous empty space and empty comment lines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12014
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 22:37:04 +0000 (22:37 +0000)]
Fix -debug-pass=Executions, which relied on Function, Module, and BasicBlock
being annotable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12013
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 22:24:41 +0000 (22:24 +0000)]
Fix bug: test/Regression/Transforms/LowerInvoke/2004-02-29-PHICrash.llx
... which tickled the lowerinvoke pass because it used the BCE routines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12012
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 22:15:51 +0000 (22:15 +0000)]
Testcase for a bug that caused a whole bunch of testcases to die in the nightly
tester last night.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12011
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 22:01:51 +0000 (22:01 +0000)]
Add an assert
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12010
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 21:40:53 +0000 (21:40 +0000)]
Add back #include I messed up
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12009
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 21:03:08 +0000 (21:03 +0000)]
Urg, forgot to check this in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12007
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 19:27:55 +0000 (19:27 +0000)]
Module does not need to be annotatable aka annotable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12005
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 19:13:20 +0000 (19:13 +0000)]
Remove public header. It's been moved to lib/Target/SparcV9
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12004
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 19:12:51 +0000 (19:12 +0000)]
Move the private MachineInstrAnnot.h into a private directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12003
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 19:04:31 +0000 (19:04 +0000)]
Remove use of an ugly header
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12002
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 19:02:39 +0000 (19:02 +0000)]
Move methods out of .h file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12001
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 19:02:26 +0000 (19:02 +0000)]
Do not use explicit casts that hide the dependence on Instruction being
annotable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12000
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 18:54:23 +0000 (18:54 +0000)]
Ugh, the old sparc backend attaches MachineCodeForInstruction annotations on
LLVM instructions. Because it contains an explicit cast, we didn't catch it.
I guess instruction's will be annotable for the duration of the sparcv9's
existence.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11999
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sun, 29 Feb 2004 18:44:03 +0000 (18:44 +0000)]
Add instruction name description.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11998
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sun, 29 Feb 2004 09:19:40 +0000 (09:19 +0000)]
Use correct template for SHLD and SHRD instructions so that the memory
operand size is correctly specified.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11997
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sun, 29 Feb 2004 09:17:01 +0000 (09:17 +0000)]
Improve allocation order:
1) For 8-bit registers try to use first the ones that are parts of the
same register (AL then AH). This way we only alias 2 16/32-bit
registers after allocating 4 8-bit variables.
2) Move EBX as the last register to allocate. This will cause less
spills to happen since we will have 8-bit registers available up to
register excaustion (assuming we use the allocation order). It
would be nice if we could push all of the 8-bit aliased registers
towards the end but we much prefer to keep callee saved register to
the end to avoid saving them on entry and exit of the function.
For example this gives a slight reduction of spills with linear scan
on 164.gzip.
Before:
11221 asm-printer - Number of machine instrs printed
975 spiller - Number of loads added
675 spiller - Number of stores added
398 spiller - Number of register spills
After:
11182 asm-printer - Number of machine instrs printed
952 spiller - Number of loads added
652 spiller - Number of stores added
386 spiller - Number of register spills
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11996
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sun, 29 Feb 2004 08:50:03 +0000 (08:50 +0000)]
A big X86 instruction rename. The instructions are renamed to make
their names more decriptive. A name consists of the base name, a
default operand size followed by a character per operand with an
optional special size. For example:
ADD8rr -> add, 8-bit register, 8-bit register
IMUL16rmi -> imul, 16-bit register, 16-bit memory, 16-bit immediate
IMUL16rmi8 -> imul, 16-bit register, 16-bit memory, 8-bit immediate
MOVSX32rm16 -> movsx, 32-bit register, 16-bit memory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11995
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Sun, 29 Feb 2004 08:40:03 +0000 (08:40 +0000)]
Remove dead member variables of SparcV9SchedInfo and TargetSchedInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11994
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 07:22:16 +0000 (07:22 +0000)]
Eliminate the X86-specific BMI functions, using BuildMI instead.
Replace uses of addZImm with addImm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11992
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 07:10:16 +0000 (07:10 +0000)]
Fix a miscompilation of 197.parser that occurs when you have single basic
block loops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11990
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 06:41:20 +0000 (06:41 +0000)]
Fix PR255: [tailduplication] Single basic block loops are very rare
Note that this is a band-aid put over a band-aid. This just undisables
tail duplication in on very specific case that it seems to work in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11989
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Sun, 29 Feb 2004 06:33:28 +0000 (06:33 +0000)]
Update comment at head of file. Also fix C 'typedef struct' nonsense I
inadvertently left in here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11988
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 06:31:44 +0000 (06:31 +0000)]
Adjust to change in TII ctor arguments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11987
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 06:31:16 +0000 (06:31 +0000)]
Eliminate the distinction between "real" and "unreal" instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11986
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Sun, 29 Feb 2004 06:30:25 +0000 (06:30 +0000)]
Add more architectures, and ELF64 stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11985
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 05:59:33 +0000 (05:59 +0000)]
These two virtual methods are never called.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11984
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 05:58:30 +0000 (05:58 +0000)]
Remove a TON of flags that noone cares about
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11983
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 05:58:16 +0000 (05:58 +0000)]
Noone calls these virtual methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11982
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 05:57:59 +0000 (05:57 +0000)]
This is the only file in the system that uses this enum. eliminate it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11981
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 05:57:21 +0000 (05:57 +0000)]
Scrap a huge layer of cruft out of this interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11980
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 05:18:30 +0000 (05:18 +0000)]
Implement initial prolog/epilog code insertion methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11979
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 05:15:56 +0000 (05:15 +0000)]
Remove unneeded #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11978
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 05:07:02 +0000 (05:07 +0000)]
int64_t -> int
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11977
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 05:06:49 +0000 (05:06 +0000)]
Continue Alkis's int64_t cleanup. This makes all of the immediate related
methods take an int or unsigned value instead of int64_t.
Also, add an 'addImm' method to the MachineInstrBuilder class, because the
fact that the hardware sign or zero extends it does not/should not matter
to the code generator. Once the old sparc backend is removed the difference
can be eliminated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11976
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 04:55:28 +0000 (04:55 +0000)]
Add BuildMI variants that take a MBB::iterator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11975
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sun, 29 Feb 2004 02:18:17 +0000 (02:18 +0000)]
Use correct template for ADC instruction with memory operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11974
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Feb 2004 00:27:00 +0000 (00:27 +0000)]
Add an instruction selector capable of selecting 'ret void'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11973
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sat, 28 Feb 2004 23:46:44 +0000 (23:46 +0000)]
SHLD and SHRD take 32-bit operands but an 8-bit immediate. Rename them
to denote this fact.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11972
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sat, 28 Feb 2004 23:42:35 +0000 (23:42 +0000)]
Floating point loads/stores act on memory operands. Rename them to
denote this fact.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11971
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sat, 28 Feb 2004 23:09:03 +0000 (23:09 +0000)]
Rename instruction templates to be easier to the human eye to
parse. The name is now I (operand size)*. For example:
Im32 -> instruction with 32-bit memory operands.
Im16i8 -> instruction with 16-bit memory operands and 8 bit immediate
operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11970
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sat, 28 Feb 2004 22:06:59 +0000 (22:06 +0000)]
Uncomment instructions that take both an immediate and a memory
operand but their sizes differ.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11969
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Sat, 28 Feb 2004 22:06:03 +0000 (22:06 +0000)]
Fix my sloppiness
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11968
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sat, 28 Feb 2004 22:02:05 +0000 (22:02 +0000)]
Each instruction now has both an ImmType and a MemType. This describes
the size of the immediate and the memory operand on instructions that
use them. This resolves problems with instructions that take both a
memory and an immediate operand but their sizes differ (i.e. ADDmi32b).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11967
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Sat, 28 Feb 2004 21:55:18 +0000 (21:55 +0000)]
Fix typo in comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11966
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Feb 2004 21:30:39 +0000 (21:30 +0000)]
Add a testcase for switch instruction induction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11965
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Feb 2004 21:28:10 +0000 (21:28 +0000)]
Implement switch->br and br->switch folding by ripping out the switch->switch
and br->br code and generalizing it. This allows us to compile code like this:
int test(Instruction *I) {
if (isa<CastInst>(I))
return foo(7);
else if (isa<BranchInst>(I))
return foo(123);
else if (isa<UnwindInst>(I))
return foo(1241);
else if (isa<SetCondInst>(I))
return foo(1);
else if (isa<VAArgInst>(I))
return foo(42);
return foo(-1);
}
into:
int %_Z4testPN4llvm11InstructionE("struct.llvm::Instruction"* %I) {
entry:
%tmp.1.i.i.i.i.i.i.i = getelementptr "struct.llvm::Instruction"* %I, long 0, ubyte 4 ; <uint*> [#uses=1]
%tmp.2.i.i.i.i.i.i.i = load uint* %tmp.1.i.i.i.i.i.i.i ; <uint> [#uses=2]
%tmp.2.i.i.i.i.i.i = seteq uint %tmp.2.i.i.i.i.i.i.i, 27 ; <bool> [#uses=0]
switch uint %tmp.2.i.i.i.i.i.i.i, label %endif.0 [
uint 27, label %then.0
uint 2, label %then.1
uint 5, label %then.2
uint 14, label %then.3
uint 15, label %then.3
uint 16, label %then.3
uint 17, label %then.3
uint 18, label %then.3
uint 19, label %then.3
uint 32, label %then.4
]
...
As well as handling the cases in 176.gcc and many other programs more effectively.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11964
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Feb 2004 20:21:45 +0000 (20:21 +0000)]
Change this so that LLC actually tries to run the code generator, though it will
immediately abort due to lack of an instruction selector. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11963
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Feb 2004 19:55:16 +0000 (19:55 +0000)]
Add a hook to run with the V8 target, though it doesn't currently work. Also
mark the PPC backend as experimental
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11962
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Feb 2004 19:54:16 +0000 (19:54 +0000)]
Add hook for V8 target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11961
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Feb 2004 19:54:00 +0000 (19:54 +0000)]
SparcV8 now builds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11960
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Feb 2004 19:53:18 +0000 (19:53 +0000)]
fine grainify namespacification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11959
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Feb 2004 19:52:49 +0000 (19:52 +0000)]
Finegrainify namespacification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11958
91177308-0d34-0410-b5e6-
96231b3b80d8