authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-12-15 16:02:44-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-01-15 15:11:35-08:00
log098e0b1906479e6aa3c4afb3aeff5c85504521c2
tree7efa3a5a0b5a1e023dee5aecf5acecbeb3072d9b
parent55773aee3fd047e8294b1994e7a2da0e3907c2c1

wasm codegen: fix lowering of 32/64 float rt calls


2 files changed, 35 insertions(+), 8 deletions(-)

src/arch/wasm/CodeGen.zig+16-8
...@@ -2747,25 +2747,33 @@ const FloatOp = enum {...@@ -2747,25 +2747,33 @@ const FloatOp = enum {
2747 },2747 },
27482748
2749 inline .ceil,2749 inline .ceil,
2750 .cos,
2751 .exp,
2752 .exp2,
2753 .fabs,2750 .fabs,
2754 .floor,2751 .floor,
2755 .fma,
2756 .fmax,2752 .fmax,
2757 .fmin,2753 .fmin,
2754 .round,
2755 .sqrt,
2756 .trunc,
2757 => |ct_op| switch (bits) {
2758 inline 16, 80, 128 => |ct_bits| @field(
2759 Mir.Intrinsic,
2760 libcFloatPrefix(ct_bits) ++ @tagName(ct_op) ++ libcFloatSuffix(ct_bits),
2761 ),
2762 else => unreachable,
2763 },
2764
2765 inline .cos,
2766 .exp,
2767 .exp2,
2768 .fma,
2758 .fmod,2769 .fmod,
2759 .log,2770 .log,
2760 .log10,2771 .log10,
2761 .log2,2772 .log2,
2762 .round,
2763 .sin,2773 .sin,
2764 .sqrt,
2765 .tan,2774 .tan,
2766 .trunc,
2767 => |ct_op| switch (bits) {2775 => |ct_op| switch (bits) {
2768 inline 16, 80, 128 => |ct_bits| @field(2776 inline 16, 32, 64, 80, 128 => |ct_bits| @field(
2769 Mir.Intrinsic,2777 Mir.Intrinsic,
2770 libcFloatPrefix(ct_bits) ++ @tagName(ct_op) ++ libcFloatSuffix(ct_bits),2778 libcFloatPrefix(ct_bits) ++ @tagName(ct_op) ++ libcFloatSuffix(ct_bits),
2771 ),2779 ),
src/arch/wasm/Mir.zig+19
...@@ -853,11 +853,18 @@ pub const Intrinsic = enum(u32) {...@@ -853,11 +853,18 @@ pub const Intrinsic = enum(u32) {
853 __udivti3,853 __udivti3,
854 __umodti3,854 __umodti3,
855 ceilq,855 ceilq,
856 cos,
857 cosf,
856 cosq,858 cosq,
859 exp,
860 exp2,
861 exp2f,
857 exp2q,862 exp2q,
863 expf,
858 expq,864 expq,
859 fabsq,865 fabsq,
860 floorq,866 floorq,
867 fma,
861 fmaf,868 fmaf,
862 fmaq,869 fmaq,
863 fmax,870 fmax,
...@@ -866,13 +873,25 @@ pub const Intrinsic = enum(u32) {...@@ -866,13 +873,25 @@ pub const Intrinsic = enum(u32) {
866 fmin,873 fmin,
867 fminf,874 fminf,
868 fminq,875 fminq,
876 fmod,
877 fmodf,
869 fmodq,878 fmodq,
879 log,
880 log10,
881 log10f,
870 log10q,882 log10q,
883 log2,
884 log2f,
871 log2q,885 log2q,
886 logf,
872 logq,887 logq,
873 roundq,888 roundq,
889 sin,
890 sinf,
874 sinq,891 sinq,
875 sqrtq,892 sqrtq,
893 tan,
894 tanf,
876 tanq,895 tanq,
877 truncq,896 truncq,
878};897};