Chris Lattner
bf0c0100f6
Restore 'nice name' to pass
...
llvm-svn: 7840
2003-08-14 14:43:24 +00:00
Brian Gaeke
8c14ba96ca
Factory methods for function passes now return type FunctionPass *.
...
llvm-svn: 7839
2003-08-14 06:09:32 +00:00
Brian Gaeke
74db4c7e27
Unbreak SPARC backend: addPassesToJITCompile and
...
addPassesToEmitMachineCode now both take a FunctionPassManager.
llvm-svn: 7837
2003-08-14 06:04:59 +00:00
Brian Gaeke
cbd3a40626
Factory methods for function passes now return type FunctionPass *.
...
Get rid of RegisterLLC, which can't handle FunctionPasses anyway.
llvm-svn: 7836
2003-08-14 06:04:49 +00:00
Brian Gaeke
ec8519d6b6
Unbreak SPARC backend: addPassesToJITCompile and
...
addPassesToEmitMachineCode now both take a FunctionPassManager.
Factory methods for function passes now return type FunctionPass *.
llvm-svn: 7835
2003-08-14 06:04:29 +00:00
Chris Lattner
ec611ae0d0
Adjust files for move of mapping info stuff into the Sparc directory
...
llvm-svn: 7802
2003-08-13 02:38:16 +00:00
Vikram S. Adve
d6f22ad8d3
Disable emitting LLVM-to-MI maps, by default.
...
Add -emitmaps options to turn this back on.
llvm-svn: 7774
2003-08-12 15:51:02 +00:00
Vikram S. Adve
029ed09323
Fix va_arg to generate LDDFi for floating point values, instead of LDXi.
...
All non-FP cases use LDXi as before.
llvm-svn: 7765
2003-08-12 03:04:05 +00:00
Vikram S. Adve
2df6ea2f38
Register argument to va_start must be marked as defined!
...
llvm-svn: 7734
2003-08-11 18:42:47 +00:00
Misha Brukman
1fe74d144b
Implement LLVM intrinsics llvm.setjmp' and
llvm.longjmp' as follows:
...
* setjmp() simply returns 0
* longjmp() simply calls abort()
llvm-svn: 7676
2003-08-07 15:43:46 +00:00
Vikram S. Adve
6e4a358f72
Fix sanity-checking in 'maskUnsigned' code to be more precise:
...
use or def-and-use operands can be substituted after one def-only
operand has been substituted.
llvm-svn: 7674
2003-08-07 15:01:26 +00:00
Misha Brukman
b611692487
Changing command-line option formats to be more consistent with LLVM style.
...
llvm-svn: 7658
2003-08-06 23:25:25 +00:00
Misha Brukman
8f18938d1c
* Renamed option from nopreselect' to
nopreopt' since it disables more than
...
just PreSelection
* Wrapped code at 80 columns
* Added the DecomposeMultiDimRefs Pass to the JIT compilation path
llvm-svn: 7657
2003-08-06 23:06:21 +00:00
Misha Brukman
79226d066e
Use the registers g1 and g5 as temporaries for making far jumps and far calls,
...
because saving i1 and i2 to their ``designated'' stack slots corrupts unknown
memory in other functions, standard libraries, and worse.
In addition, this has the benefit of improving JIT performance because we
eliminate writing out 4 instructions in CompilationCallback() and 2 loads and 2
stores.
llvm-svn: 7653
2003-08-06 22:19:18 +00:00
Vikram S. Adve
792b48f4d1
1. Bug fix: was using SLL instead of SLLX for ULongTy. Chump.
...
2. Handle fp-to-uint conversions directly here instead of relying on
a pre-transformation to replace them with the 2-step conversion.
3. Use size rather than explicitly checking types when deciding what
opcodes to use, wherever possible. This is less error prone (the
bug fix above was not the first time!).
4. Float-to-pointer casts shd now work though this hasn't been tested.
llvm-svn: 7645
2003-08-06 18:48:40 +00:00
Vikram S. Adve
26125cbeb5
Remove conversion of fp-to-uint cast into a multi-step cast:
...
this is not an optional transformation on SPARC and is now handled
directly by instruction selection.
llvm-svn: 7644
2003-08-06 18:42:49 +00:00
Misha Brukman
4510698acb
SparcV9CodeEmitter.cpp:
...
* Doxygen-ified comments
* Added capability to make far calls (i.e., beyond 30 bits in CALL instr)
which implies that we need to delete function references that were added by
the call to addFunctionReference() because the actual call instruction is 10
instructions away (thanks to 64-bit address construction)
* Cleaned up code that generates far jumps by using an array+loop
SparcV9CodeEmitter.h:
* Explained more of the side-effects of emitFarCall()
llvm-svn: 7639
2003-08-06 16:20:22 +00:00
Chris Lattner
21343336d6
This method has now been changed to preserve flags for us!
...
llvm-svn: 7603
2003-08-05 16:59:24 +00:00
Misha Brukman
1e88cfb42e
* Removed `using' declaration, now use full namespace qualifier std::string
...
* Simplified code by using an inline function instead of copy-pasted code
llvm-svn: 7597
2003-08-05 16:01:50 +00:00
Misha Brukman
5c68269dfd
* Set annul bit to be 0, because the Sparc backend currently does not use it.
...
* Use the name of the predict field instead of just the const 1 in the
Instruction.
llvm-svn: 7592
2003-08-05 14:34:38 +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
fea54c2511
DEBUG got moved to Debug.h
...
llvm-svn: 7495
2003-08-01 22:19:03 +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
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
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
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
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
4f94bedfa6
Do not use 'cpp' directly
...
llvm-svn: 7404
2003-07-29 23:04:41 +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
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
Chris Lattner
ae92d0bba6
Specify the value type for the register, not just the size.
...
llvm-svn: 7357
2003-07-28 04:25:36 +00:00
Chris Lattner
99dbdf7391
This code doesn't modify the LLVM structure, keep stuff const
...
llvm-svn: 7343
2003-07-26 23:04:00 +00:00
Vikram S. Adve
536b19220c
(1) Major fix to the way unused regs. are marked and found for the FP
...
Single and FP double reg types (which share the same reg class).
Now all methods marking/finding unused regs consider the regType
within the reg class, and SparcFloatRegClass specializes this code.
(2) Remove machine-specific regalloc. methods that are no longer needed.
In particular, arguments and return value from a call do not need
machine-specific code for allocation.
(3) Rename TargetRegInfo::getRegType variants to avoid unintentional
overloading when an include file is omitted.
llvm-svn: 7334
2003-07-25 21:12:15 +00:00
Vikram S. Adve
9b17ad16c4
1. Fix a case that was marking the invalid reg. num. (-1) as used,
...
causing a nasty array bound error later.
2. Fix silly typo causing logical shift of unsigned long to use
SRL instead of SRLX.
llvm-svn: 7330
2003-07-25 21:08:58 +00:00
Chris Lattner
f26a8ee580
Remove redundant const qualifiers from cast<> expressions
...
llvm-svn: 7253
2003-07-23 15:30:06 +00:00
Chris Lattner
6077c3195f
Simplify code by using ConstantInt::getRawValue instead of checking to see
...
whether the constant is signed or unsigned, then casting
llvm-svn: 7252
2003-07-23 15:22:26 +00:00
Chris Lattner
c783297812
Simplify code a bit
...
llvm-svn: 7217
2003-07-21 19:56:49 +00:00
Anand Shukla
bd2d0577fb
Added special consideration for instrumentation strategy
...
llvm-svn: 7208
2003-07-20 15:39:30 +00:00
Misha Brukman
e32251b56d
Fixed the number translation scheme for the integer condition code registers: it
...
now works in instructions which require a 2-bit or 3-bit INTcc code.
Incidentally, that means that the representation of INTcc registers is now the
same in both integer and FP instructions. Thus, code became much simpler and
cleaner.
llvm-svn: 7185
2003-07-16 20:30:40 +00:00
Misha Brukman
bc0ecb29c8
The name should really be `simm11' to follow the naming convention, but this has
...
no change in functionality.
llvm-svn: 7184
2003-07-16 20:27:44 +00:00
Misha Brukman
d49975cf29
No need for a second immediate field if the class already inherits one.
...
llvm-svn: 7182
2003-07-15 21:27:14 +00:00