Commit Graph

2780 Commits

Author SHA1 Message Date
Anand Shukla
135b75db49 Added EmitFunctions directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2883 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-12 20:12:07 +00:00
Anand Shukla
41059bc530 Initial makefile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2882 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-12 20:11:24 +00:00
Anand Shukla
09ba7b34c4 Initial version: adds a function table to output code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2881 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-12 20:10:50 +00:00
Chris Lattner
76d5b489e3 * Pass the DSGraph around instead of the Function to printing fns
* Print the globals list in the node
* Print the scalars in the scalar node
* Eliminate Scalar "label" edges in the graph
* Print fake edges lighter instead of dotted


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2880 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-11 20:33:32 +00:00
Chris Lattner
f9ae4c5cb6 * Nodes now keep track of any global variables in them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2879 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-11 20:32:22 +00:00
Chris Lattner
c314ac49d7 * Nodes now keep track of any global variables in them
* Only dead-node-eliminate nodes with no flags
* Don't merge scalars, only merge what they point to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2878 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-11 20:32:02 +00:00
Chris Lattner
1dc15b7997 * Nodes now keep track of any global variables contained within them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2877 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-11 20:30:18 +00:00
Anand Shukla
e683f773a4 added std:: to endl
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2875 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-11 00:17:17 +00:00
Anand Shukla
24787fa2ed added std:: to vector
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2874 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-11 00:16:28 +00:00
Chris Lattner
4c7b04508e Rename DataStructure to LocalDataStructures
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2873 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 22:42:53 +00:00
Chris Lattner
cd0b36fb07 New implementation of data structure analysis
This diff is completely meaningless because this is a replacement
implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2872 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 22:42:17 +00:00
Chris Lattner
c68c31b2d3 New implementation of data structure analysis. Only local analysis has been
implemented so far.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2871 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 22:38:08 +00:00
Chris Lattner
43199a036d Disable folding g-e-p instructions into loads and stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2870 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 22:37:17 +00:00
Chris Lattner
11910cf7e3 Disable pool allocation stuff until data structure analysis is sorted back out
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2869 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 22:36:47 +00:00
Chris Lattner
2b0f739d57 Reimplement data structure analysis
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2868 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 22:36:26 +00:00
Chris Lattner
9067068c35 Fix broken test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2867 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 22:31:09 +00:00
Vikram S. Adve
11aedfffce Include Makefile.singlesrc in order to compile .c tests.
Some of these are not regression tests and this directory needs
to be reorganized, but the tests are important.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2866 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 22:02:37 +00:00
Vikram S. Adve
a7a1c7e971 Some of these are feature tests, not regression tests.
This directory needs to be reorganized and some of the tests
need changes to make them executable.  Also comments would help...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2865 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:54:05 +00:00
Vikram S. Adve
975f6d4f44 Bug fix: cast (bool) has higher precedence than %... who knew!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2864 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:51:46 +00:00
Vikram S. Adve
69cacd4710 Add support for marking each operand as a %hh, %hm, %lm or %lo.
Represent previous bools and these ones with flags in a single byte
per operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2863 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:50:57 +00:00
Vikram S. Adve
e694366259 Added a few more methods for creating instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2862 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:49:38 +00:00
Vikram S. Adve
cd13e7a5ee Fix print of BB name in dump().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2861 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:45:30 +00:00
Vikram S. Adve
3bc9ef9317 Add support for marking each operand as a %hh, %hm, %lm or %lo.
Represent previous bools and these ones with flags in a single byte
per operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2860 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:45:04 +00:00
Vikram S. Adve
6a49a1e321 Changed interface to insertCallerSavingCode().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2859 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:42:42 +00:00
Vikram S. Adve
06019fc8ad Stop using pseudo-instructions (SETX, SETUW, SETSW)
and generate actual machine instruction sequences directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2858 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:42:13 +00:00
Vikram S. Adve
195a5d5093 Add support to print %hh, %hm, %lm, or %lo in an operand field.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2857 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:41:21 +00:00
Vikram S. Adve
53fd400cdf Major overhaul to stop using pseudo-instructions (SETX, SETUW, SETSW)
and generate actual machine instruction sequences directly.

Also a couple of bug fixes in code for putting constants into registers:
-- Do *not* sign-extend unsigned constant that is shorter than int reg size
-- Fix handling of address constant (a GlobalValue) vs. constant that
   must be loaded.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2856 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:39:50 +00:00
Vikram S. Adve
dcde95fbbc More important fixes:
-- FP argument to a function with no prototype going on stack
   was not being copied to the stack in colorCallArgs().
-- Put caller-saving code *before* argument copying code so that
   we don't trash a register before saving it!
-- Two other minor fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2855 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:36:00 +00:00
Vikram S. Adve
9d22cd4535 Put caller-saving code *before* argument copying code!
(This file has a minor change required for this fix.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2854 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:30:17 +00:00
Vikram S. Adve
bba2485c70 Minor change in comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2853 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 21:29:22 +00:00
Chris Lattner
607dc6880e *** empty log message ***
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2852 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 16:48:17 +00:00
Chris Lattner
46f824f21d Allow specifying a module for context instead of a slot calculator directly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2851 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-10 16:48:14 +00:00
Chris Lattner
1373d87f16 Add a new testcase. It actually is not infinite looping. It just takes
FOREVER to run.  That's the bug.  :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2850 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 19:58:06 +00:00
Vikram S. Adve
f8685ebd9d Disabling reassociate pass until it is fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2849 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 19:53:09 +00:00
Chris Lattner
14329b1b51 New testcase for problem effecting mst
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2848 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 19:41:21 +00:00
Anand Shukla
d58290ed3b changed mem_fun to std::mem_fun
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2847 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 19:18:56 +00:00
Anand Shukla
e086f4e897 added std:: to hash_set
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2846 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 19:18:16 +00:00
Anand Shukla
b0ad8b002d Added std:: to mem_fun for 64-bit gcc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2845 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 19:16:59 +00:00
Chris Lattner
743cd3e2b8 Implementing shift left & shift right on pointers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2844 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 18:42:36 +00:00
Chris Lattner
53e9983790 Include header in the compiler-neutral location
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2843 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 16:50:24 +00:00
Vikram S. Adve
ec0de5cb4b Added support for printing constant global references to
assembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2842 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 12:30:29 +00:00
Vikram S. Adve
d60aedef05 Add makefile-mode flag for emacs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2841 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-09 12:04:21 +00:00
Vikram S. Adve
f86b4c1982 Fix iteration and InsertPos bugs introduced when Chris changed over to ilist.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2840 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-08 23:37:07 +00:00
Vikram S. Adve
fe09fb22aa Numerous changes in interface to class SparcRegInfo corresponding to
changes in class MachineRegInfo (see MachineRegInfo.h for details).

Added {LD,ST}[X]FSR instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2839 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-08 23:34:10 +00:00
Vikram S. Adve
0b04064054 class MachineCodeForBasicBlock is now an annotation on BasicBlock.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2838 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-08 23:31:24 +00:00
Vikram S. Adve
b2debdc5a9 BA no longer has the unused CC operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2837 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-08 23:30:59 +00:00
Vikram S. Adve
6418eac2f1 Have to save a boolean (setCC) value whenever use is outside the current
basic block.

Mark setCCInstr used as dest. of conditional-move as both a def and a use.

BA instruction no longer has the unused CC argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2836 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-08 23:30:14 +00:00
Vikram S. Adve
97da3649dd BA has only one argument.
Added LDFSR, LDXFSR, STFSR and STXFSR.
Fixed operands info for RDCCR, WRCCR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2835 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-08 23:25:17 +00:00
Vikram S. Adve
76ee6f70ea Significant changes to correctly spill CC registers and to correctly
handle conditional move instructions:
-- cpMem<->Reg functions now support CC registers (int and FP) correctly.
   Also, cpMem<->Reg functions now return a vector of machine instructions.
-- Scratch registers must be explicitly provided to cpMem<->Reg when
   needed, since CC regs need one to be copied to/from memory.
-- CC regs are saved to a scratch register instead of stack.
-- All regs used by a instruction are now recorded in MachineInstr::regsUsed,
   since regs used to save values *across* an instruction are not obvious
   either from the operands or from the LiveVar sets.
-- An (explicit or implicit) operand may now be both a def and a use.
   This is needed for conditional move operations.
   So an operand may need spill code both before and after the instruction.

Other changes:
-- Added several get{Class,Type} functions.
-- Added unified-to-local register number conversion.
-- class MachineCodeForBasicBlock is now an annotation on BasicBlock.
-- Suggest/Color methods may modify the MachineInstr (and always did),
   so don't make that argument const!
-- Caller-saving code doesn't need its special purpose code for
   handling CC registers since cpMem<->Reg handle those correctly now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2834 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-08 23:23:12 +00:00
Vikram S. Adve
f5af636dbe Significant changes to correctly spill CC registers and to correctly
handle conditional move instructions:
-- cpMem<->Reg functions now support CC registers (int and FP) correctly.
-- Scratch registers must be explicitly provided to cpMem<->Reg when
   needed, since CC regs need one to be copied to/from memory.
-- CC regs are saved to a scratch register instead of stack.
-- All regs used by a instruction are now recorded in MachineInstr::regsUsed,
   since regs used to save values *across* an instruction are not obvious
   either from the operands or from the LiveVar sets.
-- An (explicit or implicit) operand may now be both a def and a use.
   This is needed for conditional move operations.
   So an operand may need spill code both before and after the instruction.
-- class MachineCodeForBasicBlock is now an annotation on BasicBlock.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2833 91177308-0d34-0410-b5e6-96231b3b80d8
2002-07-08 23:15:32 +00:00