Vikram S. Adve
abf331db03
isMarkedForSpill() should be const.
...
llvm-svn: 7155
2003-07-10 19:45:28 +00:00
Vikram S. Adve
39587d6264
Print out all neighbors in interference graph, not just higher-numbered ones.
...
llvm-svn: 7153
2003-07-10 19:43:33 +00:00
Vikram S. Adve
5224b19deb
Several fixes to handling of int CC register:
...
(1) An int CC live range must be spilled if there are any interferences,
even if no other "neighbour" in the interf. graph has been allocated
that reg. yet. This is actually true of any class with only one reg!
(2) SparcIntCCRegClass::colorIGNode sets the color even if the LR must
be spilled so that the machine-independent spill code doesn't have to
make the machine-dependent decision of which CC name to use based on
operand type: %xcc or %icc. (These are two halves of the same
register.)
(3) LR->isMarkedForSpill() is no longer the same as LR->hasColor().
These should never have been the same, and this is necessary now for #2 .
(4) All RDCCR and WRCCR instructions are directly generated with the
phony number for %ccr so that EmitAssembly/EmitBinary doesn't have to
deal with this.
llvm-svn: 7152
2003-07-10 19:42:55 +00:00
Vikram S. Adve
1fce4cfa95
Minor beautification: fold a couple of lines of code.
...
llvm-svn: 7054
2003-07-02 01:24:00 +00:00
Chris Lattner
52de05c6b3
Remove a ton of extraneous #includes
...
llvm-svn: 6842
2003-06-22 03:08:05 +00:00
John Criswell
cfac736363
Included assert.h so that the code compiles under newer versions of GCC.
...
llvm-svn: 6682
2003-06-11 14:01:36 +00:00
Vikram S. Adve
24ce4d8eb8
Minor changes.
...
llvm-svn: 6470
2003-05-31 07:41:54 +00:00
Vikram S. Adve
a83804a29a
Extensive changes to the way code generation occurs for function
...
call arguments and return values:
Now all copy operations before and after a call are generated during
selection instead of during register allocation.
The values are copied to virtual registers (or to the stack), but
in the former case these operands are marked with the correct physical
registers according to the calling convention.
Although this complicates scheduling and does not work well with
live range analysis, it simplifies the machine-dependent part of
register allocation.
llvm-svn: 6465
2003-05-31 07:32:01 +00:00
Vikram S. Adve
7366fa1aa6
(1) Added special register class containing (for now) %fsr.
...
Fixed spilling of %fcc[0-3] which are part of %fsr.
(2) Moved some machine-independent reg-class code to class TargetRegInfo
from SparcReg{Class,}Info.
(3) Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly()
and related functions and flags. Fixed several bugs where only
"isDef" was being checked, not "isDefAndUse".
llvm-svn: 6341
2003-05-27 00:05:23 +00:00
Chris Lattner
1ff57d914c
Adjust to new interfaces
...
llvm-svn: 5314
2003-01-15 21:14:01 +00:00
Chris Lattner
e46165fcf0
Move headers around
...
llvm-svn: 5312
2003-01-15 21:02:16 +00:00
Chris Lattner
14802a539d
Header is moved into local directory
...
llvm-svn: 5311
2003-01-15 21:00:02 +00:00
Chris Lattner
c75dc4856e
Add new method
...
llvm-svn: 5309
2003-01-15 20:28:36 +00:00
Chris Lattner
a23969b669
#include RegClass.h explicitly
...
llvm-svn: 5307
2003-01-15 19:57:07 +00:00
Chris Lattner
19a7cb2240
Remvoe dependency on RegClass.h
...
llvm-svn: 5306
2003-01-15 19:56:21 +00:00
Chris Lattner
8128936c33
Use buildmi not MI ctor directly
...
llvm-svn: 5293
2003-01-15 18:08:07 +00:00
Chris Lattner
24c1d5e551
Rename llvm/Analysis/LiveVar/FunctionLiveVarInfo.h -> llvm/CodeGen/FunctionLiveVarInfo.h
...
llvm-svn: 5284
2003-01-14 23:05:08 +00:00
Chris Lattner
de1d729747
Move llvm/Analysis/LiveVar/ValueSet.h to CodeGen/ValueSet.h
...
llvm-svn: 5282
2003-01-14 22:56:37 +00:00
Chris Lattner
b4d58d7f9e
Rename MachineInstrInfo -> TargetInstrInfo
...
llvm-svn: 5272
2003-01-14 22:00:31 +00:00
Chris Lattner
f9781b59ab
More renamings of Target/Machine*Info to Target/Target*Info
...
llvm-svn: 5204
2002-12-29 03:13:05 +00:00
Chris Lattner
871e591e34
Rename MachineFrameInfo to TargetFrameInfo.h
...
llvm-svn: 5199
2002-12-28 21:00:25 +00:00
Chris Lattner
0733616ec7
Frame info moved out of MachineFunction into a seperate object
...
llvm-svn: 5192
2002-12-28 20:35:34 +00:00
Chris Lattner
660bf10981
Use higher level methods, don't use TargetInstrDescriptors directly!
...
llvm-svn: 4389
2002-10-29 17:35:39 +00:00
Chris Lattner
76014b97af
Remove #include, misleading comment, and a typedef used only once
...
llvm-svn: 4383
2002-10-29 17:08:05 +00:00
Chris Lattner
6d6d87f3f3
Inline typedef, eliminate unused method
...
llvm-svn: 4382
2002-10-29 17:03:19 +00:00
Chris Lattner
ca0f818347
Remove long dead #if 0
...
llvm-svn: 4381
2002-10-29 17:00:19 +00:00
Chris Lattner
5abe44bb72
Add #includes that were eliminated from headers
...
llvm-svn: 4380
2002-10-29 16:51:05 +00:00
Chris Lattner
189c099a7f
De-inline methods
...
llvm-svn: 4379
2002-10-29 16:50:33 +00:00
Chris Lattner
c9e9d2933d
Remove #include
...
llvm-svn: 4378
2002-10-29 16:50:20 +00:00
Chris Lattner
e9bda57b87
Remove unneeded #include
...
llvm-svn: 4377
2002-10-29 16:50:06 +00:00
Chris Lattner
a13000449e
Remove forward decl
...
llvm-svn: 4376
2002-10-29 16:49:44 +00:00
Chris Lattner
7ecc7af4bd
Make assertIGNode be private to the InterferenceGraph.cpp file
...
llvm-svn: 4375
2002-10-29 16:42:34 +00:00
Chris Lattner
b1e39b5a27
Rename some regalloc fields
...
llvm-svn: 4346
2002-10-28 19:43:23 +00:00
Chris Lattner
c9bd2c38a8
Eliminate usage of MachineBasicBlock::get
...
llvm-svn: 4344
2002-10-28 19:22:04 +00:00
Chris Lattner
6a30b02b1d
Rename the redundant MachineOperand::getOperandType() to MachineOperand::getType()
...
llvm-svn: 4331
2002-10-28 04:45:29 +00:00
Chris Lattner
9668c8c8db
Add #includes now that MachineInstr.h doesn't include llvm/Target/MachineInstrInfo.h
...
llvm-svn: 4327
2002-10-28 02:28:39 +00:00
Chris Lattner
2a3bd1c562
*** empty log message ***
...
llvm-svn: 4323
2002-10-28 02:01:37 +00:00
Chris Lattner
6fc3ca062d
*** empty log message ***
...
llvm-svn: 4317
2002-10-28 01:41:27 +00:00
Misha Brukman
7ae7f84cf3
Changed `MachineCodeForMethod' to `MachineFunction'.
...
llvm-svn: 4301
2002-10-28 00:28:31 +00:00
Chris Lattner
5ae3bd630d
Ensure definate initialization
...
llvm-svn: 4263
2002-10-22 23:34:11 +00:00
Chris Lattner
ce64eddb71
- Two minor improvements to the MachineInstr class to reduce footprint and
...
overhead: Merge 3 parallel vectors into 1, change regsUsed hash_set to be a
bitvector. Sped up LLC a little less than 10% in a debug build!
llvm-svn: 4261
2002-10-22 23:16:21 +00:00
Vikram S. Adve
3e54d6c3be
Major bug fix: spill code for an instruction in a delay slot was
...
merrily being inserted before/after the instruction!
llvm-svn: 4116
2002-10-11 16:12:40 +00:00
Vikram S. Adve
9011903ee2
Added a couple of helper methods for live range construction.
...
llvm-svn: 3970
2002-09-28 17:05:43 +00:00
Vikram S. Adve
ed2df3ecf8
Live ranges for Return value and return address of a Call are now
...
created here, simply by handling all implicit operands (which should
have been done anyway).
llvm-svn: 3969
2002-09-28 17:05:22 +00:00
Vikram S. Adve
8fef3b8033
Fixed incorrect assertion: spill code for function ptr should be
...
handled like normal operands, not like other call arguments.
llvm-svn: 3967
2002-09-28 17:02:40 +00:00
Vikram S. Adve
5cc5d4b19a
Add method IGNode::getCombinedDegree to count the sum of the degrees
...
of two nodes, excluding duplicates.
llvm-svn: 3848
2002-09-20 00:55:04 +00:00
Vikram S. Adve
e008b2d62e
Allow copy coalescing in more cases: if sum of node degrees is more than
...
than #available regs, compute the sum excluding duplicates and if that
is less than #regs, go ahead and coalesce.
Add method IGNode::getCombinedDegree to count excluding duplicates.
llvm-svn: 3842
2002-09-20 00:45:47 +00:00
Vikram S. Adve
580b851d23
Fix typos in previous checkin.
...
llvm-svn: 3726
2002-09-15 15:33:48 +00:00
Chris Lattner
a73d6653f6
RegAllocCommon no longer includes CommandLine.h so we have to include it
...
here.
llvm-svn: 3725
2002-09-15 07:07:55 +00:00
Vikram S. Adve
0e56b36b53
Break RA_DEBUG option into several levels to get better control over
...
debug output.
llvm-svn: 3724
2002-09-14 23:05:33 +00:00