| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_ARM) | 6 #if defined(TARGET_ARCH_ARM) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/cpu.h" | 9 #include "vm/cpu.h" |
| 10 #include "vm/longjump.h" | 10 #include "vm/longjump.h" |
| (...skipping 2408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2419 if (!Address::CanHoldStoreOffset(kDWord, offset, &offset_mask)) { | 2419 if (!Address::CanHoldStoreOffset(kDWord, offset, &offset_mask)) { |
| 2420 ASSERT(base != IP); | 2420 ASSERT(base != IP); |
| 2421 AddImmediate(IP, base, offset & ~offset_mask, cond); | 2421 AddImmediate(IP, base, offset & ~offset_mask, cond); |
| 2422 base = IP; | 2422 base = IP; |
| 2423 offset = offset & offset_mask; | 2423 offset = offset & offset_mask; |
| 2424 } | 2424 } |
| 2425 vstrd(reg, Address(base, offset), cond); | 2425 vstrd(reg, Address(base, offset), cond); |
| 2426 } | 2426 } |
| 2427 | 2427 |
| 2428 | 2428 |
| 2429 void Assembler::LoadMultipleDFromOffset(DRegister first, |
| 2430 intptr_t count, |
| 2431 Register base, |
| 2432 int32_t offset) { |
| 2433 ASSERT(base != IP); |
| 2434 AddImmediate(IP, base, offset); |
| 2435 vldmd(IA, IP, first, count); |
| 2436 } |
| 2437 |
| 2438 void Assembler::StoreMultipleDToOffset(DRegister first, |
| 2439 intptr_t count, |
| 2440 Register base, |
| 2441 int32_t offset) { |
| 2442 ASSERT(base != IP); |
| 2443 AddImmediate(IP, base, offset); |
| 2444 vstmd(IA, IP, first, count); |
| 2445 } |
| 2446 |
| 2447 |
| 2429 void Assembler::AddImmediate(Register rd, int32_t value, Condition cond) { | 2448 void Assembler::AddImmediate(Register rd, int32_t value, Condition cond) { |
| 2430 AddImmediate(rd, rd, value, cond); | 2449 AddImmediate(rd, rd, value, cond); |
| 2431 } | 2450 } |
| 2432 | 2451 |
| 2433 | 2452 |
| 2434 void Assembler::AddImmediate(Register rd, Register rn, int32_t value, | 2453 void Assembler::AddImmediate(Register rd, Register rn, int32_t value, |
| 2435 Condition cond) { | 2454 Condition cond) { |
| 2436 if (value == 0) { | 2455 if (value == 0) { |
| 2437 if (rd != rn) { | 2456 if (rd != rn) { |
| 2438 mov(rd, ShifterOperand(rn), cond); | 2457 mov(rd, ShifterOperand(rn), cond); |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2933 | 2952 |
| 2934 | 2953 |
| 2935 const char* Assembler::FpuRegisterName(FpuRegister reg) { | 2954 const char* Assembler::FpuRegisterName(FpuRegister reg) { |
| 2936 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); | 2955 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); |
| 2937 return fpu_reg_names[reg]; | 2956 return fpu_reg_names[reg]; |
| 2938 } | 2957 } |
| 2939 | 2958 |
| 2940 } // namespace dart | 2959 } // namespace dart |
| 2941 | 2960 |
| 2942 #endif // defined TARGET_ARCH_ARM | 2961 #endif // defined TARGET_ARCH_ARM |
| OLD | NEW |