Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: src/arm/simulator-arm.cc

Issue 2593443002: [ARM] Add fp version of vceq to assembler, disassembler, and simulator. (Closed)
Patch Set: Add missing UNIMPLEMENTED(). Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/arm/disasm-arm.cc ('k') | test/cctest/test-assembler-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « src/arm/disasm-arm.cc ('k') | test/cctest/test-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698