|
LLVM 24.0.0git
|
#include "Target/RISCV/RISCVISelDAGToDAG.h"
Static Public Member Functions | |
| static RISCVCC::CondCode | getRISCVCCForIntCC (ISD::CondCode CC) |
| Static Public Member Functions inherited from llvm::SelectionDAGISel | |
| static bool | IsLegalToFold (SDValue N, SDNode *U, SDNode *Root, CodeGenOptLevel OptLevel, bool IgnoreChains=false) |
| IsLegalToFold - Returns true if the specific operand node N of U can be folded during instruction selection that starts at Root. | |
| static void | InvalidateNodeId (SDNode *N) |
| static int | getUninvalidatedNodeId (SDNode *N) |
| static void | EnforceNodeIdInvariant (SDNode *N) |
| static int | getNumFixedFromVariadicInfo (unsigned Flags) |
| getNumFixedFromVariadicInfo - Transform an EmitNode flags word into the number of fixed arity values that should be skipped when copying from the root. | |
Definition at line 24 of file RISCVISelDAGToDAG.h.
|
delete |
|
inlineexplicit |
Definition at line 30 of file RISCVISelDAGToDAG.h.
References llvm::SelectionDAGISel::OptLevel, and llvm::SelectionDAGISel::SelectionDAGISel().
| void RISCVDAGToDAGISel::addVectorLoadStoreOperands | ( | SDNode * | Node, |
| unsigned | SEWImm, | ||
| const SDLoc & | DL, | ||
| unsigned | CurOp, | ||
| bool | IsMasked, | ||
| bool | IsStridedOrIndexed, | ||
| SmallVectorImpl< SDValue > & | Operands, | ||
| bool | IsLoad = false, | ||
| MVT * | IndexVT = nullptr ) |
Definition at line 313 of file RISCVISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, DL, llvm::RISCVVType::MASK_AGNOSTIC, Operands, and selectVLOp().
Referenced by Select(), selectVLSEG(), selectVLSEGFF(), selectVLXSEG(), selectVSSEG(), and selectVSXSEG().
Definition at line 3602 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::SDNode::getOpcode(), llvm::User::getOperand(), llvm::isInt(), isRegImmLoadOrStore(), llvm::SDNode::users(), and llvm::Value::users().
Referenced by SelectAddrRegImm().
|
inlinestatic |
Definition at line 207 of file RISCVISelDAGToDAG.h.
References llvm::RISCVCC::COND_EQ, llvm::RISCVCC::COND_GE, llvm::RISCVCC::COND_GEU, llvm::RISCVCC::COND_LT, llvm::RISCVCC::COND_LTU, llvm::RISCVCC::COND_NE, llvm_unreachable, llvm::ISD::SETEQ, llvm::ISD::SETGE, llvm::ISD::SETLT, llvm::ISD::SETNE, llvm::ISD::SETUGE, and llvm::ISD::SETULT.
Definition at line 156 of file RISCVISelDAGToDAG.h.
References hasAllNBitUsers().
Referenced by Select().
Definition at line 157 of file RISCVISelDAGToDAG.h.
References hasAllNBitUsers().
Referenced by Select().
| bool RISCVDAGToDAGISel::hasAllNBitUsers | ( | SDNode * | Node, |
| unsigned | Bits, | ||
| const unsigned | Depth = 0 ) const |
Definition at line 4634 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, assert(), llvm::bit_width(), llvm::cast(), llvm::Depth, llvm::User::getOperand(), llvm::Use::getOperandNo(), llvm::Use::getUser(), hasAllNBitUsers(), Imm, llvm::isa(), llvm::Log2_32(), llvm::SelectionDAG::MaxRecursionDepth, llvm::ISD::MUL, llvm::ISD::OR, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SRL, llvm::ISD::SUB, llvm::SelectionDAGISel::TII, vectorPseudoHasAllNBitUsers(), and llvm::ISD::XOR.
Referenced by hasAllBUsers(), hasAllHUsers(), hasAllNBitUsers(), and hasAllWUsers().
Definition at line 158 of file RISCVISelDAGToDAG.h.
References hasAllNBitUsers().
Referenced by Select().
Definition at line 4483 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::SelectionDAGISel::CurDAG, N, and llvm::ISD::OR.
Referenced by selectZExtImm32().
|
overridevirtual |
PostprocessISelDAG() - This hook allows the target to hack on the graph right after selection.
Reimplemented from llvm::SelectionDAGISel.
Definition at line 216 of file RISCVISelDAGToDAG.cpp.
References llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::HandleSDNode::getValue(), and N.
|
overridevirtual |
PreprocessISelDAG - This hook allows targets to hack on the graph before instruction selection starts.
Reimplemented from llvm::SelectionDAGISel.
Definition at line 35 of file RISCVISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::ISD::ADD, llvm::ISD::ANY_EXTEND, llvm::any_of(), assert(), C(), llvm::cast(), llvm::MVT::changeVectorElementType(), llvm::ISD::Constant, llvm::SelectionDAGISel::CurDAG, llvm::dbgs(), DL, llvm::dyn_cast(), llvm::ISD::FP_EXTEND, llvm::TypeSize::getFixed(), llvm::MachinePointerInfo::getFixedStack(), llvm::RISCVMatInt::getIntMatCost(), llvm::SDValue::getNode(), llvm::SDNode::getOpcode(), llvm::MVT::getVectorElementType(), llvm::MachinePointerInfo::getWithOffset(), llvm::Hi, Imm, INT64_MIN, llvm::ISD::INTRINSIC_W_CHAIN, llvm::isInt(), llvm::MVT::isInteger(), llvm::MVT::isScalableVector(), llvm::MVT::isVector(), LLVM_DEBUG, llvm::Lo, llvm::SelectionDAGISel::MF, llvm::MachineMemOperand::MOLoad, N, Opc, llvm::ISD::SPLAT_VECTOR, llvm::ISD::SUB, and llvm::ISD::TokenFactor.
|
inlineoverridevirtual |
Reimplemented from llvm::SelectionDAGISel.
Definition at line 34 of file RISCVISelDAGToDAG.h.
References llvm::SelectionDAGISel::MF, and llvm::SelectionDAGISel::runOnMachineFunction().
|
overridevirtual |
Main hook for targets to transform nodes into machine nodes.
Implements llvm::SelectionDAGISel.
Definition at line 1178 of file RISCVISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::NumOps, AbstractManglingParser< Derived, Alloc >::Ops, addVectorLoadStoreOperands(), llvm::ISD::AND, assert(), llvm::sampleprof::Base, llvm::bit_width(), llvm::ISD::BITCAST, llvm::APFloat::bitcastToAPInt(), buildGPRPair(), C(), CASE_VMNAND_VMSET_OPCODES, CASE_VMSLT_OPCODES, CASE_VMXOR_VMANDN_VMOR_OPCODES, llvm::cast(), llvm::ISD::Constant, llvm::ISD::ConstantFP, llvm::countr_one(), llvm::countr_zero(), llvm::SelectionDAGISel::CurDAG, llvm::dbgs(), llvm::RISCVTargetLowering::decomposeSubvectorInsertExtractToSubRegs(), DL, Node::dump(), llvm::RISCVFPRndMode::DYN, llvm::dyn_cast(), llvm::ISD::EXTRACT_SUBVECTOR, extractGPRPair(), llvm::SDNode::getAsZExtVal(), llvm::APInt::getBitWidth(), llvm::SDValue::getConstantOperandVal(), llvm::RISCVTargetLowering::getLMUL(), getNode(), llvm::SDValue::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::RISCVTargetLowering::getRegClassIDForVecVT(), llvm::TypeSize::getScalable(), llvm::MVT::getScalarSizeInBits(), getSegInstNF(), llvm::APInt::getSExtValue(), llvm::APInt::getSignedMinValue(), llvm::SDNode::getSimpleValueType(), llvm::SDValue::getSimpleValueType(), llvm::MVT::getSizeInBits(), llvm::EVT::getStoreSize(), llvm::MVT::getStoreSize(), getTileReg(), llvm::MVT::getVectorElementCount(), llvm::MVT::getVectorElementType(), hasAllBUsers(), hasAllHUsers(), hasAllWUsers(), llvm::SDValue::hasOneUse(), llvm::Hi, I, Imm, llvm::ISD::INSERT_SUBVECTOR, llvm::ISD::INTRINSIC_VOID, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::INTRINSIC_WO_CHAIN, llvm::isa(), llvm::APInt::isAllOnes(), isApplicableToPLIOrPLUI(), llvm::MVT::isFixedLengthVector(), llvm::isInt(), llvm::SelectionDAGISel::IsLegalToFold(), llvm::isMask_64(), llvm::APFloat::isNegZero(), llvm::isNullConstant(), llvm::isOneConstant(), llvm::APFloat::isPosZero(), llvm::isPowerOf2_64(), llvm::SelectionDAGISel::IsProfitableToFold(), llvm::MVT::isScalableVector(), llvm::isShiftedInt(), llvm::isShiftedMask_64(), llvm::APInt::isSplat(), llvm::isUInt(), llvm::APFloat::isZero(), LLVM_DEBUG, llvm_unreachable, llvm::RISCVVType::LMUL_F2, llvm::RISCVVType::LMUL_F4, llvm::RISCVVType::LMUL_F8, llvm::Lo, llvm::ISD::LOAD, llvm::Load, llvm::Log2_32(), llvm::M1(), llvm::RISCVVType::MASK_AGNOSTIC, llvm::maskTrailingOnes(), llvm::maskTrailingZeros(), llvm::MachineMemOperand::MONonTemporal, llvm::MONontemporalBit0, llvm::MONontemporalBit1, llvm::ISD::MUL, N, llvm::Offset, Opc, Operands, llvm::ISD::OR, P, llvm::ISD::POST_INC, llvm::ISD::PREFETCH, llvm::SelectionDAGISel::ReplaceNode(), llvm::SelectionDAGISel::ReplaceUses(), llvm::report_fatal_error(), llvm::reportFatalUsageError(), llvm::RISCVFPRndMode::RNE, llvm::RISCV::RVVBitsPerBlock, llvm::ISD::SCALAR_TO_VECTOR, SelectAddrRegImm(), selectImm(), selectSF_VC_X_SE(), selectVLOp(), selectVLSEG(), selectVLSEGFF(), selectVLXSEG(), selectVSETVLI(), selectVSSEG(), selectVSXSEG(), selectXSfmmVSET(), llvm::MachineMemOperand::setFlags(), llvm::ISD::SEXTLOAD, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND_INREG, llvm::SignExtend64(), llvm::MVT::SimpleTy, llvm::ISD::SMUL_LOHI, llvm::Splat, llvm::ISD::SPLAT_VECTOR, llvm::ISD::SRA, llvm::ISD::SRL, llvm::Store, llvm::RISCVVType::TAIL_AGNOSTIC, llvm::SelectionDAGISel::TLI, llvm::SelectionDAGISel::TM, TRI, llvm::APInt::trunc(), tryIndexedLoad(), tryShrinkShlLogicImm(), trySignedBitfieldExtract(), trySignedBitfieldInsertInSign(), tryUnsignedBitfieldExtract(), tryUnsignedBitfieldInsertInZero(), tryWideningMulAcc(), llvm::ISD::UMUL_LOHI, X, and llvm::ISD::XOR.
Definition at line 3478 of file RISCVISelDAGToDAG.cpp.
References llvm::sampleprof::Base, llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), and llvm::Offset.
Referenced by SelectAddrRegImm(), SelectAddrRegImm9(), and SelectAddrRegImmLsb00000().
Definition at line 3630 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::ADD, areOffsetsWithinAlignment(), assert(), llvm::sampleprof::Base, llvm::cast(), llvm::commonAlignment(), llvm::SelectionDAGISel::CurDAG, DL, llvm::dyn_cast(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getSimpleValueType(), llvm::SDValue::getValueType(), llvm::isa(), llvm::isInt(), isWorthFoldingAdd(), llvm::Offset, SelectAddrFrameIndex(), and selectConstantAddr().
Referenced by Select(), and SelectInlineAsmMemoryOperand().
Similar to SelectAddrRegImm, except that the offset is a 26-bit signed immediate.
This is used by the Qualcomm Xqcilo large offset load/store instructions (qc.e.lw/qc.e.sw), whose offset field is 26 bits wide. Only matches offsets that do not fit a 12-bit signed immediate, so that offsets in the simm12 range keep using the shorter (and possibly compressible) standard load/store instructions.
Definition at line 3763 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::ADD, llvm::sampleprof::Base, llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::dyn_cast(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getSimpleValueType(), llvm::isa(), llvm::isInt(), llvm::isShiftedUInt(), isWorthFoldingAdd(), llvm::maxIntN(), llvm::minIntN(), and llvm::Offset.
Similar to SelectAddrRegImm, except that the offset is restricted to uimm9.
Definition at line 3825 of file RISCVISelDAGToDAG.cpp.
References llvm::sampleprof::Base, llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::dyn_cast(), llvm::SDValue::getOperand(), llvm::SDValue::getSimpleValueType(), llvm::isUInt(), llvm::Offset, and SelectAddrFrameIndex().
Similar to SelectAddrRegImm, except that the least significant 5 bits of Offset should be all zeros.
Definition at line 3852 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::ADD, assert(), llvm::sampleprof::Base, llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::dyn_cast(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getSimpleValueType(), llvm::isa(), llvm::isInt(), llvm::Offset, SelectAddrFrameIndex(), and selectConstantAddr().
Definition at line 4083 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::ADD, llvm::sampleprof::Base, llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::isa(), and llvm::Offset.
|
inline |
Definition at line 61 of file RISCVISelDAGToDAG.h.
References assert(), llvm::sampleprof::Base, llvm::SDNode::getAsZExtVal(), and SelectAddrRegRegScale().
| bool RISCVDAGToDAGISel::SelectAddrRegRegScale | ( | SDValue | Addr, |
| ArrayRef< unsigned > | Amounts, | ||
| SDValue & | Base, | ||
| SDValue & | Index, | ||
| SDValue & | Scale ) |
Definition at line 3977 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::ADD, llvm::sampleprof::Base, llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getSimpleValueType(), llvm::is_contained(), llvm::isa(), llvm::isInt(), isWorthFoldingIntoRegRegScale(), N, and llvm::ISD::SHL.
Referenced by SelectAddrRegRegFixedScale(), SelectAddrRegRegScale(), and SelectAddrRegZextRegScale().
|
inline |
Definition at line 71 of file RISCVISelDAGToDAG.h.
References llvm::sampleprof::Base, and SelectAddrRegRegScale().
|
inline |
Definition at line 83 of file RISCVISelDAGToDAG.h.
References assert(), llvm::sampleprof::Base, llvm::SDNode::getAsZExtVal(), and SelectAddrRegZextRegScale().
| bool RISCVDAGToDAGISel::SelectAddrRegZextRegScale | ( | SDValue | Addr, |
| ArrayRef< unsigned > | Amounts, | ||
| unsigned | Bits, | ||
| SDValue & | Base, | ||
| SDValue & | Index, | ||
| SDValue & | Scale ) |
Definition at line 4064 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::AND, llvm::sampleprof::Base, C(), llvm::dyn_cast(), llvm::maskTrailingOnes(), and SelectAddrRegRegScale().
Referenced by SelectAddrRegZextRegFixedScale(), and SelectAddrRegZextRegScale().
|
inline |
Definition at line 94 of file RISCVISelDAGToDAG.h.
References llvm::sampleprof::Base, and SelectAddrRegZextRegScale().
Similar to SelectAddrRegImm, but only matches a register, or a register plus a simm12 offset.
Doesn't match a FrameIndex or global address, since those aren't valid for the callers of this function (e.g. the target of an indirect branch).
Definition at line 3738 of file RISCVISelDAGToDAG.cpp.
References llvm::sampleprof::Base, llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::SDValue::getOperand(), llvm::SDValue::getSimpleValueType(), llvm::isInt(), and llvm::Offset.
|
overridevirtual |
SelectInlineAsmMemoryOperand - Select the specified address as a target addressing mode, according to the specified constraint.
If this does not match or is not implemented, return true. The resultant operands (which will appear in the machine instruction) should be added to the OutOps vector.
Reimplemented from llvm::SelectionDAGISel.
Definition at line 3450 of file RISCVISelDAGToDAG.cpp.
References llvm::InlineAsm::A, assert(), llvm::SelectionDAGISel::CurDAG, llvm::InlineAsm::getMemConstraintName(), llvm::InlineAsm::m, llvm::InlineAsm::o, llvm::report_fatal_error(), and SelectAddrRegImm().
Definition at line 4554 of file RISCVISelDAGToDAG.cpp.
References llvm::all_of(), llvm::ISD::AND, llvm::cast(), llvm::SelectionDAGISel::CurDAG, Imm, llvm::isa(), llvm::isInt(), N, llvm::ISD::OR, selectImm(), and llvm::ISD::XOR.
Definition at line 4959 of file RISCVISelDAGToDAG.cpp.
References N, selectVSplat(), llvm::ISD::SIGN_EXTEND, and llvm::ISD::ZERO_EXTEND.
Definition at line 4526 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::ADD, llvm::all_of(), llvm::cast(), Imm, INT64_MIN, llvm::isa(), llvm::isInt(), and N.
Referenced by selectVSplatImm64Neg().
|
inline |
Definition at line 180 of file RISCVISelDAGToDAG.h.
References Imm, N, and selectRVVSimm5().
Definition at line 5021 of file RISCVISelDAGToDAG.cpp.
References C(), llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), Imm, llvm::isInt(), N, and llvm::SignExtend64().
Referenced by selectRVVSimm5().
Definition at line 4985 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::ISD::BITCAST, llvm::APFloat::bitcastToAPInt(), llvm::SelectionDAGISel::CurDAG, DL, llvm::dyn_cast(), llvm::APInt::getSExtValue(), llvm::SDNode::getSimpleValueType(), llvm::ConstantFPSDNode::getValueAPF(), Imm, llvm::APFloat::isNegZero(), llvm::APFloat::isPosZero(), N, and selectImm().
| bool RISCVDAGToDAGISel::selectSETCC | ( | SDValue | N, |
| ISD::CondCode | ExpectedCCVal, | ||
| SDValue & | Val, | ||
| bool | OneUse ) |
RISC-V doesn't have general instructions for integer setne/seteq, but we can check for equality with 0.
This function emits instructions that convert the seteq/setne into something that can be compared with 0. ExpectedCCVal indicates the condition code to attempt to match (e.g. ISD::SETNE).
Definition at line 4173 of file RISCVISelDAGToDAG.cpp.
References assert(), C(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::dyn_cast(), llvm::isInt(), llvm::ISD::isIntEqualitySetCC(), llvm::isNullConstant(), llvm::isPowerOf2_64(), llvm::Log2_64(), N, Opc, llvm::ISD::SETCC, and llvm::ISD::SIGN_EXTEND_INREG.
Referenced by selectSETEQ(), and selectSETNE().
|
inline |
Definition at line 126 of file RISCVISelDAGToDAG.h.
References N, selectSETCC(), and llvm::ISD::SETEQ.
|
inline |
Definition at line 123 of file RISCVISelDAGToDAG.h.
References N, selectSETCC(), and llvm::ISD::SETNE.
|
inline |
Definition at line 131 of file RISCVISelDAGToDAG.h.
References N, and selectSExtBits().
Definition at line 4261 of file RISCVISelDAGToDAG.cpp.
References llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::SDValue::getConstantOperandVal(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::MVT::getSizeInBits(), llvm::isa(), N, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND_INREG, and llvm::ISD::SRA.
Referenced by selectSExtBits().
| void RISCVDAGToDAGISel::selectSF_VC_X_SE | ( | SDNode * | Node | ) |
Definition at line 1064 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::ISD::INTRINSIC_VOID, llvm::Log2_32(), Operands, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
|
inline |
Definition at line 117 of file RISCVISelDAGToDAG.h.
References N, selectShiftMask(), and Size.
Definition at line 4096 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, assert(), llvm::SelectionDAGISel::CurDAG, DL, llvm::APInt::getBitWidth(), llvm::SDValue::getConstantOperandAPInt(), llvm::SDValue::getConstantOperandVal(), llvm::SDNode::getOpcode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), Imm, llvm::isa(), llvm::isPowerOf2_32(), llvm::APInt::isSubsetOf(), llvm::Known, N, llvm::ISD::SUB, and llvm::ISD::ZERO_EXTEND.
Referenced by selectShiftMask(), and selectShiftMaskXLen().
Definition at line 114 of file RISCVISelDAGToDAG.h.
References N, and selectShiftMask().
|
inline |
Definition at line 145 of file RISCVISelDAGToDAG.h.
References N, and selectSHXADD_UWOp().
Look for various patterns that can be done with a SHL that can be folded into a SHXADD_UW.
ShAmt contains 1, 2, or 3 and is set based on which SHXADD_UW we are trying to match.
Definition at line 4446 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::AND, assert(), llvm::countl_zero(), llvm::countr_zero(), llvm::SelectionDAGISel::CurDAG, DL, llvm::SDValue::getConstantOperandVal(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::hasOneUse(), llvm::isa(), llvm::isShiftedMask_64(), llvm::maskTrailingZeros(), N, and llvm::ISD::SHL.
Referenced by selectSHXADD_UWOp().
|
inline |
Definition at line 140 of file RISCVISelDAGToDAG.h.
References N, and selectSHXADDOp().
Look for various patterns that can be done with a SHL that can be folded into a SHXADD.
ShAmt contains 1, 2, or 3 and is set based on which SHXADD we are trying to match.
Definition at line 4311 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::AND, assert(), llvm::bit_width(), llvm::countr_zero(), llvm::SelectionDAGISel::CurDAG, DL, llvm::SDValue::getConstantOperandVal(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::hasOneUse(), llvm::isa(), llvm::isShiftedMask_64(), llvm::maskTrailingOnes(), llvm::maskTrailingZeros(), N, llvm::ISD::SHL, llvm::ISD::SRA, and llvm::ISD::SRL.
Referenced by selectSHXADDOp().
Definition at line 4816 of file RISCVISelDAGToDAG.cpp.
References C(), llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), llvm::isInt(), N, and llvm::Offset.
Definition at line 4837 of file RISCVISelDAGToDAG.cpp.
References C(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), getReg(), llvm::isa(), llvm::isUInt(), N, and llvm::RISCV::VLMaxSentinel.
Referenced by addVectorLoadStoreOperands(), and Select().
Definition at line 353 of file RISCVISelDAGToDAG.cpp.
References addVectorLoadStoreOperands(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::RISCVTargetLowering::getLMUL(), llvm::Load, Operands, P, and llvm::SelectionDAGISel::ReplaceUses().
Referenced by Select().
Definition at line 381 of file RISCVISelDAGToDAG.cpp.
References addVectorLoadStoreOperands(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::RISCVTargetLowering::getLMUL(), llvm::Load, Operands, P, and llvm::SelectionDAGISel::ReplaceUses().
Referenced by Select().
Definition at line 412 of file RISCVISelDAGToDAG.cpp.
References addVectorLoadStoreOperands(), assert(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::RISCVVType::decodeVLMUL(), DL, llvm::RISCVTargetLowering::getLMUL(), llvm::MVT::getScalarSizeInBits(), llvm::MVT::getVectorMinNumElements(), llvm::Load, llvm::Log2_32(), Operands, P, llvm::SelectionDAGISel::ReplaceUses(), llvm::reportFatalUsageError(), and llvm::RISCV::RVVBitsPerBlock.
Referenced by Select().
Definition at line 5057 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), and N.
Definition at line 5038 of file RISCVISelDAGToDAG.cpp.
References N, and llvm::ISD::XOR.
| void RISCVDAGToDAGISel::selectVSETVLI | ( | SDNode * | Node | ) |
Definition at line 531 of file RISCVISelDAGToDAG.cpp.
References assert(), C(), llvm::SelectionDAGISel::CurDAG, llvm::RISCVVType::decodeVSEW(), DL, llvm::dyn_cast(), llvm::RISCVVType::encodeVTYPE(), llvm::RISCVVType::getSEWLMULRatio(), llvm::ISD::INTRINSIC_WO_CHAIN, llvm::isAllOnesConstant(), llvm::isUInt(), llvm::Offset, and llvm::SelectionDAGISel::ReplaceNode().
Referenced by Select().
Definition at line 4876 of file RISCVISelDAGToDAG.cpp.
References findVSplat(), N, and llvm::Splat.
Referenced by selectLow8BitsVSplat().
Definition at line 4954 of file RISCVISelDAGToDAG.cpp.
References findVSplat(), N, selectNegImm(), and llvm::Splat.
Definition at line 4920 of file RISCVISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, Imm, llvm::isInt(), N, and selectVSplatImmHelper().
Definition at line 4925 of file RISCVISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, Imm, N, and selectVSplatImmHelper().
Definition at line 4932 of file RISCVISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, Imm, N, and selectVSplatImmHelper().
Definition at line 4939 of file RISCVISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, Imm, N, and selectVSplatImmHelper().
Definition at line 4947 of file RISCVISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, Imm, llvm::isUIntN(), N, and selectVSplatImmHelper().
Referenced by selectVSplatUimmBits().
|
inline |
Definition at line 167 of file RISCVISelDAGToDAG.h.
References N, and selectVSplatUimm().
Definition at line 460 of file RISCVISelDAGToDAG.cpp.
References addVectorLoadStoreOperands(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::RISCVTargetLowering::getLMUL(), Operands, P, llvm::SelectionDAGISel::ReplaceNode(), and llvm::Store.
Referenced by Select().
Definition at line 485 of file RISCVISelDAGToDAG.cpp.
References addVectorLoadStoreOperands(), assert(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::RISCVVType::decodeVLMUL(), DL, llvm::RISCVTargetLowering::getLMUL(), llvm::MVT::getScalarSizeInBits(), llvm::MVT::getVectorMinNumElements(), llvm::Log2_32(), Operands, P, llvm::SelectionDAGISel::ReplaceNode(), llvm::reportFatalUsageError(), llvm::RISCV::RVVBitsPerBlock, and llvm::Store.
Referenced by Select().
| void RISCVDAGToDAGISel::selectXSfmmVSET | ( | SDNode * | Node | ) |
Definition at line 589 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::SelectionDAGISel::CurDAG, llvm::RISCVVType::decodeTWiden(), llvm::RISCVVType::decodeVSEW(), DL, llvm::RISCVVType::encodeXSfmmVType(), llvm::ISD::INTRINSIC_WO_CHAIN, llvm::Log2_32(), llvm::SelectionDAGISel::ReplaceNode(), and Widen().
Referenced by Select().
|
inline |
Definition at line 135 of file RISCVISelDAGToDAG.h.
References N, and selectZExtBits().
Definition at line 4290 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::AND, C(), llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), llvm::APInt::getBitsSetFrom(), llvm::MVT::getSizeInBits(), llvm::maskTrailingOnes(), and N.
Referenced by selectZExtBits().
Definition at line 4503 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::ADD, llvm::cast(), Imm, llvm::isa(), N, llvm::ISD::OR, and orDisjoint().
Definition at line 901 of file RISCVISelDAGToDAG.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, assert(), C(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), llvm::isInt(), llvm::Offset, llvm::ISD::POST_INC, llvm::ISD::PRE_INC, llvm::SelectionDAGISel::ReplaceNode(), llvm::ISD::UNINDEXED, and llvm::ISD::ZEXTLOAD.
Referenced by Select().
Definition at line 627 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::AND, assert(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::dyn_cast(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::ConstantSDNode::getSExtValue(), llvm::ConstantSDNode::getZExtValue(), llvm::SDValue::hasOneUse(), llvm::isInt(), llvm_unreachable, llvm::maskTrailingOnes(), llvm::ISD::OR, llvm::SelectionDAGISel::ReplaceNode(), llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND_INREG, and llvm::ISD::XOR.
Referenced by Select().
Definition at line 707 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::cast(), llvm::SelectionDAGISel::CurDAG, DL, llvm::dyn_cast(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::MVT::getSizeInBits(), llvm::SDValue::hasOneUse(), Opc, llvm::SelectionDAGISel::ReplaceNode(), llvm::ISD::SHL, and llvm::ISD::SIGN_EXTEND_INREG.
Referenced by Select().
Definition at line 795 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::SelectionDAGISel::CurDAG, DL, llvm::dyn_cast(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::MVT::getSizeInBits(), llvm::SDValue::hasOneUse(), Opc, llvm::SelectionDAGISel::ReplaceNode(), and llvm::ISD::SHL.
Referenced by Select().
| bool RISCVDAGToDAGISel::tryUnsignedBitfieldExtract | ( | SDNode * | Node, |
| const SDLoc & | DL, | ||
| MVT | VT, | ||
| SDValue | X, | ||
| unsigned | Msb, | ||
| unsigned | Lsb ) |
Definition at line 853 of file RISCVISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, DL, Opc, llvm::SelectionDAGISel::ReplaceNode(), and X.
Referenced by Select().
| bool RISCVDAGToDAGISel::tryUnsignedBitfieldInsertInZero | ( | SDNode * | Node, |
| const SDLoc & | DL, | ||
| MVT | VT, | ||
| SDValue | X, | ||
| unsigned | Msb, | ||
| unsigned | Lsb ) |
Definition at line 881 of file RISCVISelDAGToDAG.cpp.
References llvm::SelectionDAGISel::CurDAG, DL, Opc, llvm::SelectionDAGISel::ReplaceNode(), and X.
Referenced by Select().
Definition at line 993 of file RISCVISelDAGToDAG.cpp.
References assert(), buildGPRPair(), llvm::SelectionDAGISel::CurDAG, DL, extractGPRPair(), llvm::SDValue::getNode(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::Hi, llvm_unreachable, llvm::Lo, llvm::M0(), llvm::M1(), Opc, llvm::SelectionDAGISel::ReplaceUses(), llvm::ISD::SMUL_LOHI, and llvm::ISD::UMUL_LOHI.
Referenced by Select().