aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuuk de Gram <luuk@degram.dev>2022-03-09 18:26:48 +0100
committerAndrew Kelley <andrew@ziglang.org>2022-03-09 13:53:20 -0700
commit90f08a69aaf8b5d6c36faa92d605afcd5fde0002 (patch)
tree18a320927655ba151a658a7003693a825dde96f1 /src
parent3ea113e00887638bf8bfb1d00bae5649db7ded35 (diff)
downloadzig-90f08a69aaf8b5d6c36faa92d605afcd5fde0002.tar.gz
zig-90f08a69aaf8b5d6c36faa92d605afcd5fde0002.zip
wasm: Enable passing behavior tests
This also adds some float-related instructions to MIR/Emit
Diffstat (limited to 'src')
-rw-r--r--src/arch/wasm/Emit.zig28
-rw-r--r--src/arch/wasm/Mir.zig56
2 files changed, 84 insertions, 0 deletions
diff --git a/src/arch/wasm/Emit.zig b/src/arch/wasm/Emit.zig
index d8539a5959..e0b40794b8 100644
--- a/src/arch/wasm/Emit.zig
+++ b/src/arch/wasm/Emit.zig
@@ -153,6 +153,34 @@ pub fn emitMir(emit: *Emit) InnerError!void {
.i64_shl => try emit.emitTag(tag),
.i64_shr_s => try emit.emitTag(tag),
.i64_shr_u => try emit.emitTag(tag),
+ .f32_abs => try emit.emitTag(tag),
+ .f32_neg => try emit.emitTag(tag),
+ .f32_ceil => try emit.emitTag(tag),
+ .f32_floor => try emit.emitTag(tag),
+ .f32_trunc => try emit.emitTag(tag),
+ .f32_nearest => try emit.emitTag(tag),
+ .f32_sqrt => try emit.emitTag(tag),
+ .f32_add => try emit.emitTag(tag),
+ .f32_sub => try emit.emitTag(tag),
+ .f32_mul => try emit.emitTag(tag),
+ .f32_div => try emit.emitTag(tag),
+ .f32_min => try emit.emitTag(tag),
+ .f32_max => try emit.emitTag(tag),
+ .f32_copysign => try emit.emitTag(tag),
+ .f64_abs => try emit.emitTag(tag),
+ .f64_neg => try emit.emitTag(tag),
+ .f64_ceil => try emit.emitTag(tag),
+ .f64_floor => try emit.emitTag(tag),
+ .f64_trunc => try emit.emitTag(tag),
+ .f64_nearest => try emit.emitTag(tag),
+ .f64_sqrt => try emit.emitTag(tag),
+ .f64_add => try emit.emitTag(tag),
+ .f64_sub => try emit.emitTag(tag),
+ .f64_mul => try emit.emitTag(tag),
+ .f64_div => try emit.emitTag(tag),
+ .f64_min => try emit.emitTag(tag),
+ .f64_max => try emit.emitTag(tag),
+ .f64_copysign => try emit.emitTag(tag),
.i32_wrap_i64 => try emit.emitTag(tag),
.i64_extend_i32_s => try emit.emitTag(tag),
.i64_extend_i32_u => try emit.emitTag(tag),
diff --git a/src/arch/wasm/Mir.zig b/src/arch/wasm/Mir.zig
index d5d45142de..b24af64ff5 100644
--- a/src/arch/wasm/Mir.zig
+++ b/src/arch/wasm/Mir.zig
@@ -369,6 +369,62 @@ pub const Inst = struct {
/// Uses `tag`
i64_shr_u = 0x88,
/// Uses `tag`
+ f32_abs = 0x8B,
+ /// Uses `tag`
+ f32_neg = 0x8C,
+ /// Uses `tag`
+ f32_ceil = 0x8D,
+ /// Uses `tag`
+ f32_floor = 0x8E,
+ /// Uses `tag`
+ f32_trunc = 0x8F,
+ /// Uses `tag`
+ f32_nearest = 0x90,
+ /// Uses `tag`
+ f32_sqrt = 0x91,
+ /// Uses `tag`
+ f32_add = 0x92,
+ /// Uses `tag`
+ f32_sub = 0x93,
+ /// Uses `tag`
+ f32_mul = 0x94,
+ /// Uses `tag`
+ f32_div = 0x95,
+ /// Uses `tag`
+ f32_min = 0x96,
+ /// Uses `tag`
+ f32_max = 0x97,
+ /// Uses `tag`
+ f32_copysign = 0x98,
+ /// Uses `tag`
+ f64_abs = 0x99,
+ /// Uses `tag`
+ f64_neg = 0x9A,
+ /// Uses `tag`
+ f64_ceil = 0x9B,
+ /// Uses `tag`
+ f64_floor = 0x9C,
+ /// Uses `tag`
+ f64_trunc = 0x9D,
+ /// Uses `tag`
+ f64_nearest = 0x9E,
+ /// Uses `tag`
+ f64_sqrt = 0x9F,
+ /// Uses `tag`
+ f64_add = 0xA0,
+ /// Uses `tag`
+ f64_sub = 0xA1,
+ /// Uses `tag`
+ f64_mul = 0xA2,
+ /// Uses `tag`
+ f64_div = 0xA3,
+ /// Uses `tag`
+ f64_min = 0xA4,
+ /// Uses `tag`
+ f64_max = 0xA5,
+ /// Uses `tag`
+ f64_copysign = 0xA6,
+ /// Uses `tag`
i32_wrap_i64 = 0xA7,
/// Uses `tag`
i32_trunc_f32_s = 0xA8,