#
36d74774 |
| 18-Aug-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Simplify RegScavenger::FindUnusedReg.
- Drop the Candidates argument and fix all callers. Now that RegScavenger tracks available registers accurately, there is no need to restict the search. - M
Simplify RegScavenger::FindUnusedReg.
- Drop the Candidates argument and fix all callers. Now that RegScavenger tracks available registers accurately, there is no need to restict the search. - Make sure that no aliases of the found register are in use. This was a potential bug.
llvm-svn: 79369
show more ...
|
#
55f1c09e |
| 13-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Push LLVMContexts through the IntegerType APIs.
llvm-svn: 78948
|
#
f24f9d9c |
| 11-Aug-2009 |
Jim Grosbach <grosbach@apple.com> |
Whitespace cleanup. Remove trailing whitespace.
llvm-svn: 78666
|
#
2aa91cc2 |
| 08-Aug-2009 |
Evan Cheng <evan.cheng@apple.com> |
Code refactoring. No functionality change.
llvm-svn: 78455
|
#
b972e563 |
| 07-Aug-2009 |
Evan Cheng <evan.cheng@apple.com> |
It turns out most of the thumb2 instructions are not allowed to touch SP. The semantics of such instructions are unpredictable. We have just been lucky that tests have been passing.
This patch takes
It turns out most of the thumb2 instructions are not allowed to touch SP. The semantics of such instructions are unpredictable. We have just been lucky that tests have been passing.
This patch takes pain to ensure all the PEI lowering code does the right thing when lowering frame indices, insert code to manipulate stack pointers, etc. It's also custom lowering dynamic stack alloc into pseudo instructions so we can insert the right instructions at scheduling time.
This fixes PR4659 and PR4682.
llvm-svn: 78361
show more ...
|
#
783b65b5 |
| 04-Aug-2009 |
Evan Cheng <evan.cheng@apple.com> |
Enable load / store multiple pass for Thumb2. It's not using ldrd / strd yet.
llvm-svn: 78104
|
#
3870fbb5 |
| 04-Aug-2009 |
Evan Cheng <evan.cheng@apple.com> |
Thumb2 does not have ib (increment before) and da (decrement after) forms of ldm / stm.
llvm-svn: 78057
|
#
71756e78 |
| 04-Aug-2009 |
Evan Cheng <evan.cheng@apple.com> |
Load / store multiple pass fixes for Thumb2. Not enabled yet.
llvm-svn: 78031
|
#
fbcc663c |
| 14-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location i
llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. 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
show more ...
|
#
cd4cdd11 |
| 11-Jul-2009 |
Evan Cheng <evan.cheng@apple.com> |
Major changes to Thumb (not Thumb2). Many 16-bit instructions either modifies CPSR when they are outside the IT blocks, or they can predicated when in Thumb2. Move the implicit def of CPSR to an opt
Major changes to Thumb (not Thumb2). Many 16-bit instructions either 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.
llvm-svn: 75359
show more ...
|
#
223ac259 |
| 10-Jul-2009 |
Evan Cheng <evan.cheng@apple.com> |
Remove a bogus assertion.
llvm-svn: 75206
|
#
4605e8aa |
| 09-Jul-2009 |
Evan Cheng <evan.cheng@apple.com> |
Initial support for load / store multiple opt pass Thumb2 support (post-allocation only). It's kind of there, but not quite. I'll return to this later.
llvm-svn: 75190
|
#
e3a53c44 |
| 08-Jul-2009 |
Evan Cheng <evan.cheng@apple.com> |
Change how so_imm and t2_so_imm are handled. At instruction selection time, the immediates are no longer encoded in the imm8 + rot format, that are left as it is. The encoding is now done in ams prin
Change how so_imm and t2_so_imm are handled. At instruction selection time, 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
show more ...
|
#
fb8d6d5b |
| 08-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
Implement changes from Chris's feedback. Finish converting lib/Target.
llvm-svn: 75043
|
#
6dd27300 |
| 08-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
Start converting to new error handling API. cerr+abort -> llvm_report_error assert(0)+abort -> LLVM_UNREACHABLE (assert(0)+llvm_unreachable-> abort() included)
llvm-svn: 75018
|
#
b4b20bbb |
| 19-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Enable arm pre-allocation load / store multiple optimization pass.
llvm-svn: 73791
|
#
5d8df7ff |
| 19-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Transfer dead markers when a ldrd is changed into a ldm or a pair of ldr.
llvm-svn: 73749
|
#
0e796035 |
| 18-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
- Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints. - Register allocator should resolve t
- Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints. - Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping. - More fixes to get ARM load / store double word working.
llvm-svn: 73671
show more ...
|
#
ad0dba58 |
| 15-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Typo.
llvm-svn: 73422
|
#
eba57e41 |
| 15-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Do not form ldrd / strd if the two dests / srcs are the same. Code clean up.
llvm-svn: 73413
|
#
1cf0f193 |
| 15-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Silence a warning.
llvm-svn: 73406
|
#
1283c6a0 |
| 15-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Part 1. - 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. -
Part 1. - 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
show more ...
|
#
185c9ef0 |
| 13-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Add a ARM specific pre-allocation pass that re-schedule loads / stores from consecutive addresses togther. This makes it easier for the post-allocation pass to form ldm / stm.
This is step 1. We are
Add a ARM specific pre-allocation pass that re-schedule loads / stores from consecutive addresses togther. This makes it easier for the post-allocation pass to form ldm / stm.
This is step 1. We are still missing a lot of ldm / stm opportunities because of register allocation are not done in the desired order. More enhancements coming.
llvm-svn: 73291
show more ...
|
#
3158790e |
| 05-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Changing allocation ordering from r3 ... r0 back to r0 ... r3. The order change no longer make sense after the coalescing changes we have made since then.
llvm-svn: 72955
|
#
7fce2cf0 |
| 05-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
When merging multiple load / store instructions. Use the DebugLoc of the first one.
llvm-svn: 72952
|