[Mlir-commits] [mlir] [mlir][Vector] Remove Vector{Load|Store}ToMemrefLoadLowering (PR #121454)

Andrzej WarzyƄski llvmlistbot at llvm.org
Fri Jan 3 00:51:12 PST 2025


================
@@ -3282,13 +3282,17 @@ func.func @load_0d(%memref : memref<200x100xf32>, %i : index, %j : index) -> vec
 }
 
 // CHECK-LABEL: func @load_0d
-// CHECK: %[[LOAD:.*]] = memref.load %{{.*}}[%{{.*}}, %{{.*}}]
-// CHECK: %[[VEC:.*]] = llvm.mlir.undef : vector<1xf32>
-// CHECK: %[[C0:.*]] = llvm.mlir.constant(0 : i32) : i32
-// CHECK: %[[INSERTED:.*]] = llvm.insertelement %[[LOAD]], %[[VEC]][%[[C0]] : i32] : vector<1xf32>
-// CHECK: %[[CAST:.*]] = builtin.unrealized_conversion_cast %[[INSERTED]] : vector<1xf32> to vector<f32>
-// CHECK: return %[[CAST]] : vector<f32>
-
+// CHECK: %[[R:.*]] = builtin.unrealized_conversion_cast %{{.*}} : index to i64
+// CHECK: %[[C:.*]] = builtin.unrealized_conversion_cast %{{.*}} : index to i64
+// CHECK: %[[T2:.*]] = builtin.unrealized_conversion_cast %{{.*}} : memref<200x100xf32> to !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
+// CHECK: %[[REF:.*]] = llvm.extractvalue %[[T2]][1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
+// CHECK: %[[C100:.*]] = llvm.mlir.constant(100 : index) : i64
+// CHECK: %[[MUL:.*]] = llvm.mul %[[C]], %[[C100]] : i64
+// CHECK: %[[ADD:.*]] = llvm.add %[[MUL]], %[[R]] : i64
+// CHECK: %[[ADDR:.*]] = llvm.getelementptr %[[REF]][%[[ADD]]] : (!llvm.ptr, i64) -> !llvm.ptr, f32
+// CHECK: %[[T8:.*]] = llvm.load %[[ADDR]] {alignment = 4 : i64} : !llvm.ptr -> vector<1xf32>
+// CHECK: %[[RES:.*]] = builtin.unrealized_conversion_cast %[[T8]] : vector<1xf32> to vector<f32>
+// CHECK: return %[[RES]] : vector<f32>
----------------
banach-space wrote:

What are `R`, `C`, `T2` and `T8`? Shouldn't that be `I`, `J`, CAST_MEMREF`, `LOAD`? Similar comment for `@store_0d`.

https://github.com/llvm/llvm-project/pull/121454


More information about the Mlir-commits mailing list