OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |