LLVM API Documentation
#include <TargetLowering.h>
Public Member Functions | |
TargetLoweringOpt (SelectionDAG &InDAG, bool LT, bool LO) | |
bool | LegalTypes () const |
bool | LegalOperations () const |
bool | CombineTo (SDValue O, SDValue N) |
bool | ShrinkDemandedConstant (SDValue Op, const APInt &Demanded) |
bool | ShrinkDemandedOp (SDValue Op, unsigned BitWidth, const APInt &Demanded, SDLoc dl) |
Public Attributes | |
SelectionDAG & | DAG |
bool | LegalTys |
bool | LegalOps |
SDValue | Old |
SDValue | New |
A convenience struct that encapsulates a DAG, and two SDValues for returning information from TargetLowering to its clients that want to combine.
Definition at line 1771 of file TargetLowering.h.
|
inlineexplicit |
Definition at line 1778 of file TargetLowering.h.
Definition at line 1785 of file TargetLowering.h.
Referenced by llvm::TargetLowering::SimplifyDemandedBits().
|
inline |
Definition at line 1783 of file TargetLowering.h.
References LegalOps.
|
inline |
Definition at line 1782 of file TargetLowering.h.
References LegalTys.
bool TargetLowering::TargetLoweringOpt::ShrinkDemandedConstant | ( | SDValue | Op, |
const APInt & | Demanded | ||
) |
Check to see if the specified operand of the specified instruction is a constant integer. If so, check to see if there are any bits set in the constant that are not demanded. If so, shrink the constant and return true.
ShrinkDemandedConstant - Check to see if the specified operand of the specified instruction is a constant integer. If so, check to see if there are any bits set in the constant that are not demanded. If so, shrink the constant and return true.
Definition at line 281 of file TargetLowering.cpp.
References llvm::ISD::AND, llvm::CallingConv::C, llvm::dyn_cast(), llvm::ConstantSDNode::getAPIntValue(), llvm::SDValue::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), llvm::APInt::intersects(), llvm::ISD::OR, and llvm::ISD::XOR.
Referenced by llvm::TargetLowering::SimplifyDemandedBits().
bool TargetLowering::TargetLoweringOpt::ShrinkDemandedOp | ( | SDValue | Op, |
unsigned | BitWidth, | ||
const APInt & | Demanded, | ||
SDLoc | dl | ||
) |
Convert x+y to (VT)((SmallVT)x+(SmallVT)y) if the casts are free. This uses isZExtFree and ZERO_EXTEND for the widening cast, but it could be generalized for targets with other types of implicit widening casts.
ShrinkDemandedOp - Convert x+y to (VT)((SmallVT)x+(SmallVT)y) if the casts are free. This uses isZExtFree and ZERO_EXTEND for the widening cast, but it could be generalized for targets with other types of implicit widening casts.
Definition at line 320 of file TargetLowering.cpp.
References llvm::ISD::ANY_EXTEND, llvm::APInt::countLeadingZeros(), llvm::EVT::getIntegerVT(), llvm::SDValue::getNode(), llvm::SDValue::getNumOperands(), llvm::SDNode::getNumValues(), llvm::SDValue::getOpcode(), llvm::SDNode::getOperand(), llvm::SDValue::getValueType(), llvm::SDNode::hasOneUse(), llvm::isPowerOf2_32(), llvm::TargetLoweringBase::isTruncateFree(), llvm::TargetLoweringBase::isZExtFree(), llvm::NextPowerOf2(), llvm::ISD::TRUNCATE, llvm::X, and llvm::ISD::ZERO_EXTEND.
SelectionDAG& llvm::TargetLowering::TargetLoweringOpt::DAG |
Definition at line 1772 of file TargetLowering.h.
Referenced by llvm::TargetLowering::SimplifyDemandedBits().
bool llvm::TargetLowering::TargetLoweringOpt::LegalOps |
Definition at line 1774 of file TargetLowering.h.
Referenced by LegalOperations().
bool llvm::TargetLowering::TargetLoweringOpt::LegalTys |
Definition at line 1773 of file TargetLowering.h.
Referenced by LegalTypes().
SDValue llvm::TargetLowering::TargetLoweringOpt::New |
Definition at line 1776 of file TargetLowering.h.
Referenced by CombineTo().
SDValue llvm::TargetLowering::TargetLoweringOpt::Old |
Definition at line 1775 of file TargetLowering.h.
Referenced by CombineTo().