[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