aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
* Don't put IT instruction before conditional branches.Evan Cheng2009-07-111-5/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75361 91177308-0d34-0410-b5e6-96231b3b80d8
* Smarter isel of ldrsb / ldrsh. Only make use of these when [r,r] address is ↵Evan Cheng2009-07-113-19/+15
| | | | | | feasible. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75360 91177308-0d34-0410-b5e6-96231b3b80d8
* Major changes to Thumb (not Thumb2). Many 16-bit instructions either ↵Evan Cheng2009-07-1112-296/+430
| | | | | | | | | modifies CPSR when they are outside the IT blocks, or they can predicated when in Thumb2. Move the implicit def of CPSR to an optional def which defaults CPSR. This allows the 's' bit to be toggled dynamically. A side-effect of this change is asm printer is now using unified assembly. There are some minor clean ups and fixes as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75359 91177308-0d34-0410-b5e6-96231b3b80d8
* 80 col violation.Evan Cheng2009-07-111-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75358 91177308-0d34-0410-b5e6-96231b3b80d8
* Add superclasses of ARM Neon quad registers. The Q2PR class contains pairs ofBob Wilson2009-07-101-8/+106
| | | | | | | quad registers and the Q4PR class holds sets of 4 quad registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75309 91177308-0d34-0410-b5e6-96231b3b80d8
* remove the "debug" modifier, it is only used by one instruction which canChris Lattner2009-07-102-2/+2
| | | | | | | never be generated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75305 91177308-0d34-0410-b5e6-96231b3b80d8
* make pcrel and non-pcrel global printing more similar.Chris Lattner2009-07-101-11/+19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75298 91177308-0d34-0410-b5e6-96231b3b80d8
* Undo my brain cramp.Evan Cheng2009-07-102-67/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75290 91177308-0d34-0410-b5e6-96231b3b80d8
* code model is never set to default.Chris Lattner2009-07-101-4/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75278 91177308-0d34-0410-b5e6-96231b3b80d8
* fix indentationChris Lattner2009-07-101-14/+14
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75277 91177308-0d34-0410-b5e6-96231b3b80d8
* remove the now-dead TM argument to these methods.Chris Lattner2009-07-105-10/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75276 91177308-0d34-0410-b5e6-96231b3b80d8
* make PIC vs DynamicNoPIC be explicit in PICStyles.Chris Lattner2009-07-103-21/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75275 91177308-0d34-0410-b5e6-96231b3b80d8
* some minor simplifications.Chris Lattner2009-07-102-14/+32
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75274 91177308-0d34-0410-b5e6-96231b3b80d8
* add a couple of predicates to test for "stub style pic in PIC mode" and ↵Chris Lattner2009-07-105-34/+40
| | | | | | "stub style pic in dynamic-no-pic" mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75273 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid compiler warnings when assertions are turned off.Duncan Sands2009-07-101-4/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75269 91177308-0d34-0410-b5e6-96231b3b80d8
* CMOVxx doesn't swap operands which it's commuted.Evan Cheng2009-07-102-0/+67
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75266 91177308-0d34-0410-b5e6-96231b3b80d8
* Predicate VFP instructions on HasVFP2 instead of IsARM. This allows VFP ↵David Goodwin2009-07-102-14/+42
| | | | | | instructions with thumb-2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75254 91177308-0d34-0410-b5e6-96231b3b80d8
* Update for GlobalVariables ctor change.Owen Anderson2009-07-101-3/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75251 91177308-0d34-0410-b5e6-96231b3b80d8
* t2LDM_RET does not fall-through.David Goodwin2009-07-101-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75250 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Thumb2ITBlockPass.cpp to CMakeLists.txt, fixingDuncan Sands2009-07-101-0/+1
| | | | | | | the cmake build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75246 91177308-0d34-0410-b5e6-96231b3b80d8
* make this more like printOperand. Perhaps some merging will happenChris Lattner2009-07-101-3/+2
| | | | | | | tomorrow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75245 91177308-0d34-0410-b5e6-96231b3b80d8
* simplify fast isel by using ClassifyGlobalReference. ThisChris Lattner2009-07-103-53/+14
| | | | | | | elimiantes the last use of GVRequiresExtraLoad, so delete it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75244 91177308-0d34-0410-b5e6-96231b3b80d8
* eliminate GVRequiresRegister, replacing it with predicates we Chris Lattner2009-07-103-24/+9
| | | | | | | need for other purposes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75243 91177308-0d34-0410-b5e6-96231b3b80d8
* change a bunch of logic in LowerGlobalAddress to leverage the workChris Lattner2009-07-101-17/+10
| | | | | | | | done in ClassifyGlobalReference instead of reconstructing the info awkwardly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75240 91177308-0d34-0410-b5e6-96231b3b80d8
* add a predicate to determine if a global var reference requires aChris Lattner2009-07-101-0/+16
| | | | | | | PIC-base to be added in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75238 91177308-0d34-0410-b5e6-96231b3b80d8
* move some classification logic around. Now GVRequiresExtraLoadChris Lattner2009-07-103-74/+100
| | | | | | | | | is just a trivial wrapper around "ClassifyGlobalReference", which stole a ton of logic from LowerGlobalAddress. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75237 91177308-0d34-0410-b5e6-96231b3b80d8
* change isGlobalStubReference to take target flags instead of a MachineOperand.Chris Lattner2009-07-104-9/+9
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75236 91177308-0d34-0410-b5e6-96231b3b80d8
* convert some late code (called by regalloc and code emission)Chris Lattner2009-07-102-12/+5
| | | | | | | | to use isGlobalStubReference instead of GVRequiresExtraLoad (which should really be part of isel). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75234 91177308-0d34-0410-b5e6-96231b3b80d8
* add a new predicate method that says whether a GlobalValue Chris Lattner2009-07-101-1/+27
| | | | | | | | MachineOperand is a reference to a stub, not a reference to the global variable itself. Look no context needed! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75233 91177308-0d34-0410-b5e6-96231b3b80d8
* GVRequiresExtraLoad is now never used for calls, simplify it based on this.Chris Lattner2009-07-106-17/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75232 91177308-0d34-0410-b5e6-96231b3b80d8
* actually, just eliminate PCRelGVRequiresExtraLoad. It makes the codeChris Lattner2009-07-104-22/+2
| | | | | | | more complex and slow than just directly testing what we care about. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75231 91177308-0d34-0410-b5e6-96231b3b80d8
* There is only one case where GVRequiresExtraLoad returns true for calls:Chris Lattner2009-07-104-80/+37
| | | | | | | | split its handling out to PCRelGVRequiresExtraLoad, and simplify code based on this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75230 91177308-0d34-0410-b5e6-96231b3b80d8
* the "isDirectCall" operand of GVRequiresRegister is always false, eliminate it.Chris Lattner2009-07-103-11/+9
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75229 91177308-0d34-0410-b5e6-96231b3b80d8
* split call handling out of X86SelectAddress into X86SelectCallAddressChris Lattner2009-07-101-18/+164
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75228 91177308-0d34-0410-b5e6-96231b3b80d8
* convert a helper method to be a static function instead of a Chris Lattner2009-07-101-11/+14
| | | | | | | template. Also convert it to take a MachineOperand instead of a GV* git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75227 91177308-0d34-0410-b5e6-96231b3b80d8
* More info about Thumb1 predication support.Evan Cheng2009-07-101-1/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75220 91177308-0d34-0410-b5e6-96231b3b80d8
* We don't need separate thumb1 instructions tADDSi3 etc. for addc and subc. ↵Evan Cheng2009-07-101-36/+28
| | | | | | The "normal" version always modify condition register CPSR so we should just use def : pat to match to the same instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75219 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a thumb2 pass to insert IT blocks.Evan Cheng2009-07-106-10/+130
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75218 91177308-0d34-0410-b5e6-96231b3b80d8
* Move isPredicated from .cpp to .hEvan Cheng2009-07-102-6/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75217 91177308-0d34-0410-b5e6-96231b3b80d8
* 80 col violation.Evan Cheng2009-07-101-1/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75212 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove a bogus assertion.Evan Cheng2009-07-101-2/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75206 91177308-0d34-0410-b5e6-96231b3b80d8
* Replace TM.getRegisterInfo() calls by TRI instance variable.Bob Wilson2009-07-101-25/+24
| | | | | | | Use getAsmName() method instead of accessing AsmName field directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75205 91177308-0d34-0410-b5e6-96231b3b80d8
* Handle 'a' modifier on inline assembly operands.Bob Wilson2009-07-091-2/+7
| | | | | | | This is part of the fix for pr4521. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75201 91177308-0d34-0410-b5e6-96231b3b80d8
* Added Thumb IT instruction.Evan Cheng2009-07-092-0/+25
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75198 91177308-0d34-0410-b5e6-96231b3b80d8
* Another todo entry.Evan Cheng2009-07-091-0/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75192 91177308-0d34-0410-b5e6-96231b3b80d8
* Initial support for load / store multiple opt pass Thumb2 support ↵Evan Cheng2009-07-091-55/+158
| | | | | | (post-allocation only). It's kind of there, but not quite. I'll return to this later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75190 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix ldm / stm unified syntax; add t2LDM_RET.Evan Cheng2009-07-091-2/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75188 91177308-0d34-0410-b5e6-96231b3b80d8
* LDM_RET should be marked mayLoad.Evan Cheng2009-07-091-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75187 91177308-0d34-0410-b5e6-96231b3b80d8
* If -fomit-frame-pointer is used, we still need to record when the %esp registerBill Wendling2009-07-091-1/+20
| | | | | | | | | | | | | | is modified. Otherwise, the unwinder will get confused. The old code (before I started my hacking) did this. It dropped on the floor, because I wasn't aware of this requirement. On the plus side, if we use "alloca" in a function, we create frame pointers even with -fomit-frame-pointer is enabled! This is a Good Thing(tm)!!! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75183 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix ldrd / strd address mode matching code. It allows for +/- 8 bit offset. ↵Evan Cheng2009-07-093-3/+22
| | | | | | | | | Also change the printer to make the scale 4 explicit. Note, we are not yet generating these instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75181 91177308-0d34-0410-b5e6-96231b3b80d8