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

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

Issue 2122853002: Implement UnaligedLoad and UnaligedStore turbofan operators. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 5 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 1364 matching lines...) Expand 10 before | Expand all | Expand 10 after
1375 break; 1375 break;
1376 case kMipsLb: 1376 case kMipsLb:
1377 __ lb(i.OutputRegister(), i.MemoryOperand()); 1377 __ lb(i.OutputRegister(), i.MemoryOperand());
1378 break; 1378 break;
1379 case kMipsSb: 1379 case kMipsSb:
1380 __ sb(i.InputRegister(2), i.MemoryOperand()); 1380 __ sb(i.InputRegister(2), i.MemoryOperand());
1381 break; 1381 break;
1382 case kMipsLhu: 1382 case kMipsLhu:
1383 __ lhu(i.OutputRegister(), i.MemoryOperand()); 1383 __ lhu(i.OutputRegister(), i.MemoryOperand());
1384 break; 1384 break;
1385 case kMipsUlhu:
1386 __ Ulhu(i.OutputRegister(), i.MemoryOperand());
1387 break;
1385 case kMipsLh: 1388 case kMipsLh:
1386 __ lh(i.OutputRegister(), i.MemoryOperand()); 1389 __ lh(i.OutputRegister(), i.MemoryOperand());
1387 break; 1390 break;
1391 case kMipsUlh:
1392 __ Ulh(i.OutputRegister(), i.MemoryOperand());
1393 break;
1388 case kMipsSh: 1394 case kMipsSh:
1389 __ sh(i.InputRegister(2), i.MemoryOperand()); 1395 __ sh(i.InputRegister(2), i.MemoryOperand());
1390 break; 1396 break;
1397 case kMipsUsh:
1398 __ Ush(i.InputRegister(2), i.MemoryOperand(), kScratchReg);
1399 break;
1391 case kMipsLw: 1400 case kMipsLw:
1392 __ lw(i.OutputRegister(), i.MemoryOperand()); 1401 __ lw(i.OutputRegister(), i.MemoryOperand());
1393 break; 1402 break;
1403 case kMipsUlw:
1404 __ Ulw(i.OutputRegister(), i.MemoryOperand());
1405 break;
1394 case kMipsSw: 1406 case kMipsSw:
1395 __ sw(i.InputRegister(2), i.MemoryOperand()); 1407 __ sw(i.InputRegister(2), i.MemoryOperand());
1396 break; 1408 break;
1409 case kMipsUsw:
1410 __ Usw(i.InputRegister(2), i.MemoryOperand());
1411 break;
1397 case kMipsLwc1: { 1412 case kMipsLwc1: {
1398 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand()); 1413 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand());
1399 break; 1414 break;
1400 } 1415 }
1416 case kMipsUlwc1: {
1417 __ Ulwc1(i.OutputSingleRegister(), i.MemoryOperand(), kScratchReg);
1418 break;
1419 }
1401 case kMipsSwc1: { 1420 case kMipsSwc1: {
1402 size_t index = 0; 1421 size_t index = 0;
1403 MemOperand operand = i.MemoryOperand(&index); 1422 MemOperand operand = i.MemoryOperand(&index);
1404 __ swc1(i.InputSingleRegister(index), operand); 1423 __ swc1(i.InputSingleRegister(index), operand);
1405 break; 1424 break;
1406 } 1425 }
1426 case kMipsUswc1: {
1427 size_t index = 0;
1428 MemOperand operand = i.MemoryOperand(&index);
1429 __ Uswc1(i.InputSingleRegister(index), operand, kScratchReg);
1430 break;
1431 }
1407 case kMipsLdc1: 1432 case kMipsLdc1:
1408 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand()); 1433 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand());
1409 break; 1434 break;
1435 case kMipsUldc1:
1436 __ Uldc1(i.OutputDoubleRegister(), i.MemoryOperand(), kScratchReg);
1437 break;
1410 case kMipsSdc1: 1438 case kMipsSdc1:
1411 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand()); 1439 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand());
1412 break; 1440 break;
1441 case kMipsUsdc1:
1442 __ Usdc1(i.InputDoubleRegister(2), i.MemoryOperand(), kScratchReg);
1443 break;
1413 case kMipsPush: 1444 case kMipsPush:
1414 if (instr->InputAt(0)->IsFPRegister()) { 1445 if (instr->InputAt(0)->IsFPRegister()) {
1415 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize)); 1446 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize));
1416 __ Subu(sp, sp, Operand(kDoubleSize)); 1447 __ Subu(sp, sp, Operand(kDoubleSize));
1417 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); 1448 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize);
1418 } else { 1449 } else {
1419 __ Push(i.InputRegister(0)); 1450 __ Push(i.InputRegister(0));
1420 frame_access_state()->IncreaseSPDelta(1); 1451 frame_access_state()->IncreaseSPDelta(1);
1421 } 1452 }
1422 break; 1453 break;
(...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after
2125 padding_size -= v8::internal::Assembler::kInstrSize; 2156 padding_size -= v8::internal::Assembler::kInstrSize;
2126 } 2157 }
2127 } 2158 }
2128 } 2159 }
2129 2160
2130 #undef __ 2161 #undef __
2131 2162
2132 } // namespace compiler 2163 } // namespace compiler
2133 } // namespace internal 2164 } // namespace internal
2134 } // namespace v8 2165 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698