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

Side by Side Diff: src/compiler/mips64/code-generator-mips64.cc

Issue 1779713009: Implement optional turbofan UnalignedLoad and UnalignedStore operators (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix failures in cctest/test-run-wasm-64/Run_Wasm_LoadStoreI64_sx due to missing implementation of U… Created 4 years, 9 months 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
OLDNEW
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 "src/ast/scopes.h" 5 #include "src/ast/scopes.h"
6 #include "src/compiler/code-generator.h" 6 #include "src/compiler/code-generator.h"
7 #include "src/compiler/code-generator-impl.h" 7 #include "src/compiler/code-generator-impl.h"
8 #include "src/compiler/gap-resolver.h" 8 #include "src/compiler/gap-resolver.h"
9 #include "src/compiler/node-matchers.h" 9 #include "src/compiler/node-matchers.h"
10 #include "src/compiler/osr.h" 10 #include "src/compiler/osr.h"
(...skipping 1430 matching lines...) Expand 10 before | Expand all | Expand 10 after
1441 break; 1441 break;
1442 case kMips64Lb: 1442 case kMips64Lb:
1443 __ lb(i.OutputRegister(), i.MemoryOperand()); 1443 __ lb(i.OutputRegister(), i.MemoryOperand());
1444 break; 1444 break;
1445 case kMips64Sb: 1445 case kMips64Sb:
1446 __ sb(i.InputRegister(2), i.MemoryOperand()); 1446 __ sb(i.InputRegister(2), i.MemoryOperand());
1447 break; 1447 break;
1448 case kMips64Lhu: 1448 case kMips64Lhu:
1449 __ lhu(i.OutputRegister(), i.MemoryOperand()); 1449 __ lhu(i.OutputRegister(), i.MemoryOperand());
1450 break; 1450 break;
1451 case kMips64Ulhu:
1452 __ Ulhu(i.OutputRegister(), i.MemoryOperand());
1453 break;
1451 case kMips64Lh: 1454 case kMips64Lh:
1452 __ lh(i.OutputRegister(), i.MemoryOperand()); 1455 __ lh(i.OutputRegister(), i.MemoryOperand());
1453 break; 1456 break;
1457 case kMips64Ulh:
1458 __ Ulh(i.OutputRegister(), i.MemoryOperand());
1459 break;
1454 case kMips64Sh: 1460 case kMips64Sh:
1455 __ sh(i.InputRegister(2), i.MemoryOperand()); 1461 __ sh(i.InputRegister(2), i.MemoryOperand());
1456 break; 1462 break;
1463 case kMips64Ush:
1464 __ Ush(i.InputRegister(2), i.MemoryOperand(), kScratchReg);
1465 break;
1457 case kMips64Lw: 1466 case kMips64Lw:
1458 __ lw(i.OutputRegister(), i.MemoryOperand()); 1467 __ lw(i.OutputRegister(), i.MemoryOperand());
1459 break; 1468 break;
1469 case kMips64Ulw:
1470 __ Ulw(i.OutputRegister(), i.MemoryOperand());
1471 break;
1472 case kMips64Lwu:
1473 __ lwu(i.OutputRegister(), i.MemoryOperand());
1474 break;
1475 case kMips64Ulwu:
1476 __ Ulwu(i.OutputRegister(), i.MemoryOperand());
1477 break;
1460 case kMips64Ld: 1478 case kMips64Ld:
1461 __ ld(i.OutputRegister(), i.MemoryOperand()); 1479 __ ld(i.OutputRegister(), i.MemoryOperand());
1462 break; 1480 break;
1481 case kMips64Uld:
1482 __ Uld(i.OutputRegister(), i.MemoryOperand());
1483 break;
1463 case kMips64Sw: 1484 case kMips64Sw:
1464 __ sw(i.InputRegister(2), i.MemoryOperand()); 1485 __ sw(i.InputRegister(2), i.MemoryOperand());
1465 break; 1486 break;
1487 case kMips64Usw:
1488 __ Usw(i.InputRegister(2), i.MemoryOperand());
1489 break;
1466 case kMips64Sd: 1490 case kMips64Sd:
1467 __ sd(i.InputRegister(2), i.MemoryOperand()); 1491 __ sd(i.InputRegister(2), i.MemoryOperand());
1468 break; 1492 break;
1493 case kMips64Usd:
1494 __ Usd(i.InputRegister(2), i.MemoryOperand());
1495 break;
1469 case kMips64Lwc1: { 1496 case kMips64Lwc1: {
1470 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand()); 1497 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand());
1471 break; 1498 break;
1472 } 1499 }
1500 case kMips64Ulwc1: {
1501 __ Ulwc1(i.OutputSingleRegister(), i.MemoryOperand(), kScratchReg);
1502 break;
1503 }
1473 case kMips64Swc1: { 1504 case kMips64Swc1: {
1474 size_t index = 0; 1505 size_t index = 0;
1475 MemOperand operand = i.MemoryOperand(&index); 1506 MemOperand operand = i.MemoryOperand(&index);
1476 __ swc1(i.InputSingleRegister(index), operand); 1507 __ swc1(i.InputSingleRegister(index), operand);
1477 break; 1508 break;
1478 } 1509 }
1479 case kMips64Ldc1: 1510 case kMips64Uswc1: {
1511 size_t index = 0;
1512 MemOperand operand = i.MemoryOperand(&index);
1513 __ Uswc1(i.InputSingleRegister(index), operand, kScratchReg);
1514 break;
1515 }
1516 case kMips64Ldc1: {
1480 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand()); 1517 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand());
1481 break; 1518 break;
1519 }
1520 case kMips64Uldc1:
1521 __ Uldc1(i.OutputDoubleRegister(), i.MemoryOperand(), kScratchReg);
1522 break;
1482 case kMips64Sdc1: 1523 case kMips64Sdc1:
1483 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand()); 1524 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand());
1484 break; 1525 break;
1526 case kMips64Usdc1:
1527 __ Usdc1(i.InputDoubleRegister(2), i.MemoryOperand(), kScratchReg);
1528 break;
1485 case kMips64Push: 1529 case kMips64Push:
1486 if (instr->InputAt(0)->IsDoubleRegister()) { 1530 if (instr->InputAt(0)->IsDoubleRegister()) {
1487 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize)); 1531 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize));
1488 __ Subu(sp, sp, Operand(kDoubleSize)); 1532 __ Subu(sp, sp, Operand(kDoubleSize));
1489 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); 1533 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize);
1490 } else { 1534 } else {
1491 __ Push(i.InputRegister(0)); 1535 __ Push(i.InputRegister(0));
1492 frame_access_state()->IncreaseSPDelta(1); 1536 frame_access_state()->IncreaseSPDelta(1);
1493 } 1537 }
1494 break; 1538 break;
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after
2169 padding_size -= v8::internal::Assembler::kInstrSize; 2213 padding_size -= v8::internal::Assembler::kInstrSize;
2170 } 2214 }
2171 } 2215 }
2172 } 2216 }
2173 2217
2174 #undef __ 2218 #undef __
2175 2219
2176 } // namespace compiler 2220 } // namespace compiler
2177 } // namespace internal 2221 } // namespace internal
2178 } // namespace v8 2222 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698