[Mlir-commits] [flang] [mlir] [flang] Introduce omp_target_allocmem and omp_target_freemem fir ops. (PR #145464)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Jul 3 08:36:39 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions cpp -- flang/lib/Optimizer/CodeGen/CodeGenOpenMP.cpp flang/lib/Optimizer/Dialect/FIROps.cpp mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/flang/lib/Optimizer/CodeGen/CodeGenOpenMP.cpp b/flang/lib/Optimizer/CodeGen/CodeGenOpenMP.cpp
index a04c5d7eb..14cc7bb51 100644
--- a/flang/lib/Optimizer/CodeGen/CodeGenOpenMP.cpp
+++ b/flang/lib/Optimizer/CodeGen/CodeGenOpenMP.cpp
@@ -142,8 +142,8 @@ static mlir::LLVM::LLVMFuncOp getOmpTargetAlloc(mlir::Operation *op) {
/*isVarArg=*/false));
}
-static mlir::Type
-convertObjectType(const fir::LLVMTypeConverter &converter, mlir::Type firType) {
+static mlir::Type convertObjectType(const fir::LLVMTypeConverter &converter,
+ mlir::Type firType) {
if (auto boxTy = mlir::dyn_cast<fir::BaseBoxType>(firType))
return converter.convertBoxTypeAsStruct(boxTy);
return converter.convertType(firType);
@@ -189,8 +189,9 @@ computeElementDistance(mlir::Location loc, mlir::Type llvmObjectType,
}
static mlir::Value genTypeSizeInBytes(mlir::Location loc, mlir::Type idxTy,
- mlir::ConversionPatternRewriter &rewriter,
- mlir::Type llTy, const mlir::DataLayout &dataLayout) {
+ mlir::ConversionPatternRewriter &rewriter,
+ mlir::Type llTy,
+ const mlir::DataLayout &dataLayout) {
return computeElementDistance(loc, llTy, idxTy, rewriter, dataLayout);
}
@@ -224,8 +225,10 @@ genAllocationScaleSize(OP op, mlir::Type ity,
}
static mlir::Value integerCast(const fir::LLVMTypeConverter &converter,
- mlir::Location loc, mlir::ConversionPatternRewriter &rewriter,
- mlir::Type ty, mlir::Value val, bool fold = false) {
+ mlir::Location loc,
+ mlir::ConversionPatternRewriter &rewriter,
+ mlir::Type ty, mlir::Value val,
+ bool fold = false) {
auto valTy = val.getType();
// If the value was not yet lowered, lower its type so that it can
// be used in getPrimitiveTypeSizeInBits.
@@ -261,11 +264,13 @@ struct TargetAllocMemOpConversion
auto ity = lowerTy().indexType();
mlir::Type dataTy = fir::unwrapRefType(heapTy);
mlir::Type llvmObjectTy = convertObjectType(lowerTy(), dataTy);
- mlir::Type llvmPtrTy = mlir::LLVM::LLVMPointerType::get(allocmemOp.getContext(), 0);
+ mlir::Type llvmPtrTy =
+ mlir::LLVM::LLVMPointerType::get(allocmemOp.getContext(), 0);
if (fir::isRecordWithTypeParameters(fir::unwrapSequenceType(dataTy)))
TODO(loc, "omp.target_allocmem codegen of derived type with length "
"parameters");
- mlir::Value size = genTypeSizeInBytes(loc, ity, rewriter, llvmObjectTy, lowerTy().getDataLayout());
+ mlir::Value size = genTypeSizeInBytes(loc, ity, rewriter, llvmObjectTy,
+ lowerTy().getDataLayout());
if (auto scaleSize = genAllocationScaleSize(allocmemOp, ity, rewriter))
size = rewriter.create<mlir::LLVM::MulOp>(loc, ity, size, scaleSize);
for (mlir::Value opnd : adaptor.getOperands().drop_front())
@@ -281,7 +286,8 @@ struct TargetAllocMemOpConversion
loc, llvmPtrTy,
mlir::SmallVector<mlir::Value, 2>({size, allocmemOp.getDevice()}),
addLLVMOpBundleAttrs(rewriter, allocmemOp->getAttrs(), 2));
- rewriter.replaceOpWithNewOp<mlir::LLVM::PtrToIntOp>(allocmemOp, rewriter.getIntegerType(64), callOp.getResult());
+ rewriter.replaceOpWithNewOp<mlir::LLVM::PtrToIntOp>(
+ allocmemOp, rewriter.getIntegerType(64), callOp.getResult());
return mlir::success();
}
};
``````````
</details>
https://github.com/llvm/llvm-project/pull/145464
More information about the Mlir-commits
mailing list