summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/PowerPC
Commit message (Collapse)AuthorAgeFilesLines
* Do better with physical reg operands (typically, from inline asm)Dale Johannesen2009-12-161-2/+2
| | | | | | | | | | | | | | | | | | in local register allocator. If a reg-reg copy has a phys reg input and a virt reg output, and this is the last use of the phys reg, assign the phys reg to the virt reg. If a reg-reg copy has a phys reg output and we need to reload its spilled input, reload it directly into the phys reg than passing it through another reg. Following 76208, there is sometimes no dependency between the def of a phys reg and its use; this creates a window where that phys reg can be used for spilling (this is true in linear scan also). This is bad and needs to be fixed a better way, although 76208 works too well in practice to be reverted. However, there should normally be no spilling within inline asm blocks. The patch here goes a long way towards making this actually be true. llvm-svn: 91485
* ProcessImplicitDefs should watch out for invalidated iterator and extra ↵Evan Cheng2009-11-251-0/+56
| | | | | | implicit operands on copies. llvm-svn: 89880
* Do not store R31 into the caller's link area on PPC.Dale Johannesen2009-11-244-26/+26
| | | | | | | | | | | | This violates the ABI (that area is "reserved"), and while it is safe if all code is generated with current compilers, there is some very old code around that uses that slot for something else, and breaks if it is stored into. Adjust testcases looking for current behavior. I've verified that the stack frame size is right in all testcases, whether it changed or not. 7311323. llvm-svn: 89811
* Fix for bad FileCheck converts in revision 89584.Edward O'Callaghan2009-11-221-13/+9
| | | | llvm-svn: 89586
* Convert a few tests to FileCheck for PR5307.Edward O'Callaghan2009-11-221-8/+18
| | | | llvm-svn: 89584
* When generating a vector the really slow way, via loadsDale Johannesen2009-11-211-0/+37
| | | | | | | and stores, handle the case where the element size is not a valid target type correctly (PPC). llvm-svn: 89521
* Remove an incorrect overaggressive optimizationDale Johannesen2009-11-201-0/+28
| | | | | | (PPC specific). llvm-svn: 89496
* Check if subreg index is zero.Evan Cheng2009-11-161-0/+155
| | | | llvm-svn: 88899
* For some targets, a copy can use a register multiple times, e.g. ppc.Evan Cheng2009-11-161-0/+105
| | | | llvm-svn: 88895
* Adjust isConstantSplat to allow for big-endian targets.Dale Johannesen2009-11-131-0/+24
| | | | | | PPC is such a target; make it work. llvm-svn: 87060
* Fix test to work on every platform.Bill Wendling2009-11-111-3/+1
| | | | llvm-svn: 86786
* Test this on Darwin only.Bill Wendling2009-11-101-0/+2
| | | | llvm-svn: 86752
* Emit correct code when making a ConstantPool entry for a vectorDale Johannesen2009-11-101-0/+36
| | | | | | | | | constant whose component type is not a legal type for the target. (If the target ConstantPool cannot handle this type either, it has an opportunity to merge elements. In practice any target with 8-bit bytes must support i8 *as data*). 7320806 (partial). llvm-svn: 86751
* Modify how the prologue encoded the "move" information for the FDE. GCCBill Wendling2009-11-101-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | generates a sequence similar to this: __Z4funci: LFB2: mflr r0 LCFI0: stmw r30,-8(r1) LCFI1: stw r0,8(r1) LCFI2: stwu r1,-80(r1) LCFI3: mr r30,r1 LCFI4: where LCFI3 and LCFI4 are used by the FDE to indicate what the FP, LR, and other things are. We generated something more like this: Leh_func_begin1: mflr r0 stw r31, 20(r1) stw r0, 8(r1) Llabel1: stwu r1, -80(r1) Llabel2: mr r31, r1 Note that we are missing the "mr" instruction. This patch makes it more like the GCC output. llvm-svn: 86729
* Update these tests for the new label names.Dan Gohman2009-11-051-4/+4
| | | | llvm-svn: 86192
* Add -mtriple to llc commands, attempting to fix buildbot failures.Bob Wilson2009-11-051-2/+2
| | | | llvm-svn: 86086
* Add PowerPC codegen for indirect branches.Bob Wilson2009-11-041-0/+55
| | | | llvm-svn: 86050
* Add nounwind to this test.Dan Gohman2009-09-241-1/+1
| | | | llvm-svn: 82708
* Model the carry bit on ppc32. Without this we couldDale Johannesen2009-09-181-0/+62
| | | | | | | move a SUBFC (etc.) below the SUBFE (etc.) that consumed the carry bit. Add missing ADDIC8, noticed along the way. llvm-svn: 82266
* Convert more tests to avoid llvm-as.Dan Gohman2009-09-117-32/+17
| | | | llvm-svn: 81545
* Change tests from "opt %s" to "opt < %s" so that opt doesn't see theDan Gohman2009-09-112-2/+2
| | | | | | | | input filename so that opt doesn't print the input filename in the output so that grep lines in the tests don't unintentionally match strings in the input filename. llvm-svn: 81537
* Eliminate more uses of llvm-as and llvm-dis.Dan Gohman2009-09-09217-321/+321
| | | | llvm-svn: 81293
* Change these tests to feed the assembly files to opt directly, insteadDan Gohman2009-09-082-2/+2
| | | | | | of using llvm-as, now that opt supports this. llvm-svn: 81226
* Alter 79292 to produce output that actually assembles.Dale Johannesen2009-08-261-1/+4
| | | | llvm-svn: 80119
* remove some dead lines.Chris Lattner2009-08-251-7/+0
| | | | llvm-svn: 80031
* convert to filecheck styleChris Lattner2009-08-251-22/+47
| | | | llvm-svn: 80029
* Remove obsolete -f flags.Dan Gohman2009-08-2512-16/+16
| | | | llvm-svn: 79992
* Convert two gratuitous abuses of poor helpless CPU cycles to FileCheck.Daniel Dunbar2009-08-242-103/+53
| | | | llvm-svn: 79933
* Split test into 3.Dale Johannesen2009-08-241-0/+8
| | | | llvm-svn: 79926
* Rerevert (r75663 and r76805), seems there is more non-determinism.Daniel Dunbar2009-08-231-20/+12
| | | | llvm-svn: 79856
* Speculatively revert r76823 (i.e., reapply r75663 and r76805) to see if the realDaniel Dunbar2009-08-231-12/+20
| | | | | | problem is fixed by the TableGen determinism fix. llvm-svn: 79851
* PowerPC inline asm was emitting two output operandsDale Johannesen2009-08-181-0/+22
| | | | | | | | | for a single "m" constraint; this is wrong because the opcode of a load or store would have to change in parallel. This patch makes it always compute addresses into a register, which is correct but not as efficient as possible. 7144566. llvm-svn: 79292
* Remove HasCrazyBSS and add a flag in TAI to indicate that '.section' Bruno Cardoso Lopes2009-08-131-0/+8
| | | | | | must be emitted for PowerPC-Linux '.bss' section llvm-svn: 78958
* Revert 78892 and 78895, these break generating working executables onDaniel Dunbar2009-08-131-1/+0
| | | | | | | | | | | | | | | | | | | | | x86_64-apple-darwin10. --- Reverse-merging r78895 into '.': U test/CodeGen/PowerPC/2008-12-12-EH.ll U lib/Target/DarwinTargetAsmInfo.cpp --- Reverse-merging r78892 into '.': U include/llvm/Target/DarwinTargetAsmInfo.h U lib/Target/X86/X86TargetAsmInfo.cpp U lib/Target/X86/X86TargetAsmInfo.h U lib/Target/ARM/ARMTargetAsmInfo.h U lib/Target/ARM/ARMTargetMachine.cpp U lib/Target/ARM/ARMTargetAsmInfo.cpp U lib/Target/PowerPC/PPCTargetAsmInfo.cpp U lib/Target/PowerPC/PPCTargetAsmInfo.h U lib/Target/PowerPC/PPCTargetMachine.cpp G lib/Target/DarwinTargetAsmInfo.cpp llvm-svn: 78919
* fix typo, add 10.6 version of test for my previous patch.Chris Lattner2009-08-131-0/+1
| | | | llvm-svn: 78895
* add nounwindChris Lattner2009-08-121-1/+1
| | | | llvm-svn: 78791
* Make the big switch: Change MCSectionMachO to represent a section *semantically*Chris Lattner2009-08-101-2/+2
| | | | | | | | | | | | | | | | instead of syntactically as a string. This means that it keeps track of the segment, section, flags, etc directly and asmprints them in the right format. This also includes parsing and validation support for llvm-mc and "attribute(section)", so we should now start getting errors about invalid section attributes from the compiler instead of the assembler on darwin. Still todo: 1) Uniquing of darwin mcsections 2) Move all the Darwin stuff out to MCSectionMachO.[cpp|h] 3) there are a few FIXMEs, for example what is the syntax to get the S_GB_ZEROFILL segment type? llvm-svn: 78547
* Revert r75663 (and r76805), as it is causing regressions on powerpc.Dan Gohman2009-07-231-20/+12
| | | | llvm-svn: 76823
* Add -march=ppc32 lines so that this test doesn't ever default to ppc64.Dan Gohman2009-07-221-2/+2
| | | | llvm-svn: 76805
* Teach MachineInstr::isRegTiedToDefOperand() to correctly parse inline asm ↵Jakob Stoklund Olesen2009-07-161-0/+16
| | | | | | | | | | | operands. The inline asm operands must be parsed from the first flag, you cannot assume that an immediate operand preceeding a register use operand is the flag. PowerPC "m" operands are represented as (flag, imm, reg) triples. isRegTiedToDefOperand() would incorrectly interpret the imm as the flag. llvm-svn: 76101
* get the PPC stub temporary label from the mangler instead of Chris Lattner2009-07-151-4/+4
| | | | | | | using horrible string hacking. This gives us a different label, but it's just an assembler temporary, so the name doesn't matter. llvm-svn: 75733
* convert this to filecheck style and make it a test of darwin/PPC's Chris Lattner2009-07-151-1/+57
| | | | | | extremely elaborate pic/nopic stubs. llvm-svn: 75726
* simplify this test to test the esentials.Chris Lattner2009-07-151-57/+3
| | | | llvm-svn: 75725
* convert this test to filecheck styleChris Lattner2009-07-141-12/+20
| | | | llvm-svn: 75663
* Reapply my previous asmprinter changes now with more testing and two Chris Lattner2009-07-141-6/+4
| | | | | | | | | | | | | | | | | | | | additional bug fixes: 1. The bug that everyone hit was a problem in the asmprinter where it would remove $stub but keep the L prefix on a name when emitting the indirect symbol. This is easy to fix by keeping the name of the stub and the name of the symbol in a StringMap instead of just keeping a StringSet and trying to reconstruct it late. 2. There was a problem printing the personality function. The current logic to print out the personality function from the DWARF information is a bit of a cesspool right now that duplicates a bunch of other logic in the asm printer. The short version of it is that it depends on emitting both the L and _ prefix for symbols (at least on darwin) and until I can untangle it, it is best to switch the mangler back to emitting both prefixes. llvm-svn: 75646
* Change the internal interface to makeNameProper to take a bool thatChris Lattner2009-07-141-7/+7
| | | | | | | | | | | | indicates whether the label is private or not, instead of taking prefix stuff. One effect of this is that symbols will be generated with *just* the private prefix, instead of both the private prefix *and* the user-label-prefix, but this doesn't matter as long as it is consistent. For example we'll now get "Lfoo" instead of "L_foo". These are just assembler temporary labels anyway, so they never even make it into the .o file. llvm-svn: 75607
* Check in a reduced version of this testcase.Dan Gohman2009-07-131-17376/+563
| | | | llvm-svn: 75544
* Add testcases for PR4538, PR4537, and PR4534.Dan Gohman2009-07-131-0/+17396
| | | | llvm-svn: 75533
* Fix codegen for references to available_externally symbols. This fixesChris Lattner2009-07-011-0/+69
| | | | | | PR4482. llvm-svn: 74613
* Don't grep the -debug output. This isn't the way to test changes.Bill Wendling2009-06-251-1/+0
| | | | llvm-svn: 74211
OpenPOWER on IntegriCloud