[Mlir-commits] [mlir] [MLIR][OpenACC] Enable strict property assembly format (PR #217298)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Aug 19 03:55:57 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-openacc
Author: Mehdi Amini (joker-eph)
<details>
<summary>Changes</summary>
Enable strict property assembly format mode for the OpenACC dialect. Bind OpenACC operation properties directly in declarative assembly formats so the printed syntax stays explicit under strict parsing.
Add small OpenACC attribute helpers for direct loop property clauses, handle property-only dictionaries where direct bit-enum syntax is ambiguous, and update tests to use the strict property spelling.
Assisted-by: Codex
---
Patch is 277.00 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/217298.diff
66 Files Affected:
- (modified) mlir/include/mlir/Dialect/OpenACC/OpenACCBase.td (+1)
- (modified) mlir/include/mlir/Dialect/OpenACC/OpenACCCGOps.td (+14-11)
- (modified) mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td (+56-9)
- (modified) mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp (+28-2)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-barrier-gang-private-init.mlir (+6-6)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant-seq-gang-private.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-bound-routine-call.mlir (+1-1)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-launch-mapping.mlir (+15-15)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-predicate-region-reuse-barrier.mlir (+4-4)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-predicate-region.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-private-local-gang-redundant.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-privatize-local.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-privatize-routine-seq.mlir (+1-1)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-privatize-threadprivate.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-reduction-array-shared.mlir (+16-16)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-reduction-array.mlir (+42-42)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-reduction-block-combine-no-reload.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-reduction-combine-region-private-dest.mlir (+4-4)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-reuse-barrier-sibling-region-privatize.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-routine-worker-call-with-thread-y-reduction.mlir (+4-4)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-worker-private-dynamic-nw.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-worker-private-foldable-nw.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-worker-reduction-combine-mixed-scope.mlir (+9-9)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-worker-reduction-combine.mlir (+12-12)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-worker-reduction-private.mlir (+4-4)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-worker-vector-reuse-barrier.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/acc-cg-to-gpu-worker-vector-subgroup-align.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/acc-compute-lowering-compute-device-type.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/acc-compute-lowering-compute.mlir (+18-18)
- (modified) mlir/test/Dialect/OpenACC/acc-compute-lowering-loop-device-type.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-compute-lowering-loop.mlir (+12-12)
- (modified) mlir/test/Dialect/OpenACC/acc-compute-lowering-unstructured.mlir (+1-1)
- (modified) mlir/test/Dialect/OpenACC/acc-emit-remarks-data.mlir (+48-87)
- (modified) mlir/test/Dialect/OpenACC/acc-emit-remarks-loop-pipeline.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-emit-remarks-loop.mlir (+6-6)
- (modified) mlir/test/Dialect/OpenACC/acc-emit-remarks-private.mlir (+10-10)
- (modified) mlir/test/Dialect/OpenACC/acc-if-clause-lowering.mlir (+7-7)
- (modified) mlir/test/Dialect/OpenACC/acc-implicit-data-defaultnone.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-implicit-data-reduction.mlir (+11-11)
- (modified) mlir/test/Dialect/OpenACC/acc-implicit-data.mlir (+32-32)
- (modified) mlir/test/Dialect/OpenACC/acc-implicit-routine.mlir (+1-1)
- (modified) mlir/test/Dialect/OpenACC/acc-loop-tiling-invalid.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-loop-tiling-remarks.mlir (+4-4)
- (modified) mlir/test/Dialect/OpenACC/acc-loop-tiling.mlir (+15-15)
- (modified) mlir/test/Dialect/OpenACC/acc-recipe-materialization-firstprivate-two-allocs.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-recipe-materialization-firstprivate.mlir (+1-1)
- (modified) mlir/test/Dialect/OpenACC/acc-recipe-materialization-kernel-private.mlir (+4-4)
- (modified) mlir/test/Dialect/OpenACC/acc-recipe-materialization-loc.mlir (+6-6)
- (modified) mlir/test/Dialect/OpenACC/acc-recipe-materialization-parallel.mlir (+1-1)
- (modified) mlir/test/Dialect/OpenACC/acc-recipe-materialization-private.mlir (+4-4)
- (modified) mlir/test/Dialect/OpenACC/acc-recipe-materialization-reduction.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/acc-routine-lowering.mlir (+7-7)
- (modified) mlir/test/Dialect/OpenACC/acc-specialize-for-host-deep-nesting.mlir (+16-16)
- (modified) mlir/test/Dialect/OpenACC/acc-specialize-for-host.mlir (+10-10)
- (modified) mlir/test/Dialect/OpenACC/canonicalize.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/cse.mlir (+2-2)
- (modified) mlir/test/Dialect/OpenACC/invalid-cg.mlir (+16-16)
- (modified) mlir/test/Dialect/OpenACC/invalid.mlir (+46-46)
- (modified) mlir/test/Dialect/OpenACC/legalize-data.mlir (+10-10)
- (modified) mlir/test/Dialect/OpenACC/legalize-serial.mlir (+18-19)
- (modified) mlir/test/Dialect/OpenACC/ops-cg-privatization.mlir (+1-1)
- (modified) mlir/test/Dialect/OpenACC/ops-cg.mlir (+49-49)
- (modified) mlir/test/Dialect/OpenACC/ops.mlir (+204-204)
- (modified) mlir/test/Dialect/OpenACC/region-branchop-interface.mlir (+3-3)
- (modified) mlir/test/Dialect/OpenACC/support-analysis-varname.mlir (+1-1)
``````````diff
diff --git a/mlir/include/mlir/Dialect/OpenACC/OpenACCBase.td b/mlir/include/mlir/Dialect/OpenACC/OpenACCBase.td
index 5810759c54298..675574547cebc 100644
--- a/mlir/include/mlir/Dialect/OpenACC/OpenACCBase.td
+++ b/mlir/include/mlir/Dialect/OpenACC/OpenACCBase.td
@@ -19,6 +19,7 @@ include "mlir/IR/AttrTypeBase.td"
def OpenACC_Dialect : Dialect {
let name = "acc";
let useDefaultAttributePrinterParser = 1;
+ let useStrictPropertiesInAssemblyFormat = 1;
let useDefaultTypePrinterParser = 1;
let cppNamespace = "::mlir::acc";
let dependentDialects = ["::mlir::memref::MemRefDialect",
diff --git a/mlir/include/mlir/Dialect/OpenACC/OpenACCCGOps.td b/mlir/include/mlir/Dialect/OpenACC/OpenACCCGOps.td
index 730ea1f73a3ac..b6aa6e1525390 100644
--- a/mlir/include/mlir/Dialect/OpenACC/OpenACCCGOps.td
+++ b/mlir/include/mlir/Dialect/OpenACC/OpenACCCGOps.td
@@ -170,7 +170,7 @@ def OpenACC_ReductionAccumulateOp
}
} {acc.par_dims = #acc<par_dims[thread_x]>}
acc.reduction_accumulate %partial to %private <add>
- : i32 -> memref<i32> {par_dims = #acc<par_dims[thread_x]>}
+ : i32 -> memref<i32> <{par_dims = #acc<par_dims[thread_x]>}>
acc.reduction_combine %private into %shared <add> : memref<i32>
{acc.par_dims = #acc<par_dims[thread_x]>}
```
@@ -182,7 +182,8 @@ def OpenACC_ReductionAccumulateOp
OpenACC_ReductionOperatorAttr:$reductionOperator,
OpenACC_GPUParallelDimsAttr:$par_dims);
let assemblyFormat = [{
- $value `to` $memref $reductionOperator `:` type($value) `->` type($memref) attr-dict
+ $value `to` $memref $reductionOperator `:` type($value) `->`
+ type($memref) prop-dict attr-dict
}];
let hasVerifier = 1;
}
@@ -205,7 +206,8 @@ def OpenACC_ReductionAccumulateArrayOp
OpenACC_ReductionOperatorAttr:$reductionOperator,
OpenACC_GPUParallelDimsAttr:$par_dims);
let assemblyFormat = [{
- $memref `bounds` `(` $bounds `)` $reductionOperator `:` type($memref) attr-dict
+ $memref `bounds` `(` $bounds `)` $reductionOperator `:`
+ type($memref) prop-dict attr-dict
}];
let hasVerifier = 1;
}
@@ -409,17 +411,17 @@ def OpenACC_ParWidthOp
```mlir
// Known width from SSA value
- %w1 = acc.par_width %vector_len {par_dim = #acc.par_dim<thread_x>}
+ %w1 = acc.par_width %vector_len par_dim(#acc.par_dim<thread_x>)
// Unknown width (to be computed later)
- %w2 = acc.par_width {par_dim = #acc.par_dim<block_x>}
+ %w2 = acc.par_width par_dim(#acc.par_dim<block_x>)
```
}];
let arguments = (ins Optional<Index>:$launchArg,
OpenACC_GPUParallelDimAttr:$par_dim);
let results = (outs Index:$output);
let assemblyFormat = [{
- ($launchArg^)? attr-dict
+ ($launchArg^)? `par_dim` `(` qualified($par_dim) `)` attr-dict
}];
}
@@ -482,10 +484,10 @@ def OpenACC_GPUSharedMemoryOp : OpenACC_Op<"gpu_shared_memory"> {
```mlir
%sz = arith.constant 128 : index
%cache = acc.gpu_shared_memory(%sz)
- {num_copies = 1 : i64,
+ <{num_copies = 1 : i64,
static_upper_bound_bytes = 1560 : i64,
dynamic_shared_memory_scaling_bytes = 12 : i64,
- dynamic_shared_memory_fixed_bytes = 24 : i64}
+ dynamic_shared_memory_fixed_bytes = 24 : i64}>
: (index) -> memref<?xf32, #gpu.address_space<workgroup>>
```
}];
@@ -499,7 +501,8 @@ def OpenACC_GPUSharedMemoryOp : OpenACC_Op<"gpu_shared_memory"> {
let results = (outs Res<AnyMemRef, "", [MemAlloc<DefaultResource, 0,
FullEffect>]>:$result);
let assemblyFormat = [{
- (`(` $dynamic_sizes^ `)`)? attr-dict `:` functional-type(operands, results)
+ (`(` $dynamic_sizes^ `)`)? prop-dict attr-dict
+ `:` functional-type(operands, results)
}];
let builders = [
OpBuilder<(ins "::mlir::Type":$resultType,
@@ -573,8 +576,8 @@ def OpenACC_ComputeRegionOp
Example:
```mlir
- %w0 = acc.par_width %c128 {par_dim = #acc.par_dim<thread_x>}
- %w1 = acc.par_width %c8 {par_dim = #acc.par_dim<block_x>}
+ %w0 = acc.par_width %c128 par_dim(#acc.par_dim<thread_x>)
+ %w1 = acc.par_width %c8 par_dim(#acc.par_dim<block_x>)
acc.compute_region launch(%arg0 = %w0, %arg1 = %w1)
ins(%arg2 = %data) : (memref<1024xf32>) {
%c0 = arith.constant 0 : index
diff --git a/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td b/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
index db2f0e0605db5..aab852d735042 100644
--- a/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
+++ b/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
@@ -594,7 +594,7 @@ def OpenACC_DataBoundsOp : OpenACC_Op<"bounds",
| `extent` `(` $extent `:` type($extent) `)`
| `stride` `(` $stride `:` type($stride) `)`
| `startIdx` `(` $startIdx `:` type($startIdx) `)`
- ) attr-dict
+ ) (`strideInBytes` `(` $strideInBytes^ `)`)? attr-dict
}];
let hasVerifier = 1;
@@ -817,7 +817,11 @@ class OpenACC_DataEntryOp<string mnemonic, string clause,
| `async` `` custom<DeviceTypeOperandsWithKeywordOnly>($asyncOperands,
type($asyncOperands), $asyncOperandsDeviceType, $asyncOnly)
| `recipe` `(` custom<RecipeSym>($recipe) `)`
- ) `->` type($accVar) attr-dict
+ | `dataClause` `(` qualified($dataClause) `)`
+ | `structured` `(` $structured `)`
+ | `implicit` `(` $implicit `)`
+ | `name` `(` $name `)`
+ ) prop-dict `->` type($accVar) attr-dict
}];
let hasVerifier = 1;
@@ -1206,7 +1210,13 @@ class OpenACC_DataExitOpWithVarPtr<string mnemonic, string clause>
(`async` `` custom<DeviceTypeOperandsWithKeywordOnly>($asyncOperands,
type($asyncOperands), $asyncOperandsDeviceType, $asyncOnly)^)?
`to` custom<Var>($var) `:` custom<VarPtrType>(type($var), $varType)
- attr-dict
+ oilist(
+ `dataClause` `(` qualified($dataClause) `)`
+ | `structured` `(` $structured `)`
+ | `implicit` `(` $implicit `)`
+ | `name` `(` $name `)`
+ )
+ prop-dict attr-dict
}];
let builders = [
@@ -1278,7 +1288,13 @@ class OpenACC_DataExitOpNoVarPtr<string mnemonic, string clause>
(`bounds` `(` $bounds^ `)` )?
(`async` `` custom<DeviceTypeOperandsWithKeywordOnly>($asyncOperands,
type($asyncOperands), $asyncOperandsDeviceType, $asyncOnly)^)?
- attr-dict
+ oilist(
+ `dataClause` `(` qualified($dataClause) `)`
+ | `structured` `(` $structured `)`
+ | `implicit` `(` $implicit `)`
+ | `name` `(` $name `)`
+ )
+ prop-dict attr-dict
}];
let builders = [
@@ -1925,7 +1941,12 @@ def OpenACC_ParallelOp
| `if` `(` $ifCond `)`
| `reduction` `(` $reductionOperands `:` type($reductionOperands) `)`
)
- $region attr-dict-with-keyword
+ $region
+ oilist(
+ `defaultAttr` `(` qualified($defaultAttr) `)`
+ | `selfAttr` $selfAttr
+ )
+ attr-dict-with-keyword
}];
let hasVerifier = 1;
@@ -2067,7 +2088,12 @@ def OpenACC_SerialOp
| `if` `(` $ifCond `)`
| `reduction` `(` $reductionOperands `:` type($reductionOperands) `)`
)
- $region attr-dict-with-keyword
+ $region
+ oilist(
+ `defaultAttr` `(` qualified($defaultAttr) `)`
+ | `selfAttr` $selfAttr
+ )
+ attr-dict-with-keyword
}];
let hasVerifier = 1;
@@ -2258,7 +2284,12 @@ def OpenACC_KernelsOp
| `if` `(` $ifCond `)`
| `reduction` `(` $reductionOperands `:` type($reductionOperands) `)`
)
- $region attr-dict-with-keyword
+ $region
+ oilist(
+ `defaultAttr` `(` qualified($defaultAttr) `)`
+ | `selfAttr` $selfAttr
+ )
+ attr-dict-with-keyword
}];
let hasVerifier = 1;
@@ -2374,7 +2405,9 @@ def OpenACC_DataOp
$waitOperandsDeviceType, $waitOperandsSegments, $hasWaitDevnum,
$waitOnly)
)
- $region attr-dict-with-keyword
+ $region
+ (`defaultAttr` `(` qualified($defaultAttr)^ `)`)?
+ attr-dict-with-keyword
}];
let hasVerifier = 1;
}
@@ -2534,6 +2567,7 @@ def OpenACC_ExitDataOp : OpenACC_Op<"exit_data",
| `wait` `` custom<OperandsWithKeywordOnly>($waitOperands,
type($waitOperands), $wait)
| `dataOperands` `(` $dataClauseOperands `:` type($dataClauseOperands) `)`
+ | `finalize` $finalize
)
attr-dict-with-keyword
}];
@@ -2579,7 +2613,7 @@ def OpenACC_HostDataOp
`if` `(` $ifCond `)`
| `dataOperands` `(` $dataClauseOperands `:` type($dataClauseOperands) `)`
)
- $region attr-dict-with-keyword
+ $region (`ifPresent` $ifPresent^)? attr-dict-with-keyword
}];
let hasVerifier = 1;
@@ -2876,6 +2910,15 @@ def OpenACC_LoopOp
custom<LoopControl>($region, $lowerbound, type($lowerbound), $upperbound,
type($upperbound), $step, type($step))
( `(` type($results)^ `)` )?
+ oilist(
+ `inclusiveUpperbound` `(` custom<DenseBoolArrayAttr>($inclusiveUpperbound) `)`
+ | `collapse` `(` custom<ArrayAttr>($collapse) `)`
+ | `collapseDeviceType` `(` custom<ArrayAttr>($collapseDeviceType) `)`
+ | `seq` custom<DeviceTypeArrayAttr>($seq)
+ | `independent` custom<DeviceTypeArrayAttr>($independent)
+ | `auto_` custom<DeviceTypeArrayAttr>($auto_)
+ | `unstructured` $unstructured
+ )
attr-dict-with-keyword
}];
@@ -3506,6 +3549,7 @@ def OpenACC_InitOp : OpenACC_Op<"init", [AttrSizedOperandSegments]> {
let assemblyFormat = [{
oilist(`device_num` `(` $deviceNum `:` type($deviceNum) `)`
| `if` `(` $ifCond `)`
+ | `device_types` `(` qualified($device_types) `)`
) attr-dict-with-keyword
}];
let hasVerifier = 1;
@@ -3542,6 +3586,7 @@ def OpenACC_ShutdownOp : OpenACC_Op<"shutdown", [AttrSizedOperandSegments]> {
let assemblyFormat = [{
oilist(`device_num` `(` $deviceNum `:` type($deviceNum) `)`
|`if` `(` $ifCond `)`
+ | `device_types` `(` qualified($device_types) `)`
) attr-dict-with-keyword
}];
let hasVerifier = 1;
@@ -3574,6 +3619,7 @@ def OpenACC_SetOp : OpenACC_Op<"set", [AttrSizedOperandSegments,
oilist(`default_async` `(` $defaultAsync `:` type($defaultAsync) `)`
| `device_num` `(` $deviceNum `:` type($deviceNum) `)`
| `if` `(` $ifCond `)`
+ | `device_type` `(` qualified($device_type) `)`
) attr-dict-with-keyword
}];
let hasVerifier = 1;
@@ -3678,6 +3724,7 @@ def OpenACC_UpdateOp : OpenACC_Op<"update",
$waitOperandsDeviceType, $waitOperandsSegments, $hasWaitDevnum,
$waitOnly)
| `dataOperands` `(` $dataClauseOperands `:` type($dataClauseOperands) `)`
+ | `ifPresent` $ifPresent
)
attr-dict-with-keyword
}];
diff --git a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
index cdf34234f06df..f4f204f9452fd 100644
--- a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
+++ b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
@@ -940,6 +940,26 @@ static void printRecipeSym(mlir::OpAsmPrinter &p, mlir::Operation *op,
p << recipeAttr;
}
+static ParseResult parseDenseBoolArrayAttr(mlir::OpAsmParser &parser,
+ mlir::DenseBoolArrayAttr &attr) {
+ return parser.parseAttribute(attr);
+}
+
+static void printDenseBoolArrayAttr(mlir::OpAsmPrinter &p, mlir::Operation *op,
+ mlir::DenseBoolArrayAttr attr) {
+ p << attr;
+}
+
+static ParseResult parseArrayAttr(mlir::OpAsmParser &parser,
+ mlir::ArrayAttr &attr) {
+ return parser.parseAttribute(attr);
+}
+
+static void printArrayAttr(mlir::OpAsmPrinter &p, mlir::Operation *op,
+ mlir::ArrayAttr attr) {
+ p << attr;
+}
+
//===----------------------------------------------------------------------===//
// DataBoundsOp
//===----------------------------------------------------------------------===//
@@ -2715,11 +2735,17 @@ static ParseResult parseDeviceTypeOperandsWithKeywordOnly(
return failure();
if (parser.parseRSquare())
return failure();
+ keywordOnlyDeviceType =
+ ArrayAttr::get(parser.getContext(), keywordOnlyDeviceTypeAttributes);
needCommaBeforeOperands = true;
}
- if (needCommaBeforeOperands && failed(parser.parseComma()))
- return failure();
+ if (needCommaBeforeOperands) {
+ if (succeeded(parser.parseOptionalRParen()))
+ return success();
+ if (failed(parser.parseComma()))
+ return failure();
+ }
llvm::SmallVector<DeviceTypeAttr> attributes;
if (failed(parser.parseCommaSeparatedList([&]() {
diff --git a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-barrier-gang-private-init.mlir b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-barrier-gang-private-init.mlir
index dc77d77e61a7e..32e5759b2fb62 100644
--- a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-barrier-gang-private-init.mlir
+++ b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-barrier-gang-private-init.mlir
@@ -14,9 +14,9 @@ func.func @test_gang_private_init_barrier(%arg0: memref<100x100xf32>) {
%c10 = arith.constant 10 : index
%c8 = arith.constant 8 : index
%c100 = arith.constant 100 : index
- %12 = acc.copyin varPtr(%arg0 : memref<100x100xf32>) -> memref<100x100xf32> {dataClause = #acc<data_clause acc_copy>, name = "gp"}
- %13 = acc.par_width %c10 {par_dim = #acc.par_dim<block_x>}
- %14 = acc.par_width %c128 {par_dim = #acc.par_dim<thread_x>}
+ %12 = acc.copyin varPtr(%arg0 : memref<100x100xf32>) dataClause(acc_copy) name("gp") -> memref<100x100xf32>
+ %13 = acc.par_width %c10 par_dim(#acc.par_dim<block_x>)
+ %14 = acc.par_width %c128 par_dim(#acc.par_dim<thread_x>)
acc.kernel_environment dataOperands(%12 : memref<100x100xf32>) {
%15 = acc.privatize [#acc<par_dims[block_x]>] : () -> !acc.private_type<memref<8xf32>>
acc.compute_region launch(%arg1 = %13, %arg2 = %14) ins(%arg10 = %12, %arg11 = %15) : (memref<100x100xf32>, !acc.private_type<memref<8xf32>>) {
@@ -67,9 +67,9 @@ func.func @test_thread_private_init_no_barrier(%arg0: memref<100x100xf32>) {
%c10 = arith.constant 10 : index
%c8 = arith.constant 8 : index
%c100 = arith.constant 100 : index
- %12 = acc.copyin varPtr(%arg0 : memref<100x100xf32>) -> memref<100x100xf32> {dataClause = #acc<data_clause acc_copy>, name = "gp"}
- %13 = acc.par_width %c10 {par_dim = #acc.par_dim<block_x>}
- %14 = acc.par_width %c128 {par_dim = #acc.par_dim<thread_x>}
+ %12 = acc.copyin varPtr(%arg0 : memref<100x100xf32>) dataClause(acc_copy) name("gp") -> memref<100x100xf32>
+ %13 = acc.par_width %c10 par_dim(#acc.par_dim<block_x>)
+ %14 = acc.par_width %c128 par_dim(#acc.par_dim<thread_x>)
acc.kernel_environment dataOperands(%12 : memref<100x100xf32>) {
%15 = acc.privatize [#acc<par_dims[block_x, thread_x]>] : () -> !acc.private_type<memref<8xf32>>
acc.compute_region launch(%arg1 = %13, %arg2 = %14) ins(%arg10 = %12, %arg11 = %15) : (memref<100x100xf32>, !acc.private_type<memref<8xf32>>) {
diff --git a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant-seq-gang-private.mlir b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant-seq-gang-private.mlir
index 8f677f84326da..1a065a9ec51b1 100644
--- a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant-seq-gang-private.mlir
+++ b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant-seq-gang-private.mlir
@@ -14,9 +14,9 @@
func.func @block_redundant_seq_gang_private(%arg0: memref<32xi32>) {
%c32_pw = arith.constant 32 : index
%c1_pw = arith.constant 1 : index
- %par_bx = acc.par_width %c32_pw {par_dim = #acc.par_dim<block_x>}
- %par_ty = acc.par_width %c1_pw {par_dim = #acc.par_dim<thread_y>}
- %par_tx = acc.par_width %c32_pw {par_dim = #acc.par_dim<thread_x>}
+ %par_bx = acc.par_width %c32_pw par_dim(#acc.par_dim<block_x>)
+ %par_ty = acc.par_width %c1_pw par_dim(#acc.par_dim<thread_y>)
+ %par_tx = acc.par_width %c32_pw par_dim(#acc.par_dim<thread_x>)
acc.kernel_environment {
%priv = acc.privatize : () -> !acc.private_type<memref<32xi32>>
acc.compute_region launch(%grid = %par_bx, %worker = %par_ty, %block = %par_tx)
diff --git a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant.mlir b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant.mlir
index 0f35ec92256e7..ff60f7a14c625 100644
--- a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant.mlir
+++ b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-block-redundant.mlir
@@ -16,8 +16,8 @@
func.func @block_redundant_vector_no_predicate(%arg0: memref<32xi32>) {
%c32 = arith.constant 32 : index
- %par_bx = acc.par_width %c32 {par_dim = #acc.par_dim<block_x>}
- %par_tx = acc.par_width %c32 {par_dim = #acc.par_dim<thread_x>}
+ %par_bx = acc.par_width %c32 par_dim(#acc.par_dim<block_x>)
+ %par_tx = acc.par_width %c32 par_dim(#acc.par_dim<thread_x>)
acc.kernel_environment {
acc.compute_region launch(%grid = %par_bx, %block = %par_tx)
ins(%arg10 = %arg0) : (memref<32xi32>) {
diff --git a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-bound-routine-call.mlir b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-bound-routine-call.mlir
index c55f87b73d181..9e7abc40d5fa3 100644
--- a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-bound-routine-call.mlir
+++ b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-bound-routine-call.mlir
@@ -11,7 +11,7 @@
// CHECK: func.call @bound_vector
func.func @bound_vector_call(%arg0: memref<4xf32>) {
%c32 = arith.constant 32 : index
- %thread_x = acc.par_width %c32 {par_dim = #acc.par_dim<thread_x>}
+ %thread_x = acc.par_width %c32 par_dim(#acc.par_dim<thread_x>)
acc.compute_region launch(%tx = %thread_x) ins(%arg10 = %arg0) : (memref<4xf32>) {
acc.predicate_region {
func.call @wrapped_vector(%arg10) : (memref<4xf32>) -> ()
diff --git a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-launch-mapping.mlir b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-launch-mapping.mlir
index 54b6b19529caf..feb1f1e29e270 100644
--- a/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-launch-mapping.mlir
+++ b/mlir/test/Dialect/OpenACC/acc-cg-to-gpu-launch-mapping.mlir
@@ -133,8 +133,8 @@ func.func @par2_1_loop() {
// CHECK: scf.parallel (%[[iv2:.*]]) = (%[[c1]]) to (%[[c4:.*]]) step (%[[c1]])
// CHECK: arith.addi %[[iv2]], %[[tidx]]
func.func @par2_0_1_loop() {
- %par_dim1 = acc.par_width {par_dim = #acc.par_dim<thread_x>}
- %par_dim2 = acc.par_width {par_dim = #acc.par_dim<thread_y>}
+ %par_dim1 = acc.par_width par_dim(#acc.par_dim<thread_x>)
+ %par_dim2 = acc.par_width par_dim(#acc.par_dim<thread_y>)
acc.compute_region launch(%arg0 = %par_dim1, %arg1 = %par_dim2) {
%c1 = arith.constant 1 : index
%c4 = arith.constant 4 : index
@@ -188,7 +188,7 @@ func.func @empty() {
// CHECK-SAME: in (%[[bdimx:[a-z0-9_]+]] = %[[bdimx_val]], %[[bdimy:[a-z0-9_]+]] = %[[bdimy_val:[a-z0-9_]+]], %[[bdimz:[a-z0-9_]+]] = %[[bdimz_val:[a-z0-9_]+]])
func.func @empty_some_known_launch_arg() {
%c32 = arith.constant 32 : index
- %par_dim1 = acc.par_width %c32 {par_dim = #acc.par_dim<thread_x>}
+ %par_dim1 = acc.par_width %c32 par_dim(#acc.par_dim<thread_x>)
acc.compute_region launch(%arg0 = %par_dim1) {
acc.yield
} {origin = "acc.parallel"}
@@ -223,12 +223,12 @@ func.func @empty_all_known_launch_arg() {
%c32 = arith.constant 32 : index
%c128 = arith.constant 128 : index
- %par_dim1 = acc.par_width %c2 {par_dim = #acc.par_dim<thread_x>}
- %par_dim2 = acc.par_width %c4 {par_dim = #acc.par_dim<thread_y>}
- %par_dim3 = acc.par_width %c8 {par_dim = #acc.par_dim<thread_z>}
- %par_dim4 = acc.par_width %c16 {par_dim = #acc.par_dim<block_x>}
- %par_dim5 = acc.par_width %c32 {par_dim = #acc.par_dim<block_y>}
- %par_dim6 = acc.par_width %c128 {par_dim = #acc.par_dim<block_z>}
+ %par_dim1 = acc.par_width %c2 par_dim(#acc.par_dim<thread_x>)
+ %par_dim2 = acc.par_width %c4 par_dim(#acc.par_dim<thread_y>)
+ %par_dim3 = acc.par_width %c8 par_dim(#acc.par_dim<thread_z>)
+ %par_dim4 = acc.par_width %c16 par_dim(#acc.par_dim<block_x>)
+ %par_dim5 = acc.par_width %c32 par_dim(#acc.par_dim<block_y>)
+ %par_dim6 = acc.par_width %c128 par_dim(#acc.par_dim<block_z>)
acc.compute_region launch(%tx = %par_dim1, %ty = %par_dim2, %tz = %par_dim3, %bx = %par_dim4, %by = %par_dim5, %bz = %par_dim6) {
acc.yield
} {origin = "acc.parallel"}
@@ -252,12 +252,12 @@ func.func @using_block_args(%arr : memref<?xf32>) {
%c32_pw = arith.constant 32 : index
%c128_pw = arith.constant 128 : index
-...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/217298
More information about the Mlir-commits
mailing list