diff --git a/src/arch/wasm/CodeGen.zig b/src/arch/wasm/CodeGen.zig index 2d31b6113fb233c10fafa42dee97780556eb8b7c..900cb96ded19df025521b0b82a86ed51149555d2 100644 --- a/src/arch/wasm/CodeGen.zig +++ b/src/arch/wasm/CodeGen.zig @@ -2747,22 +2747,12 @@ const FloatOp = enum { }, inline .ceil, - .cos, - .exp, - .exp2, .fabs, .floor, - .fma, .fmax, .fmin, - .fmod, - .log, - .log10, - .log2, .round, - .sin, .sqrt, - .tan, .trunc, => |ct_op| switch (bits) { inline 16, 80, 128 => |ct_bits| @field( @@ -2772,6 +2762,24 @@ const FloatOp = enum { else => unreachable, }, + inline .cos, + .exp, + .exp2, + .fma, + .fmod, + .log, + .log10, + .log2, + .sin, + .tan, + => |ct_op| switch (bits) { + inline 16, 32, 64, 80, 128 => |ct_bits| @field( + Mir.Intrinsic, + libcFloatPrefix(ct_bits) ++ @tagName(ct_op) ++ libcFloatSuffix(ct_bits), + ), + else => unreachable, + }, + .neg => unreachable, }; } diff --git a/src/arch/wasm/Mir.zig b/src/arch/wasm/Mir.zig index 9f5ddf189a323ea989bb36e63e6f7f8f7ef582db..65cd62c77d1fb8c4d8ecb5c180a02e25086345f1 100644 --- a/src/arch/wasm/Mir.zig +++ b/src/arch/wasm/Mir.zig @@ -853,11 +853,18 @@ pub const Intrinsic = enum(u32) { __udivti3, __umodti3, ceilq, + cos, + cosf, cosq, + exp, + exp2, + exp2f, exp2q, + expf, expq, fabsq, floorq, + fma, fmaf, fmaq, fmax, @@ -866,13 +873,25 @@ pub const Intrinsic = enum(u32) { fmin, fminf, fminq, + fmod, + fmodf, fmodq, + log, + log10, + log10f, log10q, + log2, + log2f, log2q, + logf, logq, roundq, + sin, + sinf, sinq, sqrtq, + tan, + tanf, tanq, truncq, };