Commit Graph

2920 Commits

Author SHA1 Message Date
Chris Lattner
d264bec88a * Move frame and constant pool indexes to first argument of memory reference
so we can put an offset in there as well...
* Fix long/ulong stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5231 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:50:33 +00:00
Chris Lattner
0c514f4e27 * Some instructions take 64 bit integers, add an Arg type for it
* Add flags for different types of FP pseudo instrs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5230 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:49:24 +00:00
Chris Lattner
20862b970e * Function calls clobber fp registers
* Use new M_TERMINATOR_FLAG flag
* Add ::Void flag on several instructions so def-use info is correct!
* Implement MANY FP instructions
* Finalize pseudo FP instructions
* Add set of Pseudo FP instruction description flags
* Add support for MOVim instrs
* Add support for 64 bit support instrs, like adc sbb, etc
* Add conditional move


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5229 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:48:46 +00:00
Chris Lattner
987e8baf12 Add support for frame and constant pool references
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5228 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:45:53 +00:00
Chris Lattner
31ad5dd67f Move passes out to Passes.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5227 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:45:29 +00:00
Chris Lattner
70445403c3 Add speculation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5226 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:35:08 +00:00
Chris Lattner
b708944fc2 * Implement rudimentary output of the constant pool
* Implement support for MRMS?m instructions
* Add Arg64 support
* Add support for frame indexes and constant pool indexes
*


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5225 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:35:03 +00:00
Chris Lattner
e831b6b802 * Add support for FP registers ST*
* Add support for the constant pool & constant pool indices
* Add support for MRMS?m instructions
* Fix FP Prefix emission
* Add support for global addresses and external symbols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5224 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:33:59 +00:00
Chris Lattner
3e130a2a77 * Adjust to use new interfaces, eliminating CurReg stuff
* Support arbitrary FP constants
* Fix bugs in frame layout for function calls and incoming arguments
* Insert copies for constant arguments to PHI nodes into the BOTTOM of
  predecessor blocks, not the top.
* Implement _floating point_ support: setcc, return, load, store, cast
* Fix several bugs in the cast instruction
* Abstract out call emission and load/store for FP
* Implement malloc/free without previous lowering pass.
* Make use of new forms of MachineOperand
* Implement _long_ support!
* Fix many bugs in FP support
* Change branch from je/jne to je/jmp
* Simplify code generated for GEP instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5223 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:32:26 +00:00
Chris Lattner
019a7c801b Fix references to functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5222 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:27:23 +00:00
Chris Lattner
08084145c6 Start renaming MachineInstrInfo -> TargetInstrInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5221 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:26:36 +00:00
Chris Lattner
80a0478bbb * Use the PHI Elimination pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5220 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:26:08 +00:00
Chris Lattner
91a452b382 * Convert to use LiveVariable analysis
* Convert to use PHIElimination pass
* Don't spill values which have just been reloaded (big win reducing spills)
* Add experimental support for eliminating spills before TwoAddress
  instructions.  It currently is broken so it is #ifdef'd out.
* Use new "is terminator" flag on instructions instead of looking for
  branches and returns explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5219 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:25:40 +00:00
Chris Lattner
f00a3f905e Convert to MachineFunctionPass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5218 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:23:41 +00:00
Chris Lattner
8d95ef4973 Add support for 3 new forms of MachineOperand
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5217 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:23:24 +00:00
Chris Lattner
4d149cdae1 Add support for constant pool
Add helper methods for MachineFrameInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5216 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:23:03 +00:00
Chris Lattner
7775df1a6c Add support for global address by string and constant pool values
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5215 91177308-0d34-0410-b5e6-96231b3b80d8
2003-01-13 00:22:37 +00:00
Chris Lattner
d0f166a486 More renamings of Target/Machine*Info to Target/Target*Info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5204 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-29 03:13:05 +00:00
Chris Lattner
f27eeea54f Rename MachineOptInfo to TargetoptInfo
Rename MachineCacheInfo to TargetCacheInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5203 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-29 02:50:35 +00:00
Chris Lattner
dde126207e Rename MachineOptInfo to TargetoptInfo
Rename MachineCacheInfo to TargetCacheInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5202 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-29 02:50:33 +00:00
Chris Lattner
aa09b75d22 Rename FunctionFrameInfo to MachineFrameInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5201 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 21:08:28 +00:00
Chris Lattner
eb24db9727 Rename FunctionFrameInfo to MachineFrameInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5200 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 21:08:26 +00:00
Chris Lattner
8bd66e6907 Rename MachineFrameInfo to TargetFrameInfo.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5199 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 21:00:25 +00:00
Chris Lattner
58b3328ac7 Initial checkin of Prolog/Epilog code inserter, which is an important part
of the abstract frame representation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5198 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:43:30 +00:00
Chris Lattner
5a977d4034 Put class in anonymous namespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5197 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:42:56 +00:00
Chris Lattner
600dee4aae * Convert to be a MachineFunctionPass instance
* Use new FunctionFrameInfo object to manage stack slots instead of doing
  it directly
* Adjust to new MRegisterInfo API
* Don't take a TM as a ctor argument
* Don't keep track of which callee saved registers are modified
* Don't emit prolog/epilog code or spill/restore code for callee saved regs
* Use new allocation_order_begin/end iterators to simplify dramatically the
  logic for picking registers to allocate
* Machine PHI nodes can no longer contain constant arguments

* Use a bitvector to keep track of registers used instead of a set
* Fix problem where explicitly referenced registers would be added to
  regsused set and never removed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5196 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:42:14 +00:00
Chris Lattner
580f9be7ff * Convert to be a MachineFunctionPass instance
* Use new FunctionFrameInfo object to manage stack slots instead of doing
  it directly
* Adjust to new MRegisterInfo API
* Don't take a TM as a ctor argument
* Don't keep track of which callee saved registers are modified
* Don't emit prolog/epilog code or spill/restore code for callee saved regs
* Use new allocation_order_begin/end iterators to simplify dramatically the
  logic for picking registers to allocate
* Machine PHI nodes can no longer contain constant arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5195 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:40:43 +00:00
Chris Lattner
10cb79b484 * Add printing support for FrameIndex operands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5194 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:37:37 +00:00
Chris Lattner
955fad1f99 * A bunch of functionality and data was removed from MachineFunction and put
into a new MachineFunctionInfo class
* Implement new FunctionFrameInfo class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5193 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:37:16 +00:00
Chris Lattner
e90fcb739a Frame info moved out of MachineFunction into a seperate object
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5192 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:35:34 +00:00
Chris Lattner
370e187aac Eliminate unneccesary file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5191 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:34:47 +00:00
Chris Lattner
3ad7642901 Capture more information in ctor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5190 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:34:18 +00:00
Chris Lattner
fde4b51baa Implement the TargetFrameInfo interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5189 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:33:52 +00:00
Chris Lattner
d282cfef61 * Initialize new FrameInfo member
* most pass ctors no longer take TM arguments
* New prolog/epilog insertion pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5188 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:33:32 +00:00
Chris Lattner
128aff4f95 Changes to match new MRegisterInfo api
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5187 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:32:54 +00:00
Chris Lattner
3c1c03d7a7 *** Implement frame pointer elimination on X86!
* Include contents of X86RegisterClasses.cpp into here
* Adjustments to register api to work with new frame manager
* Eliminate moveImm2Reg, getFramePointer, and getStackPointer
* Cleanup and simplify prolog/epilog code generation
* Prolog/epilog are MUCH more efficient now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5186 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:32:28 +00:00
Chris Lattner
e0a3fcb304 Contents merged with X86RegisterInfo.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5185 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:30:15 +00:00
Chris Lattner
0ef73f3e29 * Remove implementations of previously pure virtual functions that are not any longer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5184 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:29:41 +00:00
Chris Lattner
3e6dd5009d * Minor reformatting
* Remove some size suffixes [bwl]
* Add new ADJCALLSTACKDOWN & ADJCALLSTACKUP pseudo instrs
* Call instructions are M_CALL not M_BRANCH!
* Disable push and pop instructions
* Add new ANDri32 instr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5183 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:29:14 +00:00
Chris Lattner
a1826c2ecd New addFrameReference function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5182 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:26:58 +00:00
Chris Lattner
f2ab4124e3 * Most pass ctor functions don't take TM arguments anymore
* New createPrologEpilogCodeInserter() function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5181 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:26:16 +00:00
Chris Lattner
0285a33761 * Convert to a MachineFunctionPass
* Don't take a TM as a ctor parameter
* Print [X - Y] instead of [X + -Y] when possible


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5180 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:25:38 +00:00
Chris Lattner
5ae99fe3bf * Convert to a MachineFunctionPass
* ctor doesn't take TM argument
* handle direct ESP references correctly!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5179 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:24:48 +00:00
Chris Lattner
065faebe10 * Use the new Abstract Frame Manager to handle incoming arguments and
fixed size allocas
* Revamp call emission to work with new frame manager


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5178 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:24:02 +00:00
Chris Lattner
1b849be29e * Rename machineFrameInfo to targetFrameInfo
* Constant pool and frame info is no longer directly in MachineFunction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5177 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:21:29 +00:00
Chris Lattner
da62ac6fe2 * Rename MachineFrameInfo to TargetFrameInfo
* Move some sparc specific code here from Target files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5176 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:20:24 +00:00
Chris Lattner
ea45d7ba3f * TargetData is no longer directly accessable from TM
* s/unsigned int/unsigned/


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5175 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:19:44 +00:00
Chris Lattner
2ef9a6aac0 * TargetData is no longer directly accessable from TargetMachine
* Constpool & frame info is no longer directly in MachineFunction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5174 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:18:21 +00:00
Chris Lattner
78d881d26a * Frame & const pool info is no longer directly in MachineFunction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5173 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:17:43 +00:00
Chris Lattner
8cab46e10e * Changes to be a MachineFunctionPass
* Frame information is now stuck in MachineFunctionInfo instead of directly
  in MachineFunction.
* Don't require a TM as an argument to the ctor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5172 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:16:08 +00:00
Chris Lattner
d0fe5f5769 * Don't access TargetData directly
* Changes because frame info is not in MachineFunction directly anymore


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5171 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:15:01 +00:00
Chris Lattner
1951c5b987 State for frame and constant pool information pulled out of MachineFunction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5165 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:07:33 +00:00
Chris Lattner
623a222510 Add diagnostic output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5157 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-28 20:00:15 +00:00
Chris Lattner
94af414b71 * Simplify Value classes
* Add initial support for FP constants
* Add initial FP support for several instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5154 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:13:53 +00:00
Chris Lattner
6331bdb940 * Use new pseudo instr form for instructions
* Mark CALLpcrel as a RawFrm instruction as required
* Eliminate invalid BSWAP16 instruction
* Add xchg instructions
* Add initial support for FP instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5153 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:11:46 +00:00
Chris Lattner
4c299f5da1 Add FP instr prefix byte support
Add Pseudo instr class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5152 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:09:59 +00:00
Chris Lattner
5ada8df488 Add support for FP prefixes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5151 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:09:21 +00:00
Chris Lattner
eca1f639eb Add printer support for Pseudo instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5150 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:09:01 +00:00
Chris Lattner
ba4ef26245 Initial support for FP registers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5149 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:08:03 +00:00
Chris Lattner
8e58179048 New simpler spill interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5148 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:07:09 +00:00
Chris Lattner
6811c6e1d7 Adjustments to match new simpler spill interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5147 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:06:43 +00:00
Chris Lattner
430cda7452 Free machine code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5146 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:06:21 +00:00
Chris Lattner
ff863ba610 Adjust to simpler spill interface
Only spill and reload caller saved registers that are actually modified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5145 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:05:46 +00:00
Chris Lattner
5124aec32f Adjustments to work with the simpler spill interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5144 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:04:20 +00:00
Chris Lattner
831fdcf017 Remove dependency on SSARegMap.h by MachineFunction.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5143 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-25 05:03:22 +00:00
Chris Lattner
e1b52b7656 Fix compilation on GCC 3.2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5136 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:44:34 +00:00
Chris Lattner
d6840ac046 Fixes to compile with GCC 3.2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5134 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:39:16 +00:00
Chris Lattner
0eb172cc4a Substantial fixes to live range handling, fixing several problems, getting
strtol to not miscompile, and fixing bug: 2002-12-23-LocalRAProblem.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5132 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:04:55 +00:00
Chris Lattner
5bcd95c57f Changes to allow for a configurable target machine that allows big endian and/or long pointer operation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5131 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:04:01 +00:00
Chris Lattner
e8f0d924d4 Changes to compile with GCC 2.96
Changes to support configurable pointer size and endianness


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5130 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:03:11 +00:00
Chris Lattner
ce8bce6e5c Sparc is not little endian
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5129 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:02:38 +00:00
Chris Lattner
836f675c49 Initial checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5127 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:01:22 +00:00
Chris Lattner
bd199fb114 Initial checkin of new LLI with JIT compiler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5126 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-24 00:01:05 +00:00
Chris Lattner
fe11a97fcd Substantial changes to refactor LLI to incorporate both the Jello JIT and
the traditional LLI interpreter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5125 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:59:41 +00:00
Chris Lattner
4a10645c70 New files for miscompilation detection
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5120 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:50:16 +00:00
Chris Lattner
fc1c705965 Fix compilation on gcc 2.96
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5116 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:46:55 +00:00
Chris Lattner
25f091fc61 Add definition for the bswap instruction
*** FIX: the encoding of the SUB instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5115 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:46:31 +00:00
Chris Lattner
facc9fb9ba Add support for the bswap instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5114 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:46:00 +00:00
Chris Lattner
e500864619 Fix compilation on GCC 2.96
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5113 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-23 23:44:04 +00:00
Chris Lattner
dbcda22bf3 Add support for isnan
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5111 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-20 04:18:13 +00:00
Chris Lattner
6eaa46956a Fix warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5109 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-20 04:13:28 +00:00
Chris Lattner
45a4399f88 CBW doesn't modify AL
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5108 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-20 04:13:11 +00:00
Chris Lattner
df642e1fd6 fix warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5107 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-20 04:12:48 +00:00
Chris Lattner
82bee0f2c8 * Fix several register aliasing bugs
* Add a new option to eliminate spilling of registers that are only used
  within a basic block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5106 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 08:14:26 +00:00
Chris Lattner
89fab07abd Don't force setCC instructions into AL
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5104 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 01:44:31 +00:00
Chris Lattner
aed967cc9e Implicit defs/uses list may be empty.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5103 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 01:11:14 +00:00
Chris Lattner
b339223518 Add comments, switch uses/defs to match InstrInfo.def file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5102 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 01:05:54 +00:00
Chris Lattner
1445895e19 Add reg clobber list for direct calls
Represent empty use/def list as a null pointer


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5101 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-18 01:05:31 +00:00
Chris Lattner
e7d361d15a Use new reginfo interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5099 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 04:19:40 +00:00
Chris Lattner
79de6319b1 Update to use new interface for register info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5098 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 04:19:17 +00:00
Chris Lattner
9208bbf5c9 New file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5097 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 04:03:08 +00:00
Chris Lattner
86c69a6cbe Add prolog/epilog spills/reloads to counters
Move X86 specific alignment gunk to X86 files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5096 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 03:16:10 +00:00
Chris Lattner
3bbe7cc51d Round number of bytes allocated on the stack up to a multiple of 4 so that the
stack remains aligned


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5095 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 03:15:26 +00:00
Chris Lattner
14322cd337 Local register allocator is now stable enough for use, it passes all tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5094 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 02:51:15 +00:00
Chris Lattner
ae64043737 Fix many bugs, regallocator now saves callee-save registers instead of target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5093 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 02:50:10 +00:00
Chris Lattner
6c6cf873f3 Register allocator is responsible for spilling callee saved regs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5092 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-17 02:48:57 +00:00
Chris Lattner
3bd9409349 Build add instructions of the correct form!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5090 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 23:36:57 +00:00
Chris Lattner
14aa7fe238 Two fixes:
* Only load incoming arguments into virtual registers once at the
    beginning of the function
  * Assign different virtual registers to each reference to constants/globals


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5088 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 22:54:46 +00:00
Chris Lattner
3fc14c2602 Fix prolog/epilog in the presence of alloca
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5087 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 22:29:30 +00:00
Chris Lattner
4863fe14de Make sure stack manipulation refers to ESP the right number of times
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5086 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 22:29:06 +00:00
Chris Lattner
8a307e8c63 Add some special cases to make common getelementptr cases easier to read/faster
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5084 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 19:32:50 +00:00
Chris Lattner
27177cb1c1 Finish implementation of alias list impl
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5083 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 19:31:48 +00:00
Chris Lattner
c21be922bf * Fix a gross X86 hack that was intended to avoid allocating SP and BP
* Implement register alias set support


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5082 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 17:44:42 +00:00
Chris Lattner
69c198863d Keep the stack frame aligned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5081 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 17:42:40 +00:00
Chris Lattner
439a27ac42 Add mechanism to select register allocator to use
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5079 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 16:15:51 +00:00
Chris Lattner
b74e83c898 Initial checkin of "local" register allocator. Bugs are still present.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5078 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 16:15:28 +00:00
Chris Lattner
92aec04cd6 Try #2 to get alias set stuff to work
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5077 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 16:14:51 +00:00
Chris Lattner
1894dd6ca9 Add comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5076 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:57:44 +00:00
Chris Lattner
c2fc7ea60b Add info about register aliases, add prototype for createLocalRegisterAllocator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5075 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:55:51 +00:00
Chris Lattner
dfb0a541c7 Add info about register file aliasing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5074 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:55:25 +00:00
Chris Lattner
1a49517a2c Add information about register file aliasing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5073 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:54:59 +00:00
Chris Lattner
880eaa5985 Add call clobber info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5072 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 15:54:42 +00:00
Chris Lattner
1a45626c4c Rename createSimpleX86RegisterAllocator to createSimpleRegisterAllocator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5071 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 14:38:13 +00:00
Chris Lattner
1d62cea90b Rename createSimpleX86RegisterAllocator to createSimpleRegisterAllocator.
Remvoe some dead code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5070 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 14:37:00 +00:00
Brian Gaeke
68b1edca76 brg
Fix some bugs in use of MBB vs. BB and iterators that are invalidated before
we use them.

Reference targetClass by enum name, not by number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5069 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-16 04:23:29 +00:00
Chris Lattner
b167c04e62 Some simpliciations to the spill/reload interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5067 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 23:01:26 +00:00
Chris Lattner
8ed9eb5ca3 Simplify PHI node elimination significantly by doing it as a prepass to
register allocation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5066 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 22:39:53 +00:00
Chris Lattner
f4b95d94e2 Correct the setting of Def flags on registers that are modified!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5065 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 22:38:47 +00:00
Chris Lattner
9f366d7ab6 Variety of small or trivial simplifications to the code, completely eliminated
the dependence on PhysRegClassMap


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5064 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 22:19:19 +00:00
Chris Lattner
f605055994 Remove unused savePhysRegToStack method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5061 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:33:51 +00:00
Chris Lattner
01b08c59b4 Localize a map, remove another
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5060 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:24:30 +00:00
Chris Lattner
f0eb7beb66 Give passes nice names!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5059 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:13:40 +00:00
Chris Lattner
8233e2fe01 Give simple reg allocator a nice Pass Name
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5058 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:13:12 +00:00
Chris Lattner
15f96db4d9 Add a big assert making sure 2 address instructions are formed right
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5057 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 21:02:20 +00:00
Chris Lattner
3f91ad7ba7 Fix a problem that occurs when PHI nodes have multiple entries for the same predecessor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5055 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 20:48:03 +00:00
Chris Lattner
da7e453aac Grab bag of minor cleanups. Export some statistics about the number of
spills and reloads emitted


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5054 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 20:36:09 +00:00
Chris Lattner
2109f502d6 Implement printing of MBB arguments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5053 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 20:35:25 +00:00
Chris Lattner
198ab640bb Simplify interfaces used by regalloc to insert code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5052 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 20:06:35 +00:00
Chris Lattner
c2db1a95df * Simplify code a bit by breaking the PHI node handling stuff out into a seperate
function from normal regalloc code
* Make the regalloc for a block a function instead of part of runOnMachineBB, which
  makes it easier to see what's going on in runOnMBB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5051 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 19:51:14 +00:00
Chris Lattner
afe628c1d6 Changes to make new TargetRegisterClass interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5050 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 19:29:34 +00:00
Chris Lattner
9593fb1503 * Remove some unneccesary instance variables
* Make allocateStackSpaceFor only allocate the right amount of space


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5048 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 19:07:34 +00:00
Chris Lattner
439b76730d * Simplify TargetRegisterClass implementations
* Change regclass iterators to use an extra level of pointers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5047 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 18:40:36 +00:00
Chris Lattner
dd444f9242 pull inverse reg class mapping into a class that is sharable and out of the
target register description classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5045 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 18:38:59 +00:00
Chris Lattner
abe8dd592d Prune #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5044 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 18:19:24 +00:00
Chris Lattner
ad44bd99ff Remove extraneous #includes, perform FIXME
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5043 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 18:15:24 +00:00
Chris Lattner
197ff79a8c Fix bug: Assembler/2002-12-15-GlobalResolve.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5039 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 16:41:52 +00:00
Chris Lattner
8e637a9383 planes is not spelled with an O
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5037 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 16:20:23 +00:00
Chris Lattner
71c83728b4 Fix borkness with not using MachineBasicBlocks in PHI nodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5035 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 08:02:51 +00:00
Chris Lattner
6b993ccfe5 Add support to cast from a bool type
Add support for boolean constants
add getClassB method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5034 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 08:02:15 +00:00
Chris Lattner
d909683591 Use MachineOperand::isFoo methods instead of our own global functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5033 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 08:01:39 +00:00
Chris Lattner
4d0a82da2d Fix a huge performance problem in reassociate by introducing a
rank map cache for instruction ranks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5030 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 03:56:00 +00:00
Chris Lattner
680f0c283d Minor changes:
* Reword comment to make more clear
  * Don't print out BB's after modification made
  * Don't delete and new an instruction when we need to move something, just move it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5029 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-15 03:49:50 +00:00
Chris Lattner
6e49a4b814 Implement indirect function calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5024 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 14:13:27 +00:00
Misha Brukman
b8ead9dc22 Make function code generation printing debug-only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5023 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 13:16:14 +00:00
Chris Lattner
202a2d0e17 Fix bork in doMultiply
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5021 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 13:07:42 +00:00
Chris Lattner
d7d3872fb0 Add sanity checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5020 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 13:04:04 +00:00
Misha Brukman
0868667f78 Fixed a bug where moves due to phis were being neglected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5019 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 12:33:31 +00:00
Misha Brukman
87e369d221 Cleaned up the code: factored out switch/case into a separate function, put
constants in an array for quick lookup. Stole the idea from elsewhere in
Jello.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5017 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 12:00:06 +00:00
Misha Brukman
74676da6f1 Need to insert all moves due to PHI nodes before *ALL* jumps in a predecessor
basic block, as there could be multiple.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5016 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 11:55:59 +00:00
Chris Lattner
920536333c Insert phi code at top of block
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5015 91177308-0d34-0410-b5e6-96231b3b80d8
2002-12-13 11:52:34 +00:00