diff options
| author | 2015-11-23 10:18:23 +0000 | |
|---|---|---|
| committer | 2015-11-23 10:18:23 +0000 | |
| commit | 7d1e7e8dc4a829bef7786540cbc7aa09706bc90c (patch) | |
| tree | f32f550f026709bba83d2585d3a121eb5e01a131 /compiler/utils/arm/assembler_thumb2.h | |
| parent | b67e19ca717b94d032fefd1e391c5f8f6384b6f8 (diff) | |
| parent | 97cd5bb34ca97e7e87a030b2e1acec004fd26275 (diff) | |
Merge "Optimizing/Thumb2: Improve load/store for large offsets."
am: 97cd5bb34c
* commit '97cd5bb34ca97e7e87a030b2e1acec004fd26275':
Optimizing/Thumb2: Improve load/store for large offsets.
Diffstat (limited to 'compiler/utils/arm/assembler_thumb2.h')
| -rw-r--r-- | compiler/utils/arm/assembler_thumb2.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/compiler/utils/arm/assembler_thumb2.h b/compiler/utils/arm/assembler_thumb2.h index e18361300a..9aeece8e57 100644 --- a/compiler/utils/arm/assembler_thumb2.h +++ b/compiler/utils/arm/assembler_thumb2.h @@ -729,13 +729,23 @@ class Thumb2Assembler FINAL : public ArmAssembler { void EmitBranch(Condition cond, Label* label, bool link, bool x); static int32_t EncodeBranchOffset(int32_t offset, int32_t inst); static int DecodeBranchOffset(int32_t inst); - int32_t EncodeTstOffset(int offset, int32_t inst); - int DecodeTstOffset(int32_t inst); void EmitShift(Register rd, Register rm, Shift shift, uint8_t amount, Condition cond = AL, SetCc set_cc = kCcDontCare); void EmitShift(Register rd, Register rn, Shift shift, Register rm, Condition cond = AL, SetCc set_cc = kCcDontCare); + static int32_t GetAllowedLoadOffsetBits(LoadOperandType type); + static int32_t GetAllowedStoreOffsetBits(StoreOperandType type); + bool CanSplitLoadStoreOffset(int32_t allowed_offset_bits, + int32_t offset, + /*out*/ int32_t* add_to_base, + /*out*/ int32_t* offset_for_load_store); + int32_t AdjustLoadStoreOffset(int32_t allowed_offset_bits, + Register temp, + Register base, + int32_t offset, + Condition cond); + // Whether the assembler can relocate branches. If false, unresolved branches will be // emitted on 32bits. bool can_relocate_branches_; |