[llvm] [X86] combineKSHIFT - fold kshift(logicop(X,C1),C2) -> logicop(kshift(X,C2),kshift(C1,C2)) (PR #194343)

Phoebe Wang via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 27 07:15:26 PDT 2026


================
@@ -612,11 +612,11 @@ define void @mask_replication_factor3_vf8(ptr %in.maskvec, ptr %in.vec, ptr %out
 ; AVX512BW-NEXT:    vpmovm2w %k0, %zmm0
 ; AVX512BW-NEXT:    vpmovsxbw {{.*#+}} zmm1 = [0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,0,0,0,0,0,0,0,0]
 ; AVX512BW-NEXT:    vpermw %zmm0, %zmm1, %zmm0
-; AVX512BW-NEXT:    vpxor %xmm1, %xmm1, %xmm1
-; AVX512BW-NEXT:    movl $16777215, %eax # imm = 0xFFFFFF
-; AVX512BW-NEXT:    kmovd %eax, %k1
-; AVX512BW-NEXT:    vpcmpgtw %zmm0, %zmm1, %k1 {%k1}
-; AVX512BW-NEXT:    kshiftrd $16, %k1, %k2
+; AVX512BW-NEXT:    vpmovw2m %zmm0, %k1
----------------
phoebewang wrote:

In above undefshuffle, we turn vpmovw2m+kand to vpxor+vpcmpgt. But do the reverse transformation here. Which one is preferred? Or they have equivalent cost?

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


More information about the llvm-commits mailing list