| 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 |