[PATCH] D92645: [X86] Add X86ISD::SUBV_BROADCAST_LOAD and begin removing X86ISD::SUBV_BROADCAST (PR38969)

Bing Yu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 14 02:31:51 PST 2020


yubing added inline comments.


================
Comment at: llvm/test/CodeGen/X86/vector-trunc.ll:119
 ; AVX2-FAST:       # %bb.0: # %entry
-; AVX2-FAST-NEXT:    vmovaps {{.*#+}} xmm2 = [1,3,5,7]
+; AVX2-FAST-NEXT:    vbroadcastf128 {{.*#+}} ymm2 = [1,3,5,7,1,3,5,7]
+; AVX2-FAST-NEXT:    # ymm2 = mem[0,1,0,1]
----------------
RKSimon wrote:
> pengfei wrote:
> > Seems vmovaps better here.
> Yes - I should have explained - LowerBUILD_VECTOR doesn't recognise undef upper elements until AFTER its tried lowerBuildVectorAsBroadcast, and because we have multiple uses SimplifyDemandedVectorElts won't touch it. 
> 
> I'll adjust LowerBUILD_VECTOR separately and update this patch.
Eh, Simon. Why we lower constant BuildVector into Broadcast only when it has more than one use? I saw that lowerBuildVectorAsBroadcast(...) calls isFoldableUseOfShuffle(...) which returns true if it has one use.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D92645



More information about the llvm-commits mailing list