Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Side by Side Diff: src/compiler/mips64/instruction-selector-mips64.cc

Issue 2919203002: [WASM] Eliminate SIMD boolean vector types. (Closed)
Patch Set: Restore DCHECKs in AssembleMove/Swap now that we're back to 1 SIMD representation. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/mips64/instruction-codes-mips64.h ('k') | src/compiler/opcodes.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/compiler/mips64/instruction-codes-mips64.h ('k') | src/compiler/opcodes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698