summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM
Commit message (Collapse)AuthorAgeFilesLines
* move the various directive enums out of the MCStreamer classChris Lattner2010-01-231-1/+1
| | | | | | into a new MCDirectives.h file. llvm-svn: 94294
* Stop building RTTI information for *most* llvm libraries. NotableChris Lattner2010-01-224-0/+4
| | | | | | | | | | | missing ones are libsupport, libsystem and libvmcore. libvmcore is currently blocked on bugpoint, which uses EH. Once it stops using EH, we can switch it off. This #if 0's out 3 unit tests, because gtest requires RTTI information. Suggestions welcome on how to fix this. llvm-svn: 94164
* create a new MCParser library and move some stuff into it.Chris Lattner2010-01-221-7/+7
| | | | llvm-svn: 94129
* Fix PR5694. The CMN instructions set the flags differently from CMP, so theyJim Grosbach2010-01-225-15/+31
| | | | | | | cannot be directly interchanged for comparisons against negated values. Disable the CMN instructions for the time being. llvm-svn: 94119
* inline and radically simplify printDataDirective. It will eventuallyChris Lattner2010-01-201-1/+6
| | | | | | go completely away. llvm-svn: 93994
* revert 93934, removing the MCAsmInfo endianness bit. I can'tChris Lattner2010-01-201-2/+2
| | | | | | | stomache MCAsmInfo having this, and I found a better solution to this layering issue. llvm-svn: 93985
* Wrap some comments to 80 columns.Bob Wilson2010-01-191-2/+4
| | | | llvm-svn: 93940
* give MCAsmInfo a 'has little endian' bit. This is unfortunate, butChris Lattner2010-01-191-2/+2
| | | | | | | | | I really want clients of the streamer to be able to say "emit this 64-bit integer" and have it get broken down right by the streamer. I may change this in the future, we'll see how it works out. llvm-svn: 93934
* Promoted the getTok() method to MCAsmParser so thatSean Callanan2010-01-191-29/+29
| | | | | | | the two token accessor functions are declared consistently. Modified the clients of MCAsmParser to reflect this change. llvm-svn: 93916
* Remove predicates when changing an add into an unpredicable mov.Jakob Stoklund Olesen2010-01-192-5/+13
| | | | | | | Since the mov is executed unconditionally, make sure that the add didn't have any predicate. llvm-svn: 93909
* Propagated the parser-side Lex function's declaration toSean Callanan2010-01-191-32/+32
| | | | | | | MCAsmParser, and changed the target-specific AsmParsers to use it. llvm-svn: 93900
* 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
OpenPOWER on IntegriCloud