1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-01 16:33:37 +01:00
Commit Graph

3817 Commits

Author SHA1 Message Date
Chris Lattner
dc3aec7a90 * Eliminate the LiveVarSet class, making applyTranferFuncForMInst a static
function in the one .cpp file that uses it.  Use ValueSet's instead.
* Prepare to delete LiveVarSet.h & LiveVarSet.cpp
* Eliminate the ValueSet class, making all old member functions into global
  templates that will eventually be moved to Support.

llvm-svn: 1711
2002-02-05 02:51:01 +00:00
Chris Lattner
a8170f0944 * Code Cleanups
* Introduce RAV to allow stream I/O instead of using printValue

llvm-svn: 1710
2002-02-05 01:43:49 +00:00
Chris Lattner
1181768743 * Big cleanups.
* Make BBLiveVar.h effectively an internal header file
* Prepare LiveVarMap.h for deletion

llvm-svn: 1705
2002-02-05 00:33:19 +00:00
Chris Lattner
62860d4c3d Clean up MethodLiveVarInfo
llvm-svn: 1703
2002-02-04 20:49:04 +00:00
Chris Lattner
b4e0d0424c Turn live variable analysis into a real MethodPass.
llvm-svn: 1699
2002-02-04 20:00:08 +00:00
Chris Lattner
5726b834cd Instruction scheduling is a real pass now.
llvm-svn: 1698
2002-02-04 19:59:22 +00:00
Chris Lattner
0c04c60975 eliminate the add and remove methods, clients must use insert and erase directly.
llvm-svn: 1686
2002-02-04 16:33:18 +00:00
Chris Lattner
140f09f8cc Remove tons of include pollution
Remove frivolous const's
Make use of the -> operator

llvm-svn: 1685
2002-02-04 16:32:40 +00:00
Chris Lattner
8bfb48c8d3 Convert RegisterAllocator interface to opaque pass type, so that users do not
need to know _anything_ about RegAlloc to use it.  Well in the end maybe.

llvm-svn: 1681
2002-02-04 15:54:09 +00:00
Chris Lattner
009faad8e4 * Minor cleanups
* Reduce number of #includes, sometimes drastically (LiveRangeInfo.h lost _7_)
* Move instrIsFeasible() from InstrScheduling.h to SchedPriorities.h
* Delete blank lines at end of files

llvm-svn: 1672
2002-02-04 05:52:08 +00:00
Chris Lattner
45cdd0fb0c * Move command line parsing debug stuff to InstrScheduling internal header file
SchedPriorities.h

llvm-svn: 1669
2002-02-04 02:44:20 +00:00
Chris Lattner
9a8ff2595a Split RegisterAllocation stuff OUT of Sparc.cpp into a well defined pass
that has a very minimal interface (like it should have).

llvm-svn: 1667
2002-02-04 00:33:08 +00:00
Chris Lattner
e1289c8b71 Code pulled out of MAchineInstr.(h|cpp)
llvm-svn: 1660
2002-02-03 07:54:50 +00:00
Chris Lattner
4ea2b76dee * Prune many #includes
* Remove MachineCodeForVMInstr -> MachineCodeForInstruction.h
* Remove MachineCodeForMethod  -> MachineCodeForMethod.h

llvm-svn: 1636
2002-02-03 07:11:59 +00:00
Chris Lattner
e2680a01fd * Remove TMP_INSTRUCTION_OPCODE silliness
* Fix TmpInstruction copy ctor to not read uninitialized memory
* Fix TmpInstruction copy ctor to not copy 2 operands if there is only one
* Inline Initialize method into ctors

llvm-svn: 1635
2002-02-03 07:07:16 +00:00
Chris Lattner
3dc9a2a61f Changes to build successfully with GCC 3.02
llvm-svn: 1503
2002-01-20 22:54:45 +00:00
Ruchira Sasanka
3d5efa3be1 Added comments, destructors where necessary.
llvm-svn: 1491
2002-01-07 19:16:26 +00:00
Vikram S. Adve
0607fbbf01 Eliminate all uses of memInst->getIndicesBROKEN().
llvm-svn: 1485
2001-12-15 00:36:32 +00:00
Ruchira Sasanka
9d26f00cfb Added comments are more documentation info
llvm-svn: 1434
2001-12-08 21:04:22 +00:00
Chris Lattner
c4a5815033 Renamed inst_const_iterator -> const_inst_iterator
Renamed op_const_iterator   -> const_op_iterator
Renamed PointerType::getValueType() -> PointerType::getElementType()

llvm-svn: 1408
2001-12-04 00:03:30 +00:00
Chris Lattner
f6b7da2bb5 Rename ConstPoolVal -> Constant
Rename ConstPool*   -> Constant*
Rename ConstPoolVals.h -> ConstantVals.h

llvm-svn: 1407
2001-12-03 22:26:30 +00:00
Chris Lattner
463cc31132 Create a new #include "Support/..." directory structure to move things
from "llvm/Support/..." that are not llvm dependant.

Move files and fix #includes

llvm-svn: 1400
2001-11-27 00:03:19 +00:00
Chris Lattner
cead7793a7 Move DataTypes.h from llvm/Support to just Support
llvm-svn: 1399
2001-11-26 23:04:08 +00:00
Chris Lattner
87bffac69b Fix field initialization order problem
llvm-svn: 1366
2001-11-26 18:49:54 +00:00
Vikram S. Adve
ec7d69586c Modify method AllocateLocalVar to take size argument.
llvm-svn: 1320
2001-11-15 15:23:02 +00:00
Vikram S. Adve
f87d137720 Use different op labels for bitwise logical operations and boolean logical
operations in BURG input trees.

llvm-svn: 1189
2001-11-08 04:51:39 +00:00
Vikram S. Adve
ef306158e5 Added a second constructor for and improved class TmpInstruction.
llvm-svn: 1188
2001-11-08 04:50:33 +00:00
Vikram S. Adve
2cdcbfb6e0 Major overhaul of stack frame management.
llvm-svn: 1185
2001-11-08 04:47:06 +00:00
Vikram S. Adve
8b33c2304f Old file which was moved to include/llvm/Target some time back.
llvm-svn: 1184
2001-11-08 04:46:08 +00:00
Vikram S. Adve
24fbd417a0 Make reg. numbers signed ints.
llvm-svn: 1137
2001-11-05 03:56:02 +00:00
Chris Lattner
b89ee439ae Systems headers use <> not ""
llvm-svn: 1023
2001-10-29 13:29:50 +00:00
Vikram S. Adve
6c92ae29b9 Added a constant pool to record values that need to be emitted
in the assembly code.

llvm-svn: 999
2001-10-28 21:24:50 +00:00
Ruchira Sasanka
3c4d2dea7c Added support for spilling
llvm-svn: 992
2001-10-28 18:15:12 +00:00
Vikram S. Adve
4955d04e5a Added class MachineCodeForMethod to provide method-level information
about the generated native code (e.g., frame layout information).

llvm-svn: 952
2001-10-22 13:57:39 +00:00
Vikram S. Adve
203d3a37d6 Added function interfaces for generating prolog and epilog code.
The functions must be implemented by the target-specific code generator.

llvm-svn: 951
2001-10-22 13:56:33 +00:00
Ruchira Sasanka
5362db6250 Added code to Initialize (MachineOperand) to initialize regNum to -1 -- Ruchira
llvm-svn: 919
2001-10-19 18:17:49 +00:00
Vikram S. Adve
c83118d53f 1. Add a bottom-up pass on BURG trees that is used to fix constant operands.
Needs to be bottom up because constant values may be forward-substituted
   to their uses (i.e., into the parent in the BURG tree).
2. Move most of the constant-fixup code into machine-indepedent file
   InstrSelectionSupport.cpp.

llvm-svn: 860
2001-10-17 23:59:09 +00:00
Ruchira Sasanka
6be2863ed7 added initializing regNum to -1 in both constructors of MachineOperand
llvm-svn: 851
2001-10-16 16:36:34 +00:00
Ruchira Sasanka
26ab9c8e61 Added support for caller saving
llvm-svn: 847
2001-10-16 01:23:19 +00:00
Chris Lattner
be66ee81bd Print Debug Code to stderr instead of stdout so that it doesn't mess up the assembly output
llvm-svn: 841
2001-10-15 18:30:06 +00:00
Ruchira Sasanka
54051b75a7 fixed a coalscing bug
llvm-svn: 828
2001-10-15 16:22:44 +00:00
Chris Lattner
d4a327ff93 Dang, I screwed up the merge. This should be better
llvm-svn: 785
2001-10-13 07:18:40 +00:00
Chris Lattner
a4d1133109 Clean up initializers for GCC 2.96
llvm-svn: 747
2001-10-13 06:30:10 +00:00
Ruchira Sasanka
44e467ec90 --added support for implicit operands in machine instructions
llvm-svn: 727
2001-10-12 17:46:27 +00:00
Vikram S. Adve
cc2f052087 Record implicitRefs for each machine instruction instead of
each VM instruction.

llvm-svn: 725
2001-10-11 04:23:19 +00:00
Vikram S. Adve
2c19cf9a69 Machine-independent code generation routines used in instruction
selection.  These used to live in several different places before.

llvm-svn: 719
2001-10-10 20:50:43 +00:00
Vikram S. Adve
392ad31850 Moved code generation support routines to InstrSelectionSupport.{h,cpp}.
llvm-svn: 718
2001-10-10 20:50:20 +00:00
Chris Lattner
08b1dde37e Commit more code over to new cast style
llvm-svn: 697
2001-10-02 03:41:24 +00:00
Chris Lattner
43781f1f96 Add support for new style casts
llvm-svn: 694
2001-10-01 16:18:37 +00:00
Chris Lattner
345daca305 Pull predecessor and successor iterators out of the CFG*.h files, and plop them into
the BasicBlock class where they should be.  pred_begin/pred_end become methods on BasicBlock,
and the cfg namespace isn't used anymore.

llvm-svn: 691
2001-10-01 13:19:53 +00:00
Vikram S. Adve
a491a05515 Add vector `implicitUses' to class MachineCodeForVMInstr to hold values
that are used by the VM instruction but not explicit operands of the
m/c instruction.

llvm-svn: 684
2001-10-01 00:18:12 +00:00
Ruchira Sasanka
9d68af20a7 no major change.
llvm-svn: 674
2001-09-30 23:22:45 +00:00
Chris Lattner
030d4ca8f4 Change debug info from #define to command line option
llvm-svn: 646
2001-09-19 16:26:10 +00:00
Ruchira Sasanka
70506bf77c --added methods to operand class to set/get registers after register allocation
llvm-svn: 633
2001-09-18 22:54:47 +00:00
Vikram S. Adve
24f80f0837 Minor fixes: renamed target machine files; fold sched info into TargetMachine.
llvm-svn: 603
2001-09-18 12:41:43 +00:00
Ruchira Sasanka
f8c425fc43 added a method to get reg num after register allocation
llvm-svn: 596
2001-09-15 21:11:48 +00:00
Ruchira Sasanka
c6fb737c19 -modified machine operand class - took regNum out of union to set regNum after
retister allocation.

llvm-svn: 594
2001-09-15 20:16:41 +00:00
Ruchira Sasanka
6807a780c5 -- debug messages dissabled
llvm-svn: 589
2001-09-15 16:54:40 +00:00
Ruchira Sasanka
e0cf66f325 --reg alloc code added
llvm-svn: 587
2001-09-15 00:33:26 +00:00
Chris Lattner
d6a98c11bc 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

llvm-svn: 572
2001-09-14 16:56:32 +00:00
Chris Lattner
de29307caa Split Target/Machine.h into three files:
* Machine.h
* InstInfo.h
* SchedInfo.h

TODO: Split out reg info stuff
llvm-svn: 567
2001-09-14 06:08:03 +00:00
Chris Lattner
a0a3946882 Make a new llvm/Target #include directory.
Move files from lib/CodeGen/TargetMachine to lib/Target
Move TargetData.h and TargetMachine.h to Target/{Data.h|Machine.h}
Prepare to split TargetMachine.h into several smaller files

llvm-svn: 566
2001-09-14 05:34:53 +00:00
Chris Lattner
161b4af2f6 Checkin changes to:
1. Clean up the TargetMachine structure.  No more wierd pointers that have to
   be cast around and taken care of by the target.
2. Instruction Scheduling now takes the schedinfo as an argument.  The same
   should be done with the instinfo, it just isn't now.
3. Sparc.h is now just a factory method.  Eventually this file will dissapear,
   but probably not until we have more than one backend.  :)

llvm-svn: 564
2001-09-14 04:32:38 +00:00
Chris Lattner
3e2a85a0e3 This checkin represents some cleanup of the backend, implementing the following things:
1. The TargetMachine structure is free to decide the process a particular target uses to generate code.
2. All of the gooee details of the sparc backend are now localized in the lib/CodeGen/TargetMAchine/Sparc directory.  The Sparc.h file that is globally visible is just a stub.
3. The Sparc.h file that esxists now will dissapear entirely someday when we have multiple backends chosen by a factory of some sort.

llvm-svn: 559
2001-09-14 03:37:52 +00:00
Chris Lattner
b6e1cc3118 More cleanups, preparing to revamp InstrForest to, among other things,
not leak all its allocated memory.

llvm-svn: 553
2001-09-12 16:34:03 +00:00
Chris Lattner
6ff8e8edce * Clean up InstrForest
* Fix ins sel problem, test case:
void "foo" (int *%x, int *%y)

begin
        seteq int *%x, %y
        ret void
end

llvm-svn: 552
2001-09-12 01:28:49 +00:00
Chris Lattner
8cbda4e314 Eliminate 'BasicNode' from InstrForest.
llvm-svn: 551
2001-09-11 23:52:11 +00:00
Chris Lattner
70439801a6 Eliminate MainTreeNode function
llvm-svn: 550
2001-09-11 23:22:43 +00:00
Chris Lattner
fc53415334 Update assertion to allow extra case
llvm-svn: 532
2001-09-10 20:02:12 +00:00
Chris Lattner
2e74f6ba1f Fix build breakage. :(
llvm-svn: 511
2001-09-09 19:52:23 +00:00
Chris Lattner
982bbcfb36 Remove extra #include
llvm-svn: 508
2001-09-09 19:34:25 +00:00
Ruchira Sasanka
3d7313423c *** empty log message ***
llvm-svn: 507
2001-09-08 17:23:06 +00:00
Ruchira Sasanka
5f9e5b6bc7 *** empty log message ***
llvm-svn: 506
2001-09-08 14:32:00 +00:00
Ruchira Sasanka
4f3751ecdd Committed for compliation. Not yet final.
--Ruchira

llvm-svn: 505
2001-09-08 14:22:50 +00:00
Chris Lattner
0b0dae7bdb * Remove lots of unnecesary #includes
* Remove extra flyers
* Remove dependence on stringExtras by eliminating printIndent calls

llvm-svn: 486
2001-09-07 21:18:16 +00:00
Chris Lattner
3f36c6fe59 * Remove lots of annoying extra #includes
* Elminate dependecy on stringextras.h by moving dump's into .cpp files
* Kill InOutIterator class because it breaks iterator semantics to work like that
   - Copy ctor on iterator doesn't work.

llvm-svn: 485
2001-09-07 21:07:10 +00:00
Chris Lattner
31e4c8874f * Add tag so emacs knows it's a c++ file
* Remove frivolous flyers

llvm-svn: 484
2001-09-07 21:04:59 +00:00
Chris Lattner
9aac44442d Add tags so emacs knows these are C++ files
llvm-svn: 483
2001-09-07 21:04:20 +00:00
Chris Lattner
9464de6a0f Annotations are now passed around as const objects
llvm-svn: 435
2001-09-07 16:28:25 +00:00
Ruchira Sasanka
dceb09f3d8 *** empty log message ***
llvm-svn: 411
2001-08-31 20:30:42 +00:00
Vikram S. Adve
62a903416c Added function MachineInstr::operandIsDefined(i) and decl for
function PrintMachineInstructions.

llvm-svn: 399
2001-08-28 23:11:46 +00:00
Vikram S. Adve
5947c43319 Extensive additions for supporting instruction scheduling.
llvm-svn: 398
2001-08-28 23:10:41 +00:00
Vikram S. Adve
f9fa4cc579 Added class MachineSchedInfo and several supporting classes
as a machine description for instruction scheduling.

llvm-svn: 397
2001-08-28 23:09:36 +00:00
Vikram S. Adve
ad002e37d5 Implementation of instruction scheduling for LLVM.
Currently schedules one basic block at a time.

llvm-svn: 396
2001-08-28 23:07:19 +00:00
Vikram S. Adve
91d73a52d5 Class that encapsulates priority heuristics for instruction scheduling.
llvm-svn: 395
2001-08-28 23:06:49 +00:00
Vikram S. Adve
23be1e0839 Scheduling DAG for instruction scheduling. Currently for a single basic block.
llvm-svn: 394
2001-08-28 23:06:02 +00:00
Vikram S. Adve
23d0560303 Use const int instead of #define.
llvm-svn: 388
2001-08-28 21:35:26 +00:00
Chris Lattner
6336546710 Initial checkin of TargetData code
llvm-svn: 384
2001-08-27 16:00:15 +00:00
Chris Lattner
511d1ca915 Use the new TargetData class to factor out some of the shared code
between the static compilers and the interpreter.

llvm-svn: 379
2001-08-27 15:50:12 +00:00
Ruchira Sasanka
74f3230149 LV info on machine instructions
llvm-svn: 359
2001-08-20 21:11:01 +00:00
Ruchira Sasanka
8078a494fc Corrected the compilation error by making the ValOperator class a friend of
MachineOperand class - Ruchira

llvm-svn: 358
2001-08-13 16:54:48 +00:00
Vikram S. Adve
bd05af6e92 Can't use ref to stack value!
llvm-svn: 354
2001-08-09 20:14:22 +00:00
Vikram S. Adve
5f9e728807 Needed old conditions as well as new in skipToNextVal()!
llvm-svn: 353
2001-08-09 19:18:33 +00:00
Vikram S. Adve
36a0da1ec3 Bug fix in ValOpIterator: not moving past operand with NULL Value.
llvm-svn: 352
2001-08-08 00:15:42 +00:00
Ruchira Sasanka
a6cea3a426 *** empty log message ***
llvm-svn: 351
2001-08-07 21:01:23 +00:00
Ruchira Sasanka
66e8472995 Added isDef field to MachineOperand class - Ruchira
llvm-svn: 349
2001-08-07 20:14:30 +00:00
Vikram S. Adve
5a4b37da6b Use extra operand for instructions that set a CC register that
was not explicit before.

llvm-svn: 347
2001-08-06 21:05:39 +00:00
Vikram S. Adve
f3b4b570aa Allow numOperands of -1 for variable #operands.
llvm-svn: 341
2001-07-31 21:55:51 +00:00
Vikram S. Adve
46dd49a011 Allow machine instructions with variable numbers of arguments.
This is used only by Phi for now.

llvm-svn: 336
2001-07-31 21:49:28 +00:00
Vikram S. Adve
fc9759c295 Added dummy Phi instruction.
llvm-svn: 335
2001-07-31 21:48:23 +00:00
Vikram S. Adve
5e19e64a94 Added class MachineCodeForBasicBlock.
llvm-svn: 332
2001-07-30 18:49:07 +00:00
Vikram S. Adve
8572e7c133 Added several SPARC instructions including conditional move and SETHI.
Added MachineInstrInfo class and subclass UltraSparcInstrInfo.
Added several fields to MachineInstrDescriptor (and renamed it from
MachineInstrInfo).  Latency fields are to support scheduling.

llvm-svn: 313
2001-07-28 04:26:42 +00:00
Vikram S. Adve
b67a683e25 Remove redundant and unused functions.
llvm-svn: 312
2001-07-28 04:20:33 +00:00
Vikram S. Adve
ce164753ad Added MachineInstrInfo class and moved instruction-related members there.
Added several fields to MachineInstrDescriptor (and renamed it from
MachineInstrInfo.  Latency fields are to support scheduling.

llvm-svn: 308
2001-07-28 04:09:37 +00:00
Vikram S. Adve
a6bcc3a47e Eliminate separate enum for operand register type.
Use union for alternative data for different operand types.
Add iterator over Value* operands in a MachineInstr.

llvm-svn: 307
2001-07-28 04:06:37 +00:00
Ruchira Sasanka
12710ee1b2 *** empty log message ***
llvm-svn: 291
2001-07-24 17:14:13 +00:00
Chris Lattner
a601339af2 Eliminated the Unique class in favor of NonCopyable and NonCopyableV
llvm-svn: 280
2001-07-23 18:26:21 +00:00
Chris Lattner
ff6c44f04f Moved inline/llvm/Tools/* to include/llvm/Support/*
llvm-svn: 279
2001-07-23 17:46:59 +00:00
Chris Lattner
cbe9215a10 Nonpolymorphic class, doesn't need a virtual dtor!
llvm-svn: 276
2001-07-23 03:57:05 +00:00
Chris Lattner
e847a66947 Clean up hash table usage
Remove opaque pointer used for C compatibility which isn't an issue

llvm-svn: 275
2001-07-23 03:50:57 +00:00
Chris Lattner
d73669f4c6 Removal of the redundant CompileContext wrapper
llvm-svn: 274
2001-07-23 03:09:03 +00:00
Chris Lattner
f42a7804c8 Large scale changes to implement new command line argument facility
llvm-svn: 272
2001-07-23 02:35:57 +00:00
Chris Lattner
c5758cb574 Privatize LLCOptions. It had no business being visible to the entire
program.

llvm-svn: 267
2001-07-22 04:40:02 +00:00
Chris Lattner
9329758c8c Eliminate lots of unnecessary #includes and forward decls
there are probably more to kill

llvm-svn: 261
2001-07-21 23:24:48 +00:00
Chris Lattner
846fdcd762 Exterminate nasty Cisms
llvm-svn: 257
2001-07-21 22:42:09 +00:00
Chris Lattner
f1a2e3b6bb Renamed include/llvm/Codegen to include/llvm/CodeGen
llvm-svn: 253
2001-07-21 20:58:30 +00:00
Vikram S. Adve
8d5ecffc9a Header files for the target architecture description and for instruction
selection, and instances of these for the SPARC.

llvm-svn: 226
2001-07-21 12:39:03 +00:00