| 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 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 case MachineRepresentation::kTaggedSigned: // Fall through. | 300 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 301 case MachineRepresentation::kTaggedPointer: // Fall through. | 301 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 302 case MachineRepresentation::kTagged: // Fall through. | 302 case MachineRepresentation::kTagged: // Fall through. |
| 303 case MachineRepresentation::kWord64: | 303 case MachineRepresentation::kWord64: |
| 304 opcode = kS390_LoadWord64; | 304 opcode = kS390_LoadWord64; |
| 305 break; | 305 break; |
| 306 #else | 306 #else |
| 307 case MachineRepresentation::kWord64: // Fall through. | 307 case MachineRepresentation::kWord64: // Fall through. |
| 308 #endif | 308 #endif |
| 309 case MachineRepresentation::kSimd128: // Fall through. | 309 case MachineRepresentation::kSimd128: // Fall through. |
| 310 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 311 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 312 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 313 case MachineRepresentation::kNone: | 310 case MachineRepresentation::kNone: |
| 314 default: | 311 default: |
| 315 UNREACHABLE(); | 312 UNREACHABLE(); |
| 316 } | 313 } |
| 317 return opcode; | 314 return opcode; |
| 318 } | 315 } |
| 319 | 316 |
| 320 #define RESULT_IS_WORD32_LIST(V) \ | 317 #define RESULT_IS_WORD32_LIST(V) \ |
| 321 /* Float unary op*/ \ | 318 /* Float unary op*/ \ |
| 322 V(BitcastFloat32ToInt32) \ | 319 V(BitcastFloat32ToInt32) \ |
| (...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 813 opcode = kS390_StoreWord64; | 810 opcode = kS390_StoreWord64; |
| 814 if (m.IsWord64ReverseBytes()) { | 811 if (m.IsWord64ReverseBytes()) { |
| 815 opcode = kS390_StoreReverse64; | 812 opcode = kS390_StoreReverse64; |
| 816 value = value->InputAt(0); | 813 value = value->InputAt(0); |
| 817 } | 814 } |
| 818 break; | 815 break; |
| 819 #else | 816 #else |
| 820 case MachineRepresentation::kWord64: // Fall through. | 817 case MachineRepresentation::kWord64: // Fall through. |
| 821 #endif | 818 #endif |
| 822 case MachineRepresentation::kSimd128: // Fall through. | 819 case MachineRepresentation::kSimd128: // Fall through. |
| 823 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 824 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 825 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 826 case MachineRepresentation::kNone: | 820 case MachineRepresentation::kNone: |
| 827 UNREACHABLE(); | 821 UNREACHABLE(); |
| 828 return; | 822 return; |
| 829 } | 823 } |
| 830 InstructionOperand inputs[4]; | 824 InstructionOperand inputs[4]; |
| 831 size_t input_count = 0; | 825 size_t input_count = 0; |
| 832 AddressingMode addressing_mode = | 826 AddressingMode addressing_mode = |
| 833 g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); | 827 g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); |
| 834 InstructionCode code = | 828 InstructionCode code = |
| 835 opcode | AddressingModeField::encode(addressing_mode); | 829 opcode | AddressingModeField::encode(addressing_mode); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 880 opcode = kCheckedLoadFloat64; | 874 opcode = kCheckedLoadFloat64; |
| 881 break; | 875 break; |
| 882 case MachineRepresentation::kBit: // Fall through. | 876 case MachineRepresentation::kBit: // Fall through. |
| 883 case MachineRepresentation::kTaggedSigned: // Fall through. | 877 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 884 case MachineRepresentation::kTaggedPointer: // Fall through. | 878 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 885 case MachineRepresentation::kTagged: // Fall through. | 879 case MachineRepresentation::kTagged: // Fall through. |
| 886 #if !V8_TARGET_ARCH_S390X | 880 #if !V8_TARGET_ARCH_S390X |
| 887 case MachineRepresentation::kWord64: // Fall through. | 881 case MachineRepresentation::kWord64: // Fall through. |
| 888 #endif | 882 #endif |
| 889 case MachineRepresentation::kSimd128: // Fall through. | 883 case MachineRepresentation::kSimd128: // Fall through. |
| 890 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 891 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 892 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 893 case MachineRepresentation::kNone: | 884 case MachineRepresentation::kNone: |
| 894 UNREACHABLE(); | 885 UNREACHABLE(); |
| 895 return; | 886 return; |
| 896 } | 887 } |
| 897 AddressingMode addressingMode = kMode_MRR; | 888 AddressingMode addressingMode = kMode_MRR; |
| 898 Emit(opcode | AddressingModeField::encode(addressingMode), | 889 Emit(opcode | AddressingModeField::encode(addressingMode), |
| 899 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(offset), | 890 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(offset), |
| 900 g.UseOperand(length, OperandMode::kUint32Imm)); | 891 g.UseOperand(length, OperandMode::kUint32Imm)); |
| 901 } | 892 } |
| 902 | 893 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 930 opcode = kCheckedStoreFloat64; | 921 opcode = kCheckedStoreFloat64; |
| 931 break; | 922 break; |
| 932 case MachineRepresentation::kBit: // Fall through. | 923 case MachineRepresentation::kBit: // Fall through. |
| 933 case MachineRepresentation::kTaggedSigned: // Fall through. | 924 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 934 case MachineRepresentation::kTaggedPointer: // Fall through. | 925 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 935 case MachineRepresentation::kTagged: // Fall through. | 926 case MachineRepresentation::kTagged: // Fall through. |
| 936 #if !V8_TARGET_ARCH_S390X | 927 #if !V8_TARGET_ARCH_S390X |
| 937 case MachineRepresentation::kWord64: // Fall through. | 928 case MachineRepresentation::kWord64: // Fall through. |
| 938 #endif | 929 #endif |
| 939 case MachineRepresentation::kSimd128: // Fall through. | 930 case MachineRepresentation::kSimd128: // Fall through. |
| 940 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 941 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 942 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 943 case MachineRepresentation::kNone: | 931 case MachineRepresentation::kNone: |
| 944 UNREACHABLE(); | 932 UNREACHABLE(); |
| 945 return; | 933 return; |
| 946 } | 934 } |
| 947 AddressingMode addressingMode = kMode_MRR; | 935 AddressingMode addressingMode = kMode_MRR; |
| 948 Emit(opcode | AddressingModeField::encode(addressingMode), g.NoOutput(), | 936 Emit(opcode | AddressingModeField::encode(addressingMode), g.NoOutput(), |
| 949 g.UseRegister(base), g.UseRegister(offset), | 937 g.UseRegister(base), g.UseRegister(offset), |
| 950 g.UseOperand(length, OperandMode::kUint32Imm), g.UseRegister(value)); | 938 g.UseOperand(length, OperandMode::kUint32Imm), g.UseRegister(value)); |
| 951 } | 939 } |
| 952 | 940 |
| (...skipping 1556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2509 // static | 2497 // static |
| 2510 MachineOperatorBuilder::AlignmentRequirements | 2498 MachineOperatorBuilder::AlignmentRequirements |
| 2511 InstructionSelector::AlignmentRequirements() { | 2499 InstructionSelector::AlignmentRequirements() { |
| 2512 return MachineOperatorBuilder::AlignmentRequirements:: | 2500 return MachineOperatorBuilder::AlignmentRequirements:: |
| 2513 FullUnalignedAccessSupport(); | 2501 FullUnalignedAccessSupport(); |
| 2514 } | 2502 } |
| 2515 | 2503 |
| 2516 } // namespace compiler | 2504 } // namespace compiler |
| 2517 } // namespace internal | 2505 } // namespace internal |
| 2518 } // namespace v8 | 2506 } // namespace v8 |
| OLD | NEW |