|
1 | 1 | // RUN: mlir-translate --split-input-file -mlir-to-llvmir %s | FileCheck %s |
2 | 2 |
|
3 | 3 | module { |
4 | | - llvm.func spir_funccc @_Z41intel_sub_group_2d_block_read_16b_8r16x1cPU3AS1viiiDv2_iPt(!llvm.ptr<1> {llvm.nonnull, llvm.readonly}, i32, i32, i32, vector<2xi32>, !llvm.ptr {llvm.nonnull, llvm.writeonly}) attributes {no_unwind, will_return} |
5 | | - llvm.func @blockload2d_cache_control(%arg0: !llvm.ptr<1>, %arg1: i32, %arg2: i32, %arg3: i32, %arg4: i32, %arg5: i32) -> vector<8xi16> { |
6 | | - %0 = llvm.mlir.undef : vector<2xi32> |
7 | | - %1 = llvm.mlir.constant(0 : i32) : i32 |
8 | | - %2 = llvm.mlir.constant(1 : i32) : i32 |
9 | | - %3 = llvm.insertelement %arg4, %0[%1 : i32] : vector<2xi32> |
10 | | - %4 = llvm.insertelement %arg5, %3[%2 : i32] : vector<2xi32> |
11 | | - %5 = llvm.mlir.constant(8 : i32) : i32 |
12 | | - %6 = llvm.alloca %5 x i16 : (i32) -> !llvm.ptr |
13 | | - // CHECK-LABEL: call spir_func void @_Z41intel_sub_group_2d_block_read_16b_8r16x1cPU3AS1viiiDv2_iPt |
14 | | - // CHECK-SAME: !spirv.DecorationCacheControlINTEL ![[DECO1:.*]] |
15 | | - llvm.call spir_funccc @_Z41intel_sub_group_2d_block_read_16b_8r16x1cPU3AS1viiiDv2_iPt(%arg0, %arg1, %arg2, %arg3, %4, %6) |
16 | | - {function_type = !llvm.func<void (ptr<1>, i32, i32, i32, vector<2xi32>, ptr)>, linkage = #llvm.linkage<external>, no_unwind, |
17 | | - sym_name = "_Z41intel_sub_group_2d_block_read_16b_8r16x1cPU3AS1viiiDv2_iPt", visibility_ = 0 : i64, will_return, |
18 | | - xevm.DecorationCacheControl = [[6442 : i32, 0 : i32, 1 : i32, 0 : i32], [6442 : i32, 1 : i32, 1 : i32, 0 : i32]]} |
19 | | - : (!llvm.ptr<1> {llvm.nonnull, llvm.readonly}, i32, i32, i32, vector<2xi32>, !llvm.ptr {llvm.nonnull, llvm.writeonly}) -> () |
20 | | - %7 = llvm.load %6 : !llvm.ptr -> vector<8xi16> |
21 | | - llvm.return %7 : vector<8xi16> |
22 | | - } |
23 | | -} |
24 | | - |
25 | | -// CHECK: ![[DECO1]] = !{![[DECO2:.*]], ![[DECO3:.*]]} |
26 | | -// CHECK: ![[DECO2]] = !{i32 6442, i32 0, i32 1, i32 0} |
27 | | -// CHECK: ![[DECO3]] = !{i32 6442, i32 1, i32 1, i32 0} |
28 | | - |
29 | | -// ----- |
30 | | -module { |
31 | | - llvm.func spir_funccc @_Z42intel_sub_group_2d_block_write_32b_8r16x1cPU3AS1viiiDv2_iPj(!llvm.ptr<1> {llvm.nonnull, llvm.writeonly}, i32, i32, i32, vector<2xi32>, !llvm.ptr {llvm.nonnull, llvm.readonly}) attributes {no_unwind, will_return} |
32 | | - llvm.func @blockstore2d_cache_control(%arg0: !llvm.ptr<1>, %arg1: i32, %arg2: i32, %arg3: i32, %arg4: i32, %arg5: i32, %arg6: vector<8xi32>) { |
33 | | - %0 = llvm.mlir.undef : vector<2xi32> |
34 | | - %1 = llvm.mlir.constant(0 : i32) : i32 |
35 | | - %2 = llvm.mlir.constant(1 : i32) : i32 |
36 | | - %3 = llvm.insertelement %arg4, %0[%1 : i32] : vector<2xi32> |
37 | | - %4 = llvm.insertelement %arg5, %3[%2 : i32] : vector<2xi32> |
38 | | - %5 = llvm.mlir.constant(8 : i32) : i32 |
39 | | - %6 = llvm.alloca %5 x i32 : (i32) -> !llvm.ptr |
40 | | - llvm.store %arg6, %6 : vector<8xi32>, !llvm.ptr |
41 | | - // CHECK-LABEL: call spir_func void @_Z42intel_sub_group_2d_block_write_32b_8r16x1cPU3AS1viiiDv2_iPj |
42 | | - // CHECK-SAME: !spirv.DecorationCacheControlINTEL ![[DECO1:.*]] |
43 | | - llvm.call spir_funccc @_Z42intel_sub_group_2d_block_write_32b_8r16x1cPU3AS1viiiDv2_iPj(%arg0, %arg1, %arg2, %arg3, %4, %6) |
44 | | - {function_type = !llvm.func<void (ptr<1>, i32, i32, i32, vector<2xi32>, ptr)>, linkage = #llvm.linkage<external>, no_unwind, |
45 | | - sym_name = "_Z42intel_sub_group_2d_block_write_32b_8r16x1cPU3AS1viiiDv2_iPj", visibility_ = 0 : i64, will_return, |
46 | | - xevm.DecorationCacheControl = [[6443 : i32, 0 : i32, 2 : i32, 0 : i32], [6443 : i32, 1 : i32, 2 : i32, 0 : i32]]} |
47 | | - : (!llvm.ptr<1> {llvm.nonnull, llvm.writeonly}, i32, i32, i32, vector<2xi32>, !llvm.ptr {llvm.nonnull, llvm.readonly}) -> () |
48 | | - llvm.return |
49 | | - } |
50 | | -} |
51 | | - |
52 | | -// CHECK: ![[DECO1]] = !{![[DECO2:.*]], ![[DECO3:.*]]} |
53 | | -// CHECK: ![[DECO2]] = !{i32 6443, i32 0, i32 2, i32 0} |
54 | | -// CHECK: ![[DECO3]] = !{i32 6443, i32 1, i32 2, i32 0} |
55 | | - |
56 | | -// ----- |
57 | | -module { |
58 | | - llvm.func spir_funccc @_Z44intel_sub_group_2d_block_prefetch_8b_8r32x1cPU3AS1viiiDv2_i(!llvm.ptr<1> {llvm.nonnull}, i32, i32, i32, vector<2xi32>) attributes {memory_effects = #llvm.memory_effects<other = none, argMem = read, inaccessibleMem = none>, no_unwind} |
59 | | - llvm.func @blockprefetch2d(%arg0: !llvm.ptr<1>, %arg1: i32, %arg2: i32, %arg3: i32, %arg4: i32, %arg5: i32) { |
60 | | - %0 = llvm.mlir.undef : vector<2xi32> |
61 | | - %1 = llvm.mlir.constant(0 : i32) : i32 |
62 | | - %2 = llvm.mlir.constant(1 : i32) : i32 |
63 | | - %3 = llvm.insertelement %arg4, %0[%1 : i32] : vector<2xi32> |
64 | | - %4 = llvm.insertelement %arg5, %3[%2 : i32] : vector<2xi32> |
65 | | - // CHECK-LABEL: call spir_func void @_Z44intel_sub_group_2d_block_prefetch_8b_8r32x1cPU3AS1viiiDv2_i |
66 | | - // CHECK-SAME: !spirv.DecorationCacheControlINTEL ![[DECO1:.*]] |
67 | | - llvm.call spir_funccc @_Z44intel_sub_group_2d_block_prefetch_8b_8r32x1cPU3AS1viiiDv2_i(%arg0, %arg1, %arg2, %arg3, %4) |
68 | | - {function_type = !llvm.func<void (ptr<1>, i32, i32, i32, vector<2xi32>)>, linkage = #llvm.linkage<external>, |
69 | | - memory_effects = #llvm.memory_effects<other = none, argMem = read, inaccessibleMem = none>, no_unwind, |
70 | | - sym_name = "_Z44intel_sub_group_2d_block_prefetch_8b_8r32x1cPU3AS1viiiDv2_i", visibility_ = 0 : i64, |
71 | | - xevm.DecorationCacheControl = [[6442 : i32, 0 : i32, 1 : i32, 0 : i32], [6442 : i32, 1 : i32, 1 : i32, 0 : i32]]} |
72 | | - : (!llvm.ptr<1> {llvm.nonnull}, i32, i32, i32, vector<2xi32>) -> () |
73 | | - llvm.return |
74 | | - } |
75 | | -} |
76 | | - |
77 | | -// CHECK: ![[DECO1]] = !{![[DECO2:.*]], ![[DECO3:.*]]} |
78 | | -// CHECK: ![[DECO2]] = !{i32 6442, i32 0, i32 1, i32 0} |
79 | | -// CHECK: ![[DECO3]] = !{i32 6442, i32 1, i32 1, i32 0} |
80 | | - |
81 | | -// ----- |
82 | | -module { |
83 | | - llvm.func spir_funccc @_Z8prefetchPU3AS1Kcm(!llvm.ptr<1>, i64) attributes {memory_effects = #llvm.memory_effects<other = none, argMem = read, inaccessibleMem = none>, no_unwind} |
| 4 | + llvm.func spir_funccc @_Z8prefetchPU3AS1Kcm(!llvm.ptr<1>, i64) |
84 | 5 | llvm.func @prefetch(%arg0: !llvm.ptr<1>) { |
85 | 6 | %0 = llvm.mlir.constant(1 : i64) : i64 |
86 | 7 | // CHECK-LABEL: call spir_func void @_Z8prefetchPU3AS1Kcm |
87 | 8 | // CHECK-SAME: !spirv.DecorationCacheControlINTEL ![[DECO1:.*]] |
88 | 9 | llvm.call spir_funccc @_Z8prefetchPU3AS1Kcm(%arg0, %0) |
89 | 10 | {function_type = !llvm.func<void (ptr<1>, i64)>, linkage = #llvm.linkage<external>, |
90 | | - memory_effects = #llvm.memory_effects<other = none, argMem = read, inaccessibleMem = none>, |
91 | 11 | no_unwind, sym_name = "_Z8prefetchPU3AS1Kcm", visibility_ = 0 : i64, |
92 | 12 | xevm.DecorationCacheControl = [[6442 : i32, 0 : i32, 1 : i32, 0 : i32], [6442 : i32, 1 : i32, 1 : i32, 0 : i32]]} |
93 | 13 | : (!llvm.ptr<1>, i64) -> () |
|
0 commit comments