History log of /llvm-project/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp (Results 301 – 325 of 356)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 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


1...<<1112131415