| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <limits.h> | 5 #include <limits.h> |
| 6 #include <stdarg.h> | 6 #include <stdarg.h> |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #if V8_TARGET_ARCH_MIPS64 | 10 #if V8_TARGET_ARCH_MIPS64 |
| (...skipping 2403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2414 set_fcsr_bit(kFCSRInexactFlagBit, true); | 2414 set_fcsr_bit(kFCSRInexactFlagBit, true); |
| 2415 } | 2415 } |
| 2416 break; | 2416 break; |
| 2417 } | 2417 } |
| 2418 case ADD_S: | 2418 case ADD_S: |
| 2419 set_fpu_register_float(fd_reg(), fs + ft); | 2419 set_fpu_register_float(fd_reg(), fs + ft); |
| 2420 break; | 2420 break; |
| 2421 case SUB_S: | 2421 case SUB_S: |
| 2422 set_fpu_register_float(fd_reg(), fs - ft); | 2422 set_fpu_register_float(fd_reg(), fs - ft); |
| 2423 break; | 2423 break; |
| 2424 case MADDF_S: |
| 2425 DCHECK(kArchVariant == kMips64r6); |
| 2426 set_fpu_register_float(fd_reg(), fd + (fs * ft)); |
| 2427 break; |
| 2428 case MSUBF_S: |
| 2429 DCHECK(kArchVariant == kMips64r6); |
| 2430 set_fpu_register_float(fd_reg(), fd - (fs * ft)); |
| 2431 break; |
| 2424 case MUL_S: | 2432 case MUL_S: |
| 2425 set_fpu_register_float(fd_reg(), fs * ft); | 2433 set_fpu_register_float(fd_reg(), fs * ft); |
| 2426 break; | 2434 break; |
| 2427 case DIV_S: | 2435 case DIV_S: |
| 2428 set_fpu_register_float(fd_reg(), fs / ft); | 2436 set_fpu_register_float(fd_reg(), fs / ft); |
| 2429 break; | 2437 break; |
| 2430 case ABS_S: | 2438 case ABS_S: |
| 2431 set_fpu_register_float(fd_reg(), fabs(fs)); | 2439 set_fpu_register_float(fd_reg(), fabs(fs)); |
| 2432 break; | 2440 break; |
| 2433 case MOV_S: | 2441 case MOV_S: |
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2817 case MAX: | 2825 case MAX: |
| 2818 DCHECK(kArchVariant == kMips64r6); | 2826 DCHECK(kArchVariant == kMips64r6); |
| 2819 set_fpu_register_double(fd_reg(), FPUMax(ft, fs)); | 2827 set_fpu_register_double(fd_reg(), FPUMax(ft, fs)); |
| 2820 break; | 2828 break; |
| 2821 case ADD_D: | 2829 case ADD_D: |
| 2822 set_fpu_register_double(fd_reg(), fs + ft); | 2830 set_fpu_register_double(fd_reg(), fs + ft); |
| 2823 break; | 2831 break; |
| 2824 case SUB_D: | 2832 case SUB_D: |
| 2825 set_fpu_register_double(fd_reg(), fs - ft); | 2833 set_fpu_register_double(fd_reg(), fs - ft); |
| 2826 break; | 2834 break; |
| 2835 case MADDF_D: |
| 2836 DCHECK(kArchVariant == kMips64r6); |
| 2837 set_fpu_register_double(fd_reg(), fd + (fs * ft)); |
| 2838 break; |
| 2839 case MSUBF_D: |
| 2840 DCHECK(kArchVariant == kMips64r6); |
| 2841 set_fpu_register_double(fd_reg(), fd - (fs * ft)); |
| 2842 break; |
| 2827 case MUL_D: | 2843 case MUL_D: |
| 2828 set_fpu_register_double(fd_reg(), fs * ft); | 2844 set_fpu_register_double(fd_reg(), fs * ft); |
| 2829 break; | 2845 break; |
| 2830 case DIV_D: | 2846 case DIV_D: |
| 2831 set_fpu_register_double(fd_reg(), fs / ft); | 2847 set_fpu_register_double(fd_reg(), fs / ft); |
| 2832 break; | 2848 break; |
| 2833 case ABS_D: | 2849 case ABS_D: |
| 2834 set_fpu_register_double(fd_reg(), fabs(fs)); | 2850 set_fpu_register_double(fd_reg(), fabs(fs)); |
| 2835 break; | 2851 break; |
| 2836 case MOV_D: | 2852 case MOV_D: |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3298 DecodeTypeRegisterLRsType(); | 3314 DecodeTypeRegisterLRsType(); |
| 3299 break; | 3315 break; |
| 3300 default: | 3316 default: |
| 3301 UNREACHABLE(); | 3317 UNREACHABLE(); |
| 3302 } | 3318 } |
| 3303 } | 3319 } |
| 3304 | 3320 |
| 3305 | 3321 |
| 3306 void Simulator::DecodeTypeRegisterCOP1X() { | 3322 void Simulator::DecodeTypeRegisterCOP1X() { |
| 3307 switch (get_instr()->FunctionFieldRaw()) { | 3323 switch (get_instr()->FunctionFieldRaw()) { |
| 3308 case MADD_D: | 3324 case MADD_S: { |
| 3325 DCHECK(kArchVariant == kMips64r2); |
| 3326 float fr, ft, fs; |
| 3327 fr = get_fpu_register_float(fr_reg()); |
| 3328 fs = get_fpu_register_float(fs_reg()); |
| 3329 ft = get_fpu_register_float(ft_reg()); |
| 3330 set_fpu_register_float(fd_reg(), fs * ft + fr); |
| 3331 break; |
| 3332 } |
| 3333 case MSUB_S: { |
| 3334 DCHECK(kArchVariant == kMips64r2); |
| 3335 float fr, ft, fs; |
| 3336 fr = get_fpu_register_float(fr_reg()); |
| 3337 fs = get_fpu_register_float(fs_reg()); |
| 3338 ft = get_fpu_register_float(ft_reg()); |
| 3339 set_fpu_register_float(fd_reg(), fs * ft - fr); |
| 3340 break; |
| 3341 } |
| 3342 case MADD_D: { |
| 3343 DCHECK(kArchVariant == kMips64r2); |
| 3309 double fr, ft, fs; | 3344 double fr, ft, fs; |
| 3310 fr = get_fpu_register_double(fr_reg()); | 3345 fr = get_fpu_register_double(fr_reg()); |
| 3311 fs = get_fpu_register_double(fs_reg()); | 3346 fs = get_fpu_register_double(fs_reg()); |
| 3312 ft = get_fpu_register_double(ft_reg()); | 3347 ft = get_fpu_register_double(ft_reg()); |
| 3313 set_fpu_register_double(fd_reg(), fs * ft + fr); | 3348 set_fpu_register_double(fd_reg(), fs * ft + fr); |
| 3314 break; | 3349 break; |
| 3350 } |
| 3351 case MSUB_D: { |
| 3352 DCHECK(kArchVariant == kMips64r2); |
| 3353 double fr, ft, fs; |
| 3354 fr = get_fpu_register_double(fr_reg()); |
| 3355 fs = get_fpu_register_double(fs_reg()); |
| 3356 ft = get_fpu_register_double(ft_reg()); |
| 3357 set_fpu_register_double(fd_reg(), fs * ft - fr); |
| 3358 break; |
| 3359 } |
| 3315 default: | 3360 default: |
| 3316 UNREACHABLE(); | 3361 UNREACHABLE(); |
| 3317 } | 3362 } |
| 3318 } | 3363 } |
| 3319 | 3364 |
| 3320 | 3365 |
| 3321 void Simulator::DecodeTypeRegisterSPECIAL() { | 3366 void Simulator::DecodeTypeRegisterSPECIAL() { |
| 3322 int64_t i64hilo; | 3367 int64_t i64hilo; |
| 3323 uint64_t u64hilo; | 3368 uint64_t u64hilo; |
| 3324 int64_t alu_out; | 3369 int64_t alu_out; |
| (...skipping 1608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4933 } | 4978 } |
| 4934 | 4979 |
| 4935 | 4980 |
| 4936 #undef UNSUPPORTED | 4981 #undef UNSUPPORTED |
| 4937 } // namespace internal | 4982 } // namespace internal |
| 4938 } // namespace v8 | 4983 } // namespace v8 |
| 4939 | 4984 |
| 4940 #endif // USE_SIMULATOR | 4985 #endif // USE_SIMULATOR |
| 4941 | 4986 |
| 4942 #endif // V8_TARGET_ARCH_MIPS64 | 4987 #endif // V8_TARGET_ARCH_MIPS64 |
| OLD | NEW |