| 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::kSimd1x4: // Fall through. |
| 245 case MachineRepresentation::kSimd1x8: // Fall through. |
| 246 case MachineRepresentation::kSimd1x16: // 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::kSimd1x4: // Fall through. |
| 701 case MachineRepresentation::kSimd1x8: // Fall through. |
| 702 case MachineRepresentation::kSimd1x16: // 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::kSimd1x4: // Fall through. |
| 768 case MachineRepresentation::kSimd1x8: // Fall through. |
| 769 case MachineRepresentation::kSimd1x16: // 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::kSimd1x4: // Fall through. |
| 818 case MachineRepresentation::kSimd1x8: // Fall through. |
| 819 case MachineRepresentation::kSimd1x16: // 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 |