Skip to content

Commit

Permalink
[ARM] isTruncateFree fix
Browse files Browse the repository at this point in the history
I implemented isTruncateFree in rL313533, this patch fixes the logic
to match my comment, as the previous logic was too general. Now the
only truncates that are free are i64 -> i32.

Differential Revision: https://reviews.llvm.org/D38234

llvm-svn: 314280
  • Loading branch information
sparker-arm committed Sep 27, 2017
1 parent caf6fd5 commit 211f47a
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions llvm/lib/Target/ARM/ARMISelLowering.cpp
Expand Up @@ -12320,18 +12320,18 @@ EVT ARMTargetLowering::getOptimalMemOpType(uint64_t Size,
bool ARMTargetLowering::isTruncateFree(Type *SrcTy, Type *DstTy) const {
if (!SrcTy->isIntegerTy() || !DstTy->isIntegerTy())
return false;
unsigned NumBits1 = SrcTy->getPrimitiveSizeInBits();
unsigned NumBits2 = DstTy->getPrimitiveSizeInBits();
return NumBits1 > NumBits2;
unsigned SrcBits = SrcTy->getPrimitiveSizeInBits();
unsigned DestBits = DstTy->getPrimitiveSizeInBits();
return (SrcBits == 64 && DestBits == 32);
}

bool ARMTargetLowering::isTruncateFree(EVT SrcVT, EVT DstVT) const {
if (SrcVT.isVector() || DstVT.isVector() || !SrcVT.isInteger() ||
!DstVT.isInteger())
return false;
unsigned NumBits1 = SrcVT.getSizeInBits();
unsigned NumBits2 = DstVT.getSizeInBits();
return NumBits1 > NumBits2;
unsigned SrcBits = SrcVT.getSizeInBits();
unsigned DestBits = DstVT.getSizeInBits();
return (SrcBits == 64 && DestBits == 32);
}

bool ARMTargetLowering::isZExtFree(SDValue Val, EVT VT2) const {
Expand Down

0 comments on commit 211f47a

Please sign in to comment.