Chris Lattner
506fa6843e
Revert previous change, and be really anal about what physical registers can do.
...
llvm-svn: 7588
2003-08-05 00:49:09 +00:00
Chris Lattner
7c257321c7
This is the real fix for the previous register allocator problem.
...
Physical registers should not float around.
llvm-svn: 7587
2003-08-05 00:48:47 +00:00
Misha Brukman
f7586ceeb2
Reformatted code to match the prevalent LLVM style; fit code into 80 columns.
...
llvm-svn: 7586
2003-08-05 00:02:06 +00:00
Misha Brukman
8f7304a32d
ElectricFence found this bug where we were reading past the vector boundary.
...
llvm-svn: 7585
2003-08-04 23:48:40 +00:00
Chris Lattner
4b637cc666
Don't bother calculating info unless its needed. May reduce number of stack slots created.
...
llvm-svn: 7584
2003-08-04 23:42:37 +00:00
Chris Lattner
815b85e3ba
* Fix spelling of 'necessary'
...
* Add a lot more DEBUG output, which is better structured than before
* Fix bug: Jello/2003-08-04-PhysRegLiveFailure.llx
llvm-svn: 7583
2003-08-04 23:36:39 +00:00
Chris Lattner
148747e162
Add patterns for (mov R, R) (mov R, I) and subtracts. The moves are to enable
...
testing, the subtracts are because I was in the neighborhood.
llvm-svn: 7581
2003-08-04 21:18:19 +00:00
Chris Lattner
44cdcf013f
Change comments into something that TableGen can read!
...
llvm-svn: 7580
2003-08-04 21:08:29 +00:00
Chris Lattner
0d74debd07
Allow instructions to have a DAG pattern associated with them.
...
Define a few preliminary node types.
llvm-svn: 7579
2003-08-04 21:07:37 +00:00
Chris Lattner
6aa90493a3
Rename register classes to be upper case to make it obvious that they are X86
...
specific in the tree patterns
llvm-svn: 7578
2003-08-04 20:58:29 +00:00
Chris Lattner
22c550e442
There is nothing special about noops anymore
...
llvm-svn: 7568
2003-08-04 05:11:37 +00:00
Chris Lattner
78fac3b8b6
There is nothing special about noops now
...
llvm-svn: 7567
2003-08-04 05:11:19 +00:00
Chris Lattner
9fb7e0a425
Transition to using 'let X = y' instead of 'set X = y'.
...
llvm-svn: 7565
2003-08-04 05:03:18 +00:00
Chris Lattner
2551080937
transition to using let instead of set
...
llvm-svn: 7564
2003-08-04 04:59:56 +00:00
Chris Lattner
cb7489c102
Transition to using let instead of set
...
llvm-svn: 7563
2003-08-04 04:58:12 +00:00
Chris Lattner
796684b8c7
Fix Bug: test/Regression/Jello/2003-08-03-CallArgLiveRanges.llx
...
llvm-svn: 7558
2003-08-04 02:12:48 +00:00
Chris Lattner
fdd6784e1d
Simplify some constant expressions
...
llvm-svn: 7556
2003-08-04 01:04:59 +00:00
Chris Lattner
876353b107
Remove illegal, unsupported escapes. This fixes program: Ptrdist-bc
...
llvm-svn: 7552
2003-08-03 23:42:17 +00:00
Chris Lattner
5dcb654662
* Sort #includes, remove dupliates
...
* Use .zero to emit padding between struct elements
* Emit .comm symbols when we can, this dramatically reduces the amount of gunk we have to print
* Print global variable identifiers next to initializer more nicely.
llvm-svn: 7551
2003-08-03 23:37:09 +00:00
Chris Lattner
0b2c347eac
Specify custom name for registers to get the ()'s in the name.
...
llvm-svn: 7547
2003-08-03 22:12:47 +00:00
Chris Lattner
9c66ed8503
Allow specifying custom names for registers
...
llvm-svn: 7546
2003-08-03 22:12:37 +00:00
Chris Lattner
bb8bdc04a7
Start using tablegen'd instruction enum list
...
llvm-svn: 7542
2003-08-03 21:57:05 +00:00
Chris Lattner
637eebbfc1
Resort tables
...
llvm-svn: 7541
2003-08-03 21:56:36 +00:00
Chris Lattner
df14300577
Lump the base opcode in with the X86 TargetSpecific flags
...
llvm-svn: 7540
2003-08-03 21:56:22 +00:00
Chris Lattner
05e2f385a7
* Start using tablegen'd instruction descriptions
...
* Fix bug in the createNOP method, which was not marking the operands of the
generated XCHG as useanddef. I don't think this method is actually used,
so it wasn't breaking anything, but it should be fixed anyway...
llvm-svn: 7539
2003-08-03 21:55:55 +00:00
Chris Lattner
553f6c1e1d
Start using tablegenerated instruction descriptions
...
llvm-svn: 7538
2003-08-03 21:54:59 +00:00
Chris Lattner
59a4a91703
Add new TableGen instruction definitions
...
llvm-svn: 7537
2003-08-03 21:54:21 +00:00
Chris Lattner
1d4d4f0d8b
Remove the old .def file, it is now obsolete
...
llvm-svn: 7536
2003-08-03 21:54:06 +00:00
Chris Lattner
6c8a40895b
Rearrange fields yet again: Don't instantiate these lists ONCE PER INSTRUCTION.
...
llvm-svn: 7535
2003-08-03 21:52:28 +00:00
Chris Lattner
41a894de77
Simplify code, eliminating the need for the X86 isVoid target instr flag
...
llvm-svn: 7534
2003-08-03 21:51:45 +00:00
Chris Lattner
74e4e9b44f
Set debug types
...
llvm-svn: 7533
2003-08-03 21:47:31 +00:00
Chris Lattner
3663901941
Set debug types
...
llvm-svn: 7532
2003-08-03 21:14:38 +00:00
Chris Lattner
1789d23990
Remove using decl
...
llvm-svn: 7531
2003-08-03 20:24:29 +00:00
Chris Lattner
a8c3cff30f
Add Target class for X86 target
...
llvm-svn: 7523
2003-08-03 18:19:37 +00:00
Chris Lattner
aad0d9c6ef
The RegisterInfo class is obsolete
...
llvm-svn: 7522
2003-08-03 18:18:48 +00:00
Chris Lattner
6a7439fb42
Remove the RegisterInfo class in favor of a general Target class. Add instrinfo stuff
...
llvm-svn: 7521
2003-08-03 18:18:31 +00:00
Chris Lattner
e1453c3afc
Tell CVS to ignore all .inc files
...
llvm-svn: 7513
2003-08-03 15:50:17 +00:00
Chris Lattner
8b31688bb1
Switch over to tablegen generated header files
...
llvm-svn: 7512
2003-08-03 15:48:55 +00:00
Chris Lattner
a4741a94ff
Switch over to TableGen generated register file description
...
llvm-svn: 7511
2003-08-03 15:48:14 +00:00
Chris Lattner
5da8e80c46
Initial checkin of X86.td file
...
llvm-svn: 7510
2003-08-03 15:47:49 +00:00
Chris Lattner
731953bc5c
Initial checkin of X86 Register File description
...
llvm-svn: 7509
2003-08-03 15:47:25 +00:00
Chris Lattner
b6bcc0689c
Fix typeos in comments
...
llvm-svn: 7505
2003-08-03 13:50:14 +00:00
Chris Lattner
58cbc61516
Make it easier to debug by exposing a temporary
...
llvm-svn: 7504
2003-08-03 13:49:25 +00:00
Chris Lattner
6cce665888
Wrap at 80 columns
...
llvm-svn: 7503
2003-08-03 13:49:03 +00:00
Chris Lattner
d20486a0d9
Rename fields
...
llvm-svn: 7498
2003-08-01 22:21:49 +00:00
Chris Lattner
1007f033d4
Move DEBUG to Debug.h
...
llvm-svn: 7497
2003-08-01 22:21:34 +00:00
Chris Lattner
fea54c2511
DEBUG got moved to Debug.h
...
llvm-svn: 7495
2003-08-01 22:19:03 +00:00
Chris Lattner
8fb754a5b9
Move debug functionality to Debug.cpp/Debug.h
...
llvm-svn: 7494
2003-08-01 22:15:41 +00:00
Chris Lattner
f1afe32353
Describe the value name
...
llvm-svn: 7493
2003-08-01 22:15:15 +00:00
Chris Lattner
8abcd56c74
DEBUG got moved to Support/Debug.h
...
llvm-svn: 7492
2003-08-01 22:15:03 +00:00
Chris Lattner
f0c6964470
DEBUG got moved to Debug.h
...
llvm-svn: 7491
2003-08-01 22:13:59 +00:00
Chris Lattner
802b0e2a6e
Check in the implementation of the FileUtilities!
...
llvm-svn: 7487
2003-08-01 21:16:14 +00:00
Chris Lattner
c0eb77c24c
Remove makefile complexity by always running tablegen with its final output
...
directory.
llvm-svn: 7485
2003-08-01 20:34:56 +00:00
Chris Lattner
238ec53e70
Use the C++, more portable, deleter
...
llvm-svn: 7483
2003-08-01 20:29:18 +00:00
Chris Lattner
958f47b9f7
Move #include from a header to here
...
llvm-svn: 7480
2003-08-01 19:16:29 +00:00
Vikram S. Adve
89f9397668
Add all arithmetic operators to ConstantExprToString().
...
Note that some generated operators (like &, | or ^) may
not be supported by the assembler -- but if they've got
this far, it's better to generate them and let the assembler decide.
llvm-svn: 7476
2003-08-01 15:55:53 +00:00
Vikram S. Adve
16c2b62d13
*Both* operands of divide need sign-extension before divide (if smaller
...
than machine register size), not just the second operand.
llvm-svn: 7475
2003-08-01 15:54:38 +00:00
Vikram S. Adve
36fcc5d8b3
Put back the separate pass to decompose multi-dimensional references
...
since it is *necessary* for correct code generation. Only optional
transformations belong in the PreOpts pass (which needs to be renamed
from PreSelection to PreOpts).
llvm-svn: 7474
2003-08-01 15:53:24 +00:00
Chris Lattner
75c817a482
encode size information into each ValueType
...
Add new RegisterInfo class
llvm-svn: 7469
2003-08-01 05:18:03 +00:00
Chris Lattner
238dadc37c
This method is long dead
...
llvm-svn: 7460
2003-08-01 03:48:42 +00:00
Chris Lattner
c4bbc7109d
Fix the JIT in the Nightly tester. This was not a fun bug to track down.
...
See the comments in the patch for details.
llvm-svn: 7457
2003-07-31 19:38:34 +00:00
Chris Lattner
eaee325932
Trivial cleanups: no need to include header twice. Global variable is local to file
...
llvm-svn: 7456
2003-07-31 19:31:21 +00:00
Chris Lattner
a0e679e299
Remove more obsolete comments
...
llvm-svn: 7455
2003-07-31 17:56:05 +00:00
Misha Brukman
d02051b512
Changed pointer to the JIT code to its current location, under LLI.
...
llvm-svn: 7454
2003-07-31 17:50:35 +00:00
Chris Lattner
9fabe8dddf
Unbreak the CBE output
...
llvm-svn: 7453
2003-07-31 17:47:24 +00:00
Brian Gaeke
a2d9f40693
I think local symbols in X86 GAS have to start with .L, not just
...
.; so I have changed the basic block markers to start with .L. I also
broke up a >80char line.
llvm-svn: 7452
2003-07-31 17:38:52 +00:00
John Criswell
6e264f078a
Modified the code so that it generates (0) for setjmp() and abort() for
...
longjmp() (and does not include setjmp.h).
This is to fix some problems on Sparc while non-local jumps are still
unimplemented.
llvm-svn: 7449
2003-07-31 15:11:08 +00:00
Tanya Lattner
f8c563f76c
*** empty log message ***
...
llvm-svn: 7447
2003-07-31 05:06:09 +00:00
Tanya Lattner
a93c7aeb7e
Added function to determine if an Instruction may trap.
...
llvm-svn: 7442
2003-07-31 04:05:50 +00:00
Chris Lattner
2b3ac6be6a
Add comments
...
Make the register classes optionally take code fragments for allocation_order_*
llvm-svn: 7441
2003-07-30 22:16:41 +00:00
Chris Lattner
a979d4dd27
We no longer need to preprocess SparcV9.td before sending it through tablegen
...
llvm-svn: 7437
2003-07-30 21:00:37 +00:00
Chris Lattner
3a5c2826d5
Fix a bug that brian reported
...
llvm-svn: 7428
2003-07-30 19:04:37 +00:00
Chris Lattner
2da046f055
Add support for "named positional arguments"
...
llvm-svn: 7421
2003-07-30 17:34:02 +00:00
Vikram S. Adve
4f6b98900c
When emitting a constant, check for ConstantExpr before
...
ordinary (primitive) types since ConstantExprs may be of primitive type!
llvm-svn: 7418
2003-07-30 12:54:47 +00:00
Chris Lattner
33a3edad1b
Conform to the new interface for describing target registers... even though
...
it's currently not used.
llvm-svn: 7416
2003-07-30 05:51:34 +00:00
Chris Lattner
e45b699cf6
Add all of the necessary classes to describe the contents of the MRegister.h implementation
...
for a target.
llvm-svn: 7415
2003-07-30 05:50:12 +00:00
Chris Lattner
3f368e3432
Only regenerate the .inc file if IT has changed, not just if the .td files
...
have changed.
llvm-svn: 7414
2003-07-30 05:49:17 +00:00
Chris Lattner
ea6aac412d
Use target specific interface instead of forcing it to be target-generic
...
llvm-svn: 7413
2003-07-30 05:33:48 +00:00
Chris Lattner
8418e36143
No this file is not actually Sparc.td :)
...
llvm-svn: 7405
2003-07-29 23:07:13 +00:00
Chris Lattner
4f94bedfa6
Do not use 'cpp' directly
...
llvm-svn: 7404
2003-07-29 23:04:41 +00:00
Chris Lattner
6a561beb35
Add namespace specifier, add flags used by the X86 BE
...
llvm-svn: 7403
2003-07-29 23:02:49 +00:00
Misha Brukman
0f918540b6
* Cleaned up and corrected comments wrt instruction formats
...
* Enabled STXFSR instructions
llvm-svn: 7400
2003-07-29 21:21:20 +00:00
Misha Brukman
fb8f64a590
Make emitFarCall() public, and add a few comments to functions.
...
llvm-svn: 7399
2003-07-29 20:52:56 +00:00
Vikram S. Adve
e895c2e241
Unify all constant evaluations that depend on register size
...
in ConvertConstantToIntType.
llvm-svn: 7395
2003-07-29 19:59:23 +00:00
Vikram S. Adve
2b630b4ec2
Rename 'dump-asm' to 'dump-input' and really print it just before code-gen.
...
llvm-svn: 7394
2003-07-29 19:58:00 +00:00
Vikram S. Adve
dbc0eb6a2d
Bug fix: don't unnecessarily pretty-print control-characters, some of
...
which were wrong (particularly, '\a' for '\007').
llvm-svn: 7393
2003-07-29 19:57:34 +00:00
Vikram S. Adve
648ce40adf
Add ConvertConstantToIntType() to unify all constant handling
...
that depends on machine register size.
Moved insertCallerSavingCode() to PhyRegAlloc and
moved isRegVolatile and modifiedByCall to TargetRegInfo: they are all
machine independent. Remove several dead functions.
llvm-svn: 7392
2003-07-29 19:54:41 +00:00
Vikram S. Adve
2353584afc
Add code to support stack spill/temp offsets that don't fit in the
...
immed. field. Moved insertCallerSavingCode() to PhyRegAlloc: it is
now machine independent. Remove all uses of PhyRegAlloc.
llvm-svn: 7391
2003-07-29 19:53:21 +00:00
Vikram S. Adve
9143f1962e
All constant-evaluation code now unified into
...
TargetInstrInfo::ConvertConstantToIntType().
llvm-svn: 7390
2003-07-29 19:50:12 +00:00
Vikram S. Adve
c9cb319bcb
1. Bug fix: Don't use branch operand reg. as temp. reg. when
...
spilling values used by an instruction in the delay slot of the branch
(which will eventually be moved before the branch).
2. Bug fix: Delete the delay slot instr, not the branch instr, when
moving delay slot instr. out!!!!
3. Move code to insert caller-saves moved here from SparcRegInfo:
it is now machine-independent.
llvm-svn: 7389
2003-07-29 19:49:21 +00:00
Vikram S. Adve
09091ee782
Don't require a BB to look-up live variables, unless they may need to
...
be recomputed.
llvm-svn: 7388
2003-07-29 19:42:32 +00:00
Vikram S. Adve
e2ef34a818
Add const version of getLiveRangeForValue().
...
llvm-svn: 7386
2003-07-29 19:38:22 +00:00
Vikram S. Adve
91e75d87d2
Code to insert caller-saves moved here from SparcRegInfo: it is now
...
machine-independent.
Fix problem with using branch operand reg. as temp. reg. when
spilling values used by an instruction in the delay slot of the branch
(which will eventually be moved before the branch).
llvm-svn: 7385
2003-07-29 19:37:41 +00:00
Misha Brukman
0db560d8f6
* Correctly emit a far call if the target address does not fit into 30 bits
...
instead of assert()ing
* Fixed a nasty bug where '07' was used instead of register 'o7'
llvm-svn: 7382
2003-07-29 19:00:58 +00:00
Misha Brukman
e47f069855
* Stop hard-coding a value for beginning of emitted code on Sparc since we can
...
now handle far calls (i.e., beyond the 30-bit limit in call instructions).
* As a side-effect, this allows us to unify and clean up the mmap() call and
code around it.
llvm-svn: 7381
2003-07-29 16:57:16 +00:00
Chris Lattner
bbc8db5266
Move "register flags" definition the type of registers to be fully fledged
...
value types
llvm-svn: 7377
2003-07-29 05:14:16 +00:00
Chris Lattner
60104f00c7
Add support for Alpha intrinsics, contributed by Rahul Joshi
...
llvm-svn: 7373
2003-07-28 21:20:57 +00:00
Misha Brukman
c0ae1cd93e
Add rationale for the MAP_ANONYMOUS vs. MAP_ANON flags.
...
llvm-svn: 7368
2003-07-28 19:26:19 +00:00
Misha Brukman
3bb53319e8
The RTLD_GLOBAL flag allows symbols to be globally accessible, which makes
...
resolution of symbols in the .so possible (currently assists debugging with
bugpoint).
llvm-svn: 7366
2003-07-28 19:19:58 +00:00
Misha Brukman
057f460053
Add ability for external C code to get pointers to functions given their name.
...
This us used by bugpoint -- when code is compiled to a shared object to be
JITted, it must use the JIT's lazy resolution method to find function addresses,
because some functions will not be available at .so load time, as they are in
the bytecode file.
llvm-svn: 7363
2003-07-28 19:09:06 +00:00