When promoting integer vectors we often create ext-loads. This patch adds a
authorNadav Rotem <nadav.rotem@intel.com>
Sun, 18 Sep 2011 10:39:32 +0000 (10:39 +0000)
committerNadav Rotem <nadav.rotem@intel.com>
Sun, 18 Sep 2011 10:39:32 +0000 (10:39 +0000)
commit91e43fd17a2167ef91150a567a072326ea3a3e29
tree9509fa95708d6c1e877be25f37d0f56294c4824d
parentb6266fb6026bdd900d8f045bf01300ef549e1802
When promoting integer vectors we often create ext-loads. This patch adds a
dag-combine optimization to implement the ext-load efficiently (using shuffles).

For example the type <4 x i8> is stored in memory as i32, but it needs to
find its way into a <4 x i32> register. Previously we scalarized the memory
access, now we use shuffles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139995 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/trunc-ext-ld-st.ll [new file with mode: 0644]