summaryrefslogtreecommitdiff
path: root/compiler/utils/arm/assembler_thumb2.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2015-11-23 10:21:27 +0000
committer android-build-merger <android-build-merger@google.com> 2015-11-23 10:21:27 +0000
commit47c471fd0174c0c8ca840b5271adf78191096bf6 (patch)
treef32f550f026709bba83d2585d3a121eb5e01a131 /compiler/utils/arm/assembler_thumb2.h
parent82c71d1eb084fb54b3cc0816bf812002fbf35dc3 (diff)
parent7d1e7e8dc4a829bef7786540cbc7aa09706bc90c (diff)
Merge "Optimizing/Thumb2: Improve load/store for large offsets." am: 97cd5bb34c
am: 7d1e7e8dc4 * commit '7d1e7e8dc4a829bef7786540cbc7aa09706bc90c': 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.h14
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_;