[llvm] [DAG] combineVSelectWithAllOnesOrZeros - missing freeze (PR #150388)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 28 05:45:30 PDT 2025
================
@@ -126,22 +126,30 @@ define <2 x i64> @var_shuffle_zero_v2i64(<2 x i64> %v, <2 x i64> %indices) nounw
; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
; SSE41-NEXT: por %xmm3, %xmm2
; SSE41-NEXT: por %xmm2, %xmm1
-; SSE41-NEXT: pxor %xmm3, %xmm3
-; SSE41-NEXT: pcmpeqq %xmm1, %xmm3
-; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[0,1,0,1]
-; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm0[2,3,2,3]
-; SSE41-NEXT: movdqa %xmm3, %xmm0
-; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm4
-; SSE41-NEXT: pandn %xmm4, %xmm2
+; SSE41-NEXT: movq %xmm1, %rax
+; SSE41-NEXT: andl $1, %eax
+; SSE41-NEXT: pextrq $1, %xmm1, %rcx
+; SSE41-NEXT: andl $1, %ecx
+; SSE41-NEXT: movaps %xmm0, -24(%rsp)
+; SSE41-NEXT: movq -24(%rsp,%rcx,8), %xmm0 # xmm0 = mem[0],zero
+; SSE41-NEXT: movq -24(%rsp,%rax,8), %xmm1 # xmm1 = mem[0],zero
+; SSE41-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
+; SSE41-NEXT: pandn %xmm1, %xmm2
----------------
RKSimon wrote:
This is likely that the freeze is affecting the LowerBUILD_VECTORAsVariablePermute pattern matching
https://github.com/llvm/llvm-project/pull/150388
More information about the llvm-commits
mailing list