summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove always true checks. Noticed by Adhemerval Zanella.Roman Divacky2012-09-031-2/+2
| | | | llvm-svn: 163117
* Reserve space for the mandatory traceback fields on PPC64.Hal Finkel2012-08-291-4/+8
| | | | | | | | | | | | | | | | | | | | | We need to reserve space for the mandatory traceback fields, though leaving them as zero is appropriate for now. Although the ABI calls for these fields to be filled in fully, no compiler on Linux currently does this, and GDB does not read these fields. GDB uses the first word of zeroes during exception handling to find the end of the function and the size field, allowing it to compute the beginning of the function. DWARF information is used for everything else. We need the extra 8 bytes of pad so the size field is found in the right place. As a comparison, GCC fills in a few of the fields -- language, number of saved registers -- but ignores the rest. IBM's proprietary OSes do make use of the full traceback table facility. Patch by Bill Schmidt. llvm-svn: 162854
* Emit word of zeroes after the last instruction as a start of the mandatoryRoman Divacky2012-08-281-0/+15
| | | | | | | | | | traceback table on PowerPC64. This helps gdb handle exceptions. The other mandatory fields are ignored by gdb and harder to implement so just add there a FIXME. Patch by Bill Schmidt. PR13641. llvm-svn: 162778
* Add PPC Freescale e500mc and e5500 subtargets.Hal Finkel2012-08-281-0/+2
| | | | | | | | | Add subtargets for Freescale e500mc (32-bit) and e5500 (64-bit) to the PowerPC backend. Patch by Tobias von Koch. llvm-svn: 162764
* Lower constant pools and jump tables via TOC on PPC64/SVR4.Roman Divacky2012-08-241-7/+16
| | | | | | In collaboration with Adhemerval Zanella. llvm-svn: 162562
* Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp andBill Wendling2012-06-281-1/+1
| | | | | | | | | include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h. The reasoning is because the DebugInfo module is simply an interface to the debug info MDNodes and has nothing to do with analysis. llvm-svn: 159312
* There are a number of generic inline asm operand modifiers thatJack Carter2012-06-261-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | up to r158925 were handled as processor specific. Making them generic and putting tests for these modifiers in the CodeGen/Generic directory caused a number of targets to fail. This commit addresses that problem by having the targets call the generic routine for generic modifiers that they don't currently have explicit code for. For now only generic print operands 'c' and 'n' are supported.vi Affected files: test/CodeGen/Generic/asm-large-immediate.ll lib/Target/PowerPC/PPCAsmPrinter.cpp lib/Target/NVPTX/NVPTXAsmPrinter.cpp lib/Target/ARM/ARMAsmPrinter.cpp lib/Target/XCore/XCoreAsmPrinter.cpp lib/Target/X86/X86AsmPrinter.cpp lib/Target/Hexagon/HexagonAsmPrinter.cpp lib/Target/CellSPU/SPUAsmPrinter.cpp lib/Target/Sparc/SparcAsmPrinter.cpp lib/Target/MBlaze/MBlazeAsmPrinter.cpp lib/Target/Mips/MipsAsmPrinter.cpp MSP430 isn't represented because it did not even run with the long existing 'c' modifier and it was not apparent what needs to be done to get it inline asm ready. Contributer: Jack Carter llvm-svn: 159203
* Rename the PPC target feature gpul to mfocrf.Hal Finkel2012-06-111-1/+1
| | | | | | | | | | | The PPC target feature gpul (IsGigaProcessor) was only used for one thing: To enable the generation of the MFOCRF instruction. Furthermore, this instruction is available on other PPC cores outside of the G5 line. This feature now corresponds to the HasMFOCRF flag. No functionality change. llvm-svn: 158323
* Add POWER6 and POWER7 CPU types to the PPC backend.Hal Finkel2012-06-111-0/+2
| | | | | | No functional change; these will be used by upcoming scheduler enhancements. llvm-svn: 158313
* Add instruction itinerary for the PPC64 A2 core.Hal Finkel2012-04-011-0/+1
| | | | | | | This adds a full itinerary for IBM's PPC64 A2 embedded core. These cores form the basis for the CPUs in the new IBM BG/Q supercomputer. llvm-svn: 153842
* Reorder includes in Target backends to following coding standards. Remove ↵Craig Topper2012-03-171-1/+1
| | | | | | some superfluous forward declarations. llvm-svn: 152997
* Properly MCize the section switch, removing a FIXME.Roman Divacky2012-02-281-2/+4
| | | | llvm-svn: 151639
* Reapply r151278 with fixes.Roman Divacky2012-02-271-6/+16
| | | | | | MCize function entry label emission on PowerPC64 properly. llvm-svn: 151547
* Revert r151278, breaks static linking.Hal Finkel2012-02-251-14/+6
| | | | | | | | | Reverting this because it breaks static linking on ppc64. Specifically, it may be linkonce_odr functions that are the problem. With this patch, if you link statically, calls to some functions end up calling their descriptor addresses instead of calling to their entry points. This causes the execution to fail with SIGILL (b/c the descriptor address just has some pointers, not code). llvm-svn: 151433
* MCize function entry label emission on PowerPC64 properly.Roman Divacky2012-02-231-6/+14
| | | | llvm-svn: 151278
* Allow the use of an alternate symbol for calculating a function's size.Hal Finkel2012-02-221-1/+5
| | | | | | | | | | | | | The standard function epilog includes a .size directive, but ppc64 uses an alternate local symbol to tag the actual start of each function. Until recently, binutils accepted the .size directive as: .size test1, .Ltmp0-test1 however, using this directive with recent binutils will result in the error: .size expression for XXX does not evaluate to a constant so we must use the label which actually tags the start of the function. llvm-svn: 151200
* Emacs-tag and some comment fix for all ARM, CellSPU, Hexagon, MBlaze, ↵Jia Liu2012-02-181-1/+1
| | | | | | MSP430, PPC, PTX, Sparc, X86, XCore. llvm-svn: 150878
* make CR spill and restore 64-bit clean (no functional change), and fix some ↵Hal Finkel2011-12-071-1/+2
| | | | | | other problems found with -verify-machineinstrs llvm-svn: 146024
* Small fix for assembler generation on Darwin PPC64. Patch by Michael ↵Eli Friedman2011-12-011-1/+1
| | | | | | Kostylev. PR11437. llvm-svn: 145553
* Remove unnecessary include.Devang Patel2011-11-091-1/+0
| | | | llvm-svn: 144211
* Add PPC 440 scheduler and some associated testsHal Finkel2011-10-171-0/+7
| | | | llvm-svn: 142170
* Move TargetRegistry and TargetSelect from Target to Support where they belong.Evan Cheng2011-08-241-1/+1
| | | | | | These are strictly utilities for registering targets and components. llvm-svn: 138450
* Rename TargetAsmParser to MCTargetAsmParser and TargetAsmLexer to ↵Evan Cheng2011-07-261-1/+1
| | | | | | MCTargetAsmLexer; rename createAsmLexer to createMCAsmLexer and createAsmParser to createMCAsmParser. llvm-svn: 136027
* Separate MCInstPrinter registration from AsmPrinter registration.Evan Cheng2011-07-251-10/+0
| | | | llvm-svn: 135974
* createMCInstPrinter doesn't need TargetMachine anymore.Evan Cheng2011-07-061-2/+1
| | | | llvm-svn: 134525
* Fix emission of PPC64 assembler on non-darwin platforms by splittingRoman Divacky2011-06-091-2/+2
| | | | | | | | VK_PPC_{HA,LO}16 into darwin and gas variants. Darwin wants {ha,lo}16(symbol) while gnu as wants symbol@{ha,l}. llvm-svn: 132802
* We need to pass the TargetMachine object to the InstPrinter if we are printingBill Wendling2011-03-211-1/+2
| | | | | | | | | the alias of an InstAlias instead of the thing being aliased. Because we need to know the features that are valid for an InstAlias. This is part of a work-in-progress. llvm-svn: 127986
* Wire up primitive support in the assembler backend for writing .o filesChris Lattner2010-11-151-1/+4
| | | | | | | | | | | | | | directly on the mac. This is very early, doesn't support relocations and has a terrible hack to avoid .machine from being printed, but despite that it generates an bitwise-identical-to-cctools .o file for stuff like this: define i32 @test() nounwind { ret i32 42 } I don't plan to continue pushing this forward, but if anyone else was interested in doing it, it should be really straight-forward. llvm-svn: 119136
* fix a regression with the new instprinter: we lost the ability toChris Lattner2010-11-151-0/+22
| | | | | | | print DBG_VALUE instructions. This should unbreak the llvm-gcc-powerpc-darwin9 buildbot. llvm-svn: 119132
* strength reduce TOC temp label generation, no functionality change.Chris Lattner2010-11-151-7/+4
| | | | llvm-svn: 119112
* rip out a ton of old instruction printing junk now that theChris Lattner2010-11-151-419/+86
| | | | | | new instprinting logic is there. llvm-svn: 119111
* Turn on the new instprinter by default.Chris Lattner2010-11-151-1/+1
| | | | | | | | | | | | | | The only change in the output is: 1) we get a better comment on mfcr, we get: mfcr r2 ; cr2 instead of: mfcr r2 ; 32 2) we no longer emit $stub's on powerpc/leopard. The Leopard linker autosynthesizes them. llvm-svn: 119108
* remove some extraneous quotes to make the new instprinter match.Chris Lattner2010-11-151-2/+2
| | | | llvm-svn: 119104
* with the picbase nonsense starting to be figured out, implementChris Lattner2010-11-141-0/+22
| | | | | | lowering support for MovePCtoLR[8]. Down to 4 failures again. llvm-svn: 119090
* move the pic base symbol stuff up to MachineFunctionChris Lattner2010-11-141-2/+0
| | | | | | | since it is trivial and will be shared between ppc and x86. This substantially simplifies the X86 backend also. llvm-svn: 119089
* reimplement ppc asmprinter "toc" handling to use a VariantKindChris Lattner2010-11-141-0/+26
| | | | | | | | on the operand, required for .o file writing and fixing the PowerPC/mult-alt-generic-powerpc64.ll failure with the new instprinter. llvm-svn: 119087
* lower PPC::MFCRpseud when transforming to MC, avoiding callingChris Lattner2010-11-141-2/+11
| | | | | | the aborting printSpecial() method. This gets us to 8 failures. llvm-svn: 119084
* properly wire up the instprinter to the ppc64 backend, down to 5 failures.Chris Lattner2010-11-141-1/+1
| | | | llvm-svn: 119081
* switch PPC to a simplified MCInstLowering model.Chris Lattner2010-11-141-5/+4
| | | | llvm-svn: 119074
* Implement support for printing register and immediate operands,Chris Lattner2010-11-141-3/+1
| | | | | | | | | | | | | | add support for darwin vs aix syntax. We now can print instructions like this: add r3, r3, r4 blr and (in aix mode): add 3, 3, 4 blr llvm-svn: 119062
* stub out PPCMCInstLowering, add a new option that uses it and the newChris Lattner2010-11-141-0/+24
| | | | | | instprinter when -enable-ppc-inst-printer is passed to llc. llvm-svn: 119061
* stub out a powerpc MCInstPrinter implementation.Chris Lattner2010-11-141-0/+13
| | | | llvm-svn: 119059
* move PPCAsmPrinter into the main PPC library, like ARM and X86.Chris Lattner2010-11-141-0/+918
| | | | llvm-svn: 119054
* Factor out asmprinter out of ppcAnton Korobeynikov2008-08-171-1119/+0
| | | | llvm-svn: 54887
* Handle visibility printing with all generality. Remove bunch of duplicate code.Anton Korobeynikov2008-08-081-12/+4
| | | | llvm-svn: 54540
* Use chars, where possibleAnton Korobeynikov2008-08-081-30/+30
| | | | llvm-svn: 54539
* Convert PPC/Linux to new section printing stuffAnton Korobeynikov2008-08-081-84/+68
| | | | llvm-svn: 54538
* Switch PPC/Darwin to new section handling stuffAnton Korobeynikov2008-08-081-146/+99
| | | | llvm-svn: 54537
* CleanupAnton Korobeynikov2008-08-081-72/+70
| | | | llvm-svn: 54536
* Remove extra call to DW.SetModuleInfo on Linux.Dale Johannesen2008-07-091-1/+0
| | | | llvm-svn: 53365
OpenPOWER on IntegriCloud