Commit Graph

53 Commits

Author SHA1 Message Date
Vikram S. Adve
242a8086aa Numerous bug fixes:
-- correct sign extensions for integer casts and for shift-by-constant
   instructions generated for integer multiply
-- passing FP arguments to functions with more than 6 arguments
-- passing FP arguments to varargs functions
-- passing FP arguments to functions with no prototypes
-- incorrect stack frame size when padding a section
-- folding getelementptr operations with mixed array and struct indexes
-- use uint64_t instead of uint for constant offsets in mem operands
-- incorrect coloring for CC registers (both int and FP): interferences
   were being completely ignored for int CC and were considered but no
   spills were marked for fp CC!

Also some code improvements:
-- better interface to generating machine instr for common cases
   (many places still need to be updated to use this interface)
-- annotations on MachineInstr to communicate information from
   one codegen phase to another (now used to pass information about
   CALL/JMPLCALL operands from selection to register allocation)
-- all sizes and offests in class TargetData are uint64_t instead of uint


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2640 91177308-0d34-0410-b5e6-96231b3b80d8
2002-05-19 15:25:51 +00:00
Chris Lattner
c6f3ae5c66 Eliminate duplicate or unneccesary #include's
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2397 91177308-0d34-0410-b5e6-96231b3b80d8
2002-04-29 17:42:12 +00:00
Chris Lattner
f57b845547 * Rename MethodPass class to FunctionPass
- Rename runOnMethod to runOnFunction
* Transform getAnalysisUsageInfo into getAnalysisUsage
  - Method is now const
  - It now takes one AnalysisUsage object to fill in instead of 3 vectors
    to fill in
  - Pass's now specify which other passes they _preserve_ not which ones
    they modify (be conservative!)
  - A pass can specify that it preserves all analyses (because it never
    modifies the underlying program)
* s/Method/Function/g in other random places as well


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2333 91177308-0d34-0410-b5e6-96231b3b80d8
2002-04-27 06:56:12 +00:00
Vikram S. Adve
6d78311fd2 Added functions to compute which register, if any, to use
for a particular argument in a list of arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2315 91177308-0d34-0410-b5e6-96231b3b80d8
2002-04-25 04:40:24 +00:00
Chris Lattner
9aa697b82e Include prototype for interface to PrologEpilogCodeInserter.cpp file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2192 91177308-0d34-0410-b5e6-96231b3b80d8
2002-04-09 05:16:36 +00:00
Chris Lattner
b7653df085 s/Method/Function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2180 91177308-0d34-0410-b5e6-96231b3b80d8
2002-04-08 22:03:57 +00:00
Vikram S. Adve
a44c6c00a2 Added function getCallInstIndirectAddrVal() to set call interference
for that value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2074 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-31 19:04:50 +00:00
Chris Lattner
c9aa7dfee4 s/Method/Function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2035 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-29 03:51:11 +00:00
Vikram S. Adve
dd55899f9a Several sundry bug fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1890 91177308-0d34-0410-b5e6-96231b3b80d8
2002-03-18 03:02:42 +00:00
Chris Lattner
49b8a9c731 Clean up std namespace issues
Silence warning


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1790 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-24 23:02:40 +00:00
Chris Lattner
9530a6f3cd Write llvm bytecode to output .s file as last step of LLC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1728 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-11 22:35:46 +00:00
Chris Lattner
699683c585 * Minor cleanups
* Reduce number of #includes
* Remove blatently misleading qualifiers (how do you have an inlined pure virtual function?)
* Remove unnecesary & ignored qualifiers (const int argument vs int argument)
* SparcInternals.h now no longer #includes RegClass.h or SparcRegClassInfo.h
* Pull inlined functions out of .h file if they are virtual and interfere with dependencies


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1677 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-04 05:59:25 +00:00
Chris Lattner
7327d7ee8b Move a ton of tables out of SparcInternals.h and move them to Sparc.cpp.
Eventually they will probably get moved again, but at least now they aren't
having to be compiled by 7 different .cpp files...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1666 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-04 00:04:35 +00:00
Chris Lattner
4387e3128b Convert sparc backend over to use pass based compilation structure.
Try to decouple stuff as much as possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1664 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-03 23:42:19 +00:00
Chris Lattner
6edfcc578d Implement new method by method assembly output & memory releasing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1656 91177308-0d34-0410-b5e6-96231b3b80d8
2002-02-03 07:51:17 +00:00
Chris Lattner
697954c15d Changes to build successfully with GCC 3.02
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1503 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-20 22:54:45 +00:00
Ruchira Sasanka
690f367f6b removed SizeOfStackOperand constant from the SparcRegInfo class - no longer used
by code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1497 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-07 20:33:44 +00:00
Ruchira Sasanka
2563a98f3d Added more comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1496 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-07 20:28:49 +00:00
Ruchira Sasanka
d00982a81c Added comments and correct logic for finding register sizes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1494 91177308-0d34-0410-b5e6-96231b3b80d8
2002-01-07 19:20:28 +00:00
Vikram S. Adve
4c5fe2d3ed Add function returning which operand holds immediate constant
for a given opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1307 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-14 18:48:36 +00:00
Vikram S. Adve
00521d79bf When allocating space on stack for writing a register,
use the size of the register, not the size of the Value type,
to get the right alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1284 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-12 23:26:35 +00:00
Ruchira Sasanka
67a463ac04 Added phi elimination code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1265 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-12 14:45:33 +00:00
Vikram S. Adve
5a81692f47 Down-growing offsets from FP should start at 0, not -1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1255 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-11 21:22:11 +00:00
Ruchira Sasanka
ae4bcd7566 Corrected reodering code for instructions inserted before calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1252 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-10 21:20:43 +00:00
Ruchira Sasanka
868cf82c68 Added code for correct reordering of call arguments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1234 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-09 23:49:14 +00:00
Vikram S. Adve
5afff3b917 Bug fix: Need to include the stack offset "bias" in assembly code itself.
Added class UltraSparcCacheInfo.
Added function to convert float to int by copying via memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1224 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-09 02:15:52 +00:00
Vikram S. Adve
7f37fe5187 Use MachineFrameInfo as base class of UltraSparcFrameInfo, and made
a major overhaul of this class and how stack frames are managed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1191 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-08 04:55:13 +00:00
Chris Lattner
8e5c0b473a Killing warnings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1175 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-07 14:01:59 +00:00
Chris Lattner
6dad506d81 Squelch warnings about not returning a value
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1173 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-07 13:49:12 +00:00
Vikram S. Adve
b7f06f46a1 Fixed instruction information for RDCCR and WRCCR.
Fixed selection to create a TmpInstruction for each integer CC register
(since it is an implicit side-effect, unlike FP CC registers which are
explicit operands).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1120 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-04 19:34:49 +00:00
Ruchira Sasanka
3839e6e309 Added code to support correct saving of %ccr across calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1111 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 19:59:59 +00:00
Ruchira Sasanka
ef1b0cb9a5 Arranged stack frame - needs furhter organization
Moved InsertCallerSaveInstr to the SparcRegInfo.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1106 91177308-0d34-0410-b5e6-96231b3b80d8
2001-11-03 17:13:27 +00:00
Ruchira Sasanka
20c82b12c9 Added support for spilling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@992 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-28 18:15:12 +00:00
Vikram S. Adve
c152163eb4 Reordered a couple of registers to simplify some new checks.
Added code to map between caller's and callee's register windows.
Added frame layout class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@937 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-22 13:31:53 +00:00
Ruchira Sasanka
b3b6f5338c Added support for both call/jmpl instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@930 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-21 16:43:41 +00:00
Vikram S. Adve
5684c4e2b4 Added virtual function to generate an instruction sequence to
load a constant into a register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@862 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-18 00:02:06 +00:00
Ruchira Sasanka
c4d4b76efb Added support for caller saving
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@847 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-16 01:23:19 +00:00
Chris Lattner
1e23ed7c65 Output to cerr rather than cout so that debug info doesn't mess up assembly generation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@840 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-15 18:15:27 +00:00
Ruchira Sasanka
cc3ccac238 updated suggesting/coloring of call & return args & implicit operands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@830 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-15 16:25:28 +00:00
Chris Lattner
ec0a95f4e4 Be const correct
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@826 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-15 15:54:43 +00:00
Chris Lattner
e369fcbe35 Fix broken #endif
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@768 91177308-0d34-0410-b5e6-96231b3b80d8
2001-10-13 06:54:54 +00:00
Ruchira Sasanka
ab304c42c2 added suggesting color support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@673 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-30 23:19:57 +00:00
Chris Lattner
9a3d63bcbe Seperate instruction definitions into new SparcInstr.def file
Move contents of SparcMachineInstrDesc[] out of SparcInternals.h
into Sparc.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@644 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-19 15:56:23 +00:00
Chris Lattner
32f600a8bf Add emitAssemblyMethod to TargetMachine
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@635 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-19 13:47:12 +00:00
Ruchira Sasanka
89fb46b00b -- ruchira
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@632 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-18 22:52:44 +00:00
Chris Lattner
767b78fb39 Remove extraneous #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@627 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-18 17:03:48 +00:00
Vikram S. Adve
339084b908 Make class TargetMachine the common interface to all target-dependent
information, including instr, sched, and reg information.
This allows us to allocate them all in one place and use them much
more uniformly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@618 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-18 13:04:24 +00:00
Ruchira Sasanka
866f1385b4 modified printing of debug messages
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@593 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-15 19:11:31 +00:00
Ruchira Sasanka
e38bd53361 added register allocation code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@585 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-15 00:30:44 +00:00
Chris Lattner
46cbff625e Chris seems fond of #include <vector>. Fix these. Also convert use list in
Value to a vector instead of a list.

Move SchedGraph.h & SchedPriorities.h into lib/CodeGen/InstrScheduling


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@572 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-14 16:56:32 +00:00