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 |