Changes in directory llvm/lib/Target:
TargetLowering.cpp updated: 1.54 -> 1.55 --- Log message: Implement ComputeMaskedBits/SimplifyDemandedBits for ISD::TRUNCATE --- Diffs of the changes: (+18 -0) TargetLowering.cpp | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+) Index: llvm/lib/Target/TargetLowering.cpp diff -u llvm/lib/Target/TargetLowering.cpp:1.54 llvm/lib/Target/TargetLowering.cpp:1.55 --- llvm/lib/Target/TargetLowering.cpp:1.54 Tue May 2 20:29:56 2006 +++ llvm/lib/Target/TargetLowering.cpp Fri May 5 17:32:12 2006 @@ -607,6 +607,16 @@ assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?"); break; } + case ISD::TRUNCATE: { + if (SimplifyDemandedBits(Op.getOperand(0), DemandedMask, + KnownZero, KnownOne, TLO, Depth+1)) + return true; + assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?"); + uint64_t OutMask = MVT::getIntVTBitMask(Op.getValueType()); + KnownZero &= OutMask; + KnownOne &= OutMask; + break; + } case ISD::AssertZext: { MVT::ValueType VT = cast<VTSDNode>(Op.getOperand(1))->getVT(); uint64_t InMask = MVT::getIntVTBitMask(VT); @@ -864,6 +874,14 @@ KnownZero, KnownOne, Depth+1); return; } + case ISD::TRUNCATE: { + ComputeMaskedBits(Op.getOperand(0), Mask, KnownZero, KnownOne, Depth+1); + assert((KnownZero & KnownOne) == 0 && "Bits known to be one AND zero?"); + uint64_t OutMask = MVT::getIntVTBitMask(Op.getValueType()); + KnownZero &= OutMask; + KnownOne &= OutMask; + break; + } case ISD::AssertZext: { MVT::ValueType VT = cast<VTSDNode>(Op.getOperand(1))->getVT(); uint64_t InMask = MVT::getIntVTBitMask(VT); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits