@@ -2023,6 +2023,20 @@ func.func @vector_load_op(%memref : memref<200x100xf32>, %i : index, %j : index)
2023
2023
2024
2024
// -----
2025
2025
2026
+ func.func @vector_load_op_nontemporal (%memref : memref <200 x100 xf32 >, %i : index , %j : index ) -> vector <8 xf32 > {
2027
+ %0 = vector.load %memref [%i , %j ] {nontemporal = true } : memref <200 x100 xf32 >, vector <8 xf32 >
2028
+ return %0 : vector <8 xf32 >
2029
+ }
2030
+
2031
+ // CHECK-LABEL: func @vector_load_op_nontemporal
2032
+ // CHECK: %[[c100:.*]] = llvm.mlir.constant(100 : index) : i64
2033
+ // CHECK: %[[mul:.*]] = llvm.mul %{{.*}}, %[[c100]] : i64
2034
+ // CHECK: %[[add:.*]] = llvm.add %[[mul]], %{{.*}} : i64
2035
+ // CHECK: %[[gep:.*]] = llvm.getelementptr %{{.*}}[%[[add]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
2036
+ // CHECK: llvm.load %[[gep]] {alignment = 4 : i64, nontemporal} : !llvm.ptr -> vector<8xf32>
2037
+
2038
+ // -----
2039
+
2026
2040
func.func @vector_load_op_index (%memref : memref <200 x100 xindex >, %i : index , %j : index ) -> vector <8 xindex > {
2027
2041
%0 = vector.load %memref [%i , %j ] : memref <200 x100 xindex >, vector <8 xindex >
2028
2042
return %0 : vector <8 xindex >
@@ -2049,6 +2063,21 @@ func.func @vector_store_op(%memref : memref<200x100xf32>, %i : index, %j : index
2049
2063
2050
2064
// -----
2051
2065
2066
+ func.func @vector_store_op_nontemporal (%memref : memref <200 x100 xf32 >, %i : index , %j : index ) {
2067
+ %val = arith.constant dense <11.0 > : vector <4 xf32 >
2068
+ vector.store %val , %memref [%i , %j ] {nontemporal = true } : memref <200 x100 xf32 >, vector <4 xf32 >
2069
+ return
2070
+ }
2071
+
2072
+ // CHECK-LABEL: func @vector_store_op_nontemporal
2073
+ // CHECK: %[[c100:.*]] = llvm.mlir.constant(100 : index) : i64
2074
+ // CHECK: %[[mul:.*]] = llvm.mul %{{.*}}, %[[c100]] : i64
2075
+ // CHECK: %[[add:.*]] = llvm.add %[[mul]], %{{.*}} : i64
2076
+ // CHECK: %[[gep:.*]] = llvm.getelementptr %{{.*}}[%[[add]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
2077
+ // CHECK: llvm.store %{{.*}}, %[[gep]] {alignment = 4 : i64, nontemporal} : vector<4xf32>, !llvm.ptr
2078
+
2079
+ // -----
2080
+
2052
2081
func.func @vector_store_op_index (%memref : memref <200 x100 xindex >, %i : index , %j : index ) {
2053
2082
%val = arith.constant dense <11 > : vector <4 xindex >
2054
2083
vector.store %val , %memref [%i , %j ] : memref <200 x100 xindex >, vector <4 xindex >
0 commit comments