[PATCH] D140811: [DAGCombiner][X86] `visitVECTOR_SHUFFLE()`: splats with a single non-undef element are not splats

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 3 17:29:47 PST 2023


lebedev.ri added a comment.

FYI, these are the regressions i was aware of.



================
Comment at: llvm/test/CodeGen/X86/vector-narrow-binop.ll:112
+; SSE-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
+; SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2
+; SSE-NEXT:    psrlq $16, %xmm2
----------------
This is all-ones mask


================
Comment at: llvm/test/CodeGen/X86/vector-narrow-binop.ll:170
+; AVX1-NEXT:    vpermilpd {{.*#+}} xmm1 = xmm1[1,0]
+; AVX1-NEXT:    vaddpd %xmm0, %xmm1, %xmm0
 ; AVX1-NEXT:    retq
----------------
Failure to pull identical shuffle out of binop


================
Comment at: llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll:1540-1549
+; SSE41-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
+; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[0,0,1,2]
+; SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm2[0,1],xmm0[2,3,4,5,6,7]
 ; SSE41-NEXT:    retq
 ;
 ; AVX1OR2-LABEL: shuffle_v4i32_2456:
 ; AVX1OR2:       # %bb.0:
----------------
Missing lowering strategy?


================
Comment at: llvm/test/CodeGen/X86/vector-shuffle-combining-avx2.ll:843
 ; AVX512-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1
-; AVX512-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[1,1,1,1]
+; AVX512-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0
 ; AVX512-NEXT:    vxorps %xmm2, %xmm2, %xmm2
----------------
We intentionally lower it this way,
but given that we end with an extra shuffle, it may be a regression?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D140811/new/

https://reviews.llvm.org/D140811



More information about the llvm-commits mailing list