aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/SparcV9
AgeCommit message (Collapse)Author
2003-08-15* Must save FP registers when calling CompilationCallback(), because FPMisha Brukman
registers are global, are NOT windowed, and hence can be clobbered! * Removed unused register shorthand notations * Fixed and cleaned up comments in inline assembly git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7853 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-14Improvement to the previous fix: branch following a delay slot ofVikram S. Adve
another delayed instr. would cause the later sanity-check (assertion) in PhyRegAlloc.cpp to fail, even though there is really no error. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7848 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-14Since we now have TableGen editing modes for VIM and (X)Emacs, we no longer needMisha Brukman
to mark TableGen description files with "C++ mode". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7841 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-14Restore 'nice name' to passChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7840 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-14Factory methods for function passes now return type FunctionPass *.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7839 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-14Unbreak SPARC backend: addPassesToJITCompile andBrian Gaeke
addPassesToEmitMachineCode now both take a FunctionPassManager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7837 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-14Factory methods for function passes now return type FunctionPass *.Brian Gaeke
Get rid of RegisterLLC, which can't handle FunctionPasses anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7836 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-14Unbreak SPARC backend: addPassesToJITCompile andBrian Gaeke
addPassesToEmitMachineCode now both take a FunctionPassManager. Factory methods for function passes now return type FunctionPass *. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7835 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-13Adjust files for move of mapping info stuff into the Sparc directoryChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7802 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-12For instructions in a delay slot of another instruction,Vikram S. Adve
we no longer need to find the live-before set of the delayed branch since that set is now included the live-before/after set of the instructions in each delay slot. Just assert that instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7796 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-12For an instruction with delay slots, mark all live values beforeVikram S. Adve
the instruction as being live before/after the delay slot instructions as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7795 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-12Disable emitting LLVM-to-MI maps, by default.Vikram S. Adve
Add -emitmaps options to turn this back on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7774 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-12Fix va_arg to generate LDDFi for floating point values, instead of LDXi.Vikram S. Adve
All non-FP cases use LDXi as before. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7765 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-11Register argument to va_start must be marked as defined!Vikram S. Adve
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7734 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-07Implement LLVM intrinsics `llvm.setjmp' and `llvm.longjmp' as follows:Misha Brukman
* setjmp() simply returns 0 * longjmp() simply calls abort() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7676 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-07Fix sanity-checking in 'maskUnsigned' code to be more precise:Vikram S. Adve
use or def-and-use operands can be substituted after one def-only operand has been substituted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7674 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-06Changing command-line option formats to be more consistent with LLVM style.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7658 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-06* Renamed option from `nopreselect' to `nopreopt' since it disables more thanMisha Brukman
just PreSelection * Wrapped code at 80 columns * Added the DecomposeMultiDimRefs Pass to the JIT compilation path git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7657 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-06Use the registers g1 and g5 as temporaries for making far jumps and far calls,Misha Brukman
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7653 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-061. Bug fix: was using SLL instead of SLLX for ULongTy. Chump.Vikram S. Adve
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7645 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-06Remove conversion of fp-to-uint cast into a multi-step cast:Vikram S. Adve
this is not an optional transformation on SPARC and is now handled directly by instruction selection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7644 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-06SparcV9CodeEmitter.cpp:Misha Brukman
* 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() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7639 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-05Use a new local data structure instead of the MachineInstr::regsUsed setChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7621 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-05Add a mapChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7620 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-05Minor cleanupsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7619 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-05Physical registers no longer live in the regsUsed set for each machine instrChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7618 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-05This method has now been changed to preserve flags for us!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7603 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-05* Removed `using' declaration, now use full namespace qualifier std::stringMisha Brukman
* Simplified code by using an inline function instead of copy-pasted code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7597 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-05* Set annul bit to be 0, because the Sparc backend currently does not use it.Misha Brukman
* Use the name of the predict field instead of just the const 1 in the Instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7592 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-04Transition to using 'let X = y' instead of 'set X = y'.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7565 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-01DEBUG got moved to Debug.hChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7495 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-01Remove makefile complexity by always running tablegen with its final outputChris Lattner
directory. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7485 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-01Add all arithmetic operators to ConstantExprToString().Vikram S. Adve
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7476 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-01*Both* operands of divide need sign-extension before divide (if smallerVikram S. Adve
than machine register size), not just the second operand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7475 91177308-0d34-0410-b5e6-96231b3b80d8
2003-08-01Put back the separate pass to decompose multi-dimensional referencesVikram S. Adve
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). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7474 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-30We no longer need to preprocess SparcV9.td before sending it through tablegenChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7437 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-30When emitting a constant, check for ConstantExpr beforeVikram S. Adve
ordinary (primitive) types since ConstantExprs may be of primitive type! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7418 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-30Conform to the new interface for describing target registers... even thoughChris Lattner
it's currently not used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7416 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-30Only regenerate the .inc file if IT has changed, not just if the .td filesChris Lattner
have changed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7414 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29Do not use 'cpp' directlyChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7404 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29* Cleaned up and corrected comments wrt instruction formatsMisha Brukman
* Enabled STXFSR instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7400 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29Make emitFarCall() public, and add a few comments to functions.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7399 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29Unify all constant evaluations that depend on register sizeVikram S. Adve
in ConvertConstantToIntType. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7395 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29Rename 'dump-asm' to 'dump-input' and really print it just before code-gen.Vikram S. Adve
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7394 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29Bug fix: don't unnecessarily pretty-print control-characters, some ofVikram S. Adve
which were wrong (particularly, '\a' for '\007'). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7393 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29Add ConvertConstantToIntType() to unify all constant handlingVikram S. Adve
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7392 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29Add code to support stack spill/temp offsets that don't fit in theVikram S. Adve
immed. field. Moved insertCallerSavingCode() to PhyRegAlloc: it is now machine independent. Remove all uses of PhyRegAlloc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7391 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29All constant-evaluation code now unified intoVikram S. Adve
TargetInstrInfo::ConvertConstantToIntType(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7390 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-291. Bug fix: Don't use branch operand reg. as temp. reg. whenVikram S. Adve
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7389 91177308-0d34-0410-b5e6-96231b3b80d8
2003-07-29Don't require a BB to look-up live variables, unless they may need toVikram S. Adve
be recomputed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7388 91177308-0d34-0410-b5e6-96231b3b80d8