Skip to content

Commit 8ccbd90

Browse files
authored
[SYCL-MLIR] Change SYCLMethodOps assembly format (#8278)
- sycl.x.get: `$Base [ $Index ] attr-dict : functional-type(operands, results)` - Rest: `( operands ) attr-dict : functional-type(operands, results)` Signed-off-by: Victor Perez <[email protected]>
1 parent 889506d commit 8ccbd90

File tree

5 files changed

+76
-64
lines changed

5 files changed

+76
-64
lines changed

mlir-sycl/include/mlir/Dialect/SYCL/IR/SYCLOps.td

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ class SYCLMethodOpInterfaceImpl<
113113
let extraClassDefinition = [{
114114
constexpr std::array<llvm::StringLiteral, }] # arrSize # [{> $cppClass::methods;
115115
}];
116+
117+
let assemblyFormat = [{
118+
`(` operands `)` attr-dict `:` functional-type(operands, results)
119+
}];
116120
}
117121

118122
////////////////////////////////////////////////////////////////////////////////
@@ -779,6 +783,10 @@ def SYCLRangeGetOp
779783
FlatSymbolRefAttr:$TypeName);
780784

781785
let results = (outs SYCLGetResult:$Res);
786+
787+
let assemblyFormat = [{
788+
$Range `[` $Index `]` attr-dict `:` functional-type(operands, results)
789+
}];
782790
}
783791

784792
////////////////////////////////////////////////////////////////////////////////
@@ -886,6 +894,10 @@ def SYCLIDGetOp
886894
FlatSymbolRefAttr:$TypeName);
887895

888896
let results = (outs SYCLGetResult:$Res);
897+
898+
let assemblyFormat = [{
899+
$ID `[` $Index `]` attr-dict `:` functional-type(operands, results)
900+
}];
889901
}
890902

891903
////////////////////////////////////////////////////////////////////////////////

mlir-sycl/test/Conversion/SYCLToGPU/grid-ops.mlir

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// CHECK-NEXT: %[[VAL_3:.*]] = arith.constant 0 : i32
1515
// CHECK-NEXT: %[[VAL_4:.*]] = gpu.grid_dim x
1616
// CHECK-NEXT: %[[VAL_5:.*]] = arith.index_cast %[[VAL_4]] : index to i64
17-
// CHECK-NEXT: %[[VAL_6:.*]] = "sycl.range.get"(%[[VAL_2]], %[[VAL_3]]) {ArgumentTypes = [memref<1x!sycl_range_1_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @range} : (!sycl_range_1_, i32) -> memref<1xi64, 4>
17+
// CHECK-NEXT: %[[VAL_6:.*]] = sycl.range.get %[[VAL_2]][%[[VAL_3]]] {ArgumentTypes = [memref<1x!sycl_range_1_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @range} : (!sycl_range_1_, i32) -> memref<1xi64, 4>
1818
// CHECK-NEXT: affine.store %[[VAL_5]], %[[VAL_6]]{{\[}}%[[VAL_1]]] : memref<1xi64, 4>
1919
// CHECK-NEXT: return %[[VAL_2]] : !sycl_range_1_
2020
// CHECK-NEXT: }
@@ -51,12 +51,12 @@ func.func @test_num_work_items_dim(%i: i32) -> index {
5151
// CHECK-NEXT: %[[VAL_3:.*]] = arith.constant 0 : i32
5252
// CHECK-NEXT: %[[VAL_4:.*]] = gpu.global_id x
5353
// CHECK-NEXT: %[[VAL_5:.*]] = arith.index_cast %[[VAL_4]] : index to i64
54-
// CHECK-NEXT: %[[VAL_6:.*]] = "sycl.id.get"(%[[VAL_2]], %[[VAL_3]]) {ArgumentTypes = [memref<1x!sycl_id_2_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_2_, i32) -> memref<2xi64, 4>
54+
// CHECK-NEXT: %[[VAL_6:.*]] = sycl.id.get %[[VAL_2]][%[[VAL_3]]] {ArgumentTypes = [memref<1x!sycl_id_2_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_2_, i32) -> memref<2xi64, 4>
5555
// CHECK-NEXT: affine.store %[[VAL_5]], %[[VAL_6]]{{\[}}%[[VAL_1]]] : memref<2xi64, 4>
5656
// CHECK-NEXT: %[[VAL_7:.*]] = arith.constant 1 : i32
5757
// CHECK-NEXT: %[[VAL_8:.*]] = gpu.global_id y
5858
// CHECK-NEXT: %[[VAL_9:.*]] = arith.index_cast %[[VAL_8]] : index to i64
59-
// CHECK-NEXT: %[[VAL_10:.*]] = "sycl.id.get"(%[[VAL_2]], %[[VAL_7]]) {ArgumentTypes = [memref<1x!sycl_id_2_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_2_, i32) -> memref<2xi64, 4>
59+
// CHECK-NEXT: %[[VAL_10:.*]] = sycl.id.get %[[VAL_2]][%[[VAL_7]]] {ArgumentTypes = [memref<1x!sycl_id_2_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_2_, i32) -> memref<2xi64, 4>
6060
// CHECK-NEXT: affine.store %[[VAL_9]], %[[VAL_10]]{{\[}}%[[VAL_1]]] : memref<2xi64, 4>
6161
// CHECK-NEXT: return %[[VAL_2]] : !sycl_id_2_
6262
// CHECK-NEXT: }
@@ -93,17 +93,17 @@ func.func @test_global_id_dim(%i: i32) -> index {
9393
// CHECK-NEXT: %[[VAL_3:.*]] = arith.constant 0 : i32
9494
// CHECK-NEXT: %[[VAL_4:.*]] = gpu.thread_id x
9595
// CHECK-NEXT: %[[VAL_5:.*]] = arith.index_cast %[[VAL_4]] : index to i64
96-
// CHECK-NEXT: %[[VAL_6:.*]] = "sycl.id.get"(%[[VAL_2]], %[[VAL_3]]) {ArgumentTypes = [memref<1x!sycl_id_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_3_, i32) -> memref<3xi64, 4>
96+
// CHECK-NEXT: %[[VAL_6:.*]] = sycl.id.get %[[VAL_2]][%[[VAL_3]]] {ArgumentTypes = [memref<1x!sycl_id_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_3_, i32) -> memref<3xi64, 4>
9797
// CHECK-NEXT: affine.store %[[VAL_5]], %[[VAL_6]]{{\[}}%[[VAL_1]]] : memref<3xi64, 4>
9898
// CHECK-NEXT: %[[VAL_7:.*]] = arith.constant 1 : i32
9999
// CHECK-NEXT: %[[VAL_8:.*]] = gpu.thread_id y
100100
// CHECK-NEXT: %[[VAL_9:.*]] = arith.index_cast %[[VAL_8]] : index to i64
101-
// CHECK-NEXT: %[[VAL_10:.*]] = "sycl.id.get"(%[[VAL_2]], %[[VAL_7]]) {ArgumentTypes = [memref<1x!sycl_id_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_3_, i32) -> memref<3xi64, 4>
101+
// CHECK-NEXT: %[[VAL_10:.*]] = sycl.id.get %[[VAL_2]][%[[VAL_7]]] {ArgumentTypes = [memref<1x!sycl_id_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_3_, i32) -> memref<3xi64, 4>
102102
// CHECK-NEXT: affine.store %[[VAL_9]], %[[VAL_10]]{{\[}}%[[VAL_1]]] : memref<3xi64, 4>
103103
// CHECK-NEXT: %[[VAL_11:.*]] = arith.constant 2 : i32
104104
// CHECK-NEXT: %[[VAL_12:.*]] = gpu.thread_id z
105105
// CHECK-NEXT: %[[VAL_13:.*]] = arith.index_cast %[[VAL_12]] : index to i64
106-
// CHECK-NEXT: %[[VAL_14:.*]] = "sycl.id.get"(%[[VAL_2]], %[[VAL_11]]) {ArgumentTypes = [memref<1x!sycl_id_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_3_, i32) -> memref<3xi64, 4>
106+
// CHECK-NEXT: %[[VAL_14:.*]] = sycl.id.get %[[VAL_2]][%[[VAL_11]]] {ArgumentTypes = [memref<1x!sycl_id_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_3_, i32) -> memref<3xi64, 4>
107107
// CHECK-NEXT: affine.store %[[VAL_13]], %[[VAL_14]]{{\[}}%[[VAL_1]]] : memref<3xi64, 4>
108108
// CHECK-NEXT: return %[[VAL_2]] : !sycl_id_3_
109109
// CHECK-NEXT: }
@@ -140,17 +140,17 @@ func.func @test_local_id_dim(%i: i32) -> index {
140140
// CHECK-NEXT: %[[VAL_3:.*]] = arith.constant 0 : i32
141141
// CHECK-NEXT: %[[VAL_4:.*]] = gpu.block_dim x
142142
// CHECK-NEXT: %[[VAL_5:.*]] = arith.index_cast %[[VAL_4]] : index to i64
143-
// CHECK-NEXT: %[[VAL_6:.*]] = "sycl.range.get"(%[[VAL_2]], %[[VAL_3]]) {ArgumentTypes = [memref<1x!sycl_range_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @range} : (!sycl_range_3_, i32) -> memref<3xi64, 4>
143+
// CHECK-NEXT: %[[VAL_6:.*]] = sycl.range.get %[[VAL_2]][%[[VAL_3]]] {ArgumentTypes = [memref<1x!sycl_range_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @range} : (!sycl_range_3_, i32) -> memref<3xi64, 4>
144144
// CHECK-NEXT: affine.store %[[VAL_5]], %[[VAL_6]]{{\[}}%[[VAL_1]]] : memref<3xi64, 4>
145145
// CHECK-NEXT: %[[VAL_7:.*]] = arith.constant 1 : i32
146146
// CHECK-NEXT: %[[VAL_8:.*]] = gpu.block_dim y
147147
// CHECK-NEXT: %[[VAL_9:.*]] = arith.index_cast %[[VAL_8]] : index to i64
148-
// CHECK-NEXT: %[[VAL_10:.*]] = "sycl.range.get"(%[[VAL_2]], %[[VAL_7]]) {ArgumentTypes = [memref<1x!sycl_range_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @range} : (!sycl_range_3_, i32) -> memref<3xi64, 4>
148+
// CHECK-NEXT: %[[VAL_10:.*]] = sycl.range.get %[[VAL_2]][%[[VAL_7]]] {ArgumentTypes = [memref<1x!sycl_range_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @range} : (!sycl_range_3_, i32) -> memref<3xi64, 4>
149149
// CHECK-NEXT: affine.store %[[VAL_9]], %[[VAL_10]]{{\[}}%[[VAL_1]]] : memref<3xi64, 4>
150150
// CHECK-NEXT: %[[VAL_11:.*]] = arith.constant 2 : i32
151151
// CHECK-NEXT: %[[VAL_12:.*]] = gpu.block_dim z
152152
// CHECK-NEXT: %[[VAL_13:.*]] = arith.index_cast %[[VAL_12]] : index to i64
153-
// CHECK-NEXT: %[[VAL_14:.*]] = "sycl.range.get"(%[[VAL_2]], %[[VAL_11]]) {ArgumentTypes = [memref<1x!sycl_range_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @range} : (!sycl_range_3_, i32) -> memref<3xi64, 4>
153+
// CHECK-NEXT: %[[VAL_14:.*]] = sycl.range.get %[[VAL_2]][%[[VAL_11]]] {ArgumentTypes = [memref<1x!sycl_range_3_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @range} : (!sycl_range_3_, i32) -> memref<3xi64, 4>
154154
// CHECK-NEXT: affine.store %[[VAL_13]], %[[VAL_14]]{{\[}}%[[VAL_1]]] : memref<3xi64, 4>
155155
// CHECK-NEXT: return %[[VAL_2]] : !sycl_range_3_
156156
// CHECK-NEXT: }
@@ -187,7 +187,7 @@ func.func @test_work_group_size_dim(%i: i32) -> index {
187187
// CHECK-NEXT: %[[VAL_3:.*]] = arith.constant 0 : i32
188188
// CHECK-NEXT: %[[VAL_4:.*]] = gpu.block_id x
189189
// CHECK-NEXT: %[[VAL_5:.*]] = arith.index_cast %[[VAL_4]] : index to i64
190-
// CHECK-NEXT: %[[VAL_6:.*]] = "sycl.id.get"(%[[VAL_2]], %[[VAL_3]]) {ArgumentTypes = [memref<1x!sycl_id_1_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_1_, i32) -> memref<1xi64, 4>
190+
// CHECK-NEXT: %[[VAL_6:.*]] = sycl.id.get %[[VAL_2]][%[[VAL_3]]] {ArgumentTypes = [memref<1x!sycl_id_1_, 4>, i32], FunctionName = @"operator[]", MangledFunctionName = @"operator[]", TypeName = @id} : (!sycl_id_1_, i32) -> memref<1xi64, 4>
191191
// CHECK-NEXT: affine.store %[[VAL_5]], %[[VAL_6]]{{\[}}%[[VAL_1]]] : memref<1xi64, 4>
192192
// CHECK-NEXT: return %[[VAL_2]] : !sycl_id_1_
193193
// CHECK-NEXT: }

mlir-sycl/test/Transforms/sycl-method-to-sycl-call.mlir

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func.func @accessor_subscript_operator(%arg0: !sycl_accessor_2_i32_rw_gb, %arg1:
4444
// CHECK-NEXT: }
4545

4646
func.func @range_get(%arg0: !sycl_range_2_, %arg1: i32) -> i64 {
47-
%0 = "sycl.range.get"(%arg0, %arg1) {ArgumentTypes = [memref<?x!sycl_array_2_, 4>, i32], FunctionName = @get, MangledFunctionName = @_ZNK4sycl3_V16detail5arrayILi2EE3getEi, TypeName = @array} : (!sycl_range_2_, i32) -> i64
47+
%0 = sycl.range.get %arg0[%arg1] {ArgumentTypes = [memref<?x!sycl_array_2_, 4>, i32], FunctionName = @get, MangledFunctionName = @_ZNK4sycl3_V16detail5arrayILi2EE3getEi, TypeName = @array} : (!sycl_range_2_, i32) -> i64
4848
return %0 : i64
4949
}
5050

@@ -61,7 +61,7 @@ func.func @range_get(%arg0: !sycl_range_2_, %arg1: i32) -> i64 {
6161
// CHECK-NEXT: }
6262

6363
func.func @range_size(%arg0: !sycl_range_2_) -> i64 {
64-
%0 = "sycl.range.size"(%arg0) {ArgumentTypes = [memref<?x!sycl_range_2_, 4>], FunctionName = @size, MangledFunctionName = @_ZNK4sycl3_V15rangeILi2EE4sizeEv, TypeName = @range} : (!sycl_range_2_) -> i64
64+
%0 = sycl.range.size(%arg0) {ArgumentTypes = [memref<?x!sycl_range_2_, 4>], FunctionName = @size, MangledFunctionName = @_ZNK4sycl3_V15rangeILi2EE4sizeEv, TypeName = @range} : (!sycl_range_2_) -> i64
6565
return %0 : i64
6666
}
6767

@@ -78,6 +78,6 @@ func.func @range_size(%arg0: !sycl_range_2_) -> i64 {
7878
// CHECK-NEXT: }
7979

8080
func.func @sycl_item_get_id(%arg0: !sycl_item_1_) -> !sycl_id_1_ {
81-
%0 = "sycl.item.get_id"(%arg0) {ArgumentTypes = [memref<?x!sycl_item_1_, 4>], FunctionName = @get_id, MangledFunctionName = @_ZNK4sycl3_V14itemILi1ELb1EE6get_idEv, TypeName = @item} : (!sycl_item_1_) -> !sycl_id_1_
81+
%0 = sycl.item.get_id(%arg0) {ArgumentTypes = [memref<?x!sycl_item_1_, 4>], FunctionName = @get_id, MangledFunctionName = @_ZNK4sycl3_V14itemILi1ELb1EE6get_idEv, TypeName = @item} : (!sycl_item_1_) -> !sycl_id_1_
8282
return %0 : !sycl_id_1_
8383
}

0 commit comments

Comments
 (0)