LLVM
15.0.0git
|
#include "RISCVISelDAGToDAG.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/KnownBits.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include "RISCVGenSearchableTables.inc"
Go to the source code of this file.
Namespaces | |
llvm | |
This is an optimization pass for GlobalISel generic memory operations. | |
llvm::RISCV | |
Macros | |
#define | DEBUG_TYPE "riscv-isel" |
#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) |
Typedefs | |
using | ValidateFn = bool(*)(int64_t) |
Functions | |
static SDNode * | selectImmWithConstantPool (SelectionDAG *CurDAG, const SDLoc &DL, const MVT VT, int64_t Imm, const RISCVSubtarget &Subtarget) |
static SDNode * | selectImm (SelectionDAG *CurDAG, const SDLoc &DL, const MVT VT, int64_t Imm, const RISCVSubtarget &Subtarget) |
static SDValue | createTupleImpl (SelectionDAG &CurDAG, ArrayRef< SDValue > Regs, unsigned RegClassID, unsigned SubReg0) |
static SDValue | createM1Tuple (SelectionDAG &CurDAG, ArrayRef< SDValue > Regs, unsigned NF) |
static SDValue | createM2Tuple (SelectionDAG &CurDAG, ArrayRef< SDValue > Regs, unsigned NF) |
static SDValue | createM4Tuple (SelectionDAG &CurDAG, ArrayRef< SDValue > Regs, unsigned NF) |
static SDValue | createTuple (SelectionDAG &CurDAG, ArrayRef< SDValue > Regs, unsigned NF, RISCVII::VLMUL LMUL) |
static bool | isAllUndef (ArrayRef< SDValue > Values) |
static bool | selectVSplatSimmHelper (SDValue N, SDValue &SplatVal, SelectionDAG &DAG, const RISCVSubtarget &Subtarget, ValidateFn ValidateImm) |
#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 28 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVMaskedPseudosTable_IMPL |
Definition at line 40 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLETable_IMPL |
Definition at line 36 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLSEGTable_IMPL |
Definition at line 33 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLXSEGTable_IMPL |
Definition at line 34 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVLXTable_IMPL |
Definition at line 38 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSETable_IMPL |
Definition at line 37 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSSEGTable_IMPL |
Definition at line 32 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSXSEGTable_IMPL |
Definition at line 35 of file RISCVISelDAGToDAG.cpp.
#define GET_RISCVVSXTable_IMPL |
Definition at line 39 of file RISCVISelDAGToDAG.cpp.
using ValidateFn = bool (*)(int64_t) |
Definition at line 2006 of file RISCVISelDAGToDAG.cpp.
|
static |
Definition at line 232 of file RISCVISelDAGToDAG.cpp.
References createTupleImpl().
Referenced by createTuple().
|
static |
Definition at line 242 of file RISCVISelDAGToDAG.cpp.
References createTupleImpl().
Referenced by createTuple().
|
static |
Definition at line 251 of file RISCVISelDAGToDAG.cpp.
References createTupleImpl().
Referenced by createTuple().
|
static |
Definition at line 257 of file RISCVISelDAGToDAG.cpp.
References createM1Tuple(), createM2Tuple(), createM4Tuple(), llvm_unreachable, llvm::XCoreISD::LMUL, llvm::RISCVII::LMUL_1, llvm::RISCVII::LMUL_2, llvm::RISCVII::LMUL_4, llvm::RISCVII::LMUL_F2, llvm::RISCVII::LMUL_F4, and llvm::RISCVII::LMUL_F8.
|
static |
Definition at line 214 of file RISCVISelDAGToDAG.cpp.
References assert(), DL, llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), I, llvm::MVT::i32, N, llvm::ArrayRef< T >::size(), and llvm::MVT::Untyped.
Referenced by createM1Tuple(), createM2Tuple(), and createM4Tuple().
Definition at line 319 of file RISCVISelDAGToDAG.cpp.
References llvm::all_of(), and llvm::SDNode::isUndef().
|
static |
Definition at line 176 of file RISCVISelDAGToDAG.cpp.
References DL, llvm::RISCVMatInt::generateInstSeq(), llvm::SelectionDAG::getMachineNode(), llvm::RISCVSubtarget::getMaxBuildIntsCost(), llvm::SelectionDAG::getRegister(), llvm::SelectionDAG::getTargetConstant(), llvm::RISCVSubtarget::getXLenVT(), llvm::RISCVMatInt::Imm, llvm::RISCVMatInt::RegImm, llvm::RISCVMatInt::RegReg, llvm::RISCVMatInt::RegX0, selectImmWithConstantPool(), and llvm::RISCVSubtarget::useConstantPoolForLargeInts().
|
static |
Definition at line 156 of file RISCVISelDAGToDAG.cpp.
References Addr, assert(), llvm::HexagonISD::CP, DL, llvm::ConstantInt::get(), llvm::RISCVTargetLowering::getAddr(), llvm::MachinePointerInfo::getConstantPool(), llvm::SelectionDAG::getConstantPool(), llvm::SelectionDAG::getContext(), llvm::SelectionDAG::getEntryNode(), llvm::SelectionDAG::getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getTargetConstant(), llvm::RISCVSubtarget::getTargetLowering(), llvm::MVT::i64, llvm::RISCVMatInt::Imm, llvm::ARM_MB::LD, llvm::SPII::Load, llvm::MachineMemOperand::MOLoad, and llvm::SelectionDAG::setNodeMemRefs().
Referenced by selectImm().
|
static |
Definition at line 2008 of file RISCVISelDAGToDAG.cpp.
References assert(), llvm::MVT::bitsLT(), llvm::MVT::getSizeInBits(), llvm::SelectionDAG::getTargetConstant(), llvm::RISCVSubtarget::getXLenVT(), N, llvm::SignExtend64(), and llvm::RISCVISD::VMV_V_X_VL.
Referenced by llvm::RISCVDAGToDAGISel::selectVSplatSimm5(), llvm::RISCVDAGToDAGISel::selectVSplatSimm5Plus1(), and llvm::RISCVDAGToDAGISel::selectVSplatSimm5Plus1NonZero().