[llvm] [X86] Compress masked VPBLENDM using VBLENDV (PR #221838)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 8 03:18:00 PDT 2026


================
@@ -65,3 +65,33 @@ body:             |
     $xmm1 = VMOVAPSZ128rrk killed $xmm1, killed $k1, killed $xmm2
     RET64 implicit killed $xmm1
 ...
+
+---
+name:            masked_blend_live_mask_vec
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $xmm0, $xmm1, $xmm2
+    ; $xmm0 is used after the fold, so it must not be killed.
+    ; CHECK-LABEL: name: masked_blend_live_mask_vec
+    ; CHECK:     $xmm1 = VBLENDVPSrrr killed $xmm2, killed $xmm1, $xmm0
+    ; CHECK-NOT: killed $xmm0
+    $k1 = VPMOVD2MZ128kr $xmm0
+    $xmm1 = VPBLENDMDZ128rrk killed $k1, killed $xmm2, killed $xmm1
+    $xmm3 = VMOVAPSrr $xmm0
+    RET64 implicit killed $xmm1, implicit killed $xmm3
+...
+
+---
+name:            masked_blend_dead_mask_vec
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $xmm0, $xmm1, $xmm2
+    ; $xmm0 is dead after the fold, so the kill is preserved.
+    ; CHECK-LABEL: name: masked_blend_dead_mask_vec
+    ; CHECK: $xmm1 = VBLENDVPSrrr killed $xmm2, killed $xmm1, killed $xmm0
+    $k1 = VPMOVD2MZ128kr killed $xmm0
+    $xmm1 = VPBLENDMDZ128rrk killed $k1, killed $xmm2, killed $xmm1
+    RET64 implicit killed $xmm1
+...
----------------
RKSimon wrote:

do we have tests with extra kmask uses?

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


More information about the llvm-commits mailing list