| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/base/bits.h" | 6 #include "src/base/bits.h" |
| 7 #include "src/compiler/instruction-selector-impl.h" | 7 #include "src/compiler/instruction-selector-impl.h" |
| 8 #include "src/compiler/node-matchers.h" | 8 #include "src/compiler/node-matchers.h" |
| 9 #include "src/compiler/node-properties.h" | 9 #include "src/compiler/node-properties.h" |
| 10 | 10 |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 break; | 407 break; |
| 408 case MachineRepresentation::kTaggedSigned: // Fall through. | 408 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 409 case MachineRepresentation::kTaggedPointer: // Fall through. | 409 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 410 case MachineRepresentation::kTagged: // Fall through. | 410 case MachineRepresentation::kTagged: // Fall through. |
| 411 case MachineRepresentation::kWord64: | 411 case MachineRepresentation::kWord64: |
| 412 opcode = kMips64Ld; | 412 opcode = kMips64Ld; |
| 413 break; | 413 break; |
| 414 case MachineRepresentation::kSimd128: | 414 case MachineRepresentation::kSimd128: |
| 415 opcode = kMips64MsaLd; | 415 opcode = kMips64MsaLd; |
| 416 break; | 416 break; |
| 417 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 418 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 419 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 420 case MachineRepresentation::kNone: | 417 case MachineRepresentation::kNone: |
| 421 UNREACHABLE(); | 418 UNREACHABLE(); |
| 422 return; | 419 return; |
| 423 } | 420 } |
| 424 | 421 |
| 425 EmitLoad(this, node, opcode); | 422 EmitLoad(this, node, opcode); |
| 426 } | 423 } |
| 427 | 424 |
| 428 void InstructionSelector::VisitProtectedLoad(Node* node) { | 425 void InstructionSelector::VisitProtectedLoad(Node* node) { |
| 429 // TODO(eholk) | 426 // TODO(eholk) |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 break; | 486 break; |
| 490 case MachineRepresentation::kTaggedSigned: // Fall through. | 487 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 491 case MachineRepresentation::kTaggedPointer: // Fall through. | 488 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 492 case MachineRepresentation::kTagged: // Fall through. | 489 case MachineRepresentation::kTagged: // Fall through. |
| 493 case MachineRepresentation::kWord64: | 490 case MachineRepresentation::kWord64: |
| 494 opcode = kMips64Sd; | 491 opcode = kMips64Sd; |
| 495 break; | 492 break; |
| 496 case MachineRepresentation::kSimd128: | 493 case MachineRepresentation::kSimd128: |
| 497 opcode = kMips64MsaSt; | 494 opcode = kMips64MsaSt; |
| 498 break; | 495 break; |
| 499 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 500 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 501 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 502 case MachineRepresentation::kNone: | 496 case MachineRepresentation::kNone: |
| 503 UNREACHABLE(); | 497 UNREACHABLE(); |
| 504 return; | 498 return; |
| 505 } | 499 } |
| 506 | 500 |
| 507 if (g.CanBeImmediate(index, opcode)) { | 501 if (g.CanBeImmediate(index, opcode)) { |
| 508 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), | 502 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), |
| 509 g.UseRegister(base), g.UseImmediate(index), | 503 g.UseRegister(base), g.UseImmediate(index), |
| 510 g.UseRegisterOrImmediateZero(value)); | 504 g.UseRegisterOrImmediateZero(value)); |
| 511 } else { | 505 } else { |
| (...skipping 1273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1785 break; | 1779 break; |
| 1786 case MachineRepresentation::kTaggedSigned: // Fall through. | 1780 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 1787 case MachineRepresentation::kTaggedPointer: // Fall through. | 1781 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 1788 case MachineRepresentation::kTagged: // Fall through. | 1782 case MachineRepresentation::kTagged: // Fall through. |
| 1789 case MachineRepresentation::kWord64: | 1783 case MachineRepresentation::kWord64: |
| 1790 opcode = kMips64Uld; | 1784 opcode = kMips64Uld; |
| 1791 break; | 1785 break; |
| 1792 case MachineRepresentation::kSimd128: | 1786 case MachineRepresentation::kSimd128: |
| 1793 opcode = kMips64MsaLd; | 1787 opcode = kMips64MsaLd; |
| 1794 break; | 1788 break; |
| 1795 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 1796 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 1797 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 1798 case MachineRepresentation::kNone: | 1789 case MachineRepresentation::kNone: |
| 1799 UNREACHABLE(); | 1790 UNREACHABLE(); |
| 1800 return; | 1791 return; |
| 1801 } | 1792 } |
| 1802 | 1793 |
| 1803 if (g.CanBeImmediate(index, opcode)) { | 1794 if (g.CanBeImmediate(index, opcode)) { |
| 1804 Emit(opcode | AddressingModeField::encode(kMode_MRI), | 1795 Emit(opcode | AddressingModeField::encode(kMode_MRI), |
| 1805 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); | 1796 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); |
| 1806 } else { | 1797 } else { |
| 1807 InstructionOperand addr_reg = g.TempRegister(); | 1798 InstructionOperand addr_reg = g.TempRegister(); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1840 break; | 1831 break; |
| 1841 case MachineRepresentation::kTaggedSigned: // Fall through. | 1832 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 1842 case MachineRepresentation::kTaggedPointer: // Fall through. | 1833 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 1843 case MachineRepresentation::kTagged: // Fall through. | 1834 case MachineRepresentation::kTagged: // Fall through. |
| 1844 case MachineRepresentation::kWord64: | 1835 case MachineRepresentation::kWord64: |
| 1845 opcode = kMips64Usd; | 1836 opcode = kMips64Usd; |
| 1846 break; | 1837 break; |
| 1847 case MachineRepresentation::kSimd128: | 1838 case MachineRepresentation::kSimd128: |
| 1848 opcode = kMips64MsaSt; | 1839 opcode = kMips64MsaSt; |
| 1849 break; | 1840 break; |
| 1850 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 1851 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 1852 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 1853 case MachineRepresentation::kNone: | 1841 case MachineRepresentation::kNone: |
| 1854 UNREACHABLE(); | 1842 UNREACHABLE(); |
| 1855 return; | 1843 return; |
| 1856 } | 1844 } |
| 1857 | 1845 |
| 1858 if (g.CanBeImmediate(index, opcode)) { | 1846 if (g.CanBeImmediate(index, opcode)) { |
| 1859 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), | 1847 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), |
| 1860 g.UseRegister(base), g.UseImmediate(index), | 1848 g.UseRegister(base), g.UseImmediate(index), |
| 1861 g.UseRegisterOrImmediateZero(value)); | 1849 g.UseRegisterOrImmediateZero(value)); |
| 1862 } else { | 1850 } else { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1893 opcode = kCheckedLoadFloat32; | 1881 opcode = kCheckedLoadFloat32; |
| 1894 break; | 1882 break; |
| 1895 case MachineRepresentation::kFloat64: | 1883 case MachineRepresentation::kFloat64: |
| 1896 opcode = kCheckedLoadFloat64; | 1884 opcode = kCheckedLoadFloat64; |
| 1897 break; | 1885 break; |
| 1898 case MachineRepresentation::kBit: | 1886 case MachineRepresentation::kBit: |
| 1899 case MachineRepresentation::kTaggedSigned: // Fall through. | 1887 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 1900 case MachineRepresentation::kTaggedPointer: // Fall through. | 1888 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 1901 case MachineRepresentation::kTagged: | 1889 case MachineRepresentation::kTagged: |
| 1902 case MachineRepresentation::kSimd128: | 1890 case MachineRepresentation::kSimd128: |
| 1903 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 1904 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 1905 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 1906 case MachineRepresentation::kNone: | 1891 case MachineRepresentation::kNone: |
| 1907 UNREACHABLE(); | 1892 UNREACHABLE(); |
| 1908 return; | 1893 return; |
| 1909 } | 1894 } |
| 1910 InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) | 1895 InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) |
| 1911 ? g.UseImmediate(offset) | 1896 ? g.UseImmediate(offset) |
| 1912 : g.UseRegister(offset); | 1897 : g.UseRegister(offset); |
| 1913 | 1898 |
| 1914 InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) | 1899 InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) |
| 1915 ? g.CanBeImmediate(length, opcode) | 1900 ? g.CanBeImmediate(length, opcode) |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1957 opcode = kCheckedStoreFloat32; | 1942 opcode = kCheckedStoreFloat32; |
| 1958 break; | 1943 break; |
| 1959 case MachineRepresentation::kFloat64: | 1944 case MachineRepresentation::kFloat64: |
| 1960 opcode = kCheckedStoreFloat64; | 1945 opcode = kCheckedStoreFloat64; |
| 1961 break; | 1946 break; |
| 1962 case MachineRepresentation::kBit: | 1947 case MachineRepresentation::kBit: |
| 1963 case MachineRepresentation::kTaggedSigned: // Fall through. | 1948 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 1964 case MachineRepresentation::kTaggedPointer: // Fall through. | 1949 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 1965 case MachineRepresentation::kTagged: | 1950 case MachineRepresentation::kTagged: |
| 1966 case MachineRepresentation::kSimd128: | 1951 case MachineRepresentation::kSimd128: |
| 1967 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 1968 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 1969 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 1970 case MachineRepresentation::kNone: | 1952 case MachineRepresentation::kNone: |
| 1971 UNREACHABLE(); | 1953 UNREACHABLE(); |
| 1972 return; | 1954 return; |
| 1973 } | 1955 } |
| 1974 InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) | 1956 InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) |
| 1975 ? g.UseImmediate(offset) | 1957 ? g.UseImmediate(offset) |
| 1976 : g.UseRegister(offset); | 1958 : g.UseRegister(offset); |
| 1977 | 1959 |
| 1978 InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) | 1960 InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) |
| 1979 ? g.CanBeImmediate(length, opcode) | 1961 ? g.CanBeImmediate(length, opcode) |
| (...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2705 V(F32x4) \ | 2687 V(F32x4) \ |
| 2706 V(I32x4) \ | 2688 V(I32x4) \ |
| 2707 V(I16x8) \ | 2689 V(I16x8) \ |
| 2708 V(I8x16) | 2690 V(I8x16) |
| 2709 | 2691 |
| 2710 #define SIMD_FORMAT_LIST(V) \ | 2692 #define SIMD_FORMAT_LIST(V) \ |
| 2711 V(32x4) \ | 2693 V(32x4) \ |
| 2712 V(16x8) \ | 2694 V(16x8) \ |
| 2713 V(8x16) | 2695 V(8x16) |
| 2714 | 2696 |
| 2715 #define SIMD_ZERO_OP_LIST(V) \ | |
| 2716 V(S128Zero) \ | |
| 2717 V(S1x4Zero) \ | |
| 2718 V(S1x8Zero) \ | |
| 2719 V(S1x16Zero) | |
| 2720 | |
| 2721 #define SIMD_UNOP_LIST(V) \ | 2697 #define SIMD_UNOP_LIST(V) \ |
| 2722 V(F32x4SConvertI32x4, kMips64F32x4SConvertI32x4) \ | 2698 V(F32x4SConvertI32x4, kMips64F32x4SConvertI32x4) \ |
| 2723 V(F32x4UConvertI32x4, kMips64F32x4UConvertI32x4) \ | 2699 V(F32x4UConvertI32x4, kMips64F32x4UConvertI32x4) \ |
| 2724 V(F32x4Abs, kMips64F32x4Abs) \ | 2700 V(F32x4Abs, kMips64F32x4Abs) \ |
| 2725 V(F32x4Neg, kMips64F32x4Neg) \ | 2701 V(F32x4Neg, kMips64F32x4Neg) \ |
| 2726 V(F32x4RecipApprox, kMips64F32x4RecipApprox) \ | 2702 V(F32x4RecipApprox, kMips64F32x4RecipApprox) \ |
| 2727 V(F32x4RecipSqrtApprox, kMips64F32x4RecipSqrtApprox) \ | 2703 V(F32x4RecipSqrtApprox, kMips64F32x4RecipSqrtApprox) \ |
| 2728 V(I32x4SConvertF32x4, kMips64I32x4SConvertF32x4) \ | 2704 V(I32x4SConvertF32x4, kMips64I32x4SConvertF32x4) \ |
| 2729 V(I32x4UConvertF32x4, kMips64I32x4UConvertF32x4) \ | 2705 V(I32x4UConvertF32x4, kMips64I32x4UConvertF32x4) \ |
| 2730 V(I32x4Neg, kMips64I32x4Neg) \ | 2706 V(I32x4Neg, kMips64I32x4Neg) \ |
| 2731 V(I16x8Neg, kMips64I16x8Neg) \ | 2707 V(I16x8Neg, kMips64I16x8Neg) \ |
| 2732 V(I8x16Neg, kMips64I8x16Neg) \ | 2708 V(I8x16Neg, kMips64I8x16Neg) \ |
| 2733 V(S128Not, kMips64S128Not) \ | 2709 V(S128Not, kMips64S128Not) \ |
| 2734 V(S1x4Not, kMips64S128Not) \ | |
| 2735 V(S1x4AnyTrue, kMips64S1x4AnyTrue) \ | 2710 V(S1x4AnyTrue, kMips64S1x4AnyTrue) \ |
| 2736 V(S1x4AllTrue, kMips64S1x4AllTrue) \ | 2711 V(S1x4AllTrue, kMips64S1x4AllTrue) \ |
| 2737 V(S1x8Not, kMips64S128Not) \ | |
| 2738 V(S1x8AnyTrue, kMips64S1x8AnyTrue) \ | 2712 V(S1x8AnyTrue, kMips64S1x8AnyTrue) \ |
| 2739 V(S1x8AllTrue, kMips64S1x8AllTrue) \ | 2713 V(S1x8AllTrue, kMips64S1x8AllTrue) \ |
| 2740 V(S1x16Not, kMips64S128Not) \ | |
| 2741 V(S1x16AnyTrue, kMips64S1x16AnyTrue) \ | 2714 V(S1x16AnyTrue, kMips64S1x16AnyTrue) \ |
| 2742 V(S1x16AllTrue, kMips64S1x16AllTrue) | 2715 V(S1x16AllTrue, kMips64S1x16AllTrue) |
| 2743 | 2716 |
| 2744 #define SIMD_SHIFT_OP_LIST(V) \ | 2717 #define SIMD_SHIFT_OP_LIST(V) \ |
| 2745 V(I32x4Shl) \ | 2718 V(I32x4Shl) \ |
| 2746 V(I32x4ShrS) \ | 2719 V(I32x4ShrS) \ |
| 2747 V(I32x4ShrU) \ | 2720 V(I32x4ShrU) \ |
| 2748 V(I16x8Shl) \ | 2721 V(I16x8Shl) \ |
| 2749 V(I16x8ShrS) \ | 2722 V(I16x8ShrS) \ |
| 2750 V(I16x8ShrU) \ | 2723 V(I16x8ShrU) \ |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2804 V(I8x16MaxU, kMips64I8x16MaxU) \ | 2777 V(I8x16MaxU, kMips64I8x16MaxU) \ |
| 2805 V(I8x16MinU, kMips64I8x16MinU) \ | 2778 V(I8x16MinU, kMips64I8x16MinU) \ |
| 2806 V(I8x16Eq, kMips64I8x16Eq) \ | 2779 V(I8x16Eq, kMips64I8x16Eq) \ |
| 2807 V(I8x16Ne, kMips64I8x16Ne) \ | 2780 V(I8x16Ne, kMips64I8x16Ne) \ |
| 2808 V(I8x16GtS, kMips64I8x16GtS) \ | 2781 V(I8x16GtS, kMips64I8x16GtS) \ |
| 2809 V(I8x16GeS, kMips64I8x16GeS) \ | 2782 V(I8x16GeS, kMips64I8x16GeS) \ |
| 2810 V(I8x16GtU, kMips64I8x16GtU) \ | 2783 V(I8x16GtU, kMips64I8x16GtU) \ |
| 2811 V(I8x16GeU, kMips64I8x16GeU) \ | 2784 V(I8x16GeU, kMips64I8x16GeU) \ |
| 2812 V(S128And, kMips64S128And) \ | 2785 V(S128And, kMips64S128And) \ |
| 2813 V(S128Or, kMips64S128Or) \ | 2786 V(S128Or, kMips64S128Or) \ |
| 2814 V(S128Xor, kMips64S128Xor) \ | 2787 V(S128Xor, kMips64S128Xor) |
| 2815 V(S1x4And, kMips64S128And) \ | |
| 2816 V(S1x4Or, kMips64S128Or) \ | |
| 2817 V(S1x4Xor, kMips64S128Xor) \ | |
| 2818 V(S1x8And, kMips64S128And) \ | |
| 2819 V(S1x8Or, kMips64S128Or) \ | |
| 2820 V(S1x8Xor, kMips64S128Xor) \ | |
| 2821 V(S1x16And, kMips64S128And) \ | |
| 2822 V(S1x16Or, kMips64S128Or) \ | |
| 2823 V(S1x16Xor, kMips64S128Xor) | |
| 2824 | 2788 |
| 2825 #define SIMD_VISIT_ZERO_OP(Name) \ | 2789 void InstructionSelector::VisitS128Zero(Node* node) { |
| 2826 void InstructionSelector::Visit##Name(Node* node) { \ | 2790 Mips64OperandGenerator g(this); |
| 2827 Mips64OperandGenerator g(this); \ | 2791 Emit(kMips64S128Zero, g.DefineSameAsFirst(node)); |
| 2828 Emit(kMips64S128Zero, g.DefineSameAsFirst(node)); \ | 2792 } |
| 2829 } | |
| 2830 SIMD_ZERO_OP_LIST(SIMD_VISIT_ZERO_OP) | |
| 2831 #undef SIMD_VISIT_ZERO_OP | |
| 2832 | 2793 |
| 2833 #define SIMD_VISIT_SPLAT(Type) \ | 2794 #define SIMD_VISIT_SPLAT(Type) \ |
| 2834 void InstructionSelector::Visit##Type##Splat(Node* node) { \ | 2795 void InstructionSelector::Visit##Type##Splat(Node* node) { \ |
| 2835 VisitRR(this, kMips64##Type##Splat, node); \ | 2796 VisitRR(this, kMips64##Type##Splat, node); \ |
| 2836 } | 2797 } |
| 2837 SIMD_TYPE_LIST(SIMD_VISIT_SPLAT) | 2798 SIMD_TYPE_LIST(SIMD_VISIT_SPLAT) |
| 2838 #undef SIMD_VISIT_SPLAT | 2799 #undef SIMD_VISIT_SPLAT |
| 2839 | 2800 |
| 2840 #define SIMD_VISIT_EXTRACT_LANE(Type) \ | 2801 #define SIMD_VISIT_EXTRACT_LANE(Type) \ |
| 2841 void InstructionSelector::Visit##Type##ExtractLane(Node* node) { \ | 2802 void InstructionSelector::Visit##Type##ExtractLane(Node* node) { \ |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2865 SIMD_SHIFT_OP_LIST(SIMD_VISIT_SHIFT_OP) | 2826 SIMD_SHIFT_OP_LIST(SIMD_VISIT_SHIFT_OP) |
| 2866 #undef SIMD_VISIT_SHIFT_OP | 2827 #undef SIMD_VISIT_SHIFT_OP |
| 2867 | 2828 |
| 2868 #define SIMD_VISIT_BINOP(Name, instruction) \ | 2829 #define SIMD_VISIT_BINOP(Name, instruction) \ |
| 2869 void InstructionSelector::Visit##Name(Node* node) { \ | 2830 void InstructionSelector::Visit##Name(Node* node) { \ |
| 2870 VisitRRR(this, instruction, node); \ | 2831 VisitRRR(this, instruction, node); \ |
| 2871 } | 2832 } |
| 2872 SIMD_BINOP_LIST(SIMD_VISIT_BINOP) | 2833 SIMD_BINOP_LIST(SIMD_VISIT_BINOP) |
| 2873 #undef SIMD_VISIT_BINOP | 2834 #undef SIMD_VISIT_BINOP |
| 2874 | 2835 |
| 2875 #define SIMD_VISIT_SELECT_OP(format) \ | 2836 void InstructionSelector::VisitS128Select(Node* node) { |
| 2876 void InstructionSelector::VisitS##format##Select(Node* node) { \ | 2837 VisitRRRR(this, kMips64S128Select, node); |
| 2877 VisitRRRR(this, kMips64S##format##Select, node); \ | 2838 } |
| 2878 } | |
| 2879 SIMD_FORMAT_LIST(SIMD_VISIT_SELECT_OP) | |
| 2880 #undef SIMD_VISIT_SELECT_OP | |
| 2881 | 2839 |
| 2882 // static | 2840 // static |
| 2883 MachineOperatorBuilder::Flags | 2841 MachineOperatorBuilder::Flags |
| 2884 InstructionSelector::SupportedMachineOperatorFlags() { | 2842 InstructionSelector::SupportedMachineOperatorFlags() { |
| 2885 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags; | 2843 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags; |
| 2886 return flags | MachineOperatorBuilder::kWord32Ctz | | 2844 return flags | MachineOperatorBuilder::kWord32Ctz | |
| 2887 MachineOperatorBuilder::kWord64Ctz | | 2845 MachineOperatorBuilder::kWord64Ctz | |
| 2888 MachineOperatorBuilder::kWord32Popcnt | | 2846 MachineOperatorBuilder::kWord32Popcnt | |
| 2889 MachineOperatorBuilder::kWord64Popcnt | | 2847 MachineOperatorBuilder::kWord64Popcnt | |
| 2890 MachineOperatorBuilder::kWord32ShiftIsSafe | | 2848 MachineOperatorBuilder::kWord32ShiftIsSafe | |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2911 } else { | 2869 } else { |
| 2912 DCHECK(kArchVariant == kMips64r2); | 2870 DCHECK(kArchVariant == kMips64r2); |
| 2913 return MachineOperatorBuilder::AlignmentRequirements:: | 2871 return MachineOperatorBuilder::AlignmentRequirements:: |
| 2914 NoUnalignedAccessSupport(); | 2872 NoUnalignedAccessSupport(); |
| 2915 } | 2873 } |
| 2916 } | 2874 } |
| 2917 | 2875 |
| 2918 } // namespace compiler | 2876 } // namespace compiler |
| 2919 } // namespace internal | 2877 } // namespace internal |
| 2920 } // namespace v8 | 2878 } // namespace v8 |
| OLD | NEW |