| 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 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 case MachineRepresentation::kTaggedSigned: // Fall through. | 289 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 290 case MachineRepresentation::kTaggedPointer: // Fall through. | 290 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 291 case MachineRepresentation::kTagged: // Fall through. | 291 case MachineRepresentation::kTagged: // Fall through. |
| 292 case MachineRepresentation::kWord64: | 292 case MachineRepresentation::kWord64: |
| 293 opcode = kS390_LoadWord64; | 293 opcode = kS390_LoadWord64; |
| 294 break; | 294 break; |
| 295 #else | 295 #else |
| 296 case MachineRepresentation::kWord64: // Fall through. | 296 case MachineRepresentation::kWord64: // Fall through. |
| 297 #endif | 297 #endif |
| 298 case MachineRepresentation::kSimd128: // Fall through. | 298 case MachineRepresentation::kSimd128: // Fall through. |
| 299 case MachineRepresentation::kSimd1x4: // Fall through. |
| 300 case MachineRepresentation::kSimd1x8: // Fall through. |
| 301 case MachineRepresentation::kSimd1x16: // Fall through. |
| 299 case MachineRepresentation::kNone: | 302 case MachineRepresentation::kNone: |
| 300 default: | 303 default: |
| 301 UNREACHABLE(); | 304 UNREACHABLE(); |
| 302 } | 305 } |
| 303 return opcode; | 306 return opcode; |
| 304 } | 307 } |
| 305 | 308 |
| 306 bool AutoZeroExtendsWord32ToWord64(Node* node) { | 309 bool AutoZeroExtendsWord32ToWord64(Node* node) { |
| 307 #if !V8_TARGET_ARCH_S390X | 310 #if !V8_TARGET_ARCH_S390X |
| 308 return true; | 311 return true; |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 742 opcode = kS390_StoreWord64; | 745 opcode = kS390_StoreWord64; |
| 743 if (m.IsWord64ReverseBytes()) { | 746 if (m.IsWord64ReverseBytes()) { |
| 744 opcode = kS390_StoreReverse64; | 747 opcode = kS390_StoreReverse64; |
| 745 value = value->InputAt(0); | 748 value = value->InputAt(0); |
| 746 } | 749 } |
| 747 break; | 750 break; |
| 748 #else | 751 #else |
| 749 case MachineRepresentation::kWord64: // Fall through. | 752 case MachineRepresentation::kWord64: // Fall through. |
| 750 #endif | 753 #endif |
| 751 case MachineRepresentation::kSimd128: // Fall through. | 754 case MachineRepresentation::kSimd128: // Fall through. |
| 755 case MachineRepresentation::kSimd1x4: // Fall through. |
| 756 case MachineRepresentation::kSimd1x8: // Fall through. |
| 757 case MachineRepresentation::kSimd1x16: // Fall through. |
| 752 case MachineRepresentation::kNone: | 758 case MachineRepresentation::kNone: |
| 753 UNREACHABLE(); | 759 UNREACHABLE(); |
| 754 return; | 760 return; |
| 755 } | 761 } |
| 756 InstructionOperand inputs[4]; | 762 InstructionOperand inputs[4]; |
| 757 size_t input_count = 0; | 763 size_t input_count = 0; |
| 758 AddressingMode addressing_mode = | 764 AddressingMode addressing_mode = |
| 759 g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); | 765 g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); |
| 760 InstructionCode code = | 766 InstructionCode code = |
| 761 opcode | AddressingModeField::encode(addressing_mode); | 767 opcode | AddressingModeField::encode(addressing_mode); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 806 opcode = kCheckedLoadFloat64; | 812 opcode = kCheckedLoadFloat64; |
| 807 break; | 813 break; |
| 808 case MachineRepresentation::kBit: // Fall through. | 814 case MachineRepresentation::kBit: // Fall through. |
| 809 case MachineRepresentation::kTaggedSigned: // Fall through. | 815 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 810 case MachineRepresentation::kTaggedPointer: // Fall through. | 816 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 811 case MachineRepresentation::kTagged: // Fall through. | 817 case MachineRepresentation::kTagged: // Fall through. |
| 812 #if !V8_TARGET_ARCH_S390X | 818 #if !V8_TARGET_ARCH_S390X |
| 813 case MachineRepresentation::kWord64: // Fall through. | 819 case MachineRepresentation::kWord64: // Fall through. |
| 814 #endif | 820 #endif |
| 815 case MachineRepresentation::kSimd128: // Fall through. | 821 case MachineRepresentation::kSimd128: // Fall through. |
| 822 case MachineRepresentation::kSimd1x4: // Fall through. |
| 823 case MachineRepresentation::kSimd1x8: // Fall through. |
| 824 case MachineRepresentation::kSimd1x16: // Fall through. |
| 816 case MachineRepresentation::kNone: | 825 case MachineRepresentation::kNone: |
| 817 UNREACHABLE(); | 826 UNREACHABLE(); |
| 818 return; | 827 return; |
| 819 } | 828 } |
| 820 AddressingMode addressingMode = kMode_MRR; | 829 AddressingMode addressingMode = kMode_MRR; |
| 821 Emit(opcode | AddressingModeField::encode(addressingMode), | 830 Emit(opcode | AddressingModeField::encode(addressingMode), |
| 822 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(offset), | 831 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(offset), |
| 823 g.UseOperand(length, OperandMode::kUint32Imm)); | 832 g.UseOperand(length, OperandMode::kUint32Imm)); |
| 824 } | 833 } |
| 825 | 834 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 853 opcode = kCheckedStoreFloat64; | 862 opcode = kCheckedStoreFloat64; |
| 854 break; | 863 break; |
| 855 case MachineRepresentation::kBit: // Fall through. | 864 case MachineRepresentation::kBit: // Fall through. |
| 856 case MachineRepresentation::kTaggedSigned: // Fall through. | 865 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 857 case MachineRepresentation::kTaggedPointer: // Fall through. | 866 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 858 case MachineRepresentation::kTagged: // Fall through. | 867 case MachineRepresentation::kTagged: // Fall through. |
| 859 #if !V8_TARGET_ARCH_S390X | 868 #if !V8_TARGET_ARCH_S390X |
| 860 case MachineRepresentation::kWord64: // Fall through. | 869 case MachineRepresentation::kWord64: // Fall through. |
| 861 #endif | 870 #endif |
| 862 case MachineRepresentation::kSimd128: // Fall through. | 871 case MachineRepresentation::kSimd128: // Fall through. |
| 872 case MachineRepresentation::kSimd1x4: // Fall through. |
| 873 case MachineRepresentation::kSimd1x8: // Fall through. |
| 874 case MachineRepresentation::kSimd1x16: // Fall through. |
| 863 case MachineRepresentation::kNone: | 875 case MachineRepresentation::kNone: |
| 864 UNREACHABLE(); | 876 UNREACHABLE(); |
| 865 return; | 877 return; |
| 866 } | 878 } |
| 867 AddressingMode addressingMode = kMode_MRR; | 879 AddressingMode addressingMode = kMode_MRR; |
| 868 Emit(opcode | AddressingModeField::encode(addressingMode), g.NoOutput(), | 880 Emit(opcode | AddressingModeField::encode(addressingMode), g.NoOutput(), |
| 869 g.UseRegister(base), g.UseRegister(offset), | 881 g.UseRegister(base), g.UseRegister(offset), |
| 870 g.UseOperand(length, OperandMode::kUint32Imm), g.UseRegister(value)); | 882 g.UseOperand(length, OperandMode::kUint32Imm), g.UseRegister(value)); |
| 871 } | 883 } |
| 872 | 884 |
| (...skipping 1655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2528 // static | 2540 // static |
| 2529 MachineOperatorBuilder::AlignmentRequirements | 2541 MachineOperatorBuilder::AlignmentRequirements |
| 2530 InstructionSelector::AlignmentRequirements() { | 2542 InstructionSelector::AlignmentRequirements() { |
| 2531 return MachineOperatorBuilder::AlignmentRequirements:: | 2543 return MachineOperatorBuilder::AlignmentRequirements:: |
| 2532 FullUnalignedAccessSupport(); | 2544 FullUnalignedAccessSupport(); |
| 2533 } | 2545 } |
| 2534 | 2546 |
| 2535 } // namespace compiler | 2547 } // namespace compiler |
| 2536 } // namespace internal | 2548 } // namespace internal |
| 2537 } // namespace v8 | 2549 } // namespace v8 |
| OLD | NEW |