[Mlir-commits] [mlir] [mlir][memref][nfc] push early-exit to earlier (PR #140730)

Igor Zamyatin llvmlistbot at llvm.org
Sat May 24 13:57:37 PDT 2025


Garra1980 wrote:

> It's not quite clear to me what is wrong 😅 Could you compare _before_ and _after_ IR? If _after_ is indeed incorrect, we should include your example as a test and revert this change.

Ah, my bad! You're right, before it was like this:

```
    %memref_0 = gpu.alloc  host_shared () : memref<2xi8>
    %2 = builtin.unrealized_conversion_cast %memref_0 : memref<2xi8> to !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>
    %3 = llvm.mlir.poison : !llvm.struct<(ptr, ptr, i64)>
    %4 = llvm.extractvalue %2[0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
    %5 = llvm.insertvalue %4, %3[0] : !llvm.struct<(ptr, ptr, i64)> 
    %6 = llvm.extractvalue %2[1] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
    %7 = llvm.getelementptr %6[%0] : (!llvm.ptr, i64) -> !llvm.ptr, i8
    %8 = llvm.insertvalue %7, %5[1] : !llvm.struct<(ptr, ptr, i64)> 
    %9 = llvm.mlir.constant(0 : index) : i64
    %10 = llvm.insertvalue %9, %8[2] : !llvm.struct<(ptr, ptr, i64)> 
    %11 = llvm.mlir.constant(1 : index) : i64
    %12 = llvm.mlir.zero : !llvm.ptr
    %13 = llvm.getelementptr %12[1] : (!llvm.ptr) -> !llvm.ptr, bf16
    %14 = llvm.ptrtoint %13 : !llvm.ptr to i64
    %15 = llvm.mul %11, %14 : i64
    %16 = llvm.extractvalue %1[1] : !llvm.struct<(ptr, ptr, i64)> 
    %17 = llvm.extractvalue %1[2] : !llvm.struct<(ptr, ptr, i64)> 
    %18 = llvm.getelementptr %16[%17] : (!llvm.ptr, i64) -> !llvm.ptr, bf16
    %19 = llvm.extractvalue %10[1] : !llvm.struct<(ptr, ptr, i64)> 
    %20 = llvm.extractvalue %10[2] : !llvm.struct<(ptr, ptr, i64)> 
    %21 = llvm.getelementptr %19[%20] : (!llvm.ptr, i64) -> !llvm.ptr, bf16
    "llvm.intr.memcpy"(%21, %18, %15) <{isVolatile = false}> : (!llvm.ptr, !llvm.ptr, i64) -> ()
```



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


More information about the Mlir-commits mailing list