[llvm] [WebAssembly,llvm] Add llvm.wasm.ref.test.func intrinsic, option 2 (PR #147486)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 8 02:19:12 PDT 2025


================
@@ -0,0 +1,42 @@
+; RUN: llc < %s -mcpu=mvp -mattr=+reference-types | FileCheck %s
+
+target triple = "wasm32-unknown-unknown"
+
+; CHECK-LABEL: test_function_pointer_signature_void:
+; CHECK-NEXT: .functype	test_function_pointer_signature_void (i32) -> ()
+; CHECK-NEXT: .local funcref
+; CHECK: local.get	0
+; CHECK-NEXT: table.get	__indirect_function_table
+; CHECK-NEXT: local.tee	1
+; CHECK-NEXT: ref.test (f32, f64, i32) -> (f32)
+; CHECK-NEXT: call	use
+; CHECK-NEXT: local.get	1
+; CHECK-NEXT: ref.test (f32, f64, i32) -> (i32)
+; CHECK-NEXT: call	use
+; CHECK-NEXT: local.get	1
+; CHECK-NEXT: ref.test (i32, i32, i32) -> (i32)
+; CHECK-NEXT: call	use
+; CHECK-NEXT: local.get	1
+; CHECK-NEXT: ref.test (i32, i32, i32) -> ()
+; CHECK-NEXT: call	use
+; CHECK-NEXT: local.get	1
+; CHECK-NEXT: ref.test () -> ()
+; CHECK-NEXT: call	use
+
+; Function Attrs: nounwind
+define void @test_function_pointer_signature_void(ptr noundef %func) local_unnamed_addr #0 {
+entry:
+  %0 = tail call i32 (ptr, ...) @llvm.wasm.ref.test.func(ptr %func, float 0.000000e+00, float 0.000000e+00, double 0.000000e+00, i32 0)
----------------
arsenm wrote:

Use named values in tests, and don't test every case all in one function 

https://github.com/llvm/llvm-project/pull/147486


More information about the llvm-commits mailing list