| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 <stdarg.h> | 5 #include <stdarg.h> |
| 6 #include <stdlib.h> | 6 #include <stdlib.h> |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 | 8 |
| 9 #if V8_TARGET_ARCH_PPC | 9 #if V8_TARGET_ARCH_PPC |
| 10 | 10 |
| (...skipping 2941 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2952 if (frb_val > kMaxLongLong) { | 2952 if (frb_val > kMaxLongLong) { |
| 2953 frt_val = kMaxLongLong; | 2953 frt_val = kMaxLongLong; |
| 2954 } else if (frb_val < kMinLongLong) { | 2954 } else if (frb_val < kMinLongLong) { |
| 2955 frt_val = kMinLongLong; | 2955 frt_val = kMinLongLong; |
| 2956 } else { | 2956 } else { |
| 2957 frt_val = (int64_t)frb_val; | 2957 frt_val = (int64_t)frb_val; |
| 2958 } | 2958 } |
| 2959 set_d_register(frt, frt_val); | 2959 set_d_register(frt, frt_val); |
| 2960 return; | 2960 return; |
| 2961 } | 2961 } |
| 2962 case FCTIDU: { |
| 2963 int frt = instr->RTValue(); |
| 2964 int frb = instr->RBValue(); |
| 2965 double frb_val = get_double_from_d_register(frb); |
| 2966 uint64_t frt_val; |
| 2967 uint64_t kMinLongLong = 0; |
| 2968 uint64_t kMaxLongLong = kMinLongLong - 1; |
| 2969 |
| 2970 if (frb_val > kMaxLongLong) { |
| 2971 frt_val = kMaxLongLong; |
| 2972 } else if (frb_val < kMinLongLong) { |
| 2973 frt_val = kMinLongLong; |
| 2974 } else { |
| 2975 switch (fp_condition_reg_ & kFPRoundingModeMask) { |
| 2976 case kRoundToZero: |
| 2977 frt_val = (uint64_t)frb_val; |
| 2978 break; |
| 2979 case kRoundToPlusInf: |
| 2980 frt_val = (uint64_t)std::ceil(frb_val); |
| 2981 break; |
| 2982 case kRoundToMinusInf: |
| 2983 frt_val = (uint64_t)std::floor(frb_val); |
| 2984 break; |
| 2985 default: |
| 2986 frt_val = (uint64_t)frb_val; |
| 2987 UNIMPLEMENTED(); // Not used by V8. |
| 2988 break; |
| 2989 } |
| 2990 } |
| 2991 set_d_register(frt, frt_val); |
| 2992 return; |
| 2993 } |
| 2994 case FCTIDUZ: { |
| 2995 int frt = instr->RTValue(); |
| 2996 int frb = instr->RBValue(); |
| 2997 double frb_val = get_double_from_d_register(frb); |
| 2998 uint64_t frt_val; |
| 2999 uint64_t kMinLongLong = 0; |
| 3000 uint64_t kMaxLongLong = kMinLongLong - 1; |
| 3001 |
| 3002 if (frb_val > kMaxLongLong) { |
| 3003 frt_val = kMaxLongLong; |
| 3004 } else if (frb_val < kMinLongLong) { |
| 3005 frt_val = kMinLongLong; |
| 3006 } else { |
| 3007 frt_val = (uint64_t)frb_val; |
| 3008 } |
| 3009 set_d_register(frt, frt_val); |
| 3010 return; |
| 3011 } |
| 2962 case FCTIW: | 3012 case FCTIW: |
| 2963 case FCTIWZ: { | 3013 case FCTIWZ: { |
| 2964 int frt = instr->RTValue(); | 3014 int frt = instr->RTValue(); |
| 2965 int frb = instr->RBValue(); | 3015 int frb = instr->RBValue(); |
| 2966 double frb_val = get_double_from_d_register(frb); | 3016 double frb_val = get_double_from_d_register(frb); |
| 2967 int64_t frt_val; | 3017 int64_t frt_val; |
| 2968 if (frb_val > kMaxInt) { | 3018 if (frb_val > kMaxInt) { |
| 2969 frt_val = kMaxInt; | 3019 frt_val = kMaxInt; |
| 2970 } else if (frb_val < kMinInt) { | 3020 } else if (frb_val < kMinInt) { |
| 2971 frt_val = kMinInt; | 3021 frt_val = kMinInt; |
| (...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3957 uintptr_t* stack_slot = reinterpret_cast<uintptr_t*>(current_sp); | 4007 uintptr_t* stack_slot = reinterpret_cast<uintptr_t*>(current_sp); |
| 3958 uintptr_t address = *stack_slot; | 4008 uintptr_t address = *stack_slot; |
| 3959 set_register(sp, current_sp + sizeof(uintptr_t)); | 4009 set_register(sp, current_sp + sizeof(uintptr_t)); |
| 3960 return address; | 4010 return address; |
| 3961 } | 4011 } |
| 3962 } // namespace internal | 4012 } // namespace internal |
| 3963 } // namespace v8 | 4013 } // namespace v8 |
| 3964 | 4014 |
| 3965 #endif // USE_SIMULATOR | 4015 #endif // USE_SIMULATOR |
| 3966 #endif // V8_TARGET_ARCH_PPC | 4016 #endif // V8_TARGET_ARCH_PPC |
| OLD | NEW |