aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/wasm/loop-rotation.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/loop-rotation.js')
-rw-r--r--deps/v8/test/mjsunit/wasm/loop-rotation.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/wasm/loop-rotation.js b/deps/v8/test/mjsunit/wasm/loop-rotation.js
new file mode 100644
index 0000000000..da7a45c4d0
--- /dev/null
+++ b/deps/v8/test/mjsunit/wasm/loop-rotation.js
@@ -0,0 +1,77 @@
+// Copyright 2018 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Flags: --turbo-loop-rotation --noliftoff --nowasm-tier-up
+
+load("test/mjsunit/wasm/wasm-constants.js");
+load("test/mjsunit/wasm/wasm-module-builder.js");
+
+(function TestTrivialLoop1() {
+ print(arguments.callee.name);
+ var builder = new WasmModuleBuilder();
+ builder.addFunction("main", kSig_v_i)
+ .addBody([
+ kExprLoop, kWasmStmt,
+ kExprGetLocal, 0,
+ kExprI32Const, 1,
+ kExprI32Sub,
+ kExprTeeLocal, 0,
+ kExprBrIf, 0,
+ kExprEnd,
+ ])
+ .exportFunc();
+ let module = new WebAssembly.Module(builder.toBuffer());
+ let instance = new WebAssembly.Instance(module);
+ instance.exports.main(1);
+ instance.exports.main(10);
+ instance.exports.main(100);
+})();
+
+(function TestTrivialLoop2() {
+ print(arguments.callee.name);
+ var builder = new WasmModuleBuilder();
+ builder.addFunction("main", kSig_v_i)
+ .addBody([
+ kExprLoop, kWasmStmt,
+ kExprGetLocal, 0,
+ kExprI32Const, 1,
+ kExprI32Sub,
+ kExprTeeLocal, 0,
+ kExprBrIf, 1,
+ kExprBr, 0,
+ kExprEnd,
+ ])
+ .exportFunc();
+ let module = new WebAssembly.Module(builder.toBuffer());
+ let instance = new WebAssembly.Instance(module);
+ instance.exports.main(1);
+ instance.exports.main(10);
+ instance.exports.main(100);
+})();
+
+(function TestNonRotatedLoopWithStore() {
+ print(arguments.callee.name);
+ var builder = new WasmModuleBuilder();
+ builder.addMemory(1, undefined, false);
+ builder.addFunction("main", kSig_v_i)
+ .addBody([
+ kExprLoop, kWasmStmt,
+ kExprGetLocal, 0,
+ kExprI32Const, 1,
+ kExprI32Sub,
+ kExprTeeLocal, 0,
+ kExprBrIf, 1,
+ kExprI32Const, 0,
+ kExprI32Const, 0,
+ kExprI32StoreMem, 0, 0,
+ kExprBr, 0,
+ kExprEnd,
+ ])
+ .exportFunc();
+ let module = new WebAssembly.Module(builder.toBuffer());
+ let instance = new WebAssembly.Instance(module);
+ instance.exports.main(1);
+ instance.exports.main(10);
+ instance.exports.main(100);
+})();