[WASM] Add missing f64 musl builtins for ONNX operations (#24953)

LLVMCPU executable linking fails with undefined references when
generated code calls `exp`, `floor`, `log`, or `round`. This is because
their f64 implementations and dependencies are missing from IREE's
embedded musl bitcode.

Added the missing sources and dependencies to wasm32 and wasm64 musl
Makefiles and regenerated the bitcode libraries. During embedded
linking, LLVMCPU uses the generic wasm32 and wasm64 bitcode libraries to
provide C math functions to 32-bit and 64-bit targets.

Removed the twelve now-passing ONNX cases from O0 and O2
expected-compilation-failure list.

Progress on #24378.

Assisted-by: Codex

---------

Signed-off-by: Prajit-Rahul <prajitrahul05@gmail.com>
diff --git a/runtime/src/iree/builtins/musl/Makefile_wasm32.iree b/runtime/src/iree/builtins/musl/Makefile_wasm32.iree
index 869ed87..3416541 100644
--- a/runtime/src/iree/builtins/musl/Makefile_wasm32.iree
+++ b/runtime/src/iree/builtins/musl/Makefile_wasm32.iree
@@ -25,7 +25,18 @@
 	src/math/__math_invalidf.c \
 	src/math/__math_oflowf.c \
 	src/math/__math_uflowf.c \
-	src/math/__math_xflowf.c)
+	src/math/__math_xflowf.c \
+	src/math/exp.c \
+	src/math/exp_data.c \
+	src/math/floor.c \
+	src/math/log.c \
+	src/math/log_data.c \
+	src/math/round.c \
+	src/math/__math_divzero.c \
+	src/math/__math_invalid.c \
+	src/math/__math_oflow.c \
+	src/math/__math_uflow.c \
+	src/math/__math_xflow.c)
 IREE_BASE_LLS = $(patsubst $(srcdir)/%,%.ll,$(basename $(IREE_BASE_SRCS)))
 IREE_BASE_BCS = $(patsubst $(srcdir)/%,%.bc,$(basename $(IREE_BASE_SRCS)))
 IREE_LL_FILES = $(addprefix obj/, $(IREE_BASE_LLS))
diff --git a/runtime/src/iree/builtins/musl/Makefile_wasm64.iree b/runtime/src/iree/builtins/musl/Makefile_wasm64.iree
index 486d9de..16150e5 100644
--- a/runtime/src/iree/builtins/musl/Makefile_wasm64.iree
+++ b/runtime/src/iree/builtins/musl/Makefile_wasm64.iree
@@ -25,7 +25,18 @@
 	src/math/__math_invalidf.c \
 	src/math/__math_oflowf.c \
 	src/math/__math_uflowf.c \
-	src/math/__math_xflowf.c)
+	src/math/__math_xflowf.c \
+	src/math/exp.c \
+	src/math/exp_data.c \
+	src/math/floor.c \
+	src/math/log.c \
+	src/math/log_data.c \
+	src/math/round.c \
+	src/math/__math_divzero.c \
+	src/math/__math_invalid.c \
+	src/math/__math_oflow.c \
+	src/math/__math_uflow.c \
+	src/math/__math_xflow.c)
 IREE_BASE_LLS = $(patsubst $(srcdir)/%,%.ll,$(basename $(IREE_BASE_SRCS)))
 IREE_BASE_BCS = $(patsubst $(srcdir)/%,%.bc,$(basename $(IREE_BASE_SRCS)))
 IREE_LL_FILES = $(addprefix obj/, $(IREE_BASE_LLS))
diff --git a/runtime/src/iree/builtins/musl/bin/libmusl_wasm32_generic.bc b/runtime/src/iree/builtins/musl/bin/libmusl_wasm32_generic.bc
index 8c81f49..4cc737f 100644
--- a/runtime/src/iree/builtins/musl/bin/libmusl_wasm32_generic.bc
+++ b/runtime/src/iree/builtins/musl/bin/libmusl_wasm32_generic.bc
Binary files differ
diff --git a/runtime/src/iree/builtins/musl/bin/libmusl_wasm64_generic.bc b/runtime/src/iree/builtins/musl/bin/libmusl_wasm64_generic.bc
index 0767285..d13dd70 100644
--- a/runtime/src/iree/builtins/musl/bin/libmusl_wasm64_generic.bc
+++ b/runtime/src/iree/builtins/musl/bin/libmusl_wasm64_generic.bc
Binary files differ
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O0.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O0.json
index 09edc6a..b91d549 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O0.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O0.json
@@ -88,7 +88,6 @@
     "onnx/node/generated/test_maxpool_with_argmax_2d_precomputed_strides",
     "onnx/node/generated/test_maxunpool_export_with_output_shape",
     "onnx/node/generated/test_maxunpool_export_without_output_shape",
-    "onnx/node/generated/test_mod_mixed_sign_float64",
     "onnx/node/generated/test_nllloss_NCd1",
     "onnx/node/generated/test_nllloss_NCd1_ii",
     "onnx/node/generated/test_nllloss_NCd1_mean_weight_negative_ii",
@@ -106,15 +105,6 @@
     "onnx/node/generated/test_nllloss_NCd1d2d3d4d5_mean_weight",
     "onnx/node/generated/test_nllloss_NCd1d2d3d4d5_none_no_weight",
     "onnx/node/generated/test_nonmaxsuppression_two_classes",
-    "onnx/node/generated/test_nonzero_example",
-    "onnx/node/generated/test_pow_types_float32_int32",
-    "onnx/node/generated/test_pow_types_float32_int64",
-    "onnx/node/generated/test_pow_types_float32_uint32",
-    "onnx/node/generated/test_pow_types_float32_uint64",
-    "onnx/node/generated/test_pow_types_int32_float32",
-    "onnx/node/generated/test_pow_types_int32_int32",
-    "onnx/node/generated/test_pow_types_int64_float32",
-    "onnx/node/generated/test_pow_types_int64_int64",
     "onnx/node/generated/test_quantizelinear_axis",
     "onnx/node/generated/test_quantizelinear_blocked_asymmetric",
     "onnx/node/generated/test_quantizelinear_blocked_symmetric",
@@ -156,9 +146,7 @@
     "onnx/node/generated/test_reduce_log_sum_desc_axes_expanded",
     "onnx/node/generated/test_reduce_log_sum_empty_set",
     "onnx/node/generated/test_reduce_log_sum_empty_set_expanded",
-    "onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example",
     "onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example_expanded",
-    "onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random",
     "onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random_expanded",
     "onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_example",
     "onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_example_expanded",
diff --git a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O2.json b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O2.json
index 9f9dae1..a3055a7a 100644
--- a/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O2.json
+++ b/tests/external/iree-test-suites/onnx_ops/onnx_ops_cpu_llvm_sync_O2.json
@@ -89,7 +89,6 @@
     "onnx/node/generated/test_maxpool_with_argmax_2d_precomputed_strides",
     "onnx/node/generated/test_maxunpool_export_with_output_shape",
     "onnx/node/generated/test_maxunpool_export_without_output_shape",
-    "onnx/node/generated/test_mod_mixed_sign_float64",
     "onnx/node/generated/test_nllloss_NCd1",
     "onnx/node/generated/test_nllloss_NCd1_ii",
     "onnx/node/generated/test_nllloss_NCd1_mean_weight_negative_ii",
@@ -107,15 +106,6 @@
     "onnx/node/generated/test_nllloss_NCd1d2d3d4d5_mean_weight",
     "onnx/node/generated/test_nllloss_NCd1d2d3d4d5_none_no_weight",
     "onnx/node/generated/test_nonmaxsuppression_two_classes",
-    "onnx/node/generated/test_nonzero_example",
-    "onnx/node/generated/test_pow_types_float32_int32",
-    "onnx/node/generated/test_pow_types_float32_int64",
-    "onnx/node/generated/test_pow_types_float32_uint32",
-    "onnx/node/generated/test_pow_types_float32_uint64",
-    "onnx/node/generated/test_pow_types_int32_float32",
-    "onnx/node/generated/test_pow_types_int32_int32",
-    "onnx/node/generated/test_pow_types_int64_float32",
-    "onnx/node/generated/test_pow_types_int64_int64",
     "onnx/node/generated/test_quantizelinear_axis",
     "onnx/node/generated/test_quantizelinear_blocked_asymmetric",
     "onnx/node/generated/test_quantizelinear_blocked_symmetric",
@@ -157,9 +147,7 @@
     "onnx/node/generated/test_reduce_log_sum_desc_axes_expanded",
     "onnx/node/generated/test_reduce_log_sum_empty_set",
     "onnx/node/generated/test_reduce_log_sum_empty_set_expanded",
-    "onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example",
     "onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_example_expanded",
-    "onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random",
     "onnx/node/generated/test_reduce_log_sum_exp_default_axes_keepdims_random_expanded",
     "onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_example",
     "onnx/node/generated/test_reduce_log_sum_exp_do_not_keepdims_example_expanded",