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

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

Issue 2700813002: [V8] Implement SIMD Boolean vector types to allow mask registers. (Closed)
Patch Set: Remove stray DCHECK. Created 3 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 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 opcode = load_rep.IsUnsigned() ? kArmLdrh : kArmLdrsh; 420 opcode = load_rep.IsUnsigned() ? kArmLdrh : kArmLdrsh;
421 break; 421 break;
422 case MachineRepresentation::kTaggedSigned: // Fall through. 422 case MachineRepresentation::kTaggedSigned: // Fall through.
423 case MachineRepresentation::kTaggedPointer: // Fall through. 423 case MachineRepresentation::kTaggedPointer: // Fall through.
424 case MachineRepresentation::kTagged: // Fall through. 424 case MachineRepresentation::kTagged: // Fall through.
425 case MachineRepresentation::kWord32: 425 case MachineRepresentation::kWord32:
426 opcode = kArmLdr; 426 opcode = kArmLdr;
427 break; 427 break;
428 case MachineRepresentation::kWord64: // Fall through. 428 case MachineRepresentation::kWord64: // Fall through.
429 case MachineRepresentation::kSimd128: // Fall through. 429 case MachineRepresentation::kSimd128: // Fall through.
430 case MachineRepresentation::kSimdBool4: // Fall through.
431 case MachineRepresentation::kSimdBool8: // Fall through.
432 case MachineRepresentation::kSimdBool16: // Fall through.
430 case MachineRepresentation::kNone: 433 case MachineRepresentation::kNone:
431 UNREACHABLE(); 434 UNREACHABLE();
432 return; 435 return;
433 } 436 }
434 437
435 InstructionOperand output = g.DefineAsRegister(node); 438 InstructionOperand output = g.DefineAsRegister(node);
436 EmitLoad(this, opcode, &output, base, index); 439 EmitLoad(this, opcode, &output, base, index);
437 } 440 }
438 441
439 void InstructionSelector::VisitProtectedLoad(Node* node) { 442 void InstructionSelector::VisitProtectedLoad(Node* node) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 opcode = kArmStrh; 508 opcode = kArmStrh;
506 break; 509 break;
507 case MachineRepresentation::kTaggedSigned: // Fall through. 510 case MachineRepresentation::kTaggedSigned: // Fall through.
508 case MachineRepresentation::kTaggedPointer: // Fall through. 511 case MachineRepresentation::kTaggedPointer: // Fall through.
509 case MachineRepresentation::kTagged: // Fall through. 512 case MachineRepresentation::kTagged: // Fall through.
510 case MachineRepresentation::kWord32: 513 case MachineRepresentation::kWord32:
511 opcode = kArmStr; 514 opcode = kArmStr;
512 break; 515 break;
513 case MachineRepresentation::kWord64: // Fall through. 516 case MachineRepresentation::kWord64: // Fall through.
514 case MachineRepresentation::kSimd128: // Fall through. 517 case MachineRepresentation::kSimd128: // Fall through.
518 case MachineRepresentation::kSimdBool4: // Fall through.
519 case MachineRepresentation::kSimdBool8: // Fall through.
520 case MachineRepresentation::kSimdBool16: // Fall through.
515 case MachineRepresentation::kNone: 521 case MachineRepresentation::kNone:
516 UNREACHABLE(); 522 UNREACHABLE();
517 return; 523 return;
518 } 524 }
519 525
520 InstructionOperand inputs[4]; 526 InstructionOperand inputs[4];
521 size_t input_count = 0; 527 size_t input_count = 0;
522 inputs[input_count++] = g.UseRegister(value); 528 inputs[input_count++] = g.UseRegister(value);
523 inputs[input_count++] = g.UseRegister(base); 529 inputs[input_count++] = g.UseRegister(base);
524 EmitStore(this, opcode, input_count, inputs, index); 530 EmitStore(this, opcode, input_count, inputs, index);
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 break; 674 break;
669 case MachineRepresentation::kFloat64: 675 case MachineRepresentation::kFloat64:
670 opcode = kCheckedLoadFloat64; 676 opcode = kCheckedLoadFloat64;
671 break; 677 break;
672 case MachineRepresentation::kBit: // Fall through. 678 case MachineRepresentation::kBit: // Fall through.
673 case MachineRepresentation::kTaggedSigned: // Fall through. 679 case MachineRepresentation::kTaggedSigned: // Fall through.
674 case MachineRepresentation::kTaggedPointer: // Fall through. 680 case MachineRepresentation::kTaggedPointer: // Fall through.
675 case MachineRepresentation::kTagged: // Fall through. 681 case MachineRepresentation::kTagged: // Fall through.
676 case MachineRepresentation::kWord64: // Fall through. 682 case MachineRepresentation::kWord64: // Fall through.
677 case MachineRepresentation::kSimd128: // Fall through. 683 case MachineRepresentation::kSimd128: // Fall through.
684 case MachineRepresentation::kSimdBool4: // Fall through.
685 case MachineRepresentation::kSimdBool8: // Fall through.
686 case MachineRepresentation::kSimdBool16: // Fall through.
678 case MachineRepresentation::kNone: 687 case MachineRepresentation::kNone:
679 UNREACHABLE(); 688 UNREACHABLE();
680 return; 689 return;
681 } 690 }
682 InstructionOperand offset_operand = g.UseRegister(offset); 691 InstructionOperand offset_operand = g.UseRegister(offset);
683 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) 692 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp)
684 ? g.UseImmediate(length) 693 ? g.UseImmediate(length)
685 : g.UseRegister(length); 694 : g.UseRegister(length);
686 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), 695 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR),
687 g.DefineAsRegister(node), offset_operand, length_operand, 696 g.DefineAsRegister(node), offset_operand, length_operand,
(...skipping 24 matching lines...) Expand all
712 break; 721 break;
713 case MachineRepresentation::kFloat64: 722 case MachineRepresentation::kFloat64:
714 opcode = kCheckedStoreFloat64; 723 opcode = kCheckedStoreFloat64;
715 break; 724 break;
716 case MachineRepresentation::kBit: // Fall through. 725 case MachineRepresentation::kBit: // Fall through.
717 case MachineRepresentation::kTaggedSigned: // Fall through. 726 case MachineRepresentation::kTaggedSigned: // Fall through.
718 case MachineRepresentation::kTaggedPointer: // Fall through. 727 case MachineRepresentation::kTaggedPointer: // Fall through.
719 case MachineRepresentation::kTagged: // Fall through. 728 case MachineRepresentation::kTagged: // Fall through.
720 case MachineRepresentation::kWord64: // Fall through. 729 case MachineRepresentation::kWord64: // Fall through.
721 case MachineRepresentation::kSimd128: // Fall through. 730 case MachineRepresentation::kSimd128: // Fall through.
731 case MachineRepresentation::kSimdBool4: // Fall through.
732 case MachineRepresentation::kSimdBool8: // Fall through.
733 case MachineRepresentation::kSimdBool16: // Fall through.
722 case MachineRepresentation::kNone: 734 case MachineRepresentation::kNone:
723 UNREACHABLE(); 735 UNREACHABLE();
724 return; 736 return;
725 } 737 }
726 InstructionOperand offset_operand = g.UseRegister(offset); 738 InstructionOperand offset_operand = g.UseRegister(offset);
727 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) 739 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp)
728 ? g.UseImmediate(length) 740 ? g.UseImmediate(length)
729 : g.UseRegister(length); 741 : g.UseRegister(length);
730 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), 742 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(),
731 offset_operand, length_operand, g.UseRegister(value), 743 offset_operand, length_operand, g.UseRegister(value),
(...skipping 1608 matching lines...) Expand 10 before | Expand all | Expand 10 after
2340 Vector<MachineType> req_aligned = Vector<MachineType>::New(2); 2352 Vector<MachineType> req_aligned = Vector<MachineType>::New(2);
2341 req_aligned[0] = MachineType::Float32(); 2353 req_aligned[0] = MachineType::Float32();
2342 req_aligned[1] = MachineType::Float64(); 2354 req_aligned[1] = MachineType::Float64();
2343 return MachineOperatorBuilder::AlignmentRequirements:: 2355 return MachineOperatorBuilder::AlignmentRequirements::
2344 SomeUnalignedAccessUnsupported(req_aligned, req_aligned); 2356 SomeUnalignedAccessUnsupported(req_aligned, req_aligned);
2345 } 2357 }
2346 2358
2347 } // namespace compiler 2359 } // namespace compiler
2348 } // namespace internal 2360 } // namespace internal
2349 } // namespace v8 2361 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698