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

Side by Side Diff: test/cctest/wasm/test-run-wasm-simd-lowering.cc

Issue 2294743003: [wasm] simd scalar lowering F32x4Add and I32x4Add (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 3 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
(Empty)
1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "src/wasm/wasm-macro-gen.h"
6 #include "src/wasm/wasm-module.h"
7
8 #include "test/cctest/cctest.h"
9 #include "test/cctest/wasm/test-run-wasm-module-helper.h"
10 #include "test/cctest/wasm/test-signatures.h"
11
12 using namespace v8::base;
13 using namespace v8::internal;
14 using namespace v8::internal::compiler;
15 using namespace v8::internal::wasm;
16
17 namespace {
18 void SimpleTest(byte* code, uint32_t size, int32_t result) {
19 FLAG_wasm_simd_prototype = true;
20 TestSignatures sigs;
21 v8::base::AccountingAllocator allocator;
22 Zone zone(&allocator);
23
24 WasmModuleBuilder* builder = new (&zone) WasmModuleBuilder(&zone);
25 uint16_t f_index = builder->AddFunction();
26 WasmFunctionBuilder* f = builder->FunctionAt(f_index);
27 f->SetSignature(sigs.i_v());
28 TestRunWasmModuleHelper::ExportAsMain(f);
29 f->EmitCode(code, size);
30 TestRunWasmModuleHelper::TestModule(&zone, builder, result);
31 }
32 } // namespace
33
34 TEST(Simd_I32x4_Splat) {
gdeepti 2016/08/30 17:16:06 WASM_EXEC_TEST here could work here too if you wan
aseemgarg 2016/10/10 17:35:17 Done.
35 byte code[] = {WASM_SIMD_I32x4_EXTRACT_LANE(
36 WASM_SIMD_I32x4_SPLAT(WASM_I32V(5)), WASM_I8(0))};
37 SimpleTest(code, sizeof(code), 5);
38 }
39
40 TEST(Simd_I32x4_Add) {
41 byte code[] = {WASM_SIMD_I32x4_EXTRACT_LANE(
42 WASM_SIMD_I32x4_ADD(WASM_SIMD_I32x4_SPLAT(WASM_I32V(5)),
43 WASM_SIMD_I32x4_SPLAT(WASM_I32V(6))),
44 WASM_I8(0))};
45 SimpleTest(code, sizeof(code), 11);
46 }
47
48 TEST(Simd_F32x4_Splat) {
49 byte code[] = {WASM_IF_ELSE(
50 WASM_F32_EQ(WASM_SIMD_F32x4_EXTRACT_LANE(
51 WASM_SIMD_F32x4_SPLAT(WASM_F32(9.5)), WASM_I32V(0)),
52 WASM_F32(9.5)),
53 WASM_RETURN1(WASM_I32V(1)), WASM_RETURN1(WASM_I32V(0)))};
54 SimpleTest(code, sizeof(code), 1);
55 }
56
57 TEST(Simd_F32x4_Add) {
58 byte code[] = {WASM_IF_ELSE(
59 WASM_F32_EQ(
60 WASM_SIMD_F32x4_EXTRACT_LANE(
61 WASM_SIMD_F32x4_ADD(WASM_SIMD_F32x4_SPLAT(WASM_F32(13.25)),
62 WASM_SIMD_F32x4_SPLAT(WASM_F32(6.25))),
63 WASM_I8(0)),
64 WASM_F32(19.5)),
65 WASM_RETURN1(WASM_I32V(1)), WASM_RETURN1(WASM_I32V(0)))};
66 SimpleTest(code, sizeof(code), 1);
67 }
68
69 TEST(Simd_I32x4_Extract_With_F32x4) {
70 byte code[] = {WASM_IF_ELSE(
71 WASM_I32_EQ(WASM_SIMD_I32x4_EXTRACT_LANE(
72 WASM_SIMD_F32x4_SPLAT(WASM_F32(30.5)), WASM_I32V(0)),
73 WASM_I32_REINTERPRET_F32(WASM_F32(30.5))),
74 WASM_RETURN1(WASM_I32V(1)), WASM_RETURN1(WASM_I32V(0)))};
75 SimpleTest(code, sizeof(code), 1);
76 }
77
78 TEST(Simd_F32x4_Extract_With_I32x4) {
79 byte code[] = {WASM_IF_ELSE(
80 WASM_F32_EQ(WASM_SIMD_F32x4_EXTRACT_LANE(
81 WASM_SIMD_I32x4_SPLAT(WASM_I32V(15)), WASM_I32V(0)),
82 WASM_F32_REINTERPRET_I32(WASM_I32V(15))),
83 WASM_RETURN1(WASM_I32V(1)), WASM_RETURN1(WASM_I32V(0)))};
84 SimpleTest(code, sizeof(code), 1);
85 }
86
87 TEST(Simd_F32x4_Add_With_I32x4) {
88 byte code[] = {WASM_IF_ELSE(
89 WASM_F32_EQ(WASM_SIMD_F32x4_EXTRACT_LANE(
90 WASM_SIMD_F32x4_ADD(WASM_SIMD_I32x4_SPLAT(WASM_I32V(32)),
91 WASM_SIMD_I32x4_SPLAT(WASM_I32V(19))),
92 WASM_I8(0)),
93 WASM_F32_ADD(WASM_F32_REINTERPRET_I32(WASM_I32V(32)),
94 WASM_F32_REINTERPRET_I32(WASM_I32V(19)))),
95 WASM_RETURN1(WASM_I32V(1)), WASM_RETURN1(WASM_I32V(0)))};
96 SimpleTest(code, sizeof(code), 1);
97 }
98
99 TEST(Simd_I32x4_Add_With_F32x4) {
100 byte code[] = {WASM_IF_ELSE(
101 WASM_I32_EQ(
102 WASM_SIMD_I32x4_EXTRACT_LANE(
103 WASM_SIMD_I32x4_ADD(WASM_SIMD_F32x4_SPLAT(WASM_F32(21.25)),
104 WASM_SIMD_F32x4_SPLAT(WASM_F32(31.5))),
105 WASM_I8(0)),
106 WASM_I32_ADD(WASM_I32_REINTERPRET_F32(WASM_F32(21.25)),
107 WASM_I32_REINTERPRET_F32(WASM_F32(31.5)))),
108 WASM_RETURN1(WASM_I32V(1)), WASM_RETURN1(WASM_I32V(0)))};
109 SimpleTest(code, sizeof(code), 1);
bradnelson 2016/08/31 22:42:08 I assume you'll want tests with loops + conditions
aseemgarg 2016/10/10 17:35:17 yes. Will do in next change.
110 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698