summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMCodeEmitter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove ISD::DEBUG_LOC and ISD::DBG_LABEL, which are no longer used.Dan Gohman2009-11-231-1/+0
| | | | | | | | Note that "hasDotLocAndDotFile"-style debug info was already broken; people wanting this functionality should implement it in the AsmPrinter/DwarfWriter code. llvm-svn: 89711
* Make the need-stub variables accurate and consistent. In the case ofJeffrey Yasskin2009-11-071-4/+5
| | | | | | | | | | | | | MachineRelocations, "stub" always refers to a far-call stub or a load-a-faraway-global stub, so this patch adds "Far" to the term. (Other stubs are used for lazy compilation and dlsym address replacement.) The variable was also inconsistent between the positive and negative sense, and the positive sense ("NeedStub") was more demanding than is accurate (since a nearby-enough function can be called directly even if the platform often requires a stub). Since the negative sense causes double-negatives, I switched to "MayNeedFarStub" globally. llvm-svn: 86363
* Add support for BlockAddress values in ARM constant pools.Bob Wilson2009-11-021-0/+1
| | | | llvm-svn: 85806
* Remove includes of Support/Compiler.h that are no longer needed after theNick Lewycky2009-10-251-1/+0
| | | | | | VISIBILITY_HIDDEN removal. llvm-svn: 85043
* Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.Nick Lewycky2009-10-251-2/+1
| | | | | | | Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
* Update processDebugLoc() so that it can be used to process debug info before ↵Devang Patel2009-10-061-1/+2
| | | | | | and after printing an instruction. llvm-svn: 83363
* strength reduce a ton of type equality tests to check the typeid (ThroughChris Lattner2009-10-051-2/+2
| | | | | | | | the new predicates I added) instead of going through a context and doing a pointer comparison. Besides being cheaper, this allows a smart compiler to turn the if sequence into a switch. llvm-svn: 83297
* Update ARM JIT emitter to account for ld/st multiple changes.Evan Cheng2009-10-011-3/+3
| | | | llvm-svn: 83192
* Introduce the TargetInstrInfo::KILL machine instruction and get rid of theJakob Stoklund Olesen2009-09-281-0/+1
| | | | | | | | | | unused DECLARE instruction. KILL is not yet used anywhere, it will replace TargetInstrInfo::IMPLICIT_DEF in the places where IMPLICIT_DEF is just used to alter liveness of physical registers. llvm-svn: 83006
* Make ARM and Thumb2 32-bit immediate materialization into a single 32-bit pseudoEvan Cheng2009-09-281-1/+2
| | | | | | | | | instruction. This makes it re-materializable. Thumb2 will split it back out into two instructions so IT pass will generate the right mask. Also, this expose opportunies to optimize the movw to a 16-bit move. llvm-svn: 82982
* Register the MachineModuleInfo for the ARM JIT, and update JITDwarfEmitter toDaniel Dunbar2009-09-211-0/+7
| | | | | | assert if the setModuleInfo hasn't been called. llvm-svn: 82441
* Proper support of non-lazy indirect symbols.Evan Cheng2009-09-101-8/+18
| | | | llvm-svn: 81422
* Fix double load / store multiple encoding.Evan Cheng2009-09-091-1/+1
| | | | llvm-svn: 81403
* Let Darwin linker auto-synthesize stubs and lazy-pointers. This deletes a ↵Evan Cheng2009-08-281-9/+2
| | | | | | bunch of nasty code in ARM asm printer. llvm-svn: 80404
* eliminate the last DOUTs from the targets.Chris Lattner2009-08-231-13/+8
| | | | llvm-svn: 79833
* remove various std::ostream version of printing methods fromChris Lattner2009-08-231-4/+4
| | | | | | | | MachineInstr and MachineOperand. This required eliminating a bunch of stuff that was using DOUT, I hope that bill doesn't mind me stealing his fun. ;-) llvm-svn: 79813
* Record variable debug info at ISel time directly.Devang Patel2009-08-221-1/+0
| | | | llvm-svn: 79742
* Push LLVMContexts through the IntegerType APIs.Owen Anderson2009-08-131-2/+2
| | | | llvm-svn: 78948
* Whitespace cleanup. Remove trailing whitespace.Jim Grosbach2009-08-111-9/+9
| | | | llvm-svn: 78666
* llvm_report_error already prints "LLVM ERROR:". So stop reporting errors ↵Benjamin Kramer2009-08-031-1/+1
| | | | | | like "LLVM ERROR: llvm: error:" or "LLVM ERROR: ERROR:". llvm-svn: 77971
* More migration to raw_ostream, the water has dried up around the iostream hole.Daniel Dunbar2009-07-251-10/+11
| | | | | | | | | | - Some clients which used DOUT have moved to DEBUG. We are deprecating the "magic" DOUT behavior which avoided calling printing functions when the statement was disabled. In addition to being unnecessary magic, it had the downside of leaving code in -Asserts builds, and of hiding potentially unnecessary computations. llvm-svn: 77019
* ARM code emitter can't handle Thumb2 instructions yet. So don't even try.Evan Cheng2009-07-251-4/+3
| | | | llvm-svn: 77018
* Get rid one of the getRegisterNumbering. Also add D16 - D31.Evan Cheng2009-07-221-3/+3
| | | | llvm-svn: 76725
* r76102 added the MachineCodeEmitter::processDebugLoc call and called it fromJeffrey Yasskin2009-07-171-1/+2
| | | | | | | the X86 Emitter. This patch extends that to the rest of the targets that can write to a MachineCodeEmitter: ARM, Alpha, and PPC. llvm-svn: 76211
* llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.Torok Edwin2009-07-141-10/+10
| | | | | | | | | This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). llvm-svn: 75640
* Remove extra \n from LLVM_UNREACHABLE calls.Torok Edwin2009-07-121-1/+1
| | | | llvm-svn: 75416
* Change how so_imm and t2_so_imm are handled. At instruction selection time, ↵Evan Cheng2009-07-081-7/+10
| | | | | | the immediates are no longer encoded in the imm8 + rot format, that are left as it is. The encoding is now done in ams printing and code emission time instead. llvm-svn: 75048
* Implement changes from Chris's feedback.Torok Edwin2009-07-081-7/+8
| | | | | | Finish converting lib/Target. llvm-svn: 75043
* Start converting to new error handling API.Torok Edwin2009-07-081-17/+17
| | | | | | | cerr+abort -> llvm_report_error assert(0)+abort -> LLVM_UNREACHABLE (assert(0)+llvm_unreachable-> abort() included) llvm-svn: 75018
* Add a todo.Evan Cheng2009-07-081-1/+2
| | | | llvm-svn: 74976
* Statically encode bit 25 to indicate immediate form of data processing ↵Evan Cheng2009-07-071-2/+0
| | | | | | instructions. Patch by Sean Callanan. llvm-svn: 74972
* Add bfc to armv6t2.Evan Cheng2009-07-061-0/+5
| | | | llvm-svn: 74868
* Add the Object Code Emitter class. Original patch by Aaron Gray, I did someBruno Cardoso Lopes2009-07-061-8/+9
| | | | | | cleanup, removed some #includes and moved Object Code Emitter out-of-line. llvm-svn: 74813
* Improve Thumb-2 jump table support.David Goodwin2009-06-301-3/+4
| | | | llvm-svn: 74549
* Split thumb-related stuff into separate classes.Anton Korobeynikov2009-06-261-2/+2
| | | | | | Step 1: ARMInstructionInfo => {ARM,Thumb}InstructionInfo llvm-svn: 74329
* Part 1.Evan Cheng2009-06-151-0/+4
| | | | | | | | | | | | | | | | | | | | | - Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent. - Allow targets to specify alternative register allocation orders based on allocation hint. Part 2. - Use the register allocation hint system to implement more aggressive load / store multiple formation. - Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g. v1025 = LDR v1024, 0 v1026 = LDR v1024, 0 => v1025,v1026 = LDRD v1024, 0 If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair. - Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions. This is work in progress, not yet enabled. llvm-svn: 73381
* Fix new CodeEmitter stuff to follow LLVM codying style. Patch by Aaron GrayBruno Cardoso Lopes2009-06-011-95/+99
| | | | llvm-svn: 72697
* First patch in the direction of splitting MachineCodeEmitter in two subclasses:Bruno Cardoso Lopes2009-05-301-51/+106
| | | | | | JITCodeEmitter and ObjectCodeEmitter. No functional changes yet. Patch by Aaron Gray llvm-svn: 72631
* Fix MachineCodeEmitter to use uintptr_t instead of intptr_t. This avoids ↵Evan Cheng2008-12-101-1/+1
| | | | | | some overflow issues. Patch by Thomas Jablin. llvm-svn: 60828
* Fix a thinko. MO is getOperand(i-1) so we don't have to adjust e.Evan Cheng2008-11-201-3/+1
| | | | llvm-svn: 59696
* Eliminate a compile time warning.Evan Cheng2008-11-191-4/+6
| | | | llvm-svn: 59678
* Fix MOVrx, MOVsrl_flag, and MOVsra_flag encodings.Evan Cheng2008-11-141-1/+49
| | | | llvm-svn: 59314
* Handle the rest of pseudo instructions.Evan Cheng2008-11-131-1/+18
| | | | llvm-svn: 59275
* Don't forget to emit stubs for function GV's emitted in CONSTPOOL_ENTRY's.Evan Cheng2008-11-131-3/+10
| | | | llvm-svn: 59258
* Missed a break statement.Evan Cheng2008-11-131-0/+1
| | | | llvm-svn: 59231
* Fix pre- and post-indexed load / store encoding bugs.Evan Cheng2008-11-131-7/+31
| | | | llvm-svn: 59230
* Address mode immediate offset has already been divided by 4.Evan Cheng2008-11-121-2/+1
| | | | llvm-svn: 59117
* Fix a VFP binary arithmetic instruction encoding bug.Evan Cheng2008-11-121-1/+1
| | | | llvm-svn: 59116
* Fix address mode 3 immediate offset mode encoding.Evan Cheng2008-11-121-5/+5
| | | | llvm-svn: 59109
* Consolidate formats; fix FCMPED etc. encodings.Evan Cheng2008-11-121-81/+44
| | | | llvm-svn: 59107
OpenPOWER on IntegriCloud