1
- // RUN: sycl-mlir-opt -split-input-file -inliner="mode=alwaysinline remove-dead-callees=false" -verify-diagnostics -mlir-pass-statistics %s 2>&1 | FileCheck --check-prefixes=ALWAYS-INLINE,CHECK-ALL %s
2
- // RUN: sycl-mlir-opt -split-input-file -inliner="mode=simple remove-dead-callees=true" -verify-diagnostics -mlir-pass-statistics %s 2>&1 | FileCheck --check-prefixes=INLINE,CHECK-ALL %s
3
- // RUN: sycl-mlir-opt -split-input-file -inliner="mode=aggressive remove-dead-callees=true" -verify-diagnostics -mlir-pass-statistics %s 2>&1 | FileCheck --check-prefixes=AGGRESSIVE,CHECK-ALL %s
1
+ // RUN: sycl-mlir-opt -split-input-file -inliner="mode=alwaysinline remove-dead-callees=false inline-sycl-method-ops=false" -verify-diagnostics -mlir-pass-statistics %s 2>&1 | FileCheck --check-prefixes=ALWAYS-INLINE,CHECK-ALL %s
2
+ // RUN: sycl-mlir-opt -split-input-file -inliner="mode=simple remove-dead-callees=true inline-sycl-method-ops=false" -verify-diagnostics -mlir-pass-statistics %s 2>&1 | FileCheck --check-prefixes=INLINE,CHECK-ALL %s
3
+ // RUN: sycl-mlir-opt -split-input-file -inliner="mode=aggressive remove-dead-callees=true inline-sycl-method-ops=false" -verify-diagnostics -mlir-pass-statistics %s 2>&1 | FileCheck --check-prefixes=AGGRESSIVE,CHECK-ALL %s
4
+ // RUN: sycl-mlir-opt -split-input-file -inliner="mode=aggressive remove-dead-callees=true inline-sycl-method-ops=true" -verify-diagnostics -mlir-pass-statistics %s 2>&1 | FileCheck --check-prefixes=AGGRESSIVE-METHODOPS,CHECK-ALL %s
4
5
5
6
// COM: Ensure a func.func can be inlined in a func.func caller iff the callee is 'alwaysinline'.
6
7
// COM: Ensure a gpu.func cannot be inlined in a func.func caller (even if it has the 'alwaysinline' attribute).
@@ -171,6 +172,13 @@ gpu.func @gpu_func_callee() -> i32 attributes {passthrough = ["alwaysinline"]} {
171
172
172
173
// -----
173
174
175
+ // AGGRESSIVE-METHODOPS-NOT: func.func private @inline_hint_callee
176
+ // AGGRESSIVE-METHODOPS-NOT: func.func private @private_callee
177
+ // AGGRESSIVE-METHODOPS-NOT: func.func private @get
178
+
179
+ // AGGRESSIVE-NOT: func.func private @inline_hint_callee
180
+ // AGGRESSIVE-NOT: func.func private @private_callee
181
+
174
182
// COM: Ensure functions in a SCC are fully inlined (requires multiple inlining iterations).
175
183
// CHECK-ALL-LABEL: func.func @main(
176
184
// CHECK-ALL-SAME: %[[VAL_0:.*]]: memref<?x!sycl_id_1_>) -> (i32, i64) {
@@ -196,20 +204,27 @@ gpu.func @gpu_func_callee() -> i32 attributes {passthrough = ["alwaysinline"]} {
196
204
// INLINE-NOT: func.func private @inline_hint_callee
197
205
// INLINE-NOT: func.func private @private_callee
198
206
199
- // AGGRESSIVE-NOT: func.func private @inline_hint_callee
200
- // AGGRESSIVE-NOT: func.func private @private_callee
201
- // AGGRESSIVE-NOT: func.func private @get
202
-
203
- // AGGRESSIVE-DAG: %[[VAL_1:.*]] = arith.constant 1 : i32
204
- // AGGRESSIVE-DAG: %[[VAL_2:.*]] = arith.constant 1 : i32
205
- // AGGRESSIVE-DAG: %[[VAL_3:.*]] = arith.constant 2 : i32
207
+ // AGGRESSIVE-METHODOPS-DAG: %[[VAL_1:.*]] = arith.constant 1 : i32
208
+ // AGGRESSIVE-METHODOPS-DAG: %[[VAL_2:.*]] = arith.constant 1 : i32
209
+ // AGGRESSIVE-METHODOPS-DAG: %[[VAL_3:.*]] = arith.constant 2 : i32
210
+ // AGGRESSIVE-METHODOPS: %[[VAL_4:.*]] = sycl.call @main_() {MangledFunctionName = @main, TypeName = @A} : () -> i32
211
+ // AGGRESSIVE-METHODOPS: %[[VAL_5:.*]] = arith.addi %[[VAL_3]], %[[VAL_4]] : i32
212
+ // AGGRESSIVE-METHODOPS: %[[VAL_6:.*]] = arith.addi %[[VAL_2]], %[[VAL_5]] : i32
213
+ // AGGRESSIVE-METHODOPS: call @foo(%[[VAL_0]], %[[VAL_1]]) : (memref<?x!sycl_id_1_>, i32) -> ()
214
+ // AGGRESSIVE-METHODOPS: %[[VAL_7:.*]] = memref.memory_space_cast %[[VAL_0]] : memref<?x!sycl_id_1_> to memref<?x!sycl_id_1_, 4>
215
+ // AGGRESSIVE-METHODOPS: %[[VAL_8:.*]] = arith.constant 2 : i64
216
+ // AGGRESSIVE-METHODOPS: return %[[VAL_6]], %[[VAL_8]] : i32, i64
217
+ // AGGRESSIVE-METHODOPS: }
218
+
219
+ // AGGRESSIVE: %[[VAL_1:.*]] = arith.constant 1 : i32
220
+ // AGGRESSIVE: %[[VAL_2:.*]] = arith.constant 1 : i32
221
+ // AGGRESSIVE: %[[VAL_3:.*]] = arith.constant 2 : i32
206
222
// AGGRESSIVE: %[[VAL_4:.*]] = sycl.call @main_() {MangledFunctionName = @main, TypeName = @A} : () -> i32
207
223
// AGGRESSIVE: %[[VAL_5:.*]] = arith.addi %[[VAL_3]], %[[VAL_4]] : i32
208
224
// AGGRESSIVE: %[[VAL_6:.*]] = arith.addi %[[VAL_2]], %[[VAL_5]] : i32
209
225
// AGGRESSIVE: call @foo(%[[VAL_0]], %[[VAL_1]]) : (memref<?x!sycl_id_1_>, i32) -> ()
210
- // AGGRESSIVE: %[[VAL_7:.*]] = memref.memory_space_cast %[[VAL_0]] : memref<?x!sycl_id_1_> to memref<?x!sycl_id_1_, 4>
211
- // AGGRESSIVE: %[[VAL_8:.*]] = arith.constant 2 : i64
212
- // AGGRESSIVE: return %[[VAL_6]], %[[VAL_8]] : i32, i64
226
+ // AGGRESSIVE: %[[VAL_7:.*]] = sycl.id.get %[[VAL_0]]{{\[}}%[[VAL_1]]] {ArgumentTypes = [memref<?x!sycl_id_1_, 4>, i32], FunctionName = @get, MangledFunctionName = @get, TypeName = @id} : (memref<?x!sycl_id_1_>, i32) -> i64
227
+ // AGGRESSIVE: return %[[VAL_6]], %[[VAL_7]] : i32, i64
213
228
// AGGRESSIVE: }
214
229
215
230
!sycl_array_1_ = !sycl.array <[1 ], (memref <1 xi64 , 4 >)>
0 commit comments