summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
Commit message (Collapse)AuthorAgeFilesLines
* rename MachineInstr::setInstrDescriptor -> setDescChris Lattner2008-01-111-1/+1
| | | | llvm-svn: 45871
* rename TargetInstrDescriptor -> TargetInstrDesc.Chris Lattner2008-01-071-2/+2
| | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695
* Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflectsChris Lattner2008-01-071-2/+2
| | | | | | | | | | | | | | | that it is cheap and efficient to get. Move a variety of predicates from TargetInstrInfo into TargetInstrDescriptor, which makes it much easier to query a predicate when you don't have TII around. Now you can use MI->getDesc()->isBranch() instead of going through TII, and this is much more efficient anyway. Not all of the predicates have been moved over yet. Update old code that used MI->getInstrDescriptor()->Flags to use the new predicates in many places. llvm-svn: 45674
* Add new shorter predicates for testing machine operands for various types: Chris Lattner2007-12-301-11/+11
| | | | | | | | | | | | e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on switching everything over, so new clients should just start using the shorter names. Remove old long accessors, switching everything over to use the short accessor: getMachineBasicBlock() -> getMBB(), getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc. llvm-svn: 45464
* Use MachineOperand::getImm instead of MachineOperand::getImmedValue. ↵Chris Lattner2007-12-301-1/+1
| | | | | | Likewise setImmedValue -> setImm llvm-svn: 45453
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Eliminate the remaining uses of getTypeSize. ThisDuncan Sands2007-11-051-1/+1
| | | | | | | | | | | | | | should only effect x86 when using long double. Now 12/16 bytes are output for long double globals (the exact amount depends on the alignment). This brings globals in line with the rest of LLVM: the space reserved for an object is now always the ABI size. One tricky point is that only 10 bytes should be output for long double if it is a field in a packed struct, which is the reason for the additional argument to EmitGlobalConstant. llvm-svn: 43688
* ARM: make branch folder remove unconditional branchesDale Johannesen2007-07-121-5/+2
| | | | | | | | following jump tables that it earlier inserted. This would be OK on other targets but is needed for correctness only on ARM (constant islands needs to find jump tables). llvm-svn: 39782
* Fix hang compiling TimberWolf (allow for islandsDale Johannesen2007-07-111-6/+7
| | | | | | of size other than 4). llvm-svn: 39743
* Didn't mean the last commit. Revert.Evan Cheng2007-07-101-8/+6
| | | | llvm-svn: 38515
* Update.Evan Cheng2007-07-101-6/+8
| | | | llvm-svn: 38513
* Reflects the chanegs made to PredicateOperand.Evan Cheng2007-07-051-1/+3
| | | | llvm-svn: 37898
* Fix comment.Evan Cheng2007-05-161-1/+1
| | | | llvm-svn: 37098
* Add PredicateOperand to all ARM instructions that have the condition field.Evan Cheng2007-05-151-6/+6
| | | | llvm-svn: 37066
* Drop 'const'Devang Patel2007-05-031-2/+2
| | | | llvm-svn: 36662
* Use 'static const char' instead of 'static const int'.Devang Patel2007-05-021-2/+2
| | | | | | | Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
* Do not use typeinfo to identify pass in pass manager.Devang Patel2007-05-011-0/+4
| | | | llvm-svn: 36632
* Rewrite of Thumb constant islands handling (exact allowance for paddingDale Johannesen2007-04-291-84/+222
| | | | | | around islands and jump tables). llvm-svn: 36573
* Doh. ARM::LEApcrel is a single instruction MI.Evan Cheng2007-04-271-5/+3
| | | | llvm-svn: 36513
* Special handling of LEApcrel and tLEApcrel.Evan Cheng2007-04-271-0/+11
| | | | llvm-svn: 36504
* Make Thumb funcs containing islands 4-byte aligned. Fix bugs maintainingDale Johannesen2007-04-231-6/+19
| | | | | | BBOffsets and BBSizes when adjusting conditional branches. llvm-svn: 36372
* Remove unused constant pool entries.Evan Cheng2007-04-031-32/+60
| | | | llvm-svn: 35635
* fix off by 1 error in displacement computationDale Johannesen2007-04-021-0/+5
| | | | llvm-svn: 35602
* - Track which callee-saved registers are spilled.Evan Cheng2007-03-011-1/+1
| | | | | | - Some code clean up. llvm-svn: 34783
* Changes requested in review of last pass. Also pulled isThumb into aDale Johannesen2007-02-281-113/+142
| | | | | | member, instead of resetting in every function that uses it. llvm-svn: 34764
* Add intelligence about where to break large blocks.Dale Johannesen2007-02-281-23/+73
| | | | llvm-svn: 34755
* cosmetic changes from review of last patch. obviousDale Johannesen2007-02-251-2/+2
| | | | llvm-svn: 34598
* remove crediting of Evan Cheng and me.Dale Johannesen2007-02-251-1/+0
| | | | llvm-svn: 34568
* Removed WaterListOffset, inserted BBOffsets. Remove TODO item about thisDale Johannesen2007-02-251-102/+105
| | | | | | | from README. When no water available, use end of block if in range. (More to do here.) llvm-svn: 34563
* rewrite of constant islandsDale Johannesen2007-02-231-73/+262
| | | | llvm-svn: 34523
* These vectors are frequently large. Use std::vector instead.Evan Cheng2007-02-091-10/+10
| | | | llvm-svn: 34109
* Add reference counting to constantpool entries. Delete the unused ones.Evan Cheng2007-02-091-36/+113
| | | | llvm-svn: 34105
* - Branch max. displacement calculation bug.Evan Cheng2007-02-031-9/+20
| | | | | | - Add debugging info. llvm-svn: 33811
* Use MBB.empty() instead of MBB.size() for speed.Evan Cheng2007-02-021-1/+1
| | | | llvm-svn: 33789
* Watch out for empty BB.Evan Cheng2007-02-021-0/+1
| | | | llvm-svn: 33788
* Pasto. Lots of it.Evan Cheng2007-02-011-5/+3
| | | | llvm-svn: 33762
* - Off by one bugs in maximum displacement calculation / testing.Evan Cheng2007-02-011-15/+28
| | | | | | | - In thumb mode, a new constpool island BB size should be 4 + 2 to compensate for the potential padding due to alignment requirement. llvm-svn: 33753
* Pessmistically assume the .align 2 before the first constpool entry addsEvan Cheng2007-02-011-2/+12
| | | | | | two bytes padding. llvm-svn: 33734
* Handle an interesting corner case: the constpool_entry being reference is twoEvan Cheng2007-01-311-2/+2
| | | | | | | | | instructions away, i.e. its address is equal to PC. %r0 = tLDRpci <cp#0> bx CONSTPOOL_ENTRY 0 <cp#0>, 4 llvm-svn: 33728
* When determining whether a pc relative branch / load displacement fits in theEvan Cheng2007-01-311-27/+42
| | | | | | instruction field, adjust it for PC value (4 for thumb, 8 for arm). llvm-svn: 33711
* Some comments.Evan Cheng2007-01-311-2/+6
| | | | llvm-svn: 33707
* ConstPool island bug: watch out for cases where UserMI is the last MI of the BB.Evan Cheng2007-01-311-4/+16
| | | | llvm-svn: 33706
* - Added Thumb constpool island support.Evan Cheng2007-01-311-24/+17
| | | | | | | - Islands are inserted right after the user MI since thumb LDR cannot encode negative offset. llvm-svn: 33690
* - In thumb mode, if size of MachineFunction is >= 2048, force LR to beEvan Cheng2007-01-301-31/+99
| | | | | | | | | | | | | spilled (if it is not already). - If LR is spilled, use BL to implement far jumps. LR is not used as a GPR in thumb mode so it can be clobbered if it is properly spilled / restored in prologue / epilogue. - If LR is force spilled but no far jump has been emitted, try undo'ing the spill by: push lr -> delete pop pc -> bx lr llvm-svn: 33650
* Factor GetInstSize() out of constpool island pass.Evan Cheng2007-01-291-69/+4
| | | | llvm-svn: 33644
* Thumb jumptable support.Evan Cheng2007-01-271-1/+9
| | | | llvm-svn: 33568
* Conditional branch being fixed up is not the last MI in the BB, there is aEvan Cheng2007-01-261-13/+51
| | | | | | | | | | | | | unconditional branch following it. Simply invert the condition and swap destinations if the conditional branch can reach the destination of the unconditional branch: beq L1 b L2 => bne L2 b L1 llvm-svn: 33548
* Make LABEL a builtin opcode.Jim Laskey2007-01-261-0/+2
| | | | llvm-svn: 33537
* SplitBlockBeforeInstr() insert a unconditional branch to the next BB. ThisEvan Cheng2007-01-261-2/+6
| | | | | | | is unnecessary when we are fixing up a conditional branch since we will be adding a unconditional branch to the destination of the original branch. llvm-svn: 33517
* Need to scan the function for branches even if there aren't any constants.Evan Cheng2007-01-261-3/+2
| | | | llvm-svn: 33515
OpenPOWER on IntegriCloud