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

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: 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
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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 case MachineRepresentation::kWord8: 396 case MachineRepresentation::kWord8:
396 opcode = kArmStrb; 397 opcode = kArmStrb;
397 break; 398 break;
398 case MachineRepresentation::kWord16: 399 case MachineRepresentation::kWord16:
399 opcode = kArmStrh; 400 opcode = kArmStrh;
400 break; 401 break;
401 case MachineRepresentation::kTagged: // Fall through. 402 case MachineRepresentation::kTagged: // Fall through.
402 case MachineRepresentation::kWord32: 403 case MachineRepresentation::kWord32:
403 opcode = kArmStr; 404 opcode = kArmStr;
404 break; 405 break;
405 case MachineRepresentation::kNone: // Fall through. 406 case MachineRepresentation::kWord64: // Fall through.
406 case MachineRepresentation::kWord64: 407 case MachineRepresentation::kSimd128: // Fall through.
408 case MachineRepresentation::kNone:
407 UNREACHABLE(); 409 UNREACHABLE();
408 return; 410 return;
409 } 411 }
410 412
411 if (g.CanBeImmediate(index, opcode)) { 413 if (g.CanBeImmediate(index, opcode)) {
412 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), g.NoOutput(), 414 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), g.NoOutput(),
413 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value)); 415 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value));
414 } else { 416 } else {
415 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), 417 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(),
416 g.UseRegister(base), g.UseRegister(index), g.UseRegister(value)); 418 g.UseRegister(base), g.UseRegister(index), g.UseRegister(value));
(...skipping 18 matching lines...) Expand all
435 break; 437 break;
436 case MachineRepresentation::kWord32: 438 case MachineRepresentation::kWord32:
437 opcode = kCheckedLoadWord32; 439 opcode = kCheckedLoadWord32;
438 break; 440 break;
439 case MachineRepresentation::kFloat32: 441 case MachineRepresentation::kFloat32:
440 opcode = kCheckedLoadFloat32; 442 opcode = kCheckedLoadFloat32;
441 break; 443 break;
442 case MachineRepresentation::kFloat64: 444 case MachineRepresentation::kFloat64:
443 opcode = kCheckedLoadFloat64; 445 opcode = kCheckedLoadFloat64;
444 break; 446 break;
445 case MachineRepresentation::kBit: // Fall through. 447 case MachineRepresentation::kBit: // Fall through.
446 case MachineRepresentation::kTagged: // Fall through. 448 case MachineRepresentation::kTagged: // Fall through.
447 case MachineRepresentation::kWord64: // Fall through. 449 case MachineRepresentation::kWord64: // Fall through.
450 case MachineRepresentation::kSimd128: // Fall through.
448 case MachineRepresentation::kNone: 451 case MachineRepresentation::kNone:
449 UNREACHABLE(); 452 UNREACHABLE();
450 return; 453 return;
451 } 454 }
452 InstructionOperand offset_operand = g.UseRegister(offset); 455 InstructionOperand offset_operand = g.UseRegister(offset);
453 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) 456 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp)
454 ? g.UseImmediate(length) 457 ? g.UseImmediate(length)
455 : g.UseRegister(length); 458 : g.UseRegister(length);
456 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), 459 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR),
457 g.DefineAsRegister(node), offset_operand, length_operand, 460 g.DefineAsRegister(node), offset_operand, length_operand,
(...skipping 18 matching lines...) Expand all
476 break; 479 break;
477 case MachineRepresentation::kWord32: 480 case MachineRepresentation::kWord32:
478 opcode = kCheckedStoreWord32; 481 opcode = kCheckedStoreWord32;
479 break; 482 break;
480 case MachineRepresentation::kFloat32: 483 case MachineRepresentation::kFloat32:
481 opcode = kCheckedStoreFloat32; 484 opcode = kCheckedStoreFloat32;
482 break; 485 break;
483 case MachineRepresentation::kFloat64: 486 case MachineRepresentation::kFloat64:
484 opcode = kCheckedStoreFloat64; 487 opcode = kCheckedStoreFloat64;
485 break; 488 break;
486 case MachineRepresentation::kBit: // Fall through. 489 case MachineRepresentation::kBit: // Fall through.
487 case MachineRepresentation::kTagged: // Fall through. 490 case MachineRepresentation::kTagged: // Fall through.
488 case MachineRepresentation::kWord64: // Fall through. 491 case MachineRepresentation::kWord64: // Fall through.
492 case MachineRepresentation::kSimd128: // Fall through.
489 case MachineRepresentation::kNone: 493 case MachineRepresentation::kNone:
490 UNREACHABLE(); 494 UNREACHABLE();
491 return; 495 return;
492 } 496 }
493 InstructionOperand offset_operand = g.UseRegister(offset); 497 InstructionOperand offset_operand = g.UseRegister(offset);
494 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) 498 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp)
495 ? g.UseImmediate(length) 499 ? g.UseImmediate(length)
496 : g.UseRegister(length); 500 : g.UseRegister(length);
497 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), 501 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(),
498 offset_operand, length_operand, g.UseRegister(value), 502 offset_operand, length_operand, g.UseRegister(value),
(...skipping 1122 matching lines...) Expand 10 before | Expand all | Expand 10 after
1621 MachineOperatorBuilder::kFloat64RoundTiesAway | 1625 MachineOperatorBuilder::kFloat64RoundTiesAway |
1622 MachineOperatorBuilder::kFloat32RoundTiesEven | 1626 MachineOperatorBuilder::kFloat32RoundTiesEven |
1623 MachineOperatorBuilder::kFloat64RoundTiesEven; 1627 MachineOperatorBuilder::kFloat64RoundTiesEven;
1624 } 1628 }
1625 return flags; 1629 return flags;
1626 } 1630 }
1627 1631
1628 } // namespace compiler 1632 } // namespace compiler
1629 } // namespace internal 1633 } // namespace internal
1630 } // namespace v8 1634 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698