CodeGenPrep: sink extends of illegal types into use block.
authorManuel Jacob <me@manueljacob.de>
Thu, 13 Mar 2014 13:36:25 +0000 (13:36 +0000)
committerManuel Jacob <me@manueljacob.de>
Thu, 13 Mar 2014 13:36:25 +0000 (13:36 +0000)
commitf8909fa1406eba023f9fadfa7e8182630d3ea14a
treed0173cc60cd02a90cc90410bc3fbe0195f15d9f5
parent2da418712cd0b93517221e26c3a1487b16bff0e2
CodeGenPrep: sink extends of illegal types into use block.

Summary:
This helps the instruction selector to lower an i64 * i64 -> i128
multiplication into a single instruction on targets which support it.

This is an update of D2973 which was reverted because of a bug reported
as PR19084.

Reviewers: t.p.northover, chapuni

Reviewed By: t.p.northover

CC: llvm-commits, alex, chapuni
Differential Revision: http://llvm-reviews.chandlerc.com/D3021

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203797 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CodeGenPrepare.cpp
lib/Target/X86/README.txt
test/CodeGen/X86/mul128_sext_loop.ll [new file with mode: 0644]
test/Transforms/CodeGenPrepare/X86/extend-sink-hoist.ll [new file with mode: 0644]