[X86]: Quit promoting 16 bit loads to 32 bit.

Differential Revision: http://reviews.llvm.org/D19592

llvm-svn: 267773
This commit is contained in:
Kevin B. Smith 2016-04-27 19:58:03 +00:00
parent bf01080672
commit c378a99ba5
2 changed files with 2 additions and 18 deletions

View File

@ -29639,23 +29639,6 @@ bool X86TargetLowering::IsDesirableToPromoteOp(SDValue Op, EVT &PVT) const {
bool Commute = false;
switch (Op.getOpcode()) {
default: break;
case ISD::LOAD: {
LoadSDNode *LD = cast<LoadSDNode>(Op);
// If the non-extending load has a single use and it's not live out, then it
// might be folded.
if (LD->getExtensionType() == ISD::NON_EXTLOAD /*&&
Op.hasOneUse()*/) {
for (SDNode::use_iterator UI = Op.getNode()->use_begin(),
UE = Op.getNode()->use_end(); UI != UE; ++UI) {
// The only case where we'd want to promote LOAD (rather then it being
// promoted as an operand is when it's only use is liveout.
if (UI->getOpcode() != ISD::CopyToReg)
return false;
}
}
Promote = true;
break;
}
case ISD::SIGN_EXTEND:
case ISD::ZERO_EXTEND:
case ISD::ANY_EXTEND:

View File

@ -19,7 +19,8 @@ define void @test_load_store(half* %in, half* %out) {
define i16 @test_bitcast_from_half(half* %addr) {
; CHECK-LABEL: test_bitcast_from_half:
; CHECK: movzwl (%rdi), %eax
; BWON: movzwl (%rdi), %eax
; BWOFF: movw (%rdi), %ax
%val = load half, half* %addr
%val_int = bitcast half %val to i16
ret i16 %val_int