]> granicus.if.org Git - llvm/commit
[X86][AVX2] bugzilla bug 21281 Performance regression in vector interleave in AVX2
authorGadi Haber <gadi.haber@intel.com>
Mon, 27 Mar 2017 12:13:37 +0000 (12:13 +0000)
committerGadi Haber <gadi.haber@intel.com>
Mon, 27 Mar 2017 12:13:37 +0000 (12:13 +0000)
commitcd2a3f9e73d722f979390cbaf6c6c116caca82da
treed802e421c016b80c6064384f3e8e8b7a2093639e
parentf6c7abbfd1c2f5f4f109be86882be1dea5c40577
[X86][AVX2] bugzilla bug 21281 Performance regression in vector interleave in AVX2
This is a patch for an on-going bugzilla bug 21281 on the generated X86 code for a matrix transpose8x8 subroutine which requires vector interleaving. The generated code in AVX2 is currently non-optimal and requires 60 instructions as opposed to only 40 instructions generated for AVX1.
 The patch includes a fix for the AVX2 case where vector unpack instructions use less operations than the vector blend operations available in AVX2.
 In this case using vector unpack instructions is more efficient.

Reviewers:
zvi
delena
igorb
craig.topper
guyblank
eladcohen
m_zuckerman
aymanmus
RKSimon

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298840 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/vector-interleave.ll
test/CodeGen/X86/vector-shuffle-256-v8.ll