| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_ARM | 9 #if V8_TARGET_ARCH_ARM |
| 10 | 10 |
| (...skipping 3765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3776 int elements = 64 / esize; | 3776 int elements = 64 / esize; |
| 3777 uint8_t from[8]; | 3777 uint8_t from[8]; |
| 3778 get_d_register(Vm, reinterpret_cast<uint64_t*>(from)); | 3778 get_d_register(Vm, reinterpret_cast<uint64_t*>(from)); |
| 3779 uint16_t to[8]; | 3779 uint16_t to[8]; |
| 3780 int e = 0; | 3780 int e = 0; |
| 3781 while (e < elements) { | 3781 while (e < elements) { |
| 3782 to[e] = from[e]; | 3782 to[e] = from[e]; |
| 3783 e++; | 3783 e++; |
| 3784 } | 3784 } |
| 3785 set_q_register(Vd, reinterpret_cast<uint64_t*>(to)); | 3785 set_q_register(Vd, reinterpret_cast<uint64_t*>(to)); |
| 3786 } else if ((instr->Bits(21, 16) == 0x32) && (instr->Bits(11, 7) == 0) && | |
| 3787 (instr->Bit(4) == 0)) { | |
| 3788 int vd = instr->VFPDRegValue(kDoublePrecision); | |
| 3789 int vm = instr->VFPMRegValue(kDoublePrecision); | |
| 3790 if (instr->Bit(6) == 0) { | |
| 3791 // vswp Dd, Dm. | |
| 3792 uint64_t dval, mval; | |
| 3793 get_d_register(vd, &dval); | |
| 3794 get_d_register(vm, &mval); | |
| 3795 set_d_register(vm, &dval); | |
| 3796 set_d_register(vd, &mval); | |
| 3797 } else { | |
| 3798 // Q register vswp unimplemented. | |
| 3799 UNIMPLEMENTED(); | |
| 3800 } | |
| 3801 } else { | 3786 } else { |
| 3802 UNIMPLEMENTED(); | 3787 UNIMPLEMENTED(); |
| 3803 } | 3788 } |
| 3804 break; | 3789 break; |
| 3805 case 8: | 3790 case 8: |
| 3806 if (instr->Bits(21, 20) == 0) { | 3791 if (instr->Bits(21, 20) == 0) { |
| 3807 // vst1 | 3792 // vst1 |
| 3808 int Vd = (instr->Bit(22) << 4) | instr->VdValue(); | 3793 int Vd = (instr->Bit(22) << 4) | instr->VdValue(); |
| 3809 int Rn = instr->VnValue(); | 3794 int Rn = instr->VnValue(); |
| 3810 int type = instr->Bits(11, 8); | 3795 int type = instr->Bits(11, 8); |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4311 set_register(sp, current_sp + sizeof(uintptr_t)); | 4296 set_register(sp, current_sp + sizeof(uintptr_t)); |
| 4312 return address; | 4297 return address; |
| 4313 } | 4298 } |
| 4314 | 4299 |
| 4315 } // namespace internal | 4300 } // namespace internal |
| 4316 } // namespace v8 | 4301 } // namespace v8 |
| 4317 | 4302 |
| 4318 #endif // USE_SIMULATOR | 4303 #endif // USE_SIMULATOR |
| 4319 | 4304 |
| 4320 #endif // V8_TARGET_ARCH_ARM | 4305 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |