| // RUN: mlir-translate --split-input-file -mlir-to-llvmir %s | FileCheck %s |
| |
| module { |
| llvm.func spir_funccc @_Z8prefetchPU3AS1Kcm(!llvm.ptr<1>, i64) |
| llvm.func @prefetch(%arg0: !llvm.ptr<1>) { |
| %0 = llvm.mlir.constant(1 : i64) : i64 |
| // CHECK-LABEL: call spir_func void @_Z8prefetchPU3AS1Kcm |
| // CHECK-SAME: !spirv.DecorationCacheControlINTEL ![[DECO1:.*]] |
| llvm.call spir_funccc @_Z8prefetchPU3AS1Kcm(%arg0, %0) |
| {function_type = !llvm.func<void (ptr<1>, i64)>, linkage = #llvm.linkage<external>, |
| no_unwind, sym_name = "_Z8prefetchPU3AS1Kcm", visibility_ = 0 : i64, |
| xevm.DecorationCacheControl = [[6442 : i32, 0 : i32, 1 : i32, 0 : i32], [6442 : i32, 1 : i32, 1 : i32, 0 : i32]]} |
| : (!llvm.ptr<1>, i64) -> () |
| llvm.return |
| } |
| } |
| |
| // CHECK: ![[DECO1]] = !{![[DECO2:.*]], ![[DECO3:.*]]} |
| // CHECK: ![[DECO2]] = !{i32 6442, i32 0, i32 1, i32 0} |
| // CHECK: ![[DECO3]] = !{i32 6442, i32 1, i32 1, i32 0} |
| |
| // ----- |
| module { |
| // CHECK-LABEL: define i32 @load(ptr addrspace(1) |
| // CHECK-SAME: %[[ARG0:.*]]) { |
| llvm.func @load(%arg0: !llvm.ptr<1>) -> i32 { |
| // CHECK: load i32, ptr addrspace(1) %[[ARG0]], align 4, |
| // CHECK-SAME: !spirv.DecorationCacheControlINTEL ![[DECO1:.*]] |
| %0 = llvm.load %arg0 {xevm.DecorationCacheControl = [[6442 : i32, 0 : i32, 1 : i32, 0 : i32], [6442 : i32, 1 : i32, 1 : i32, 0 : i32]]} : !llvm.ptr<1> -> i32 |
| llvm.return %0 : i32 |
| } |
| } |
| |
| // CHECK: ![[DECO1]] = !{![[DECO2:.*]], ![[DECO3:.*]]} |
| // CHECK: ![[DECO2]] = !{i32 6442, i32 0, i32 1, i32 0} |
| // CHECK: ![[DECO3]] = !{i32 6442, i32 1, i32 1, i32 0} |
| |
| // ----- |
| module { |
| // CHECK-LABEL: define void @store(ptr addrspace(1) |
| // CHECK-SAME: %[[ARG0:.*]], i32 %[[ARG1:.*]]) { |
| llvm.func @store(%arg0: !llvm.ptr<1>, %arg1: i32) { |
| // CHECK: store i32 %[[ARG1]], ptr addrspace(1) %[[ARG0]], align 4, |
| // CHECK-SAME: !spirv.DecorationCacheControlINTEL ![[DECO1:.*]] |
| llvm.store %arg1, %arg0 {xevm.DecorationCacheControl = [[6443 : i32, 0 : i32, 2 : i32, 0 : i32], [6443 : i32, 1 : i32, 2 : i32, 0 : i32]]} : i32, !llvm.ptr<1> |
| llvm.return |
| } |
| } |
| |
| // CHECK: ![[DECO1]] = !{![[DECO2:.*]], ![[DECO3:.*]]} |
| // CHECK: ![[DECO2]] = !{i32 6443, i32 0, i32 2, i32 0} |
| // CHECK: ![[DECO3]] = !{i32 6443, i32 1, i32 2, i32 0} |
| |