Chromium Code Reviews| 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 3965 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3976 for (int i = 0; i < 4; i++) { | 3976 for (int i = 0; i < 4; i++) { |
| 3977 src1[i] *= src2[i]; | 3977 src1[i] *= src2[i]; |
| 3978 } | 3978 } |
| 3979 break; | 3979 break; |
| 3980 } | 3980 } |
| 3981 default: | 3981 default: |
| 3982 UNIMPLEMENTED(); | 3982 UNIMPLEMENTED(); |
| 3983 break; | 3983 break; |
| 3984 } | 3984 } |
| 3985 set_q_register(Vd, src1); | 3985 set_q_register(Vd, src1); |
| 3986 } else if (instr->Bits(21, 20) == 0 && instr->Bits(11, 8) == 0xe && | |
| 3987 instr->Bit(4) == 0) { | |
| 3988 int Vd = instr->VFPDRegValue(kSimd128Precision); | |
| 3989 int Vm = instr->VFPMRegValue(kSimd128Precision); | |
| 3990 int Vn = instr->VFPNRegValue(kSimd128Precision); | |
| 3991 uint32_t src1[4], src2[4]; | |
| 3992 get_q_register(Vn, src1); | |
| 3993 get_q_register(Vm, src2); | |
| 3994 for (int i = 0; i < 4; i++) { | |
| 3995 src1[i] = bit_cast<float>(src1[i]) == bit_cast<float>(src2[i]) | |
| 3996 ? 0xFFFFFFFF | |
| 3997 : 0; | |
| 3998 } | |
| 3999 set_q_register(Vd, src1); | |
| 4000 | |
| 3986 } else { | 4001 } else { |
| 3987 UNIMPLEMENTED(); | 4002 UNIMPLEMENTED(); |
| 3988 } | 4003 } |
| 3989 break; | 4004 break; |
| 3990 case 5: | 4005 case 5: |
| 3991 if ((instr->Bits(18, 16) == 0) && (instr->Bits(11, 6) == 0x28) && | 4006 if ((instr->Bits(18, 16) == 0) && (instr->Bits(11, 6) == 0x28) && |
| 3992 (instr->Bit(4) == 1)) { | 4007 (instr->Bit(4) == 1)) { |
| 3993 // vmovl signed | 4008 // vmovl signed |
| 3994 if ((instr->VdValue() & 1) != 0) UNIMPLEMENTED(); | 4009 if ((instr->VdValue() & 1) != 0) UNIMPLEMENTED(); |
| 3995 int Vd = (instr->Bit(22) << 3) | (instr->VdValue() >> 1); | 4010 int Vd = (instr->Bit(22) << 3) | (instr->VdValue() >> 1); |
| (...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4488 break; | 4503 break; |
| 4489 } | 4504 } |
| 4490 } | 4505 } |
| 4491 } else { | 4506 } else { |
| 4492 UNIMPLEMENTED(); | 4507 UNIMPLEMENTED(); |
| 4493 } | 4508 } |
| 4494 set_q_register(Vd, src); | 4509 set_q_register(Vd, src); |
| 4495 } else { | 4510 } else { |
| 4496 UNIMPLEMENTED(); | 4511 UNIMPLEMENTED(); |
| 4497 } | 4512 } |
| 4513 } else { | |
| 4514 UNIMPLEMENTED(); | |
|
bbudge
2016/12/20 01:16:57
We need this in case no case 5 matches occur.
| |
| 4498 } | 4515 } |
| 4499 break; | 4516 break; |
| 4500 case 8: | 4517 case 8: |
| 4501 if (instr->Bits(21, 20) == 0) { | 4518 if (instr->Bits(21, 20) == 0) { |
| 4502 // vst1 | 4519 // vst1 |
| 4503 int Vd = (instr->Bit(22) << 4) | instr->VdValue(); | 4520 int Vd = (instr->Bit(22) << 4) | instr->VdValue(); |
| 4504 int Rn = instr->VnValue(); | 4521 int Rn = instr->VnValue(); |
| 4505 int type = instr->Bits(11, 8); | 4522 int type = instr->Bits(11, 8); |
| 4506 int Rm = instr->VmValue(); | 4523 int Rm = instr->VmValue(); |
| 4507 int32_t address = get_register(Rn); | 4524 int32_t address = get_register(Rn); |
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5006 set_register(sp, current_sp + sizeof(uintptr_t)); | 5023 set_register(sp, current_sp + sizeof(uintptr_t)); |
| 5007 return address; | 5024 return address; |
| 5008 } | 5025 } |
| 5009 | 5026 |
| 5010 } // namespace internal | 5027 } // namespace internal |
| 5011 } // namespace v8 | 5028 } // namespace v8 |
| 5012 | 5029 |
| 5013 #endif // USE_SIMULATOR | 5030 #endif // USE_SIMULATOR |
| 5014 | 5031 |
| 5015 #endif // V8_TARGET_ARCH_ARM | 5032 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |