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

Side by Side Diff: src/compiler/arm/instruction-selector-arm.cc

Issue 1693963004: Add a kSimd128 machine type for Turbofan. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase. Created 4 years, 10 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
« no previous file with comments | « src/arm64/assembler-arm64.h ('k') | src/compiler/arm64/instruction-selector-arm64.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 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/base/adapters.h" 5 #include "src/base/adapters.h"
6 #include "src/base/bits.h" 6 #include "src/base/bits.h"
7 #include "src/compiler/instruction-selector-impl.h" 7 #include "src/compiler/instruction-selector-impl.h"
8 #include "src/compiler/node-matchers.h" 8 #include "src/compiler/node-matchers.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 10
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 case MachineRepresentation::kWord8: 320 case MachineRepresentation::kWord8:
321 opcode = load_rep.IsUnsigned() ? kArmLdrb : kArmLdrsb; 321 opcode = load_rep.IsUnsigned() ? kArmLdrb : kArmLdrsb;
322 break; 322 break;
323 case MachineRepresentation::kWord16: 323 case MachineRepresentation::kWord16:
324 opcode = load_rep.IsUnsigned() ? kArmLdrh : kArmLdrsh; 324 opcode = load_rep.IsUnsigned() ? kArmLdrh : kArmLdrsh;
325 break; 325 break;
326 case MachineRepresentation::kTagged: // Fall through. 326 case MachineRepresentation::kTagged: // Fall through.
327 case MachineRepresentation::kWord32: 327 case MachineRepresentation::kWord32:
328 opcode = kArmLdr; 328 opcode = kArmLdr;
329 break; 329 break;
330 case MachineRepresentation::kNone: // Fall through. 330 case MachineRepresentation::kWord64: // Fall through.
331 case MachineRepresentation::kWord64: 331 case MachineRepresentation::kSimd128: // Fall through.
332 case MachineRepresentation::kNone:
332 UNREACHABLE(); 333 UNREACHABLE();
333 return; 334 return;
334 } 335 }
335 336
336 if (g.CanBeImmediate(index, opcode)) { 337 if (g.CanBeImmediate(index, opcode)) {
337 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), 338 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI),
338 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); 339 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index));
339 } else { 340 } else {
340 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), 341 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR),
341 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(index)); 342 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(index));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 case MachineRepresentation::kWord8: 406 case MachineRepresentation::kWord8:
406 opcode = kArmStrb; 407 opcode = kArmStrb;
407 break; 408 break;
408 case MachineRepresentation::kWord16: 409 case MachineRepresentation::kWord16:
409 opcode = kArmStrh; 410 opcode = kArmStrh;
410 break; 411 break;
411 case MachineRepresentation::kTagged: // Fall through. 412 case MachineRepresentation::kTagged: // Fall through.
412 case MachineRepresentation::kWord32: 413 case MachineRepresentation::kWord32:
413 opcode = kArmStr; 414 opcode = kArmStr;
414 break; 415 break;
415 case MachineRepresentation::kNone: // Fall through. 416 case MachineRepresentation::kWord64: // Fall through.
416 case MachineRepresentation::kWord64: 417 case MachineRepresentation::kSimd128: // Fall through.
418 case MachineRepresentation::kNone:
417 UNREACHABLE(); 419 UNREACHABLE();
418 return; 420 return;
419 } 421 }
420 422
421 if (g.CanBeImmediate(index, opcode)) { 423 if (g.CanBeImmediate(index, opcode)) {
422 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), g.NoOutput(), 424 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), g.NoOutput(),
423 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value)); 425 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value));
424 } else { 426 } else {
425 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), 427 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(),
426 g.UseRegister(base), g.UseRegister(index), g.UseRegister(value)); 428 g.UseRegister(base), g.UseRegister(index), g.UseRegister(value));
(...skipping 18 matching lines...) Expand all
445 break; 447 break;
446 case MachineRepresentation::kWord32: 448 case MachineRepresentation::kWord32:
447 opcode = kCheckedLoadWord32; 449 opcode = kCheckedLoadWord32;
448 break; 450 break;
449 case MachineRepresentation::kFloat32: 451 case MachineRepresentation::kFloat32:
450 opcode = kCheckedLoadFloat32; 452 opcode = kCheckedLoadFloat32;
451 break; 453 break;
452 case MachineRepresentation::kFloat64: 454 case MachineRepresentation::kFloat64:
453 opcode = kCheckedLoadFloat64; 455 opcode = kCheckedLoadFloat64;
454 break; 456 break;
455 case MachineRepresentation::kBit: // Fall through. 457 case MachineRepresentation::kBit: // Fall through.
456 case MachineRepresentation::kTagged: // Fall through. 458 case MachineRepresentation::kTagged: // Fall through.
457 case MachineRepresentation::kWord64: // Fall through. 459 case MachineRepresentation::kWord64: // Fall through.
460 case MachineRepresentation::kSimd128: // Fall through.
458 case MachineRepresentation::kNone: 461 case MachineRepresentation::kNone:
459 UNREACHABLE(); 462 UNREACHABLE();
460 return; 463 return;
461 } 464 }
462 InstructionOperand offset_operand = g.UseRegister(offset); 465 InstructionOperand offset_operand = g.UseRegister(offset);
463 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) 466 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp)
464 ? g.UseImmediate(length) 467 ? g.UseImmediate(length)
465 : g.UseRegister(length); 468 : g.UseRegister(length);
466 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), 469 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR),
467 g.DefineAsRegister(node), offset_operand, length_operand, 470 g.DefineAsRegister(node), offset_operand, length_operand,
(...skipping 18 matching lines...) Expand all
486 break; 489 break;
487 case MachineRepresentation::kWord32: 490 case MachineRepresentation::kWord32:
488 opcode = kCheckedStoreWord32; 491 opcode = kCheckedStoreWord32;
489 break; 492 break;
490 case MachineRepresentation::kFloat32: 493 case MachineRepresentation::kFloat32:
491 opcode = kCheckedStoreFloat32; 494 opcode = kCheckedStoreFloat32;
492 break; 495 break;
493 case MachineRepresentation::kFloat64: 496 case MachineRepresentation::kFloat64:
494 opcode = kCheckedStoreFloat64; 497 opcode = kCheckedStoreFloat64;
495 break; 498 break;
496 case MachineRepresentation::kBit: // Fall through. 499 case MachineRepresentation::kBit: // Fall through.
497 case MachineRepresentation::kTagged: // Fall through. 500 case MachineRepresentation::kTagged: // Fall through.
498 case MachineRepresentation::kWord64: // Fall through. 501 case MachineRepresentation::kWord64: // Fall through.
502 case MachineRepresentation::kSimd128: // Fall through.
499 case MachineRepresentation::kNone: 503 case MachineRepresentation::kNone:
500 UNREACHABLE(); 504 UNREACHABLE();
501 return; 505 return;
502 } 506 }
503 InstructionOperand offset_operand = g.UseRegister(offset); 507 InstructionOperand offset_operand = g.UseRegister(offset);
504 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) 508 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp)
505 ? g.UseImmediate(length) 509 ? g.UseImmediate(length)
506 : g.UseRegister(length); 510 : g.UseRegister(length);
507 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), 511 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(),
508 offset_operand, length_operand, g.UseRegister(value), 512 offset_operand, length_operand, g.UseRegister(value),
(...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after
1673 MachineOperatorBuilder::kFloat64RoundTiesAway | 1677 MachineOperatorBuilder::kFloat64RoundTiesAway |
1674 MachineOperatorBuilder::kFloat32RoundTiesEven | 1678 MachineOperatorBuilder::kFloat32RoundTiesEven |
1675 MachineOperatorBuilder::kFloat64RoundTiesEven; 1679 MachineOperatorBuilder::kFloat64RoundTiesEven;
1676 } 1680 }
1677 return flags; 1681 return flags;
1678 } 1682 }
1679 1683
1680 } // namespace compiler 1684 } // namespace compiler
1681 } // namespace internal 1685 } // namespace internal
1682 } // namespace v8 1686 } // namespace v8
OLDNEW
« no previous file with comments | « src/arm64/assembler-arm64.h ('k') | src/compiler/arm64/instruction-selector-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698