| 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" // Needed here to get TARGET_ARCH_MIPS. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_MIPS. |
| 6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) |
| 7 | 7 |
| 8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
| 9 | 9 |
| 10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
| (...skipping 3494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3505 return NULL; | 3505 return NULL; |
| 3506 } | 3506 } |
| 3507 | 3507 |
| 3508 | 3508 |
| 3509 void BinaryInt32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3509 void BinaryInt32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 3510 UNIMPLEMENTED(); | 3510 UNIMPLEMENTED(); |
| 3511 } | 3511 } |
| 3512 | 3512 |
| 3513 | 3513 |
| 3514 LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const { | 3514 LocationSummary* MathUnaryInstr::MakeLocationSummary(bool opt) const { |
| 3515 if ((kind() == MethodRecognizer::kMathSin) || | 3515 if ((kind() == MathUnaryInstr::kSin) || (kind() == MathUnaryInstr::kCos)) { |
| 3516 (kind() == MethodRecognizer::kMathCos)) { | |
| 3517 const intptr_t kNumInputs = 1; | 3516 const intptr_t kNumInputs = 1; |
| 3518 const intptr_t kNumTemps = 0; | 3517 const intptr_t kNumTemps = 0; |
| 3519 LocationSummary* summary = | 3518 LocationSummary* summary = |
| 3520 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); | 3519 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kCall); |
| 3521 summary->set_in(0, Location::FpuRegisterLocation(D6)); | 3520 summary->set_in(0, Location::FpuRegisterLocation(D6)); |
| 3522 summary->set_out(0, Location::FpuRegisterLocation(D0)); | 3521 summary->set_out(0, Location::FpuRegisterLocation(D0)); |
| 3523 return summary; | 3522 return summary; |
| 3524 } | 3523 } |
| 3524 ASSERT((kind() == MathUnaryInstr::kSqrt) || |
| 3525 (kind() == MathUnaryInstr::kDoubleSquare)); |
| 3525 const intptr_t kNumInputs = 1; | 3526 const intptr_t kNumInputs = 1; |
| 3526 const intptr_t kNumTemps = 0; | 3527 const intptr_t kNumTemps = 0; |
| 3527 LocationSummary* summary = | 3528 LocationSummary* summary = |
| 3528 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 3529 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| 3529 summary->set_in(0, Location::RequiresFpuRegister()); | 3530 summary->set_in(0, Location::RequiresFpuRegister()); |
| 3530 summary->set_out(0, Location::RequiresFpuRegister()); | 3531 summary->set_out(0, Location::RequiresFpuRegister()); |
| 3531 return summary; | 3532 return summary; |
| 3532 } | 3533 } |
| 3533 | 3534 |
| 3534 | 3535 |
| 3535 void MathUnaryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3536 void MathUnaryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 3536 if (kind() == MethodRecognizer::kMathSqrt) { | 3537 if (kind() == MathUnaryInstr::kSqrt) { |
| 3537 __ sqrtd(locs()->out(0).fpu_reg(), locs()->in(0).fpu_reg()); | 3538 __ sqrtd(locs()->out(0).fpu_reg(), locs()->in(0).fpu_reg()); |
| 3539 } else if (kind() == MathUnaryInstr::kDoubleSquare) { |
| 3540 DRegister val = locs()->in(0).fpu_reg(); |
| 3541 DRegister result = locs()->out(0).fpu_reg(); |
| 3542 __ muld(result, val, val); |
| 3538 } else { | 3543 } else { |
| 3539 __ CallRuntime(TargetFunction(), InputCount()); | 3544 __ CallRuntime(TargetFunction(), InputCount()); |
| 3540 } | 3545 } |
| 3541 } | 3546 } |
| 3542 | 3547 |
| 3543 | 3548 |
| 3544 LocationSummary* MathMinMaxInstr::MakeLocationSummary(bool opt) const { | 3549 LocationSummary* MathMinMaxInstr::MakeLocationSummary(bool opt) const { |
| 3545 if (result_cid() == kDoubleCid) { | 3550 if (result_cid() == kDoubleCid) { |
| 3546 const intptr_t kNumInputs = 2; | 3551 const intptr_t kNumInputs = 2; |
| 3547 const intptr_t kNumTemps = 1; | 3552 const intptr_t kNumTemps = 1; |
| (...skipping 949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4497 compiler->GenerateCall(token_pos(), | 4502 compiler->GenerateCall(token_pos(), |
| 4498 &label, | 4503 &label, |
| 4499 PcDescriptors::kOther, | 4504 PcDescriptors::kOther, |
| 4500 locs()); | 4505 locs()); |
| 4501 __ Drop(ArgumentCount()); // Discard arguments. | 4506 __ Drop(ArgumentCount()); // Discard arguments. |
| 4502 } | 4507 } |
| 4503 | 4508 |
| 4504 } // namespace dart | 4509 } // namespace dart |
| 4505 | 4510 |
| 4506 #endif // defined TARGET_ARCH_MIPS | 4511 #endif // defined TARGET_ARCH_MIPS |
| OLD | NEW |