LLVM 20.0.0git
|
#include "RISCVISelDAGToDAG.h"
#include "MCTargetDesc/RISCVBaseInfo.h"
#include "MCTargetDesc/RISCVMCTargetDesc.h"
#include "MCTargetDesc/RISCVMatInt.h"
#include "RISCVISelLowering.h"
#include "RISCVInstrInfo.h"
#include "RISCVMachineFunctionInfo.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/IR/IntrinsicsRISCV.h"
#include "llvm/Support/Alignment.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include "RISCVGenSearchableTables.inc"
Go to the source code of this file.
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
namespace | llvm::RISCV |
Macros | |
#define | DEBUG_TYPE "riscv-isel" |
#define | PASS_NAME "RISC-V DAG->DAG Pattern Instruction Selection" |
#define | GET_RISCVVSSEGTable_IMPL |
#define | GET_RISCVVLSEGTable_IMPL |
#define | GET_RISCVVLXSEGTable_IMPL |
#define | GET_RISCVVSXSEGTable_IMPL |
#define | GET_RISCVVLETable_IMPL |
#define | GET_RISCVVSETable_IMPL |
#define | GET_RISCVVLXTable_IMPL |
#define | GET_RISCVVSXTable_IMPL |
#define | CASE_VMSLT_VMNAND_VMSET_OPCODES(lmulenum, suffix, suffix_b) |
#define | CASE_VMSLT_OPCODES(lmulenum, suffix, suffix_b) |
#define | CASE_VMXOR_VMANDN_VMOR_OPCODES(lmulenum, suffix) |
Variables | |
static cl::opt< bool > | UsePseudoMovImm ("riscv-use-rematerializable-movimm", cl::Hidden, cl::desc("Use a rematerializable pseudoinstruction for 2 instruction " "constant materialization"), cl::init(false)) |
#define CASE_VMSLT_OPCODES | ( | lmulenum, | |
suffix, | |||
suffix_b | |||
) |
#define CASE_VMSLT_VMNAND_VMSET_OPCODES | ( | lmulenum, | |
suffix, | |||
suffix_b | |||
) |
#define CASE_VMXOR_VMANDN_VMOR_OPCODES | ( | lmulenum, | |
suffix | |||
) |
#define DEBUG_TYPE "riscv-isel" |
Definition at line 29 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLETable_IMPL |
Definition at line 43 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLSEGTable_IMPL |
Definition at line 40 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLXSEGTable_IMPL |
Definition at line 41 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLXTable_IMPL |
Definition at line 45 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSETable_IMPL |
Definition at line 44 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSSEGTable_IMPL |
Definition at line 39 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSXSEGTable_IMPL |
Definition at line 42 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSXTable_IMPL |
Definition at line 46 of file RISCVISelDAGToDAG.cpp.
#define PASS_NAME "RISC-V DAG->DAG Pattern Instruction Selection" |
Definition at line 30 of file RISCVISelDAGToDAG.cpp.
|
static |
Definition at line 241 of file RISCVISelDAGToDAG.cpp.
References assert(), DL, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), I, llvm_unreachable, llvm::RISCVII::LMUL_1, llvm::RISCVII::LMUL_2, llvm::RISCVII::LMUL_4, llvm::RISCVII::LMUL_F2, llvm::RISCVII::LMUL_F4, llvm::RISCVII::LMUL_F8, N, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::ArrayRef< T >::size().
Definition at line 3416 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::ISD::INSERT_SUBVECTOR, N, llvm::Splat, llvm::RISCVISD::VMV_S_X_VL, and llvm::RISCVISD::VMV_V_X_VL.
Referenced by llvm::RISCVDAGToDAGISel::selectVSplat(), and selectVSplatImmHelper().
Definition at line 3641 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::CopyToReg, llvm::SDNode::getMachineOpcode(), llvm::SDValue::getNode(), llvm::SDNode::getOperand(), getReg(), and llvm::SDNode::isMachineOpcode().
Referenced by usesAllOnesMask().
Definition at line 3695 of file RISCVISelDAGToDAG.cpp.
References I, and isImplicitDef().
Referenced by isImplicitDef().
Definition at line 3762 of file RISCVISelDAGToDAG.cpp.
References llvm::RISCV::getRVVMCOpcode(), and N.
Definition at line 2575 of file RISCVISelDAGToDAG.cpp.
References llvm::Add, llvm::ISD::ATOMIC_LOAD, llvm::ISD::ATOMIC_STORE, llvm::EVT::isScalarInteger(), llvm::ISD::LOAD, and llvm::ISD::STORE.
Referenced by llvm::RISCVDAGToDAGISel::SelectAddrRegImm().
|
static |
Definition at line 2522 of file RISCVISelDAGToDAG.cpp.
References Addr, assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::sampleprof::Base, DL, llvm::SmallVectorBase< Size_T >::empty(), llvm::RISCVMatInt::generateInstSeq(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getRegister(), llvm::SelectionDAG::getSignedConstant(), llvm::SelectionDAG::getTargetConstant(), llvm::Hi, llvm::RISCVSubtarget::is64Bit(), llvm::Offset, llvm::SmallVectorTemplateBase< T, bool >::pop_back(), and selectImmSeq().
Referenced by llvm::RISCVDAGToDAGISel::SelectAddrRegImm(), and llvm::RISCVDAGToDAGISel::SelectAddrRegImmLsb00000().
|
static |
Definition at line 206 of file RISCVISelDAGToDAG.cpp.
References DL, llvm::SmallVectorBase< Size_T >::empty(), llvm::RISCVMatInt::generateInstSeq(), llvm::RISCVMatInt::generateTwoRegInstSeq(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getSignedConstant(), llvm::SelectionDAG::getTargetConstant(), llvm::Lo, selectImmSeq(), llvm::SmallVectorBase< Size_T >::size(), and UsePseudoMovImm.
Referenced by llvm::RISCVDAGToDAGISel::Select(), and llvm::RISCVDAGToDAGISel::selectFPImm().
|
static |
Definition at line 176 of file RISCVISelDAGToDAG.cpp.
References DL, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getRegister(), llvm::SelectionDAG::getSignedConstant(), llvm::RISCVMatInt::Imm, llvm::RISCVMatInt::RegImm, llvm::RISCVMatInt::RegReg, and llvm::RISCVMatInt::RegX0.
Referenced by selectConstantAddr(), and selectImm().
|
static |
Definition at line 3440 of file RISCVISelDAGToDAG.cpp.
References assert(), findVSplat(), llvm::APInt::getSExtValue(), llvm::SelectionDAG::getSignedConstant(), llvm::RISCVSubtarget::getXLenVT(), N, and llvm::Splat.
Referenced by llvm::RISCVDAGToDAGISel::selectVSplatSimm5(), llvm::RISCVDAGToDAGISel::selectVSplatSimm5Plus1(), llvm::RISCVDAGToDAGISel::selectVSplatSimm5Plus1NonZero(), and llvm::RISCVDAGToDAGISel::selectVSplatUimm().
Definition at line 3690 of file RISCVISelDAGToDAG.cpp.
References N, and usesAllOnesMask().
Definition at line 3669 of file RISCVISelDAGToDAG.cpp.
References llvm::SDValue::getMachineOpcode(), getMaskSetter(), and llvm::SDNode::isMachineOpcode().
Referenced by usesAllOnesMask().
|
static |
Definition at line 3164 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::User::getNumOperands(), llvm::User::getOperand(), llvm::RISCV::getRVVMCOpcode(), llvm::RISCV::getVectorLowDemandedScalarBits(), llvm::RISCVII::hasSEWOp(), llvm::RISCVII::hasVecPolicyOp(), llvm::RISCVII::hasVLOp(), TII, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::RISCVDAGToDAGISel::hasAllNBitUsers().
|
static |
Referenced by selectImm().