MIPS64: Fix move operations from coprocessor in simulator.

This resolves calculation errors for trigonometric functions.

TEST=test262/S15.8.2.7_A6.js
BUG=
R=jkummerow@chromium.org, paul.lind@imgtec.com

Review URL: https://codereview.chromium.org/558163006

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24013 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent f6807d78
...@@ -1109,9 +1109,9 @@ int32_t Simulator::get_fpu_register_signed_word(int fpureg) const { ...@@ -1109,9 +1109,9 @@ int32_t Simulator::get_fpu_register_signed_word(int fpureg) const {
} }
uint32_t Simulator::get_fpu_register_hi_word(int fpureg) const { int32_t Simulator::get_fpu_register_hi_word(int fpureg) const {
DCHECK((fpureg >= 0) && (fpureg < kNumFPURegisters)); DCHECK((fpureg >= 0) && (fpureg < kNumFPURegisters));
return static_cast<uint32_t>((FPUregisters_[fpureg] >> 32) & 0xffffffff); return static_cast<int32_t>((FPUregisters_[fpureg] >> 32) & 0xffffffff);
} }
......
...@@ -200,7 +200,7 @@ class Simulator { ...@@ -200,7 +200,7 @@ class Simulator {
int64_t get_fpu_register(int fpureg) const; int64_t get_fpu_register(int fpureg) const;
int32_t get_fpu_register_word(int fpureg) const; int32_t get_fpu_register_word(int fpureg) const;
int32_t get_fpu_register_signed_word(int fpureg) const; int32_t get_fpu_register_signed_word(int fpureg) const;
uint32_t get_fpu_register_hi_word(int fpureg) const; int32_t get_fpu_register_hi_word(int fpureg) const;
float get_fpu_register_float(int fpureg) const; float get_fpu_register_float(int fpureg) const;
double get_fpu_register_double(int fpureg) const; double get_fpu_register_double(int fpureg) const;
void set_fcsr_bit(uint32_t cc, bool value); void set_fcsr_bit(uint32_t cc, bool value);
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment