Skip to content

Commit 0337e22

Browse files
committed
[mlir] Add aligned nontemporal load test to MemRefToSPIRV.
1 parent 04a811b commit 0337e22

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

mlir/test/Conversion/MemRefToSPIRV/memref-to-spirv.mlir

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,21 @@ func.func @load_aligned(%src: memref<4xi1, #spirv.storage_class<StorageBuffer>>,
100100
return %0: i1
101101
}
102102

103+
// CHECK-LABEL: func @load_aligned_nontemporal
104+
// CHECK-SAME: (%[[SRC:.+]]: memref<4xi1, #spirv.storage_class<StorageBuffer>>, %[[IDX:.+]]: index)
105+
func.func @load_aligned_nontemporal(%src: memref<4xi1, #spirv.storage_class<StorageBuffer>>, %i : index) -> i1 {
106+
// CHECK-DAG: %[[SRC_CAST:.+]] = builtin.unrealized_conversion_cast %[[SRC]] : memref<4xi1, #spirv.storage_class<StorageBuffer>> to !spirv.ptr<!spirv.struct<(!spirv.array<4 x i8, stride=1> [0])>, StorageBuffer>
107+
// CHECK-DAG: %[[IDX_CAST:.+]] = builtin.unrealized_conversion_cast %[[IDX]]
108+
// CHECK: %[[ZERO:.*]] = spirv.Constant 0 : i32
109+
// CHECK: %[[ADDR:.+]] = spirv.AccessChain %[[SRC_CAST]][%[[ZERO]], %[[IDX_CAST]]]
110+
// CHECK: %[[VAL:.+]] = spirv.Load "StorageBuffer" %[[ADDR]] ["Aligned|Nontemporal", 32] : i8
111+
// CHECK: %[[ZERO_I8:.+]] = spirv.Constant 0 : i8
112+
// CHECK: %[[BOOL:.+]] = spirv.INotEqual %[[VAL]], %[[ZERO_I8]] : i8
113+
%0 = memref.load %src[%i] { alignment = 32, nontemporal = true } : memref<4xi1, #spirv.storage_class<StorageBuffer>>
114+
// CHECK: return %[[BOOL]]
115+
return %0: i1
116+
}
117+
103118
// CHECK-LABEL: func @load_aligned_psb
104119
// CHECK-SAME: (%[[SRC:.+]]: memref<4xi1, #spirv.storage_class<PhysicalStorageBuffer>>, %[[IDX:.+]]: index)
105120
func.func @load_aligned_psb(%src: memref<4xi1, #spirv.storage_class<PhysicalStorageBuffer>>, %i : index) -> i1 {

0 commit comments

Comments
 (0)