[X86] Fold ZERO_EXTEND_VECTOR_INREG(BUILD_VECTOR(X,Y,?,?)) -> BUILD_VECTOR(X,0,Y,0)
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 6 Feb 2022 12:53:11 +0000 (12:53 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 6 Feb 2022 12:53:11 +0000 (12:53 +0000)
commit74b98ab1dbd55f33a9e8e8215884e8712326ab3b
treec3064221997e57d58c37a8cf2f6cbe574b9953ec
parentbad1b7fbb0fec532f097ac59805562020f895962
[X86] Fold ZERO_EXTEND_VECTOR_INREG(BUILD_VECTOR(X,Y,?,?)) -> BUILD_VECTOR(X,0,Y,0)

Helps avoid some unnecessary shift by splat amount extensions before shuffle combining gets limited by with one use checks
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/vector-shift-ashr-128.ll
llvm/test/CodeGen/X86/vector-shift-ashr-256.ll
llvm/test/CodeGen/X86/vector-shift-ashr-512.ll