[Mlir-commits] [mlir] [MLIR][ROCDL] Add dynamically legal ops to LowerGpuOpsToROCDLOpsPass (PR #108302)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Sep 11 15:08:55 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir-gpu
Author: Nirvedh Meshram (nirvedhmeshram)
<details>
<summary>Changes</summary>
Similar to https://github.com/llvm/llvm-project/pull/108266
After https://github.com/llvm/llvm-project/pull/102971
It is legal to generate `LLVM::ExpOp` and `LLVM::LogOp` if the type is f32
---
Full diff: https://github.com/llvm/llvm-project/pull/108302.diff
1 Files Affected:
- (modified) mlir/lib/Conversion/GPUToROCDL/LowerGpuOpsToROCDLOps.cpp (+8-1)
``````````diff
diff --git a/mlir/lib/Conversion/GPUToROCDL/LowerGpuOpsToROCDLOps.cpp b/mlir/lib/Conversion/GPUToROCDL/LowerGpuOpsToROCDLOps.cpp
index 29926719129dc5..1265f3f48a418e 100644
--- a/mlir/lib/Conversion/GPUToROCDL/LowerGpuOpsToROCDLOps.cpp
+++ b/mlir/lib/Conversion/GPUToROCDL/LowerGpuOpsToROCDLOps.cpp
@@ -332,7 +332,14 @@ void mlir::configureGpuToROCDLConversionLegality(ConversionTarget &target) {
target.addIllegalOp<LLVM::CosOp, LLVM::ExpOp, LLVM::Exp2Op, LLVM::FCeilOp,
LLVM::FFloorOp, LLVM::FRemOp, LLVM::LogOp, LLVM::Log10Op,
LLVM::Log2Op, LLVM::PowOp, LLVM::SinOp>();
-
+ // These ops are legal for f32 type.
+ target.addDynamicallyLegalOp<LLVM::ExpOp, LLVM::LogOp>(
+ [](mlir::Operation *op) {
+ return llvm::any_of(op->getOperandTypes(), [](Type type) {
+ return llvm::isa<FloatType>(type) &&
+ type.getIntOrFloatBitWidth() == 32;
+ });
+ });
// TODO: Remove once we support replacing non-root ops.
target.addLegalOp<gpu::YieldOp, gpu::GPUModuleOp>();
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/108302
More information about the Mlir-commits
mailing list