[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