LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Public Attributes | List of all members
llvm::TargetLowering::TargetLoweringOpt Struct Reference

#include <TargetLowering.h>

Collaboration diagram for llvm::TargetLowering::TargetLoweringOpt:
Collaboration graph
[legend]

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

SelectionDAGDAG
 
bool LegalTys
 
bool LegalOps
 
SDValue Old
 
SDValue New
 

Detailed Description

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.

Constructor & Destructor Documentation

llvm::TargetLowering::TargetLoweringOpt::TargetLoweringOpt ( SelectionDAG InDAG,
bool  LT,
bool  LO 
)
inlineexplicit

Definition at line 1778 of file TargetLowering.h.

Member Function Documentation

bool llvm::TargetLowering::TargetLoweringOpt::CombineTo ( SDValue  O,
SDValue  N 
)
inline

Definition at line 1785 of file TargetLowering.h.

References N, New, and Old.

Referenced by llvm::TargetLowering::SimplifyDemandedBits().

bool llvm::TargetLowering::TargetLoweringOpt::LegalOperations ( ) const
inline

Definition at line 1783 of file TargetLowering.h.

References LegalOps.

bool llvm::TargetLowering::TargetLoweringOpt::LegalTypes ( ) const
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.

Member Data Documentation

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().


The documentation for this struct was generated from the following files: