[Mlir-commits] [mlir] [mlir][memref][nfc] push early-exit to earlier (PR #140730)
Igor Zamyatin
llvmlistbot at llvm.org
Fri May 23 08:20:02 PDT 2025
Garra1980 wrote:
What was the rationale behind this change? I see that now for the following snippet
```
func.func @test() attributes {llvm.emit_c_interface} {
%c0 = arith.constant 0 : index
%memref_bf16 = gpu.alloc host_shared () : memref<bf16>
%memref_i8 = gpu.alloc host_shared () : memref<2xi8>
%memref_view_bf16 = memref.view %memref_i8[%c0][] : memref<2xi8> to memref<bf16>
memref.copy %memref_bf16, %memref_view_bf16 : memref<bf16> to memref<bf16>
return
}
```
after --finalize-memref-to-llvm IR looks as
```
%memref_0 = gpu.alloc host_shared () : memref<2xi8>
%1 = llvm.mlir.poison : !llvm.struct<(ptr, ptr, i64)>
%2 = llvm.mlir.constant(1 : index) : i64
%3 = llvm.mlir.zero : !llvm.ptr
%4 = llvm.getelementptr %3[1] : (!llvm.ptr) -> !llvm.ptr, bf16
%5 = llvm.ptrtoint %4 : !llvm.ptr to i64
%6 = llvm.mul %2, %5 : i64
%7 = llvm.extractvalue %0[1] : !llvm.struct<(ptr, ptr, i64)>
%8 = llvm.extractvalue %0[2] : !llvm.struct<(ptr, ptr, i64)>
%9 = llvm.getelementptr %7[%8] : (!llvm.ptr, i64) -> !llvm.ptr, bf16
%10 = llvm.extractvalue %1[1] : !llvm.struct<(ptr, ptr, i64)>
%11 = llvm.extractvalue %1[2] : !llvm.struct<(ptr, ptr, i64)>
%12 = llvm.getelementptr %10[%11] : (!llvm.ptr, i64) -> !llvm.ptr, bf16
"llvm.intr.memcpy"(%12, %9, %6) <{isVolatile = false}> : (!llvm.ptr, !llvm.ptr, i64) -> ()
```
so no flow from %12 to memref_i8 which seems to be wrong
https://github.com/llvm/llvm-project/pull/140730
More information about the Mlir-commits
mailing list