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

Side by Side Diff: test/unittests/wasm/ast-decoder-unittest.cc

Issue 1775123003: [wasm] Encode immediates to Load and Store as varint. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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
OLDNEW
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 "test/unittests/test-utils.h" 5 #include "test/unittests/test-utils.h"
6 6
7 #include "src/v8.h" 7 #include "src/v8.h"
8 8
9 #include "test/cctest/wasm/test-signatures.h" 9 #include "test/cctest/wasm/test-signatures.h"
10 10
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 } 886 }
887 887
888 TEST_F(AstDecoderTest, GrowMemory) { 888 TEST_F(AstDecoderTest, GrowMemory) {
889 byte code[] = {kExprGrowMemory, kExprGetLocal, 0}; 889 byte code[] = {kExprGrowMemory, kExprGetLocal, 0};
890 EXPECT_VERIFIES(sigs.i_i(), code); 890 EXPECT_VERIFIES(sigs.i_i(), code);
891 EXPECT_FAILURE(sigs.i_d(), code); 891 EXPECT_FAILURE(sigs.i_d(), code);
892 } 892 }
893 893
894 TEST_F(AstDecoderTest, LoadMemOffset) { 894 TEST_F(AstDecoderTest, LoadMemOffset) {
895 for (int offset = 0; offset < 128; offset += 7) { 895 for (int offset = 0; offset < 128; offset += 7) {
896 byte code[] = {kExprI32LoadMem, WasmOpcodes::LoadStoreAccessOf(true), 896 byte code[] = {kExprI32LoadMem, ZERO_ALIGNMENT, static_cast<byte>(offset),
897 static_cast<byte>(offset), kExprI8Const, 0}; 897 kExprI8Const, 0};
898 EXPECT_VERIFIES(sigs.i_i(), code); 898 EXPECT_VERIFIES(sigs.i_i(), code);
899 } 899 }
900 } 900 }
901 901
902 TEST_F(AstDecoderTest, StoreMemOffset) { 902 TEST_F(AstDecoderTest, StoreMemOffset) {
903 for (int offset = 0; offset < 128; offset += 7) { 903 for (int offset = 0; offset < 128; offset += 7) {
904 byte code[] = {kExprI32StoreMem, 904 byte code[] = {
905 WasmOpcodes::LoadStoreAccessOf(true), 905 kExprI32StoreMem, 0, static_cast<byte>(offset), kExprI8Const, 0,
906 static_cast<byte>(offset), 906 kExprI8Const, 0};
907 kExprI8Const,
908 0,
909 kExprI8Const,
910 0};
911 EXPECT_VERIFIES(sigs.i_i(), code); 907 EXPECT_VERIFIES(sigs.i_i(), code);
912 } 908 }
913 } 909 }
914 910
915 TEST_F(AstDecoderTest, LoadMemOffset_varint) { 911 TEST_F(AstDecoderTest, LoadMemOffset_varint) {
916 byte code1[] = {kExprI32LoadMem, WasmOpcodes::LoadStoreAccessOf(true), 0, 912 byte code1[] = {kExprI32LoadMem, ZERO_ALIGNMENT, ZERO_OFFSET, kExprI8Const,
917 kExprI8Const, 0};
918 byte code2[] = {kExprI32LoadMem,
919 WasmOpcodes::LoadStoreAccessOf(true),
920 0x80,
921 1,
922 kExprI8Const,
923 0}; 913 0};
924 byte code3[] = {kExprI32LoadMem, 914 byte code2[] = {kExprI32LoadMem, ZERO_ALIGNMENT, 0x80, 1, kExprI8Const, 0};
925 WasmOpcodes::LoadStoreAccessOf(true), 915 byte code3[] = {
926 0x81, 916 kExprI32LoadMem, ZERO_ALIGNMENT, 0x81, 0x82, 5, kExprI8Const, 0};
927 0x82, 917 byte code4[] = {
928 5, 918 kExprI32LoadMem, ZERO_ALIGNMENT, 0x83, 0x84, 0x85, 7, kExprI8Const, 0};
929 kExprI8Const,
930 0};
931 byte code4[] = {kExprI32LoadMem,
932 WasmOpcodes::LoadStoreAccessOf(true),
933 0x83,
934 0x84,
935 0x85,
936 7,
937 kExprI8Const,
938 0};
939 919
940 EXPECT_VERIFIES(sigs.i_i(), code1); 920 EXPECT_VERIFIES(sigs.i_i(), code1);
941 EXPECT_VERIFIES(sigs.i_i(), code2); 921 EXPECT_VERIFIES(sigs.i_i(), code2);
942 EXPECT_VERIFIES(sigs.i_i(), code3); 922 EXPECT_VERIFIES(sigs.i_i(), code3);
943 EXPECT_VERIFIES(sigs.i_i(), code4); 923 EXPECT_VERIFIES(sigs.i_i(), code4);
944 } 924 }
945 925
946 TEST_F(AstDecoderTest, StoreMemOffset_varint) { 926 TEST_F(AstDecoderTest, StoreMemOffset_varint) {
947 byte code1[] = {kExprI32StoreMem, 927 byte code1[] = {
948 WasmOpcodes::LoadStoreAccessOf(true), 928 kExprI32StoreMem, ZERO_ALIGNMENT, 0, kExprI8Const, 0, kExprI8Const, 0};
949 0,
950 kExprI8Const,
951 0,
952 kExprI8Const,
953 0};
954 byte code2[] = {kExprI32StoreMem, 929 byte code2[] = {kExprI32StoreMem,
955 WasmOpcodes::LoadStoreAccessOf(true), 930 ZERO_ALIGNMENT,
956 0x80, 931 0x80,
957 1, 932 1,
958 kExprI8Const, 933 kExprI8Const,
959 0, 934 0,
960 kExprI8Const, 935 kExprI8Const,
961 0}; 936 0};
962 byte code3[] = {kExprI32StoreMem, 937 byte code3[] = {kExprI32StoreMem,
963 WasmOpcodes::LoadStoreAccessOf(true), 938 ZERO_ALIGNMENT,
964 0x81, 939 0x81,
965 0x82, 940 0x82,
966 5, 941 5,
967 kExprI8Const, 942 kExprI8Const,
968 0, 943 0,
969 kExprI8Const, 944 kExprI8Const,
970 0}; 945 0};
971 byte code4[] = {kExprI32StoreMem, 946 byte code4[] = {kExprI32StoreMem,
972 WasmOpcodes::LoadStoreAccessOf(true), 947 ZERO_ALIGNMENT,
973 0x83, 948 0x83,
974 0x84, 949 0x84,
975 0x85, 950 0x85,
976 7, 951 7,
977 kExprI8Const, 952 kExprI8Const,
978 0, 953 0,
979 kExprI8Const, 954 kExprI8Const,
980 0}; 955 0};
981 956
982 EXPECT_VERIFIES(sigs.i_i(), code1); 957 EXPECT_VERIFIES(sigs.i_i(), code1);
983 EXPECT_VERIFIES(sigs.i_i(), code2); 958 EXPECT_VERIFIES(sigs.i_i(), code2);
984 EXPECT_VERIFIES(sigs.i_i(), code3); 959 EXPECT_VERIFIES(sigs.i_i(), code3);
985 EXPECT_VERIFIES(sigs.i_i(), code4); 960 EXPECT_VERIFIES(sigs.i_i(), code4);
986 } 961 }
987 962
988 TEST_F(AstDecoderTest, AllLoadMemCombinations) { 963 TEST_F(AstDecoderTest, AllLoadMemCombinations) {
989 for (size_t i = 0; i < arraysize(kLocalTypes); i++) { 964 for (size_t i = 0; i < arraysize(kLocalTypes); i++) {
990 LocalType local_type = kLocalTypes[i]; 965 LocalType local_type = kLocalTypes[i];
991 for (size_t j = 0; j < arraysize(machineTypes); j++) { 966 for (size_t j = 0; j < arraysize(machineTypes); j++) {
992 MachineType mem_type = machineTypes[j]; 967 MachineType mem_type = machineTypes[j];
993 byte code[] = { 968 byte code[] = {
994 static_cast<byte>(WasmOpcodes::LoadStoreOpcodeOf(mem_type, false)), 969 static_cast<byte>(WasmOpcodes::LoadStoreOpcodeOf(mem_type, false)),
995 WasmOpcodes::LoadStoreAccessOf(false), kExprI8Const, 0}; 970 ZERO_ALIGNMENT, ZERO_OFFSET, kExprI8Const, 0};
996 FunctionSig sig(1, 0, &local_type); 971 FunctionSig sig(1, 0, &local_type);
997 if (local_type == WasmOpcodes::LocalTypeFor(mem_type)) { 972 if (local_type == WasmOpcodes::LocalTypeFor(mem_type)) {
998 EXPECT_VERIFIES(&sig, code); 973 EXPECT_VERIFIES(&sig, code);
999 } else { 974 } else {
1000 EXPECT_FAILURE(&sig, code); 975 EXPECT_FAILURE(&sig, code);
1001 } 976 }
1002 } 977 }
1003 } 978 }
1004 } 979 }
1005 980
1006 TEST_F(AstDecoderTest, AllStoreMemCombinations) { 981 TEST_F(AstDecoderTest, AllStoreMemCombinations) {
1007 for (size_t i = 0; i < arraysize(kLocalTypes); i++) { 982 for (size_t i = 0; i < arraysize(kLocalTypes); i++) {
1008 LocalType local_type = kLocalTypes[i]; 983 LocalType local_type = kLocalTypes[i];
1009 for (size_t j = 0; j < arraysize(machineTypes); j++) { 984 for (size_t j = 0; j < arraysize(machineTypes); j++) {
1010 MachineType mem_type = machineTypes[j]; 985 MachineType mem_type = machineTypes[j];
1011 byte code[] = { 986 byte code[] = {
1012 static_cast<byte>(WasmOpcodes::LoadStoreOpcodeOf(mem_type, true)), 987 static_cast<byte>(WasmOpcodes::LoadStoreOpcodeOf(mem_type, true)),
1013 WasmOpcodes::LoadStoreAccessOf(false), 988 ZERO_ALIGNMENT,
989 ZERO_OFFSET,
1014 kExprI8Const, 990 kExprI8Const,
1015 0, 991 0,
1016 kExprGetLocal, 992 kExprGetLocal,
1017 0}; 993 0};
1018 FunctionSig sig(0, 1, &local_type); 994 FunctionSig sig(0, 1, &local_type);
1019 if (local_type == WasmOpcodes::LocalTypeFor(mem_type)) { 995 if (local_type == WasmOpcodes::LocalTypeFor(mem_type)) {
1020 EXPECT_VERIFIES(&sig, code); 996 EXPECT_VERIFIES(&sig, code);
1021 } else { 997 } else {
1022 EXPECT_FAILURE(&sig, code); 998 EXPECT_FAILURE(&sig, code);
1023 } 999 }
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
1792 1768
1793 EXPECT_EQ(2, OpcodeLength(size2, size2 + sizeof(size2))); 1769 EXPECT_EQ(2, OpcodeLength(size2, size2 + sizeof(size2)));
1794 EXPECT_EQ(3, OpcodeLength(size3, size3 + sizeof(size3))); 1770 EXPECT_EQ(3, OpcodeLength(size3, size3 + sizeof(size3)));
1795 EXPECT_EQ(4, OpcodeLength(size4, size4 + sizeof(size4))); 1771 EXPECT_EQ(4, OpcodeLength(size4, size4 + sizeof(size4)));
1796 EXPECT_EQ(5, OpcodeLength(size5, size5 + sizeof(size5))); 1772 EXPECT_EQ(5, OpcodeLength(size5, size5 + sizeof(size5)));
1797 EXPECT_EQ(6, OpcodeLength(size6, size6 + sizeof(size6))); 1773 EXPECT_EQ(6, OpcodeLength(size6, size6 + sizeof(size6)));
1798 } 1774 }
1799 1775
1800 1776
1801 TEST_F(WasmOpcodeLengthTest, LoadsAndStores) { 1777 TEST_F(WasmOpcodeLengthTest, LoadsAndStores) {
1802 EXPECT_LENGTH(2, kExprI32LoadMem8S); 1778 EXPECT_LENGTH(3, kExprI32LoadMem8S);
1803 EXPECT_LENGTH(2, kExprI32LoadMem8U); 1779 EXPECT_LENGTH(3, kExprI32LoadMem8U);
1804 EXPECT_LENGTH(2, kExprI32LoadMem16S); 1780 EXPECT_LENGTH(3, kExprI32LoadMem16S);
1805 EXPECT_LENGTH(2, kExprI32LoadMem16U); 1781 EXPECT_LENGTH(3, kExprI32LoadMem16U);
1806 EXPECT_LENGTH(2, kExprI32LoadMem); 1782 EXPECT_LENGTH(3, kExprI32LoadMem);
1807 EXPECT_LENGTH(2, kExprI64LoadMem8S); 1783 EXPECT_LENGTH(3, kExprI64LoadMem8S);
1808 EXPECT_LENGTH(2, kExprI64LoadMem8U); 1784 EXPECT_LENGTH(3, kExprI64LoadMem8U);
1809 EXPECT_LENGTH(2, kExprI64LoadMem16S); 1785 EXPECT_LENGTH(3, kExprI64LoadMem16S);
1810 EXPECT_LENGTH(2, kExprI64LoadMem16U); 1786 EXPECT_LENGTH(3, kExprI64LoadMem16U);
1811 EXPECT_LENGTH(2, kExprI64LoadMem32S); 1787 EXPECT_LENGTH(3, kExprI64LoadMem32S);
1812 EXPECT_LENGTH(2, kExprI64LoadMem32U); 1788 EXPECT_LENGTH(3, kExprI64LoadMem32U);
1813 EXPECT_LENGTH(2, kExprI64LoadMem); 1789 EXPECT_LENGTH(3, kExprI64LoadMem);
1814 EXPECT_LENGTH(2, kExprF32LoadMem); 1790 EXPECT_LENGTH(3, kExprF32LoadMem);
1815 EXPECT_LENGTH(2, kExprF64LoadMem); 1791 EXPECT_LENGTH(3, kExprF64LoadMem);
1816 1792
1817 EXPECT_LENGTH(2, kExprI32StoreMem8); 1793 EXPECT_LENGTH(3, kExprI32StoreMem8);
1818 EXPECT_LENGTH(2, kExprI32StoreMem16); 1794 EXPECT_LENGTH(3, kExprI32StoreMem16);
1819 EXPECT_LENGTH(2, kExprI32StoreMem); 1795 EXPECT_LENGTH(3, kExprI32StoreMem);
1820 EXPECT_LENGTH(2, kExprI64StoreMem8); 1796 EXPECT_LENGTH(3, kExprI64StoreMem8);
1821 EXPECT_LENGTH(2, kExprI64StoreMem16); 1797 EXPECT_LENGTH(3, kExprI64StoreMem16);
1822 EXPECT_LENGTH(2, kExprI64StoreMem32); 1798 EXPECT_LENGTH(3, kExprI64StoreMem32);
1823 EXPECT_LENGTH(2, kExprI64StoreMem); 1799 EXPECT_LENGTH(3, kExprI64StoreMem);
1824 EXPECT_LENGTH(2, kExprF32StoreMem); 1800 EXPECT_LENGTH(3, kExprF32StoreMem);
1825 EXPECT_LENGTH(2, kExprF64StoreMem); 1801 EXPECT_LENGTH(3, kExprF64StoreMem);
1826 } 1802 }
1827 1803
1828 1804
1829 TEST_F(WasmOpcodeLengthTest, MiscMemExpressions) { 1805 TEST_F(WasmOpcodeLengthTest, MiscMemExpressions) {
1830 EXPECT_LENGTH(1, kExprMemorySize); 1806 EXPECT_LENGTH(1, kExprMemorySize);
1831 EXPECT_LENGTH(1, kExprGrowMemory); 1807 EXPECT_LENGTH(1, kExprGrowMemory);
1832 } 1808 }
1833 1809
1834 1810
1835 TEST_F(WasmOpcodeLengthTest, SimpleExpressions) { 1811 TEST_F(WasmOpcodeLengthTest, SimpleExpressions) {
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
2288 pos = ExpectRun(map, pos, kAstI32, 1337); 2264 pos = ExpectRun(map, pos, kAstI32, 1337);
2289 pos = ExpectRun(map, pos, kAstI64, 212); 2265 pos = ExpectRun(map, pos, kAstI64, 212);
2290 2266
2291 if (map) delete map; 2267 if (map) delete map;
2292 delete[] data; 2268 delete[] data;
2293 } 2269 }
2294 2270
2295 } // namespace wasm 2271 } // namespace wasm
2296 } // namespace internal 2272 } // namespace internal
2297 } // namespace v8 2273 } // namespace v8
OLDNEW
« no previous file with comments | « test/mjsunit/wasm/test-wasm-module-builder.js ('k') | test/unittests/wasm/wasm-macro-gen-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698