[Mlir-commits] [mlir] [MLIR][LLVMIR] Add support for intrinsics with metadata arguments (PR #200308)

Andy Kaylor llvmlistbot at llvm.org
Tue Jun 2 17:58:01 PDT 2026


================
@@ -77,3 +77,38 @@ define signext i32 @test_intrin_arg_attr(i32 signext %a) nounwind {
     %val = call i32 @llvm.riscv.sha256sig0(i32 signext %a)
     ret i32 %val
 }
+
+; // -----
+
+; Constrained FP intrinsics with no dedicated MLIR op should fall back to
+; `llvm.call_intrinsic`, and their `metadata !"..."` operands should be
+; imported as `llvm.mlir.metadata_as_value` ops wrapping the corresponding
+; `#llvm.md_string` attribute.
+
+declare float @llvm.experimental.constrained.sqrt.f32(float, metadata, metadata)
+
+; CHECK-LABEL: llvm.func @constrained_sqrt
+; CHECK: %[[RM:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"round.tonearest">
+; CHECK: %[[EB:.*]] = llvm.mlir.metadata_as_value #llvm.md_string<"fpexcept.strict">
+; CHECK: %{{.*}} = llvm.call_intrinsic "llvm.experimental.constrained.sqrt.f32"(%{{.*}}, %[[RM]], %[[EB]]) : (f32, !llvm.metadata, !llvm.metadata) -> f32
+define float @constrained_sqrt(float %a) {
+  %r = call float @llvm.experimental.constrained.sqrt.f32(float %a, metadata !"round.tonearest", metadata !"fpexcept.strict")
+  ret float %r
+}
----------------
andykaylor wrote:

Sure, I'll do that.

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


More information about the Mlir-commits mailing list