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

Side by Side Diff: src/compiler/s390/instruction-selector-s390.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/compiler/instruction-selector-impl.h" 6 #include "src/compiler/instruction-selector-impl.h"
7 #include "src/compiler/node-matchers.h" 7 #include "src/compiler/node-matchers.h"
8 #include "src/compiler/node-properties.h" 8 #include "src/compiler/node-properties.h"
9 #include "src/s390/frames-s390.h" 9 #include "src/s390/frames-s390.h"
10 10
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 case MachineRepresentation::kTaggedSigned: // Fall through. 234 case MachineRepresentation::kTaggedSigned: // Fall through.
235 case MachineRepresentation::kTaggedPointer: // Fall through. 235 case MachineRepresentation::kTaggedPointer: // Fall through.
236 case MachineRepresentation::kTagged: // Fall through. 236 case MachineRepresentation::kTagged: // Fall through.
237 case MachineRepresentation::kWord64: 237 case MachineRepresentation::kWord64:
238 opcode = kS390_LoadWord64; 238 opcode = kS390_LoadWord64;
239 break; 239 break;
240 #else 240 #else
241 case MachineRepresentation::kWord64: // Fall through. 241 case MachineRepresentation::kWord64: // Fall through.
242 #endif 242 #endif
243 case MachineRepresentation::kSimd128: // Fall through. 243 case MachineRepresentation::kSimd128: // Fall through.
244 case MachineRepresentation::kSimdBool4: // Fall through.
245 case MachineRepresentation::kSimdBool8: // Fall through.
246 case MachineRepresentation::kSimdBool16: // Fall through.
244 case MachineRepresentation::kNone: 247 case MachineRepresentation::kNone:
245 default: 248 default:
246 UNREACHABLE(); 249 UNREACHABLE();
247 } 250 }
248 return opcode; 251 return opcode;
249 } 252 }
250 253
251 bool AutoZeroExtendsWord32ToWord64(Node* node) { 254 bool AutoZeroExtendsWord32ToWord64(Node* node) {
252 #if !V8_TARGET_ARCH_S390X 255 #if !V8_TARGET_ARCH_S390X
253 return true; 256 return true;
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 opcode = kS390_StoreWord64; 690 opcode = kS390_StoreWord64;
688 if (m.IsWord64ReverseBytes()) { 691 if (m.IsWord64ReverseBytes()) {
689 opcode = kS390_StoreReverse64; 692 opcode = kS390_StoreReverse64;
690 value = value->InputAt(0); 693 value = value->InputAt(0);
691 } 694 }
692 break; 695 break;
693 #else 696 #else
694 case MachineRepresentation::kWord64: // Fall through. 697 case MachineRepresentation::kWord64: // Fall through.
695 #endif 698 #endif
696 case MachineRepresentation::kSimd128: // Fall through. 699 case MachineRepresentation::kSimd128: // Fall through.
700 case MachineRepresentation::kSimdBool4: // Fall through.
701 case MachineRepresentation::kSimdBool8: // Fall through.
702 case MachineRepresentation::kSimdBool16: // Fall through.
697 case MachineRepresentation::kNone: 703 case MachineRepresentation::kNone:
698 UNREACHABLE(); 704 UNREACHABLE();
699 return; 705 return;
700 } 706 }
701 InstructionOperand inputs[4]; 707 InstructionOperand inputs[4];
702 size_t input_count = 0; 708 size_t input_count = 0;
703 AddressingMode addressing_mode = 709 AddressingMode addressing_mode =
704 g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); 710 g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count);
705 InstructionCode code = 711 InstructionCode code =
706 opcode | AddressingModeField::encode(addressing_mode); 712 opcode | AddressingModeField::encode(addressing_mode);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 opcode = kCheckedLoadFloat64; 757 opcode = kCheckedLoadFloat64;
752 break; 758 break;
753 case MachineRepresentation::kBit: // Fall through. 759 case MachineRepresentation::kBit: // Fall through.
754 case MachineRepresentation::kTaggedSigned: // Fall through. 760 case MachineRepresentation::kTaggedSigned: // Fall through.
755 case MachineRepresentation::kTaggedPointer: // Fall through. 761 case MachineRepresentation::kTaggedPointer: // Fall through.
756 case MachineRepresentation::kTagged: // Fall through. 762 case MachineRepresentation::kTagged: // Fall through.
757 #if !V8_TARGET_ARCH_S390X 763 #if !V8_TARGET_ARCH_S390X
758 case MachineRepresentation::kWord64: // Fall through. 764 case MachineRepresentation::kWord64: // Fall through.
759 #endif 765 #endif
760 case MachineRepresentation::kSimd128: // Fall through. 766 case MachineRepresentation::kSimd128: // Fall through.
767 case MachineRepresentation::kSimdBool4: // Fall through.
768 case MachineRepresentation::kSimdBool8: // Fall through.
769 case MachineRepresentation::kSimdBool16: // Fall through.
761 case MachineRepresentation::kNone: 770 case MachineRepresentation::kNone:
762 UNREACHABLE(); 771 UNREACHABLE();
763 return; 772 return;
764 } 773 }
765 AddressingMode addressingMode = kMode_MRR; 774 AddressingMode addressingMode = kMode_MRR;
766 Emit(opcode | AddressingModeField::encode(addressingMode), 775 Emit(opcode | AddressingModeField::encode(addressingMode),
767 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(offset), 776 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(offset),
768 g.UseOperand(length, OperandMode::kUint32Imm)); 777 g.UseOperand(length, OperandMode::kUint32Imm));
769 } 778 }
770 779
(...skipping 27 matching lines...) Expand all
798 opcode = kCheckedStoreFloat64; 807 opcode = kCheckedStoreFloat64;
799 break; 808 break;
800 case MachineRepresentation::kBit: // Fall through. 809 case MachineRepresentation::kBit: // Fall through.
801 case MachineRepresentation::kTaggedSigned: // Fall through. 810 case MachineRepresentation::kTaggedSigned: // Fall through.
802 case MachineRepresentation::kTaggedPointer: // Fall through. 811 case MachineRepresentation::kTaggedPointer: // Fall through.
803 case MachineRepresentation::kTagged: // Fall through. 812 case MachineRepresentation::kTagged: // Fall through.
804 #if !V8_TARGET_ARCH_S390X 813 #if !V8_TARGET_ARCH_S390X
805 case MachineRepresentation::kWord64: // Fall through. 814 case MachineRepresentation::kWord64: // Fall through.
806 #endif 815 #endif
807 case MachineRepresentation::kSimd128: // Fall through. 816 case MachineRepresentation::kSimd128: // Fall through.
817 case MachineRepresentation::kSimdBool4: // Fall through.
818 case MachineRepresentation::kSimdBool8: // Fall through.
819 case MachineRepresentation::kSimdBool16: // Fall through.
808 case MachineRepresentation::kNone: 820 case MachineRepresentation::kNone:
809 UNREACHABLE(); 821 UNREACHABLE();
810 return; 822 return;
811 } 823 }
812 AddressingMode addressingMode = kMode_MRR; 824 AddressingMode addressingMode = kMode_MRR;
813 Emit(opcode | AddressingModeField::encode(addressingMode), g.NoOutput(), 825 Emit(opcode | AddressingModeField::encode(addressingMode), g.NoOutput(),
814 g.UseRegister(base), g.UseRegister(offset), 826 g.UseRegister(base), g.UseRegister(offset),
815 g.UseOperand(length, OperandMode::kUint32Imm), g.UseRegister(value)); 827 g.UseOperand(length, OperandMode::kUint32Imm), g.UseRegister(value));
816 } 828 }
817 829
(...skipping 1501 matching lines...) Expand 10 before | Expand all | Expand 10 after
2319 // static 2331 // static
2320 MachineOperatorBuilder::AlignmentRequirements 2332 MachineOperatorBuilder::AlignmentRequirements
2321 InstructionSelector::AlignmentRequirements() { 2333 InstructionSelector::AlignmentRequirements() {
2322 return MachineOperatorBuilder::AlignmentRequirements:: 2334 return MachineOperatorBuilder::AlignmentRequirements::
2323 FullUnalignedAccessSupport(); 2335 FullUnalignedAccessSupport();
2324 } 2336 }
2325 2337
2326 } // namespace compiler 2338 } // namespace compiler
2327 } // namespace internal 2339 } // namespace internal
2328 } // namespace v8 2340 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698