[X86][SSE] Add support for combining VZEXT_MOVL target shuffles
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 24 Aug 2016 18:07:53 +0000 (18:07 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 24 Aug 2016 18:07:53 +0000 (18:07 +0000)
commit941bd6bbae6ba1fbf3d46cfb365d1015703ef448
tree8eddc2a47b1117c80aff16e57288bb09d505d194
parent26d9c41ff6b863253e1e9b17bd5acffc30ead692
[X86][SSE] Add support for combining VZEXT_MOVL target shuffles

Includes adding more general support for the pattern: VZEXT_MOVL(VZEXT_LOAD(ptr)) -> VZEXT_LOAD(ptr)

This has unearthed a couple of latent poor codegen issues (MINSS/MAXSS scalar load folding and MOVDDUP/BROADCAST load folding patterns), which will be fixed shortly.

Its also reduced a couple of tests so that they no longer reach the instruction threshold necessary to be combined to PSHUFB (see PR26183).

llvm-svn: 279646
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/insertps-combine.ll
llvm/test/CodeGen/X86/vec_ss_load_fold.ll
llvm/test/CodeGen/X86/vector-shuffle-128-v8.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v16.ll
llvm/test/CodeGen/X86/vector-shuffle-combining.ll
llvm/test/CodeGen/X86/vector-shuffle-variable-256.ll