[x86] Fix a bug in the VZEXT DAG combine that I just made more powerful.
authorChandler Carruth <chandlerc@gmail.com>
Sat, 4 Oct 2014 02:51:03 +0000 (02:51 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 4 Oct 2014 02:51:03 +0000 (02:51 +0000)
commit1e663cf69c9d9c91e1c48ca7541be29b6a4a5475
tree271fce50d94504dd0c1a32925a6f3ca8a8bd1ec5
parentcd2c1d8db157e9b4706f5a79439036a302de963f
[x86] Fix a bug in the VZEXT DAG combine that I just made more powerful.

It turns out this combine was always somewhat flawed -- there are cases
where nested VZEXT nodes *can't* be combined: if their types have
a mismatch that can be observed in the result. While none of these show
up in currently, once I switch to the new vector shuffle lowering a few
test cases actually form such nested VZEXT nodes. I've not come up with
any IR pattern that I can sensible write to exercise this, but it will
be covered by tests once I flip the switch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219044 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp