Commit Graph

2843 Commits

Author SHA1 Message Date
Nate Begeman
ca068e861b Replace PowerPCPEI.cpp with target independant PrologEpilogInserter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15746 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 22:16:36 +00:00
Nate Begeman
ffde1de597 Add support for frame pointers, and large offsets from stack and frame pointers. Adopt elimination of MachineFunction& arg from eliminateFrameIndex.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15745 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 22:13:58 +00:00
Nate Begeman
b0b8b93e58 Add indexed forms of load doubleword and load word algebraic for 64 bit targets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15743 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 22:12:20 +00:00
Nate Begeman
6d1e2dfd86 Fix handling of FP constants with single precision, and loading of internal linkage function addresses
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15742 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 22:11:38 +00:00
Nate Begeman
e59bf59ba5 Add initial support for using the generated asm writer. Also, fix FP constant printing to always print 8 byte intializers. Move printing of LinkOnce stubs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15741 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 22:09:10 +00:00
Nate Begeman
14d89d6810 Add generation of asm writer from tablegen files to Makefile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15740 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 22:06:38 +00:00
Nate Begeman
f8be5e94aa Eliminate MachineFunction& argument from eliminateFrameIndex in x86 Target. Get MachineFunction from MachineInstruction's parent's parent
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15739 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 22:05:10 +00:00
Nate Begeman
1fa715a399 Eliminate MachineFunction& argument from eliminateFrameIndex in SparcV9 target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15738 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 22:03:29 +00:00
Nate Begeman
905537852b Eliminate MachineFunction& argument from eliminateFrameIndex in Skeleton target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15737 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 22:01:38 +00:00
Nate Begeman
1c284ac5ec Remove an unneeded header and forward declaration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15722 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-13 09:33:17 +00:00
Nate Begeman
b73a711ed7 Fix siod by switching BoolTy to byte rather than int until CFE changes for
Darwin.  Also, change asm printer to output proper stubs for external
functions whose address is passed as an argument to aid in bugpointing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15721 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-13 09:32:01 +00:00
Nate Begeman
293d88ca8b Fix 177.mesa compilation, don't use floating point regs for base addresses!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15720 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-13 04:45:14 +00:00
Nate Begeman
8cfa427d9c Fix llc crasher compiling siod by giving BuildMI the correct number of arguments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15719 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-13 03:56:49 +00:00
Nate Begeman
5a104b0ec5 Longs are in one register on PowerPC 64; use appropriate instructions to operate on them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15711 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-13 02:20:47 +00:00
Nate Begeman
244e64ead2 Add some more 64 bit instructions we need for the PowerPC-64 ISel to the tablegen files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15710 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-13 02:19:26 +00:00
Chris Lattner
28690ea285 Remove dead methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15698 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 18:37:15 +00:00
Chris Lattner
9d9d84b3e3 Fix warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15697 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 18:36:28 +00:00
Chris Lattner
750d723062 Instead of a virtual method call, lets try a direct constant reference
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15696 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 18:29:05 +00:00
Chris Lattner
092ae6b5d1 Virtual method calls are overrated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15695 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 18:20:55 +00:00
Chris Lattner
be5af7d7f5 Virtual method calls are overrated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15694 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 18:20:41 +00:00
Chris Lattner
484577a870 Remove dead methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15691 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 17:58:27 +00:00
Chris Lattner
6845dfe07e When we want a constant, just use it, instead of calling through layers of
virtual methods and register name mapping functions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15690 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 17:56:01 +00:00
Misha Brukman
f5f70685b6 Disable PPC64 backend by default because LLC cannot choose automatically between
SparcV9 and PowerPC64 without target triples, since they are both 64-bit
big-endian targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15688 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 17:16:43 +00:00
Misha Brukman
a1b6ae9d7c * Correct 64-bit version: blr 1 (not 0)
* BuildMI() can build 0-param instructions (e.g., NOP)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15681 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 03:30:03 +00:00
Misha Brukman
e4d093c356 * Print out full names for non-GPR or -FPR registers
* BuildMI() really *does* handle 0 params!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15680 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 03:28:47 +00:00
Misha Brukman
cc6b01b1e6 * Pointers are 8 bytes, hence cLong type on 64-bit PPC
* Fix loading of GlobalValues


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15678 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 02:53:01 +00:00
Misha Brukman
8e63dcebcc Eliminate special-casing 14-bit immediate load/store opcodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15677 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 02:51:38 +00:00
Misha Brukman
c90f2963c4 Correctly print out ASCII literal strings on AIX
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15674 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 01:01:13 +00:00
Misha Brukman
ef9468cfe5 Mark R2 as available for allocation on Darwin/PPC32, but not AIX/PPC64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15673 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-12 00:10:01 +00:00
Misha Brukman
1d3527edbf * Move AIX into the llvm namespace to be accessed from RegisterInfo
* Mark InstrInfo with 32 vs. 64 bit flag
* Enable the 64-bit isel and asm printer


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15672 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 23:47:08 +00:00
Misha Brukman
a6ecd9ee47 Set the is64bit flag and propagate it to PowerPCRegisterInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15671 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 23:45:43 +00:00
Misha Brukman
dceb457607 * Set the is64bit boolean flag in PowerPCRegisterInfo
* Doubles are 8 bytes in 64-bit PowerPC, and use the general register class
* Use double-word loads and stores for restoring from/saving to stack
* Do not allocate R2 if compiling for AIX


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15670 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 23:44:55 +00:00
Misha Brukman
ca9309f22e 64-bit instruction selector and AIX-specific 64-bit asm printer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15669 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 23:42:15 +00:00
Misha Brukman
55eee3dc7a Fix names of 64-bit CMP*D* opcodes, add LWA and STD* opcodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15668 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 23:33:34 +00:00
Misha Brukman
f1f6cef161 Add support for 64-bit CMPDI, CMPLDI, and CMPLD opcodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15667 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 20:56:14 +00:00
Misha Brukman
96b6110685 Add doubleword load/store (64-bit only).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15665 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 15:54:36 +00:00
Misha Brukman
9582822341 Hyphenate ##-bit and remove first-person from comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15663 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 13:35:44 +00:00
Nate Begeman
7a4fe9be7e Clean up 32/64bit and Darwin/AIX split. Next steps: 64 bit ISel, AIX asm printer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15662 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 07:40:04 +00:00
Chris Lattner
74a806cd3d Fix a case where constantexprs could leak into the PPC isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15661 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 07:34:50 +00:00
Chris Lattner
c96bb817aa Remove a bunch of ad-hoc target-specific flags that were only used by the
old asmprinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15660 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 07:12:04 +00:00
Chris Lattner
8e61d82528 Remove a dead method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15659 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 07:07:14 +00:00
Chris Lattner
2a998bdc7c Finally, the entire instruction asmprinter is now generated from tblgen, woo!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15658 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 07:02:04 +00:00
Chris Lattner
e4ead0ce62 Add asmprintergen support for the last X86 instruction that needs it: pcrelative calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15657 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 06:59:12 +00:00
Chris Lattner
8198fcfc5d This file is long dead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15656 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 06:55:12 +00:00
Chris Lattner
9795b3a0e7 Scrunch memoperands, add a few more for floating point memops
Eliminate the FPI*m classes, converting them to use FPI instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15655 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 06:50:10 +00:00
Chris Lattner
8549429a78 Move hacks up
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15654 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 06:09:55 +00:00
Chris Lattner
0f38e6ccca Make FPI take asm string and operand list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15653 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 05:54:16 +00:00
Chris Lattner
f5d3a83f65 Nuke the Im*i* patterns, by asmprintergenifying all users.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15652 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 05:31:07 +00:00
Chris Lattner
f29ed0937f X86 instructions that read-modify-write memory are not LLVM two-address instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15651 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 05:07:25 +00:00
Chris Lattner
57a02306c5 Get rid of the Im8, Im16, Im32 classes, converting more instructions over to
asmprintergeneration


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15650 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 04:31:00 +00:00
Nate Begeman
8d963e602b Fix 255.vortex by using getClassB instead of getClass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15648 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 03:30:55 +00:00
Chris Lattner
916f96ace0 Remove dead method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15647 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 02:26:39 +00:00
Chris Lattner
66fa1dcf90 Convert asmprinter to new style of instruction printer
Start asmprintergen'ifying machine instrs with memory operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15646 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 02:25:00 +00:00
Chris Lattner
52d2f14b3e Fill out immediate operand classes, add a new Operand class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15642 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 01:53:34 +00:00
Misha Brukman
0145881cb9 Breaking up the PowerPC target into 32- and 64-bit subparts, Part III: the rest.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15636 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 00:11:25 +00:00
Misha Brukman
c0f6420b96 Breaking up the PowerPC target into 32- and 64-bit subparts: Part II: 64-bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15635 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 00:10:41 +00:00
Misha Brukman
3d9a6c2842 Breaking up the PowerPC target into 32- and 64-bit subparts, Part I: 32-bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15634 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-11 00:09:42 +00:00
Misha Brukman
167deff938 Implement new constructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15633 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 23:10:25 +00:00
Misha Brukman
5b5708106e Renamed PPC32 (namespace for regs, opcodes) to PPC to include 64-bit targets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15631 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 22:47:03 +00:00
Misha Brukman
698fbd5b94 * Fix file header to use tablegen emacs mode instead of c++
* Wrap long line to 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15630 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 21:24:44 +00:00
Chris Lattner
36b689009d This is purely a formatting patch that gets us closer to the mecca of fitting
X86InstrInfo.td into 80 columns


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15629 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 21:21:30 +00:00
Chris Lattner
1b9e20e32f Drop the first argument of FPI, and asmprinterify fxch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15628 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 21:02:13 +00:00
Nate Begeman
b64af918cb Fix casts of float to unsigned long
Replace STDX (store 64 bit int indexed) with STFDX (store double indexed)
Fix latent bug in indexed load generation
Generate indexed loads and stores in many more cases


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15626 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 20:42:36 +00:00
Misha Brukman
91fdc01fe1 Fix file header comment: update filename, set tablegen emacs mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15625 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 20:28:13 +00:00
Chris Lattner
30bf2d8951 This purely mechanical patch gives the "I" tblgen class operand list and asm
string operands, and adjusts all users to pass them in instead of using II.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15624 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 20:17:41 +00:00
Chris Lattner
869f477f34 Convert Ii32 instructions over to use the asmprinter generator
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15621 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 19:06:36 +00:00
Misha Brukman
42efb87410 DForm 5/6 extended mneumonics take 3 arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15620 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 19:03:31 +00:00
Misha Brukman
20887f8b13 * Instruction definitions moved to SparcV9InstrInfo.td for consistency
* Defined PHI instruction and SparcV9 subclass of Target


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15615 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 18:15:31 +00:00
Misha Brukman
36dd0c539b Renamed SparcV9_Reg.td -> SparcV9RegisterInfo.td for consistency.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15614 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 18:14:04 +00:00
Misha Brukman
a91f53634c Fix DForm_4: format is `op r, r, i'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15613 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 18:07:55 +00:00
Misha Brukman
7b71776401 Fix comment header, specify type of file `tablegen'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15612 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 17:37:14 +00:00
Chris Lattner
7d620d57a4 Convert the Ii16 instructions over
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15606 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 16:22:02 +00:00
Chris Lattner
ab67067186 Convert all Ii8 instructions over to the autogenerated asmprinter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15605 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 16:09:54 +00:00
Misha Brukman
57e177c58b Define the target name so we can use it via TableGen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15604 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 15:29:15 +00:00
Chris Lattner
f8e6f4f776 Paper over CBackend/2004-08-09-va-end-null.ll
Note that this indicates a serious problem with the way we are emitting varargs,
but this should not be properly fixed until after 1.3.

This patch SHOULD go into 1.3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15602 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-10 00:19:16 +00:00
Misha Brukman
b05daff7fa Stub definition of the PowerPC CodeEmitter class; this isn't functional (yet).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15600 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 23:03:59 +00:00
Misha Brukman
7103fba019 CodePrinter -> AsmPrinter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15599 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 22:27:45 +00:00
Misha Brukman
8124020192 Remove ClassPrefix variable as it's no longer used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15586 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 19:13:29 +00:00
Misha Brukman
0b9bbd2244 The (future) SparcV8 JIT would do well to have a class prefix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15583 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 18:13:09 +00:00
Misha Brukman
0f5702237b Define the ClassPrefix for SparcV9.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15581 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 17:46:49 +00:00
Misha Brukman
929072eb04 Define a ClassPrefix for PowerPC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15580 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 17:46:26 +00:00
Misha Brukman
665235b9df Classes need to have a prefix name, so that they can be tacked on to the pieces
that TableGen creates for them, e.g. CodeEmitter, AsmPrinter, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15579 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 17:46:06 +00:00
Misha Brukman
f588548a86 Generate a code emitter for PowerPC as well, this will be used in the JIT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15578 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 17:24:32 +00:00
Misha Brukman
4ad7d1bee7 Use instruction formats as defined in the PowerPC ISA manual
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15577 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 17:24:04 +00:00
Reid Spencer
524a60587d Fix stack size processing now that the return address isn't an implied
push onto the top of the stack like x86, which uses the local area
offset.  This will allow the removal of PowerPCPEI.cpp soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15573 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-09 01:24:32 +00:00
Reid Spencer
b814e2d1c0 Get rid of a warning when compiling optimized. Uninitialized variable has
been initialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15565 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-07 15:19:31 +00:00
Brian Gaeke
16ca1947fd dumpSavedState has outlived its usefulness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15555 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-06 19:11:43 +00:00
Chris Lattner
3ea934668b Changes commited for Nate Begeman:
Use a PowerPC specific prolog epilog inserter to control where spilled
callee save regs are placed on the stack.
Get rid of implicit return address stack slot, save return address reg
(LR) in appropriate slot
Improve code generated for functions that don't have calls or access
globals


Note from Chris: PowerPCPEI will eventually be eliminated, once the
functionality is merged into CodeGen/PrologEpilogInserter.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15536 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-06 06:58:50 +00:00
Brian Gaeke
406e8cbb43 Update the To-Do list according to my notes + assertions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15535 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-06 04:38:13 +00:00
John Criswell
aaf10ab5a2 Added Louis Gerbarg. Louis is given credit in the CREDITS.TXT file, so I
assume Louis also holds copyright.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15534 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-05 23:46:27 +00:00
John Criswell
2c2ba762a3 Add additional copyright notice for the PowerPC backend.
Thanks Nate!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15531 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-05 20:36:00 +00:00
Misha Brukman
2f947865cb Simplify makefile by combining all TableGen dependencies into one variable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15527 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-05 18:34:15 +00:00
Misha Brukman
3c7071447c PowerPC is a real target now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15522 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-05 18:22:30 +00:00
Misha Brukman
1411a67060 Hand-propagate the constant TARGET_NAME which was making lines wrap anyway
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15506 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 21:48:45 +00:00
Misha Brukman
7a750e1ff5 * Remove unnecessary comment
* Fix alignment of code
* Tabs to spaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15505 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 21:48:00 +00:00
Misha Brukman
dee0f9b94c Align dependencies so they don't hurt the eyes to look at them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15504 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 21:37:41 +00:00
Misha Brukman
7338ae5b88 Remove unused instruction classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15501 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 21:18:57 +00:00
Misha Brukman
db01356c15 Make tablegen targets depend on PowerPCInstrFormats.td as well
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15500 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 21:18:36 +00:00
Chris Lattner
6173cd9c16 getValues does not exist
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15495 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 17:29:14 +00:00
Chris Lattner
cdf7012860 getValues is gone
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15494 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 17:27:27 +00:00
Alkis Evlogimenos
15876bb28c Stop using getValues().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15487 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 08:44:43 +00:00
Brian Gaeke
1c313c959a Get rid of the only use of TargetInstrInfo::getResultPos(), a deprecated method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15483 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 08:05:27 +00:00
Brian Gaeke
57195d1321 Include SparcV9TmpInstr.h to pick up the def. of TmpInstruction,
instead of InstrSelection.h, which is dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15476 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 07:34:57 +00:00
Brian Gaeke
aceb7d8b97 Include SparcV9BurgISel.h, to pick up the definition of
createSparcV9BurgInstSelector().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15474 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 07:30:04 +00:00
Brian Gaeke
98ac7ac507 Include SparcV9TmpInstr.h instead of llvm/CodeGen/InstrSelection.h, to pick
up the definition of class TmpInstruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15473 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 07:29:53 +00:00
Brian Gaeke
bd0a183fec Include SparcV9BurgISel.h, because PreSelection uses routines from within
the SparcV9 BURG instruction selector.  Eww!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15472 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 07:29:40 +00:00
Brian Gaeke
8943e68bff Add a Doxygen comment, and inline the constructor (which is now almost empty).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15471 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 07:29:28 +00:00
Brian Gaeke
587cd1aa3c The InstrForest data type has moved from llvm/CodeGen/InstrForest.h
to SparcV9InstrForest.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15470 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 07:29:16 +00:00
Brian Gaeke
d5ce4116b2 Add a new file containing just TmpInstruction and its implementation.
Many other pieces of the SparcV9 backend want to use TmpInstruction, but
don't need any other instruction selector baggage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15469 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 07:29:04 +00:00
Brian Gaeke
10b11920c9 All the SparcV9 BURG instruction selector pieces have been collected into the
new file SparcV9BurgISel.cpp, with exposed interfaces in SparcV9BurgISel.h.
The InstrSelection directory is now dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15468 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 07:28:51 +00:00
Chris Lattner
46c2b3a5ec Squelch warnings in release mode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15460 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-04 03:51:55 +00:00
Misha Brukman
68f3459994 Remove unused opcodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15447 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-03 20:23:44 +00:00
Chris Lattner
82953784fc Move this file out of the top-level docs directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15429 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-03 04:15:02 +00:00
Misha Brukman
37dcae63eb * Use simpler instruction templates to define instructions
* Fix several extended opcodes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15423 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-02 21:58:52 +00:00
Misha Brukman
c681a4e476 Replace patterns 0, 4, and 5 with simpler heirarchical definitions that use the
official PowerPC instruction format lingo: X- and D-form.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15422 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-02 21:56:35 +00:00
Misha Brukman
28791dd17f Separate instruction formats from instruction definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15414 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-02 16:54:54 +00:00
Misha Brukman
6a90f8202b Add #include <cstdlib> and abort() to silence a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15413 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-02 14:02:21 +00:00
Misha Brukman
82fd8d8cdd * ceil() requires #include <cmath> for compilation
* Alphabetize #includes
* Fix some lines to fit within 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15412 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-02 13:59:10 +00:00
Chris Lattner
bcdda01210 Fix a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15409 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 19:31:30 +00:00
Chris Lattner
fc752713d7 Convert all I<> instructions to asmformat.
Delete the 'name' field of all instructions that have asmformats.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15403 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 09:52:59 +00:00
Chris Lattner
33c23ddf8a Add some immediate forms, make name optional
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15401 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 09:36:44 +00:00
Chris Lattner
a35ce87e2e Eliminate 3 of the X86 printImplicit* flags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15398 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 08:23:17 +00:00
Chris Lattner
1626c507e8 Get rid of 3 of the 4 'printimplicit' flags. Implicit operands are now
explicitly listed in the asm string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15397 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 08:22:29 +00:00
Chris Lattner
0e967d4f48 Convert more instructions over to the asmprinter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15396 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 08:13:11 +00:00
Chris Lattner
25369cfa2b Handle registers a bit more efficiently
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15395 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 08:12:41 +00:00
Chris Lattner
068758e518 give FP stack registers names
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15394 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 08:12:13 +00:00
Chris Lattner
ffff70827c Switch more instructions over to using the asmprinter. Fix bugs in the emission
of in/out instructions (missing %'s on registers).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15393 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 07:44:35 +00:00
Chris Lattner
b12ee503f7 The tblgen'erated asmparser wants a way to print operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15392 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 07:43:46 +00:00
Chris Lattner
3fa861ac6c Rename the Printer class -> X86AsmPrinter.
Include the tablegenerated assembly writer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15389 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 06:02:08 +00:00
Chris Lattner
8f945d7756 Factor a bunch of the rules and add support for generating the asmwriter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15388 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 06:01:32 +00:00
Chris Lattner
96563df090 Specify an asm string and operands lists for a bunch of instructions.
This only really covers no-operand instructions so far.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15387 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 06:01:00 +00:00
Chris Lattner
c139203f04 Add the 'ops' marker, add an AsmString initializer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15383 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 04:40:43 +00:00
Chris Lattner
1ab7c5b5e8 Completely disable the pattern isel until it is more substantial.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15380 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 03:28:02 +00:00
Chris Lattner
4ad25e432d Entirely eliminate all patterns and expanders from this file. We shall go
with an incremental approach rather than a revolutionary approach.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15379 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 03:25:01 +00:00
Chris Lattner
bbe664c8fb Move the 'Expander' node to later in the file, with the other experimental
stuff.  The pattern becomes a list, add some stuff, add some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15378 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 03:23:34 +00:00
Chris Lattner
bb737edcc3 Remove obsolete file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15377 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-01 03:19:28 +00:00
Alkis Evlogimenos
31e155e610 Align breaks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15371 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-31 10:05:44 +00:00
Chris Lattner
167cf33e1d Add breaks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15365 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-31 09:53:31 +00:00
Alkis Evlogimenos
6103c1703c Simplify code a bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15364 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-31 09:44:32 +00:00
Alkis Evlogimenos
02a453074d Correctly spell 'unconditional'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15363 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-31 09:41:44 +00:00
Alkis Evlogimenos
36f506eddb Implement insertGoto and reverseBranchCondition for the X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15362 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-31 09:38:47 +00:00
Chris Lattner
0f6eab32d0 I'm pretty sure that ba is branch always, which is a barrier. Brg should
check this :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15357 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-31 02:24:37 +00:00
Chris Lattner
62cce39515 Mark barrier instructions. Execution does not fall through uncond branches
or return intructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15356 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-31 02:10:53 +00:00
Chris Lattner
2a809f6567 New flag
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15354 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-31 02:07:07 +00:00
Tanya Lattner
0a88d2d8b9 Updated ModuloScheduling. It makes it all the wya through register allocation on the new code!!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15351 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-30 23:36:10 +00:00
Misha Brukman
88f8f9226f * Conditional save/restore of LR disabled as it's not quite correct
* sumarray2d fixed: large fixed-size alloca
* make is now compileable
* Re-organized tests to fit them under proper headings

Patch by Nate Begeman.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15347 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-30 15:53:09 +00:00
Misha Brukman
a9c528f0aa Do not mark LR as callee-save: not quite correctly done. Patch: Nate Begeman.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15346 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-30 15:51:51 +00:00
Misha Brukman
4ffddc5228 * Temporarily suspend LR save/restore optimization as it is not quite correct
* Implement large fixed-size allocas            Entire patch by Nate Begeman.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15345 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-30 15:50:45 +00:00
Brian Gaeke
365f54c7bc Convert a few assertions with side-effects into regular old runtime checks.
These side-effects seem to make a difference when using llc -march=sparcv9
in Release mode (i.e., with -DNDEBUG); when they are left out, lots of
instructions just get dropped on the floor, because they never end up
in the schedule.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15339 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-29 21:31:20 +00:00
Chris Lattner
9670eecf33 Fix #includes of i*.h => Instructions.h as per PR403:
http://llvm.cs.uiuc.edu/PR403 .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15331 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-29 17:11:37 +00:00