[clang] [CIR] Add CIRGenUtils.h for shared CIR codegen utilities (PR #172735)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Dec 17 12:47:57 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Andrzej WarzyĆski (banach-space)
<details>
<summary>Changes</summary>
Extract `emitIntrinsicCallOp`, which was previously defined
independently in CIRGenBuiltinAArch64.cpp and CIRGenBuiltinX86.cpp, into
a shared header (CIRGenUtils.h).
---
Full diff: https://github.com/llvm/llvm-project/pull/172735.diff
3 Files Affected:
- (modified) clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp (+1-11)
- (modified) clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp (+1-11)
- (added) clang/lib/CIR/CodeGen/CIRGenUtils.h (+34)
``````````diff
diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
index e28b3c6cdc2ff..3e4b31ce3fbf2 100644
--- a/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp
@@ -13,6 +13,7 @@
#include "CIRGenBuilder.h"
#include "CIRGenFunction.h"
+#include "CIRGenUtils.h"
#include "clang/CIR/MissingFeatures.h"
// TODO(cir): once all builtins are covered, decide whether we still
@@ -31,17 +32,6 @@ using namespace clang;
using namespace clang::CIRGen;
using namespace llvm;
-template <typename... Operands>
-static mlir::Value emitIntrinsicCallOp(CIRGenBuilderTy &builder,
- mlir::Location loc, const StringRef str,
- const mlir::Type &resTy,
- Operands &&...op) {
- return cir::LLVMIntrinsicCallOp::create(builder, loc,
- builder.getStringAttr(str), resTy,
- std::forward<Operands>(op)...)
- .getResult();
-}
-
// Generate vscale * scalingFactor
static mlir::Value genVscaleTimesFactor(mlir::Location loc,
CIRGenBuilderTy builder,
diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
index 72e6bea244802..3e13dea9b4811 100644
--- a/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp
@@ -14,6 +14,7 @@
#include "CIRGenBuilder.h"
#include "CIRGenFunction.h"
#include "CIRGenModule.h"
+#include "CIRGenUtils.h"
#include "mlir/IR/Location.h"
#include "mlir/IR/ValueRange.h"
#include "clang/Basic/Builtins.h"
@@ -25,17 +26,6 @@
using namespace clang;
using namespace clang::CIRGen;
-template <typename... Operands>
-static mlir::Value emitIntrinsicCallOp(CIRGenBuilderTy &builder,
- mlir::Location loc, const StringRef str,
- const mlir::Type &resTy,
- Operands &&...op) {
- return cir::LLVMIntrinsicCallOp::create(builder, loc,
- builder.getStringAttr(str), resTy,
- std::forward<Operands>(op)...)
- .getResult();
-}
-
// OG has unordered comparison as a form of optimization in addition to
// ordered comparison, while CIR doesn't.
//
diff --git a/clang/lib/CIR/CodeGen/CIRGenUtils.h b/clang/lib/CIR/CodeGen/CIRGenUtils.h
new file mode 100644
index 0000000000000..054c5d6ade5e2
--- /dev/null
+++ b/clang/lib/CIR/CodeGen/CIRGenUtils.h
@@ -0,0 +1,34 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Miscellaneous utility functions used by CIR code-gen.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_LIB_CIR_CODEGEN_CIRGENUTILS_H
+#define LLVM_CLANG_LIB_CIR_CODEGEN_CIRGENUTILS_H
+
+#include "CIRGenBuilder.h"
+#include "mlir/IR/Value.h"
+#include "llvm/ADT/StringRef.h"
+
+namespace clang::CIRGen {
+
+template <typename... Operands>
+mlir::Value emitIntrinsicCallOp(CIRGenBuilderTy &builder, mlir::Location loc,
+ const llvm::StringRef str,
+ const mlir::Type &resTy, Operands &&...op) {
+ return cir::LLVMIntrinsicCallOp::create(builder, loc,
+ builder.getStringAttr(str), resTy,
+ std::forward<Operands>(op)...)
+ .getResult();
+}
+
+} // namespace clang::CIRGen
+
+#endif
``````````
</details>
https://github.com/llvm/llvm-project/pull/172735
More information about the cfe-commits
mailing list