summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM
Commit message (Collapse)AuthorAgeFilesLines
* Generalize mcasmstreamer data emission APIs to take an address spaceChris Lattner2010-01-191-1/+1
| | | | | | identifier. There is no way to work around it. llvm-svn: 93896
* For aligned load/store instructions, it's only required to know whether aJim Grosbach2010-01-194-6/+11
| | | | | | | | | | | function can support dynamic stack realignment. That's a much easier question to answer at instruction selection stage than whether the function actually will have dynamic alignment prologue. This allows the removal of the stack alignment heuristic pass, and improves code quality for cases where the heuristic would result in dynamic alignment code being generated when it was not strictly necessary. llvm-svn: 93885
* zap the ARM version of PrintGlobalVariable, which I missed.Chris Lattner2010-01-191-113/+0
| | | | llvm-svn: 93863
* some cleanupsChris Lattner2010-01-191-4/+2
| | | | llvm-svn: 93853
* add a bool for whether .lcomm takes an alignment instead of basing this on ↵Chris Lattner2010-01-191-7/+5
| | | | | | "isdarwin". llvm-svn: 93852
* hoist handling of external globals and special globals up to common code.Chris Lattner2010-01-191-23/+16
| | | | | | | | | | This makes a similar code dead in all the other targets, I'll clean it up in a bit. This also moves handling of lcomm up before acquisition of a section, since lcomm never needs a section. llvm-svn: 93851
* move production of .reference directives for static ctor/dtor list onChris Lattner2010-01-191-10/+1
| | | | | | darwin into common code. llvm-svn: 93849
* use BSSLocal classifier to identify 'lcomm' data instead ofChris Lattner2010-01-191-17/+9
| | | | | | duplicating the logic (differently) in lots of different targets. llvm-svn: 93847
* now that elf weak bss symbols are handled correctly, simplify a bunch of code.Chris Lattner2010-01-191-29/+4
| | | | llvm-svn: 93845
* introduce a section kind for common linkage. Use this to slightlyChris Lattner2010-01-191-2/+21
| | | | | | | | | simplify and commonize some of the asmprinter logic for globals. This also avoids printing the MCSection for .zerofill, which broke the llvm-gcc build. llvm-svn: 93843
* change an accessor to a predicate.Chris Lattner2010-01-191-2/+2
| | | | llvm-svn: 93839
* Cleanup handling of .zerofill on darwin:Chris Lattner2010-01-191-52/+57
| | | | | | | | | | | | | 1. TargetLoweringObjectFileMachO should decide if something goes in zerofill instead of having every target do it. 2. TargetLoweringObjectFileMachO should assign said symbols to the right MCSection, the asmprinters should just emit to the right section. 3. Since all zerofill stuff goes through mcstreamer anymore, MAI can have a bool "haszerofill" instead of having the textual directive to emit. llvm-svn: 93838
* Fix r93758. Use isel patterns instead of c++ selection code to select rbit ↵Evan Cheng2010-01-193-8/+7
| | | | | | and make sure we pick different instructions for ARM vs. Thumb2. llvm-svn: 93829
* Minor cleanup for jump table printing. Need a reference, not a pointer, forJim Grosbach2010-01-181-1/+1
| | | | | | printing via <<. Otherwise we just print the pointer value. llvm-svn: 93777
* The most significant encoding bit of GPR:$src or GPR:$dst was over-specified inJohnny Chen2010-01-181-5/+5
| | | | | | | | the various MOV (register) instructions (16-bit Thumb), including tBRIND (the indirect branch). Instead of '1', it should be specified as '?', because GPR only specifies the register class, which includes both hi-and-lo registers. llvm-svn: 93759
* Patch by David Conrad:Jim Grosbach2010-01-185-1/+34
| | | | | | | "On ARMv6T2 this turns cttz into rbit, clz instead of the 4 instruction sequence it is now." llvm-svn: 93758
* Emit spaces after commas in Neon register lists. This is more consistentBob Wilson2010-01-181-30/+33
| | | | | | | with the rest of the assembly output, is easier to read, and matches the expected output for gcc's Neon tests. llvm-svn: 93703
* remove the MAI argument to MCExpr::print and switch overthing to use << when ↵Chris Lattner2010-01-181-1/+1
| | | | | | printing them. llvm-svn: 93699
* now that MCSymbol::print doesn't use it's MAI argument, we can Chris Lattner2010-01-171-104/+48
| | | | | | | remove it and change all the code that prints MCSymbols to use << instead, which is much simpler and cleaner. llvm-svn: 93695
* The Neon "vtst" instruction takes a suffix that is the element size alone --Bob Wilson2010-01-171-1/+1
| | | | | | | | adding an "i" to the suffix, indicating that the elements are integers, is accepted but not part of the standard syntax. This helps us pass a few more of the Neon tests from gcc. llvm-svn: 93677
* Fix an off-by-one error that caused the chain operand to be dropped from NeonBob Wilson2010-01-171-2/+2
| | | | | | vector load-lane and store-lane instructions. llvm-svn: 93673
* rename GetPrivateGlobalValueSymbolStub -> GetSymbolWithGlobalValueBase,Chris Lattner2010-01-161-1/+1
| | | | | | | | and add an explicit ForcePrivate argument. Switch FunctionEHFrameInfo to be MCSymbol based instead of string based. llvm-svn: 93646
* eliminate uses of mangler and simplify code.Chris Lattner2010-01-161-12/+2
| | | | llvm-svn: 93615
* MCize a bunch more stuff, eliminating a lot of uses of the manglerChris Lattner2010-01-161-10/+26
| | | | | | and CurrentFnName. llvm-svn: 93594
* add a version of AsmPrinter::printVisibility that takes an MCSymbol.Chris Lattner2010-01-151-4/+1
| | | | llvm-svn: 93587
* use MCSymbol instead of getMangledName() in all cases except one.Chris Lattner2010-01-151-29/+62
| | | | llvm-svn: 93582
* mc'ize a bunch of symbol stuff, eliminating std::strings.Chris Lattner2010-01-151-12/+9
| | | | llvm-svn: 93578
* add a AsmPrinter::GetGlobalValueSymbol and GetExternalSymbolSymbolChris Lattner2010-01-151-4/+2
| | | | | | helper method, use it to simplify some code. llvm-svn: 93575
* Update Thumb1 storeRegToStackSlot() and loadRegFromStackSlot() to properlyJim Grosbach2010-01-151-2/+6
| | | | | | | handle physical registers R0-R7 when described as having a non-tGPR register class. llvm-svn: 93564
* Name change for consistency. No functional change.Jim Grosbach2010-01-151-7/+7
| | | | llvm-svn: 93480
* EmitAtomicCmpSwap() custome inserter needs to delete the MI passed in. ↵Jim Grosbach2010-01-151-0/+3
| | | | | | EmitAtomicBinary() already does this. llvm-svn: 93479
* Added 16-bit Thumb Load/Store immediate instructions with encoding bits so thatJohnny Chen2010-01-141-0/+24
| | | | | | the disassembler can properly decode Load/Store register/immediate instructions. llvm-svn: 93471
* Split the TargetAsmParser "ParseInstruction" interface in half:Chris Lattner2010-01-141-20/+14
| | | | | | | | | | | the new ParseInstruction method just parses and returns a list of target operands. A new MatchInstruction interface is used to turn the operand list into an MCInst. This requires new/deleting all the operands, but it also gives targets the ability to use polymorphic operands if they want to. llvm-svn: 93469
* prune #includes in TargetAsmParser.hChris Lattner2010-01-141-2/+4
| | | | | | | Pass in SMLoc of instr opcode into ParseInstruction. Make AsmToken be a class, not a struct. llvm-svn: 93457
* introduce MCParsedAsmOperandChris Lattner2010-01-141-1/+2
| | | | llvm-svn: 93455
* ARM "l" constraint for inline asm means R0-R7, also for Thumb2.Jakob Stoklund Olesen2010-01-141-2/+2
| | | | | | | | | This is consistent with llvm-gcc's arm/constraints.md. Certain instructions (e.g. CBZ, CBNZ) require a low register, even in Thumb2 mode. llvm-svn: 93436
* Don't fold insufficiently aligned ldr/str into ldm/stm instructions.Jakob Stoklund Olesen2010-01-141-0/+12
| | | | | | | | | | | | | An unaligned ldr causes a trap, and is then emulated by the kernel with awesome performance. The darwin kernel does not emulate unaligned ldm/stm Thumb2 instructions, so don't generate them. This fixes the miscompilation of Multisource/Applications/JM/lencod for Thumb2. Generating unaligned ldr/str pairs from a 16-bit aligned memcpy is probably also a bad idea, but that is beyond the scope of this patch. llvm-svn: 93393
* Fixed a couple of places for Thumb MOV where encoding bits are underspecified.Johnny Chen2010-01-131-4/+3
| | | | llvm-svn: 93349
* Fix pastoJakob Stoklund Olesen2010-01-131-1/+1
| | | | llvm-svn: 93342
* upgrade and MC'ize a few uses of makeNameProper.Chris Lattner2010-01-131-5/+5
| | | | llvm-svn: 93310
* change Mangler::makeNameProper to return its result in a SmallVectorChris Lattner2010-01-131-12/+13
| | | | | | | | | | | | instead of returning it in an std::string. Based on this change: 1. Change TargetLoweringObjectFileCOFF::getCOFFSection to take a StringRef 2. Change a bunch of targets to call makeNameProper with a smallstring, making several of them *much* more efficient. 3. Rewrite Mangler::makeNameProper to not build names and then prepend prefixes, not use temporary std::strings, and to avoid other crimes. llvm-svn: 93298
* Remove the JustSP single-register regclass.Jakob Stoklund Olesen2010-01-132-14/+1
| | | | | | | | It was only being used by instructions with the t_addrmode_sp addressing mode, and that is pattern matched in a way that guarantees SP is used. There is never any register allocation done from this class. llvm-svn: 93280
* Minor change, change the order of two "let Inst{...}" stmts within multiclassJohnny Chen2010-01-081-1/+1
| | | | | | T2I_bin_ii12rs definition. llvm-svn: 93006
* 80 column violationsJim Grosbach2010-01-061-4/+6
| | | | llvm-svn: 92876
* Add Target hook to duplicate machine instructions.Jakob Stoklund Olesen2010-01-062-21/+48
| | | | | | | Some instructions refer to unique labels, and so cannot be trivially cloned with CloneMachineInstr. llvm-svn: 92873
* Addressing mode 6 (load/store) instructions can't encode an immediate offsetJim Grosbach2010-01-061-1/+4
| | | | | | for stack references. llvm-svn: 92871
* Undo r92785, it caused test failure.Johnny Chen2010-01-051-3/+3
| | | | llvm-svn: 92796
* Add Rt2 to the asm format string for 32-bit Thumb load/store register dualJohnny Chen2010-01-051-3/+3
| | | | | | instructions. Thumb does not have the restriction that t2 = t+1. llvm-svn: 92785
* Change SelectCode's argument from SDValue to SDNode *, to make it moreDan Gohman2010-01-052-165/+160
| | | | | | | | | clear what information these functions are actually using. This is also a micro-optimization, as passing a SDNode * around is simpler than passing a { SDNode *, int } by value or reference. llvm-svn: 92564
* Add missing include (for inline PATypeHolder::get).Benjamin Kramer2009-12-281-0/+1
| | | | llvm-svn: 92222
OpenPOWER on IntegriCloud