OSDN Git Service

[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)
commitaa06e492259ae1227100f659ce510ea3588d777b
treeb826ca73c643e4d733c1fb47e0e18bfb549c4d9c
parent8f3d1c879fffec9fa8d822030471175d066fbafc
[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).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279646 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/insertps-combine.ll
test/CodeGen/X86/vec_ss_load_fold.ll
test/CodeGen/X86/vector-shuffle-128-v8.ll
test/CodeGen/X86/vector-shuffle-256-v16.ll
test/CodeGen/X86/vector-shuffle-combining.ll
test/CodeGen/X86/vector-shuffle-variable-256.ll