LLVM 18.0.0git
|
#include "RISCVISelDAGToDAG.h"
#include "MCTargetDesc/RISCVBaseInfo.h"
#include "MCTargetDesc/RISCVMCTargetDesc.h"
#include "MCTargetDesc/RISCVMatInt.h"
#include "RISCVISelLowering.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 <optional>
#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 | GET_RISCVMaskedPseudosTable_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) |
#define | CASE_VMERGE_TO_VMV(lmul) |
#define CASE_VMERGE_TO_VMV | ( | lmul | ) |
#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_RISCVMaskedPseudosTable_IMPL |
Definition at line 41 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLETable_IMPL |
Definition at line 37 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLSEGTable_IMPL |
Definition at line 34 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLXSEGTable_IMPL |
Definition at line 35 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLXTable_IMPL |
Definition at line 39 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSETable_IMPL |
Definition at line 38 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSSEGTable_IMPL |
Definition at line 33 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSXSEGTable_IMPL |
Definition at line 36 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSXTable_IMPL |
Definition at line 40 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 228 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 2963 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().
|
static |
Definition at line 3300 of file RISCVISelDAGToDAG.cpp.
References llvm_unreachable, llvm::RISCVII::LMUL_1, llvm::RISCVII::LMUL_2, llvm::RISCVII::LMUL_4, llvm::RISCVII::LMUL_8, llvm::RISCVII::LMUL_F2, llvm::RISCVII::LMUL_F4, llvm::RISCVII::LMUL_F8, and llvm::RISCVII::LMUL_RESERVED.
Definition at line 3222 of file RISCVISelDAGToDAG.cpp.
Definition at line 3282 of file RISCVISelDAGToDAG.cpp.
References N.
Definition at line 3292 of file RISCVISelDAGToDAG.cpp.
References N.
Definition at line 2277 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 2229 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::getTargetConstant(), llvm::Hi, llvm::RISCVSubtarget::is64Bit(), llvm::Offset, llvm::SmallVectorTemplateBase< T, bool >::pop_back(), and selectImmSeq().
Referenced by llvm::RISCVDAGToDAGISel::SelectAddrRegImm().
|
static |
Definition at line 193 of file RISCVISelDAGToDAG.cpp.
References DL, llvm::RISCVMatInt::generateInstSeq(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), llvm::Hi_32(), llvm::Lo, llvm::Lo_32(), selectImmSeq(), and llvm::SmallVectorBase< Size_T >::size().
Referenced by llvm::RISCVDAGToDAGISel::Select(), and llvm::RISCVDAGToDAGISel::selectFPImm().
|
static |
Definition at line 164 of file RISCVISelDAGToDAG.cpp.
References DL, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getRegister(), llvm::SelectionDAG::getTargetConstant(), llvm::RISCVMatInt::Imm, llvm::RISCVMatInt::RegImm, llvm::RISCVMatInt::RegReg, and llvm::RISCVMatInt::RegX0.
Referenced by selectConstantAddr(), and selectImm().
|
static |
Definition at line 2987 of file RISCVISelDAGToDAG.cpp.
References assert(), findVSplat(), llvm::APInt::getSExtValue(), llvm::SelectionDAG::getTargetConstant(), 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 3217 of file RISCVISelDAGToDAG.cpp.
References N, and usesAllOnesMask().
Definition at line 3176 of file RISCVISelDAGToDAG.cpp.
References llvm::ISD::CopyToReg, llvm::SDValue::getMachineOpcode(), llvm::SDNode::getMachineOpcode(), llvm::SDValue::getNode(), llvm::SDNode::getOperand(), getReg(), and llvm::SDNode::isMachineOpcode().
Referenced by usesAllOnesMask().