aboutsummaryrefslogtreecommitdiff
path: root/test/stage2
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-01-18 12:35:52 -0800
committerGitHub <noreply@github.com>2021-01-18 12:35:52 -0800
commit46dd058d59a108e84e822fb43cf011301bfc68bc (patch)
treea2fba653c177cec43ae0c3b0ae43df4e06e9c6b0 /test/stage2
parent0353c9601a7a72cf453738818d0fba4e980512ba (diff)
parent6a87ce0b62a3c9d3a795f3a16b1650f4a8c3b2fc (diff)
downloadzig-46dd058d59a108e84e822fb43cf011301bfc68bc.tar.gz
zig-46dd058d59a108e84e822fb43cf011301bfc68bc.zip
Merge pull request #7797 from Luukdegram/wasm-refactor
stage2: wasm - Refactor codegen for wasm similar to other backends
Diffstat (limited to 'test/stage2')
-rw-r--r--test/stage2/test.zig62
-rw-r--r--test/stage2/wasm.zig125
2 files changed, 126 insertions, 61 deletions
diff --git a/test/stage2/test.zig b/test/stage2/test.zig
index 8cc8a45466..f2c0989b46 100644
--- a/test/stage2/test.zig
+++ b/test/stage2/test.zig
@@ -21,17 +21,13 @@ const linux_riscv64 = std.zig.CrossTarget{
.os_tag = .linux,
};
-const wasi = std.zig.CrossTarget{
- .cpu_arch = .wasm32,
- .os_tag = .wasi,
-};
-
pub fn addCases(ctx: *TestContext) !void {
try @import("cbe.zig").addCases(ctx);
try @import("spu-ii.zig").addCases(ctx);
try @import("arm.zig").addCases(ctx);
try @import("aarch64.zig").addCases(ctx);
try @import("llvm.zig").addCases(ctx);
+ try @import("wasm.zig").addCases(ctx);
{
var case = ctx.exe("hello world with updates", linux_x64);
@@ -1136,62 +1132,6 @@ pub fn addCases(ctx: *TestContext) !void {
});
}
- {
- var case = ctx.exe("wasm function calls", wasi);
-
- case.addCompareOutput(
- \\export fn _start() u32 {
- \\ foo();
- \\ bar();
- \\ return 42;
- \\}
- \\fn foo() void {
- \\ bar();
- \\ bar();
- \\}
- \\fn bar() void {}
- ,
- "42\n",
- );
-
- case.addCompareOutput(
- \\export fn _start() i64 {
- \\ bar();
- \\ foo();
- \\ foo();
- \\ bar();
- \\ foo();
- \\ bar();
- \\ return 42;
- \\}
- \\fn foo() void {
- \\ bar();
- \\}
- \\fn bar() void {}
- ,
- "42\n",
- );
-
- case.addCompareOutput(
- \\export fn _start() f32 {
- \\ bar();
- \\ foo();
- \\ return 42.0;
- \\}
- \\fn foo() void {
- \\ bar();
- \\ bar();
- \\ bar();
- \\}
- \\fn bar() void {}
- ,
- // This is what you get when you take the bits of the IEE-754
- // representation of 42.0 and reinterpret them as an unsigned
- // integer. Guess that's a bug in wasmtime.
- "1109917696\n",
- );
- }
-
ctx.compileError("function redefinition", linux_x64,
\\fn entry() void {}
\\fn entry() void {}
diff --git a/test/stage2/wasm.zig b/test/stage2/wasm.zig
new file mode 100644
index 0000000000..f522db8809
--- /dev/null
+++ b/test/stage2/wasm.zig
@@ -0,0 +1,125 @@
+const std = @import("std");
+const TestContext = @import("../../src/test.zig").TestContext;
+
+const wasi = std.zig.CrossTarget{
+ .cpu_arch = .wasm32,
+ .os_tag = .wasi,
+};
+
+pub fn addCases(ctx: *TestContext) !void {
+ {
+ var case = ctx.exe("wasm function calls", wasi);
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ foo();
+ \\ bar();
+ \\ return 42;
+ \\}
+ \\fn foo() void {
+ \\ bar();
+ \\ bar();
+ \\}
+ \\fn bar() void {}
+ ,
+ "42\n",
+ );
+
+ case.addCompareOutput(
+ \\export fn _start() i64 {
+ \\ bar();
+ \\ foo();
+ \\ foo();
+ \\ bar();
+ \\ foo();
+ \\ bar();
+ \\ return 42;
+ \\}
+ \\fn foo() void {
+ \\ bar();
+ \\}
+ \\fn bar() void {}
+ ,
+ "42\n",
+ );
+
+ case.addCompareOutput(
+ \\export fn _start() f32 {
+ \\ bar();
+ \\ foo();
+ \\ return 42.0;
+ \\}
+ \\fn foo() void {
+ \\ bar();
+ \\ bar();
+ \\ bar();
+ \\}
+ \\fn bar() void {}
+ ,
+ // This is what you get when you take the bits of the IEE-754
+ // representation of 42.0 and reinterpret them as an unsigned
+ // integer. Guess that's a bug in wasmtime.
+ "1109917696\n",
+ );
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ foo(10, 20);
+ \\ return 5;
+ \\}
+ \\fn foo(x: u32, y: u32) void {}
+ , "5\n");
+ }
+
+ {
+ var case = ctx.exe("wasm locals", wasi);
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 5;
+ \\ var y: f32 = 42.0;
+ \\ var x: u32 = 10;
+ \\ return i;
+ \\}
+ , "5\n");
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 5;
+ \\ var y: f32 = 42.0;
+ \\ var x: u32 = 10;
+ \\ foo(i, x);
+ \\ i = x;
+ \\ return i;
+ \\}
+ \\fn foo(x: u32, y: u32) void {
+ \\ var i: u32 = 10;
+ \\ i = x;
+ \\}
+ , "10\n");
+ }
+
+ {
+ var case = ctx.exe("wasm binary operands", wasi);
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 5;
+ \\ i += 20;
+ \\ return i;
+ \\}
+ , "25\n");
+
+ case.addCompareOutput(
+ \\export fn _start() u32 {
+ \\ var i: u32 = 5;
+ \\ i += 20;
+ \\ var result: u32 = foo(i, 10);
+ \\ return result;
+ \\}
+ \\fn foo(x: u32, y: u32) u32 {
+ \\ return x + y;
+ \\}
+ , "35\n");
+ }
+}