From 90f08a69aaf8b5d6c36faa92d605afcd5fde0002 Mon Sep 17 00:00:00 2001 From: Luuk de Gram Date: Wed, 9 Mar 2022 18:26:48 +0100 Subject: wasm: Enable passing behavior tests This also adds some float-related instructions to MIR/Emit --- src/arch/wasm/Emit.zig | 28 +++++++++++++++++++++++++ src/arch/wasm/Mir.zig | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) (limited to 'src') 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, -- cgit v1.2.3