[Mlir-commits] [mlir] ceb00c0 - [mlir][acc] Clean up TypedValue builders (#126968)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Feb 12 14:13:49 PST 2025
Author: Razvan Lupusoru
Date: 2025-02-12T14:13:45-08:00
New Revision: ceb00c07028491506bcf8e334bb12cab7792098f
URL: https://github.com/llvm/llvm-project/commit/ceb00c07028491506bcf8e334bb12cab7792098f
DIFF: https://github.com/llvm/llvm-project/commit/ceb00c07028491506bcf8e334bb12cab7792098f.diff
LOG: [mlir][acc] Clean up TypedValue builders (#126968)
When MappableType was introduced alongside PointerLikeType, the data
clause operation builders were duplicated to accept a `TypedValue` of
one of the two type options. However, the underlying builder takes a
`Value` and this difference is not relevant for it. The only difference
is that `varType` is set differently depending on the type.
Having two duplicated builders can lead to clunky building since a
`Value` must always be cast to one of the two options. Thus, simply
clean this up - the verifier already checks that it is a type that
implements one of the two interfaces.
Added:
Modified:
mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td b/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
index 42da20251c190..70a2ba0919952 100644
--- a/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
+++ b/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
@@ -562,53 +562,33 @@ class OpenACC_DataEntryOp<string mnemonic, string clause, string extraDescriptio
let hasVerifier = 1;
let builders = [
- OpBuilder<(ins "::mlir::TypedValue<::mlir::acc::PointerLikeType>":$varPtr,
- "bool":$structured, "bool":$implicit,
- CArg<"::mlir::ValueRange", "{}">:$bounds),
- [{
- build($_builder, $_state, varPtr.getType(), varPtr,
- /*varType=*/::mlir::TypeAttr::get(
- varPtr.getType().getElementType()),
- /*varPtrPtr=*/{}, bounds, /*asyncOperands=*/{},
- /*asyncOperandsDeviceType=*/nullptr,
- /*asyncOnly=*/nullptr, /*dataClause=*/nullptr,
- /*structured=*/$_builder.getBoolAttr(structured),
- /*implicit=*/$_builder.getBoolAttr(implicit), /*name=*/nullptr);
- }]>,
- OpBuilder<(ins "::mlir::TypedValue<::mlir::acc::PointerLikeType>":$varPtr,
- "bool":$structured, "bool":$implicit,
- "const ::llvm::Twine &":$name,
- CArg<"::mlir::ValueRange", "{}">:$bounds),
- [{
- build($_builder, $_state, varPtr.getType(), varPtr,
- /*varType=*/::mlir::TypeAttr::get(
- varPtr.getType().getElementType()),
- /*varPtrPtr=*/{}, bounds, /*asyncOperands=*/{},
- /*asyncOperandsDeviceType=*/nullptr,
- /*asyncOnly=*/nullptr, /*dataClause=*/nullptr,
- /*structured=*/$_builder.getBoolAttr(structured),
- /*implicit=*/$_builder.getBoolAttr(implicit),
- /*name=*/$_builder.getStringAttr(name));
- }]>,
- OpBuilder<(ins "::mlir::TypedValue<::mlir::acc::MappableType>":$var,
+ OpBuilder<(ins "::mlir::Value":$var,
"bool":$structured, "bool":$implicit,
CArg<"::mlir::ValueRange", "{}">:$bounds),
[{
+ auto ptrLikeTy = ::mlir::dyn_cast<::mlir::acc::PointerLikeType>(
+ var.getType());
build($_builder, $_state, var.getType(), var,
- /*varType=*/::mlir::TypeAttr::get(var.getType()),
+ /*varType=*/ptrLikeTy ?
+ ::mlir::TypeAttr::get(ptrLikeTy.getElementType()) :
+ ::mlir::TypeAttr::get(var.getType()),
/*varPtrPtr=*/{}, bounds, /*asyncOperands=*/{},
/*asyncOperandsDeviceType=*/nullptr,
/*asyncOnly=*/nullptr, /*dataClause=*/nullptr,
/*structured=*/$_builder.getBoolAttr(structured),
/*implicit=*/$_builder.getBoolAttr(implicit), /*name=*/nullptr);
}]>,
- OpBuilder<(ins "::mlir::TypedValue<::mlir::acc::MappableType>":$var,
+ OpBuilder<(ins "::mlir::Value":$var,
"bool":$structured, "bool":$implicit,
"const ::llvm::Twine &":$name,
CArg<"::mlir::ValueRange", "{}">:$bounds),
[{
+ auto ptrLikeTy = ::mlir::dyn_cast<::mlir::acc::PointerLikeType>(
+ var.getType());
build($_builder, $_state, var.getType(), var,
- /*varType=*/::mlir::TypeAttr::get(var.getType()),
+ /*varType=*/ptrLikeTy ?
+ ::mlir::TypeAttr::get(ptrLikeTy.getElementType()) :
+ ::mlir::TypeAttr::get(var.getType()),
/*varPtrPtr=*/{}, bounds, /*asyncOperands=*/{},
/*asyncOperandsDeviceType=*/nullptr,
/*asyncOnly=*/nullptr, /*dataClause=*/nullptr,
@@ -942,28 +922,34 @@ class OpenACC_DataExitOpWithVarPtr<string mnemonic, string clause>
}];
let builders = [
- OpBuilder<(ins "::mlir::TypedValue<::mlir::acc::PointerLikeType>":$accPtr,
- "::mlir::TypedValue<::mlir::acc::PointerLikeType>":$varPtr,
+ OpBuilder<(ins "::mlir::Value":$accVar,
+ "::mlir::Value":$var,
"bool":$structured, "bool":$implicit,
CArg<"::mlir::ValueRange", "{}">:$bounds),
[{
- build($_builder, $_state, accPtr, varPtr,
- /*varType=*/::mlir::TypeAttr::get(
- varPtr.getType().getElementType()),
+ auto ptrLikeTy = ::mlir::dyn_cast<::mlir::acc::PointerLikeType>(
+ var.getType());
+ build($_builder, $_state, accVar, var,
+ /*varType=*/ptrLikeTy ?
+ ::mlir::TypeAttr::get(ptrLikeTy.getElementType()) :
+ ::mlir::TypeAttr::get(var.getType()),
bounds, /*asyncOperands=*/{}, /*asyncOperandsDeviceType=*/nullptr,
/*asyncOnly=*/nullptr, /*dataClause=*/nullptr,
/*structured=*/$_builder.getBoolAttr(structured),
/*implicit=*/$_builder.getBoolAttr(implicit), /*name=*/nullptr);
}]>,
- OpBuilder<(ins "::mlir::TypedValue<::mlir::acc::PointerLikeType>":$accPtr,
- "::mlir::TypedValue<::mlir::acc::PointerLikeType>":$varPtr,
+ OpBuilder<(ins "::mlir::Value":$accVar,
+ "::mlir::Value":$var,
"bool":$structured, "bool":$implicit,
"const ::llvm::Twine &":$name,
CArg<"::mlir::ValueRange", "{}">:$bounds),
[{
- build($_builder, $_state, accPtr, varPtr,
- /*varType=*/::mlir::TypeAttr::get(
- varPtr.getType().getElementType()),
+ auto ptrLikeTy = ::mlir::dyn_cast<::mlir::acc::PointerLikeType>(
+ var.getType());
+ build($_builder, $_state, accVar, var,
+ /*varType=*/ptrLikeTy ?
+ ::mlir::TypeAttr::get(ptrLikeTy.getElementType()) :
+ ::mlir::TypeAttr::get(var.getType()),
bounds, /*asyncOperands=*/{}, /*asyncOperandsDeviceType=*/nullptr,
/*asyncOnly=*/nullptr, /*dataClause=*/nullptr,
/*structured=*/$_builder.getBoolAttr(structured),
@@ -996,22 +982,22 @@ class OpenACC_DataExitOpNoVarPtr<string mnemonic, string clause> :
}];
let builders = [
- OpBuilder<(ins "::mlir::TypedValue<::mlir::acc::PointerLikeType>":$accPtr,
+ OpBuilder<(ins "::mlir::Value":$accVar,
"bool":$structured, "bool":$implicit,
CArg<"::mlir::ValueRange", "{}">:$bounds),
[{
- build($_builder, $_state, accPtr,
+ build($_builder, $_state, accVar,
bounds, /*asyncOperands=*/{}, /*asyncOperandsDeviceType=*/nullptr,
/*asyncOnly=*/nullptr, /*dataClause=*/nullptr,
/*structured=*/$_builder.getBoolAttr(structured),
/*implicit=*/$_builder.getBoolAttr(implicit), /*name=*/nullptr);
}]>,
- OpBuilder<(ins "::mlir::TypedValue<::mlir::acc::PointerLikeType>":$accPtr,
+ OpBuilder<(ins "::mlir::Value":$accVar,
"bool":$structured, "bool":$implicit,
"const ::llvm::Twine &":$name,
CArg<"::mlir::ValueRange", "{}">:$bounds),
[{
- build($_builder, $_state, accPtr,
+ build($_builder, $_state, accVar,
bounds, /*asyncOperands=*/{}, /*asyncOperandsDeviceType=*/nullptr,
/*asyncOnly=*/nullptr, /*dataClause=*/nullptr,
/*structured=*/$_builder.getBoolAttr(structured),
More information about the Mlir-commits
mailing list