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_arm.cc | |
| 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_arm.cc')
| -rw-r--r-- | compiler/utils/arm/assembler_arm.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/compiler/utils/arm/assembler_arm.cc b/compiler/utils/arm/assembler_arm.cc index 68e39568bb..dead8fd9a8 100644 --- a/compiler/utils/arm/assembler_arm.cc +++ b/compiler/utils/arm/assembler_arm.cc @@ -342,9 +342,9 @@ bool Address::CanHoldLoadOffsetThumb(LoadOperandType type, int offset) { return IsAbsoluteUint<12>(offset); case kLoadSWord: case kLoadDWord: - return IsAbsoluteUint<10>(offset); // VFP addressing mode. + return IsAbsoluteUint<10>(offset) && (offset & 3) == 0; // VFP addressing mode. case kLoadWordPair: - return IsAbsoluteUint<10>(offset); + return IsAbsoluteUint<10>(offset) && (offset & 3) == 0; default: LOG(FATAL) << "UNREACHABLE"; UNREACHABLE(); @@ -360,9 +360,9 @@ bool Address::CanHoldStoreOffsetThumb(StoreOperandType type, int offset) { return IsAbsoluteUint<12>(offset); case kStoreSWord: case kStoreDWord: - return IsAbsoluteUint<10>(offset); // VFP addressing mode. + return IsAbsoluteUint<10>(offset) && (offset & 3) == 0; // VFP addressing mode. case kStoreWordPair: - return IsAbsoluteUint<10>(offset); + return IsAbsoluteUint<10>(offset) && (offset & 3) == 0; default: LOG(FATAL) << "UNREACHABLE"; UNREACHABLE(); |