[llvm] [SelectionDAG] Fold low-prefix masked memops (PR #205118)

via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 22 11:45:58 PDT 2026


Andarwinux wrote:

It should be more aggressive to also fold this:
```llvm
define void @load_store_v32i8(ptr %0, ptr %1) {
  %3 =  tail call <32 x i8> @llvm.masked.load.v32i8.p0(ptr %0, <32 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false>, <32 x i8> poison)
  tail call void @llvm.masked.store.v32i8.p0(<32 x i8> %3 , ptr %1, <32 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false>)
  ret void
}

define void @load_store_v33i8(ptr %0, ptr %1) {
  %3 =  tail call <33 x i8> @llvm.masked.load.v33i8.p0(ptr %0, <33 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false, i1 false>, <33 x i8> poison)
  tail call void @llvm.masked.store.v33i8.p0(<33 x i8> %3 , ptr %1, <33 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false, i1 false>)
  ret void
}
```
```asm
load_store_v32i8:                       # @load_store_v32i8
        mov     eax, 2147483647
        kmovd   k1, eax
        vmovdqu8        ymm0 {k1} {z}, ymmword ptr [rdi]
        vmovdqu8        ymmword ptr [rsi] {k1}, ymm0
        vzeroupper
        ret
load_store_v33i8:                       # @load_store_v33i8
        mov     eax, 2147483647
        kmovq   k1, rax
        vmovdqu8        zmm0 {k1} {z}, zmmword ptr [rdi]
        vmovdqu8        zmmword ptr [rsi] {k1}, zmm0
        vzeroupper
        ret
```

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


More information about the llvm-commits mailing list