Chris Lattner [Sat, 31 May 2003 19:55:19 +0000 (19:55 +0000)]
* Correct title
* Give credit to John for making the page
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6475
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Sat, 31 May 2003 16:46:21 +0000 (16:46 +0000)]
*** empty log message ***
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6474
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:44:07 +0000 (07:44 +0000)]
Made a single common InvalidRegNum = -1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6473
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:43:41 +0000 (07:43 +0000)]
Renamed a variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6472
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:43:01 +0000 (07:43 +0000)]
Support for annul/pred and other future flags on op codes.
Support for recording the physical register for implcit references.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6471
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:41:54 +0000 (07:41 +0000)]
Minor changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6470
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:41:24 +0000 (07:41 +0000)]
Added MachineCodeForInstruction object as an argument to
TmpInstruction constructors because every TmpInstruction object has
to be registered with a MachineCodeForInstruction to prevent leaks.
This simplifies the user's code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6469
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:39:06 +0000 (07:39 +0000)]
Allow explicit physical registers for implicit operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6468
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:37:05 +0000 (07:37 +0000)]
Changes to allow explicit physical register arguments that have been
preallocated. While reg-to-reg dependences were already handled, this
change required new code for adding edges to/from call instructions.
This was part of the extensive changes to the way code generation occurs
for function call arguments and return values.
See log for CodeGen/PhyRegAlloc.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6467
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:34:57 +0000 (07:34 +0000)]
Several bug fixes: globals in call operands were not being pulled out;
globals in some other places may not have been pulled out either;
globals in phi operands were being put just before the phi instead of
in the predecessor basic blocks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6466
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:32:01 +0000 (07:32 +0000)]
Extensive changes to the way code generation occurs for function
call arguments and return values:
Now all copy operations before and after a call are generated during
selection instead of during register allocation.
The values are copied to virtual registers (or to the stack), but
in the former case these operands are marked with the correct physical
registers according to the calling convention.
Although this complicates scheduling and does not work well with
live range analysis, it simplifies the machine-dependent part of
register allocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6465
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 07:27:17 +0000 (07:27 +0000)]
Reverting previous beautification changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6464
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sat, 31 May 2003 06:26:48 +0000 (06:26 +0000)]
Fixed rewriting of branches -- they now work forward and backward.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6463
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sat, 31 May 2003 06:26:06 +0000 (06:26 +0000)]
Removed useless code -- the byte order of output code is correct as is.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6462
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sat, 31 May 2003 06:25:19 +0000 (06:25 +0000)]
The 'rd' register is consistently mentioned last in instruction definitions.
Created new classes from which instructions inherit their ordering of fields.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6461
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sat, 31 May 2003 06:24:29 +0000 (06:24 +0000)]
* Put back into action SLL/SRL/SRA{r,i}6 instructions
* Fixed page numbers referring to the Sparc manual
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6460
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sat, 31 May 2003 06:22:37 +0000 (06:22 +0000)]
Code beautification, no functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6459
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Sat, 31 May 2003 04:45:56 +0000 (04:45 +0000)]
3 more bugs from the SPEC codes and from richards_benchmark.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6458
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sat, 31 May 2003 04:23:04 +0000 (04:23 +0000)]
Enabling some of these passes causes lli to break
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6457
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sat, 31 May 2003 04:22:26 +0000 (04:22 +0000)]
The actual order of parameters in a 2-reg-immediate assembly instructions is
"rs1, imm, rd": most importantly, rd goes last.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6456
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 May 2003 21:03:00 +0000 (21:03 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6454
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 20:39:37 +0000 (20:39 +0000)]
Since malloc is no longer used, no need to free() memory.
Fixed BasicBlock patching by supplying correct type for the displacement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6453
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 20:36:27 +0000 (20:36 +0000)]
When converting virtual registers to immediate constants, change the opcode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6452
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 20:32:45 +0000 (20:32 +0000)]
Added saveBBreferences() for BasicBlock resolution.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6451
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 20:32:01 +0000 (20:32 +0000)]
getValueOp() now takes a MachineInstr as well as a MachineOperand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6450
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 20:17:33 +0000 (20:17 +0000)]
Added:
* ability to save BasicBlock references to be resolved later
* register remappings from the enum values to the real hardware numbers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6449
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 20:15:59 +0000 (20:15 +0000)]
Fixed the namespace to match SparcInternals.h; added notes on some missing
sections of instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6448
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 20:12:42 +0000 (20:12 +0000)]
The register types need to be visible outside of the class to be useful.
For one, converting register numbers based on class in the code emitter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6447
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 20:11:56 +0000 (20:11 +0000)]
Moved and expanded convertOpcodeFromRegToImm() to conver more opcodes.
Code beautification for the rest of the code: changed layout to match the rest
of the code base.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6446
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 20:00:13 +0000 (20:00 +0000)]
Make LLI behave just like LLC with regard to the compile passes it uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6444
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 May 2003 19:24:06 +0000 (19:24 +0000)]
Add SRoA pass to gccas
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6442
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 May 2003 19:23:10 +0000 (19:23 +0000)]
Move indvars pass after mem2reg pass where it is more likely to be useful
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6441
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 May 2003 19:22:14 +0000 (19:22 +0000)]
Okay totally give up on trying to optimize aggregates that cannot be completely
broken up into their elements. Too many programs break because of this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6440
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 19:14:01 +0000 (19:14 +0000)]
Made the register and immediate versions of instructions consecutive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6439
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 May 2003 18:09:57 +0000 (18:09 +0000)]
add a check that allows the SRoA pass to avoid breaking programs, even if their
behavior is technically undefined
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6438
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 30 May 2003 18:06:10 +0000 (18:06 +0000)]
Because the format of the shift instructions is `shift r, shcnt, r', the
instructions of format 3.12 and 3.13 cannot inherit from F3rdrs1, because that
implies that the two registers are the first two parameters to the instruction.
Thus I made the instructions inherit from F3rd again, and manually added an rs1
field AFTER the shcnt field in the instruction, which maps to the appropriate
place in the instruction.
The other changes are just elimination of unnecessary spaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6437
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Fri, 30 May 2003 15:53:50 +0000 (15:53 +0000)]
Sorry, correcting small typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6433
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Fri, 30 May 2003 15:50:31 +0000 (15:50 +0000)]
Added configurable options for the Linker and Archiver.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6432
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Fri, 30 May 2003 15:50:18 +0000 (15:50 +0000)]
Added the CloneTrace function which clones traces. It takes a vector of basic blocks, removes
internal phi nodes, and returns a new vector of basic blocks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6431
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Fri, 30 May 2003 15:48:23 +0000 (15:48 +0000)]
Added support for cloning a trace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6430
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 30 May 2003 08:02:14 +0000 (08:02 +0000)]
Makefile: Make SparcV9CodeEmitter.inc depend on SparcV9_F*.td as well.
SparcV9_F3.td: F3_12 and F3_13 instructions have rd and rs1 fields. Also,
their fields were totally screwed up. This seems to fix the problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6429
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 May 2003 05:26:30 +0000 (05:26 +0000)]
Fix bug: ScalarRepl/2003-05-30-MultiLevel.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6428
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 May 2003 05:26:08 +0000 (05:26 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6427
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 May 2003 04:15:41 +0000 (04:15 +0000)]
Fix bug: ScalarRepl/2003-05-29-ArrayFail.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6425
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Fri, 30 May 2003 03:37:13 +0000 (03:37 +0000)]
Fix call to mmap, so that it can be used on sparc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6424
91177308-0d34-0410-b5e6-
96231b3b80d8
Guochun Shi [Fri, 30 May 2003 00:17:09 +0000 (00:17 +0000)]
so far everything compiles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6423
91177308-0d34-0410-b5e6-
96231b3b80d8
Sumant Kowshik [Thu, 29 May 2003 22:44:25 +0000 (22:44 +0000)]
Implementation of Equivalence Classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6422
91177308-0d34-0410-b5e6-
96231b3b80d8
Sumant Kowshik [Thu, 29 May 2003 22:43:46 +0000 (22:43 +0000)]
Changes to support function pointers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6421
91177308-0d34-0410-b5e6-
96231b3b80d8
Sumant Kowshik [Thu, 29 May 2003 22:42:44 +0000 (22:42 +0000)]
Added support for function pointers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6420
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 22:12:35 +0000 (22:12 +0000)]
Prevent lines from wrapping.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6419
91177308-0d34-0410-b5e6-
96231b3b80d8
Dinakar Dhurjati [Thu, 29 May 2003 21:49:00 +0000 (21:49 +0000)]
Added documentation for the project options
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6418
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 21:07:34 +0000 (21:07 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6417
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 20:40:32 +0000 (20:40 +0000)]
Get rid of extraneous ""s
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6416
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 20:26:30 +0000 (20:26 +0000)]
Add comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6415
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 20:24:54 +0000 (20:24 +0000)]
Initial checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6414
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 20:15:35 +0000 (20:15 +0000)]
New testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6412
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 20:15:27 +0000 (20:15 +0000)]
Since there is now another derived .inc file, ignore them all.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6411
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 20:09:56 +0000 (20:09 +0000)]
Use an absolute path to TableGen because not everyone (e.g. automatic tester)
has their path set up by this point.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6410
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 20:09:23 +0000 (20:09 +0000)]
Added a path to the current version of the built TableGen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6409
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 19:17:51 +0000 (19:17 +0000)]
Check in old tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6408
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 19:16:55 +0000 (19:16 +0000)]
Minor reordering of options
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6407
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Thu, 29 May 2003 18:52:10 +0000 (18:52 +0000)]
Removed configuration options that are better served in Makefile.config.
Fixed the LibInstDir macro.
Added the use of the FLEX variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6405
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Thu, 29 May 2003 18:51:11 +0000 (18:51 +0000)]
Moved the FLEX and BISON macros from Makefile.common since they are
configuration options like CC and CXX.
Updated LLVMGCCDIR so that it refers to the valid LLVM gcc code.
Added pathnames and flags to be used by some of the tests.
Moved configuration options from Makefile.common to here since they
should all be in one place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6404
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 18:48:17 +0000 (18:48 +0000)]
Added the target-independent part of TableGen data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6403
91177308-0d34-0410-b5e6-
96231b3b80d8
Dinakar Dhurjati [Thu, 29 May 2003 16:18:20 +0000 (16:18 +0000)]
Added project options to the Makefile.common
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6402
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 15:16:45 +0000 (15:16 +0000)]
Run more post-link xforms
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6400
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 15:16:10 +0000 (15:16 +0000)]
Change tests to use testrunner
new test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6399
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 15:13:15 +0000 (15:13 +0000)]
Fix formatting in file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6398
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 15:12:27 +0000 (15:12 +0000)]
Eliminate unnecessary ->get calls that are now automatically handled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6397
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 15:11:31 +0000 (15:11 +0000)]
* Separate all of the grunt work of inlining out into the Utils library.
* Make the function inliner _significantly_ smarter. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6396
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 15:08:33 +0000 (15:08 +0000)]
Don't require the user to do something like isa<foo>(II->get()). The ->get
should be implicit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6395
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 15:07:48 +0000 (15:07 +0000)]
dyn_cast_or_null should work just the same as dyn_cast does
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6394
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 29 May 2003 15:06:40 +0000 (15:06 +0000)]
Doxygenify comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6393
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 05:29:22 +0000 (05:29 +0000)]
When TableGen finds an error in the SparcV9.td file, it exits with a non-zero
exit code. This, in turn, makes an empty file SparcV9CodeEmitter.inc, and only
much later, produces a link error because the key function that TableGen creates
isn't found.
Using a temporary file in the middle forces a good .INC file to be generated by
TableGen, and it will keep trying until you fix the input file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6392
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 05:00:14 +0000 (05:00 +0000)]
Fixed misspelling and broke a line that was wrapping.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6391
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 04:53:56 +0000 (04:53 +0000)]
Fixed to use the correct format of the instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6390
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 03:32:49 +0000 (03:32 +0000)]
This should work better with re-generating the SparcV9CodeEmitter.inc file.
Also, added a rule to delete the generated .inc file on `make clean'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6389
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Thu, 29 May 2003 03:31:43 +0000 (03:31 +0000)]
* Broke up SparcV9.td into separate files as it was getting unmanageable
* Added some Format 4 classes, but not instructions
* Added notes on missing sections with FIXMEs
* Added RDCCR instr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6388
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 28 May 2003 18:44:38 +0000 (18:44 +0000)]
mmap() seems to be failing on Sparc, so just use malloc()/free() .
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6387
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 28 May 2003 18:29:10 +0000 (18:29 +0000)]
Output the opcode name of the instruction being emitted to cerr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6386
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 28 May 2003 18:27:19 +0000 (18:27 +0000)]
Correctly write out binary data as chars, before they're cast to ints.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6385
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 28 May 2003 17:49:29 +0000 (17:49 +0000)]
Fixed ordering of elements in instructions: although the binary instructions
list (rd, rs1, imm), in that order (bit-wise), the actual assembly syntax is
instr rd, imm, rs1, and that is how they are constructed in the instruction
selector. This fixes the discrepancy.
Also fixed some comments along the same lines and fixed page numbers referring
to where instructions are described in the Sparc manual.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6384
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Wed, 28 May 2003 17:41:09 +0000 (17:41 +0000)]
Add dependency to make TableGen rule fire.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6383
91177308-0d34-0410-b5e6-
96231b3b80d8
Vikram S. Adve [Wed, 28 May 2003 13:54:41 +0000 (13:54 +0000)]
Three kinds of boolean values handled incorrectly:
-- setCC of FP type used by a Phi: have to save in reg.
-- setNE of FP type used by a branch: cannot use result directly in branch!
-- setCC used outside the same basic block: have to save in reg. for now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6382
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:48:28 +0000 (22:48 +0000)]
Fixed an error preventing compilation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6381
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:44:44 +0000 (22:44 +0000)]
Added the 'r' and 'i' annotations to instructions as their opcode names have
changed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6380
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:43:19 +0000 (22:43 +0000)]
Added a debugging code emitter that prints code to a file, debug to std::cerr,
and passes the real code to a memory-outputting code emitter. This may be
removed at a later point in development.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6379
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:41:44 +0000 (22:41 +0000)]
Keep track of the current BasicBlock being processed so that a referencing
MachineInstr can later be patched up correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6378
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:40:34 +0000 (22:40 +0000)]
Added 'r' and 'i' annotations to instructions as SparcInstr.def has changed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6377
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:39:01 +0000 (22:39 +0000)]
Added 'r' or 'i' annotations to instructions, as SparcInstr.def has changed.
Non-obvious change: since I have changed ST and STD to be STF and STDF to
(a) closer resemble their name (NOT assembly text) in the Sparc manual, and
(b) clearly specify that they they are floating-point opcodes,
I made the same changes in this file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6376
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:37:00 +0000 (22:37 +0000)]
Added 'r' or 'i' annotations to instructions, as SparcInstr.def has changed.
Here I had to make one non-trivial change: add a function to get a version of
the opcode that takes an immediate, given an opcode that takes all registers.
This is required because sometimes it is not known at construction time which
opcode is used because opcodes are passed around between functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6375
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:35:43 +0000 (22:35 +0000)]
Added 'r' or 'i' annotations to instructions, as SparcInstr.def has changed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6373
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:33:39 +0000 (22:33 +0000)]
Added entries for each of the instructions with annotations ('r' or 'i').
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6372
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:32:38 +0000 (22:32 +0000)]
One of the first major changes to make the work of JITting easier: adding
annotations on instructions to specify which format they are (i.e., do they take
2 registers and 1 immediate or just 3 registers) as that changes their binary
representation and hence, code emission.
This makes instructions more like how X86 defines them to be. Now, writers of
instruction selection must choose the correct opcode based on what instruction
type they are building, which they already know. Thus, the JIT doesn't have to
do the same work by `discovering' which operands an instruction really has.
As this involves lots of small changes to a lot of files in lib/target/Sparc,
I'll commit them individually because otherwise the diffs will be unreadable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6371
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:29:02 +0000 (22:29 +0000)]
Cannot output `static' in generated cpp code: results in error. It's already
specified as a static member in class definition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6370
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:24:48 +0000 (22:24 +0000)]
* Allow passing in an unsigned configuration to allocateSparcTargetMachine()
a default value is set in the header file.
* Fixed some code layout to make it more consistent with the rest of codebase
* Added addPassesToJITCompile() with relevant passes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6369
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:19:58 +0000 (22:19 +0000)]
* Now outputting a static function getBinaryCodeForInstr() (JIT-accessible)
* For debugging purposes:
+ output the predefined bit pattern of the instruction
* Fixed inefficiency: only load an operand from MachineInstr once
* Bug fix: did not advance bit index when seeing named bit-fields "annul", "cc"
and "predict"
* Added a catch-all for non-supported instructions at the end of switch stmt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6368
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:04:38 +0000 (22:04 +0000)]
Moved generation of the SparcV9CodeEmitter.inc file higher in the Makefile so
that Makefile.common would see it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6367
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 22:01:10 +0000 (22:01 +0000)]
Add prototypes to add passes to JIT compilation and code emission.
Also, added annotations to how instructions are modified (reg/imm operands).
Added prototype for adding register numbers to values pass for interfacing with
the target-independent register allocators in the JIT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6366
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 27 May 2003 21:46:56 +0000 (21:46 +0000)]
Defines a pass-through debugging emitter -- it writes to a file for inspection
and to memory to test execution (using a passed-in code emitter).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6365
91177308-0d34-0410-b5e6-
96231b3b80d8