| 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/simulator.h" | 9 #include "vm/simulator.h" |
| 10 #include "vm/runtime_entry.h" | 10 #include "vm/runtime_entry.h" |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 } | 523 } |
| 524 | 524 |
| 525 | 525 |
| 526 void Assembler::smlal(Register rd_lo, Register rd_hi, | 526 void Assembler::smlal(Register rd_lo, Register rd_hi, |
| 527 Register rn, Register rm, Condition cond) { | 527 Register rn, Register rm, Condition cond) { |
| 528 // Assembler registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs. | 528 // Assembler registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs. |
| 529 EmitMulOp(cond, B23 | B22 | B21, rd_lo, rd_hi, rn, rm); | 529 EmitMulOp(cond, B23 | B22 | B21, rd_lo, rd_hi, rn, rm); |
| 530 } | 530 } |
| 531 | 531 |
| 532 | 532 |
| 533 void Assembler::umlal(Register rd_lo, Register rd_hi, |
| 534 Register rn, Register rm, Condition cond) { |
| 535 // Assembler registers rd_lo, rd_hi, rn, rm are encoded as rd, rn, rm, rs. |
| 536 EmitMulOp(cond, B23 | B21, rd_lo, rd_hi, rn, rm); |
| 537 } |
| 538 |
| 539 |
| 533 void Assembler::EmitDivOp(Condition cond, int32_t opcode, | 540 void Assembler::EmitDivOp(Condition cond, int32_t opcode, |
| 534 Register rd, Register rn, Register rm) { | 541 Register rd, Register rn, Register rm) { |
| 535 ASSERT(CPUFeatures::integer_division_supported()); | 542 ASSERT(CPUFeatures::integer_division_supported()); |
| 536 ASSERT(rd != kNoRegister); | 543 ASSERT(rd != kNoRegister); |
| 537 ASSERT(rn != kNoRegister); | 544 ASSERT(rn != kNoRegister); |
| 538 ASSERT(rm != kNoRegister); | 545 ASSERT(rm != kNoRegister); |
| 539 ASSERT(cond != kNoCondition); | 546 ASSERT(cond != kNoCondition); |
| 540 int32_t encoding = opcode | | 547 int32_t encoding = opcode | |
| 541 (static_cast<int32_t>(cond) << kConditionShift) | | 548 (static_cast<int32_t>(cond) << kConditionShift) | |
| 542 (static_cast<int32_t>(rn) << kDivRnShift) | | 549 (static_cast<int32_t>(rn) << kDivRnShift) | |
| (...skipping 1666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2209 | 2216 |
| 2210 const char* Assembler::FpuRegisterName(FpuRegister reg) { | 2217 const char* Assembler::FpuRegisterName(FpuRegister reg) { |
| 2211 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); | 2218 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); |
| 2212 return fpu_reg_names[reg]; | 2219 return fpu_reg_names[reg]; |
| 2213 } | 2220 } |
| 2214 | 2221 |
| 2215 } // namespace dart | 2222 } // namespace dart |
| 2216 | 2223 |
| 2217 #endif // defined TARGET_ARCH_ARM | 2224 #endif // defined TARGET_ARCH_ARM |
| 2218 | 2225 |
| OLD | NEW |