summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMTargetMachine.cpp
Commit message (Collapse)AuthorAgeFilesLines
* I added a new file ARMAsmBackend which stubs out in similar ways toJason W Kim2010-09-301-0/+6
| | | | | | | | | | the eqv X86 class. For now, I split the ELFARMAsmBackend from the DarwinARMAsmBackend (also mimicking X86) Tested against -r115126 llvm-svn: 115129
* Resolve this GCC warning:Nick Lewycky2010-09-281-1/+2
| | | | | | ARMTargetMachine.cpp:53: error: control reaches end of non-void function llvm-svn: 114992
* Odd additional stub framework for the ARM MC ELF emission.Rafael Espindola2010-09-271-14/+39
| | | | | | | | | llc now recognizes the "intent" to support MC/obj emission for ARM, but given that they are all stubs, it asserts on --filetype=obj --march=arm Patch by Jason Kim. llvm-svn: 114856
* Convert some VTBL and VTBX instructions to use pseudo instructions prior toBob Wilson2010-09-131-3/+0
| | | | | | | register allocation. Remove the NEONPreAllocPass, which is no longer needed. Yeah!! llvm-svn: 113818
* Report error if codegen tries to instantiate a ARM target when the cpu does ↵Evan Cheng2010-08-111-0/+3
| | | | | | support it. e.g. cortex-m* processors. llvm-svn: 110798
* Change -prefer-32bit-thumb to attribute -mattr=+32bit instead to disable ↵Evan Cheng2010-08-091-7/+1
| | | | | | more 32-bit to 16-bit optimizations. llvm-svn: 110584
* Add an option to disable 32 -> 16-bit Thumb2 size reduction pass for ↵Evan Cheng2010-08-091-2/+7
| | | | | | experimentation. llvm-svn: 110579
* Hook in GlobalMerge passAnton Korobeynikov2010-07-241-1/+7
| | | | llvm-svn: 109359
* Remove early IT block formation. It's not used.Evan Cheng2010-07-021-8/+0
| | | | llvm-svn: 107513
* Add missing ARM and Thumb data layout info for vector types.Bob Wilson2010-06-251-4/+8
| | | | | | Radar 8128745. llvm-svn: 106820
* Oops. IT block formation pass needs to be run at any optimization level.Evan Cheng2010-06-241-4/+3
| | | | llvm-svn: 106775
* Move ARM if-conversion before post-ra scheduling.Evan Cheng2010-06-181-15/+2
| | | | llvm-svn: 106355
* Allow ARM if-converter to be run after post allocation scheduling.Evan Cheng2010-06-181-2/+5
| | | | | | | | | | | | | | | | - This fixed a number of bugs in if-converter, tail merging, and post-allocation scheduler. If-converter now runs branch folding / tail merging first to maximize if-conversion opportunities. - Also changed the t2IT instruction slightly. It now defines the ITSTATE register which is read by instructions in the IT block. - Added Thumb2 specific hazard recognizer to ensure the scheduler doesn't change the instruction ordering in the IT block (since IT mask has been finalized). It also ensures no other instructions can be scheduled between instructions in the IT block. This is not yet enabled. llvm-svn: 106344
* Make post-ra scheduling, anti-dep breaking, and register scavenger ↵Evan Cheng2010-06-161-2/+11
| | | | | | (conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler. llvm-svn: 106091
* Typo.Evan Cheng2010-06-091-1/+1
| | | | llvm-svn: 105677
* Thumb2 IT blocks are fairly expensive. When there are multiple selects usingEvan Cheng2010-06-091-0/+10
| | | | | | | | | | | | | | | the same condition, it's important to make sure they are scheduled together to avoid forming multiple IT blocks. I'm adding a pre-regalloc pass that forms IT blocks early (by re-scheduling instructions and split basic blocks) to attempt to fix this. This is not turned on by default since I am not sure this is the right fix. Another issue is llvm selects are modeled as two-address conditional moves. This can be very bad when the copies before the conditional moves are not coalesced away. Teach IT formation pass to move the copies above the IT block (when legal) to avoid breaking the IT block. llvm-svn: 105669
* Implement a bunch more TargetSelectionDAGInfo infrastructure.Dan Gohman2010-05-111-2/+4
| | | | | | | | Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and EmitTargetCodeForMemmove out of TargetLowering and into SelectionDAGInfo to exercise this. llvm-svn: 103481
* Remove late ARM codegen optimization pass committed by accident.Anton Korobeynikov2010-04-071-7/+1
| | | | | | It is not ready for public yet. llvm-svn: 100673
* Move NEON-VFP domain fixer upper, so post-RA scheduler would benefit from it.Anton Korobeynikov2010-04-071-4/+6
| | | | llvm-svn: 100668
* Some initial version of global mergerAnton Korobeynikov2010-04-071-1/+7
| | | | llvm-svn: 100641
* TargetRegistry: Fix create{AsmInfo,MCDisassembler} to return non-const objects.Daniel Dunbar2010-03-201-1/+1
| | | | llvm-svn: 99097
* remove dead code.Chris Lattner2010-02-021-24/+0
| | | | llvm-svn: 95134
* eliminate all the dead addSimpleCodeEmitter implementations.Chris Lattner2010-02-021-25/+0
| | | | | | | eliminate random "code emitter" stuff in Alpha, except for the JIT path. Next up, remove the template cruft. llvm-svn: 95131
* For aligned load/store instructions, it's only required to know whether aJim Grosbach2010-01-191-4/+0
| | | | | | | | | | | 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
* Factor the stack alignment calculations out into a target independent pass.Jim Grosbach2009-12-021-1/+1
| | | | | | No functionality change. llvm-svn: 90336
* Detect need for autoalignment of the stack earlier to catch spills moreJim Grosbach2009-11-151-0/+4
| | | | | | | conservatively. eliminateFrameIndex() machinery adjust to handle addr mode 6 (vld1/vst1) used for spills. Fix tests to expect aligned Q-reg spilling llvm-svn: 88874
* indicate what the native integer types for the target are.Chris Lattner2009-11-071-4/+4
| | | | | | Please verify. llvm-svn: 86397
* - Add pseudo instructions tLDRpci_pic and t2LDRpci_pic which does a pc-relativeEvan Cheng2009-11-061-0/+4
| | | | | | | | | | | | load of a GV from constantpool and then add pc. It allows the code sequence to be rematerializable so it would be hoisted by machine licm. - Add a late pass to break these pseudo instructions into a number of real instructions. Also move the code in Thumb2 IT pass that breaks up t2MOVi32imm to this pass. This is done before post regalloc scheduling to allow the scheduler to proper schedule these instructions. It also allow them to be if-converted and shrunk by later passes. llvm-svn: 86304
* Pass StringRef by value.Daniel Dunbar2009-11-061-2/+1
| | | | llvm-svn: 86251
* Move subtarget check upper for NEON reg-reg fixup pass.Anton Korobeynikov2009-11-031-1/+2
| | | | llvm-svn: 85914
* Turn neon reg-reg moves fixup code into separate pass. This should reduce ↵Anton Korobeynikov2009-11-031-2/+5
| | | | | | the compile time. llvm-svn: 85850
* Revert r85346 change to control tail merging by CodeGenOpt::Level.Bob Wilson2009-10-281-1/+1
| | | | | | I'm going to redo this using the OptimizeForSize function attribute. llvm-svn: 85426
* Record CodeGen optimization level in the BranchFolding pass so that we canBob Wilson2009-10-271-1/+1
| | | | | | | | | | | | | | | | use it to control tail merging when there is a tradeoff between performance and code size. When there is only 1 instruction in the common tail, we have been merging. That can be good for code size but is a definite loss for performance. Now we will avoid tail merging in that case when the optimization level is "Aggressive", i.e., "-O3". Radar 7338114. Since the IfConversion pass invokes BranchFolding, it too needs to know the optimization level. Note that I removed the RegisterPass instantiation for IfConversion because it required a default constructor. If someone wants to keep that for some reason, we can add a default constructor with a hard-wired optimization level. llvm-svn: 85346
* Revert 84843. Evan, this was breaking some of the if-conversion tests.Bob Wilson2009-10-221-3/+5
| | | | llvm-svn: 84868
* Move if-conversion before post-regalloc scheduling so the predicated ↵Evan Cheng2009-10-221-5/+3
| | | | | | instruction get scheduled properly. llvm-svn: 84843
* Trim include.Evan Cheng2009-10-221-1/+0
| | | | llvm-svn: 84831
* Move load / store multiple before post-alloc scheduling.Evan Cheng2009-10-021-10/+2
| | | | llvm-svn: 83236
* Add a option which would move ld/st multiple pass before post-alloc scheduling.Evan Cheng2009-09-301-1/+16
| | | | llvm-svn: 83145
* Pass the optimization level when constructing the ARM instruction selector.Bob Wilson2009-09-281-1/+1
| | | | | | | Otherwise, it is always set to "default", which prevents debug info from even being generated during isel. Radar 7250345. llvm-svn: 82988
* Enable pre-regalloc load / store multiple pass for Thumb2.Evan Cheng2009-09-271-6/+5
| | | | llvm-svn: 82893
* Really remove this option.Evan Cheng2009-09-261-3/+0
| | | | llvm-svn: 82838
* Remove a couple of unused command line options.Evan Cheng2009-09-261-7/+3
| | | | llvm-svn: 82837
* trivial whitespace cleanupJim Grosbach2009-09-141-2/+2
| | | | llvm-svn: 81773
* rename COFFMCAsmInfo -> MCAsmInfoCOFF, likewise for darwin.Chris Lattner2009-08-221-1/+1
| | | | llvm-svn: 79773
* Rename TargetAsmInfo (and its subclasses) to MCAsmInfo.Chris Lattner2009-08-221-6/+6
| | | | llvm-svn: 79763
* Turn on if-conversion for thumb2.Evan Cheng2009-08-151-6/+4
| | | | llvm-svn: 79084
* Revert 78892 and 78895, these break generating working executables onDaniel Dunbar2009-08-131-1/+1
| | | | | | | | | | | | | | | | | | | | | 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 a minor fixme. When building with SL and later tools, the ".eh" symbolsChris Lattner2009-08-131-1/+1
| | | | | | don't need to be exported from the .o files. llvm-svn: 78892
* Change TargetAsmInfo to be constructed via TargetRegistry from a Target+TripleChris Lattner2009-08-121-10/+16
| | | | | | | | pair instead of from a virtual method on TargetMachine. This cuts the final ties of TargetAsmInfo to TargetMachine, meaning that MC can now use TargetAsmInfo. llvm-svn: 78802
* pass the TargetTriple down from each target ctor to theChris Lattner2009-08-111-1/+1
| | | | | | LLVMTargetMachine ctor. It is currently unused. llvm-svn: 78711
OpenPOWER on IntegriCloud