|
LLVM 22.0.0git
|
This file implements the targeting of the InstructionSelector class for RISC-V. More...
#include "MCTargetDesc/RISCVMatInt.h"#include "RISCVRegisterBankInfo.h"#include "RISCVSubtarget.h"#include "RISCVTargetMachine.h"#include "llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h"#include "llvm/CodeGen/GlobalISel/GISelValueTracking.h"#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"#include "llvm/CodeGen/GlobalISel/MIPatternMatch.h"#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"#include "llvm/CodeGen/MachineJumpTableInfo.h"#include "llvm/IR/IntrinsicsRISCV.h"#include "llvm/Support/Debug.h"#include "RISCVGenGlobalISel.inc"Go to the source code of this file.
Namespaces | |
| namespace | llvm |
| This is an optimization pass for GlobalISel generic memory operations. | |
Macros | |
| #define | DEBUG_TYPE "riscv-isel" |
| #define | GET_GLOBALISEL_PREDICATE_BITSET |
| #define | GET_GLOBALISEL_PREDICATES_DECL |
| #define | GET_GLOBALISEL_TEMPORARIES_DECL |
| #define | GET_GLOBALISEL_IMPL |
| #define | GET_GLOBALISEL_PREDICATES_INIT |
| #define | GET_GLOBALISEL_TEMPORARIES_INIT |
Functions | |
| static void | getOperandsForBranch (Register CondReg, RISCVCC::CondCode &CC, Register &LHS, Register &RHS, MachineRegisterInfo &MRI) |
| static unsigned | selectZalasrLoadStoreOp (unsigned GenericOpc, unsigned OpSize) |
Select the RISC-V Zalasr opcode for the G_LOAD or G_STORE operation GenericOpc, appropriate for the GPR register bank and of memory access size OpSize. | |
| static unsigned | selectRegImmLoadStoreOp (unsigned GenericOpc, unsigned OpSize) |
Select the RISC-V regimm opcode for the G_LOAD or G_STORE operation GenericOpc, appropriate for the GPR register bank and of memory access size OpSize. | |
| static unsigned | getFCmpOpcode (CmpInst::Predicate Pred, unsigned Size) |
| static bool | legalizeFCmpPredicate (Register &LHS, Register &RHS, CmpInst::Predicate &Pred, bool &NeedInvert) |
| InstructionSelector * | llvm::createRISCVInstructionSelector (const RISCVTargetMachine &TM, const RISCVSubtarget &Subtarget, const RISCVRegisterBankInfo &RBI) |
This file implements the targeting of the InstructionSelector class for RISC-V.
Definition in file RISCVInstructionSelector.cpp.
| #define DEBUG_TYPE "riscv-isel" |
Definition at line 28 of file RISCVInstructionSelector.cpp.
| #define GET_GLOBALISEL_IMPL |
Definition at line 185 of file RISCVInstructionSelector.cpp.
| #define GET_GLOBALISEL_PREDICATE_BITSET |
Definition at line 33 of file RISCVInstructionSelector.cpp.
| #define GET_GLOBALISEL_PREDICATES_DECL |
Definition at line 174 of file RISCVInstructionSelector.cpp.
| #define GET_GLOBALISEL_PREDICATES_INIT |
| #define GET_GLOBALISEL_TEMPORARIES_DECL |
Definition at line 178 of file RISCVInstructionSelector.cpp.
| #define GET_GLOBALISEL_TEMPORARIES_INIT |
|
static |
Definition at line 1546 of file RISCVInstructionSelector.cpp.
References assert(), llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm_unreachable, and Size.
|
static |
Definition at line 620 of file RISCVInstructionSelector.cpp.
References llvm::CmpInst::BAD_ICMP_PREDICATE, llvm::RISCVCC::COND_GE, llvm::RISCVCC::COND_NE, llvm::getIConstantVRegSExtVal(), llvm::CmpInst::getSwappedPredicate(), llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLE, llvm::CmpInst::ICMP_SLT, llvm::CmpInst::ICMP_UGE, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULE, llvm::CmpInst::ICMP_ULT, LHS, llvm_unreachable, llvm::MIPatternMatch::m_GICmp(), llvm::MIPatternMatch::m_Pred(), llvm::MIPatternMatch::m_Reg(), llvm::MIPatternMatch::mi_match(), MRI, RHS, and std::swap().
|
static |
Definition at line 1562 of file RISCVInstructionSelector.cpp.
References assert(), llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::getInversePredicate(), llvm::CmpInst::getSwappedPredicate(), LHS, RHS, and std::swap().
Select the RISC-V regimm opcode for the G_LOAD or G_STORE operation GenericOpc, appropriate for the GPR register bank and of memory access size OpSize.
GenericOpc if the combination is unsupported. Definition at line 706 of file RISCVInstructionSelector.cpp.
Select the RISC-V Zalasr opcode for the G_LOAD or G_STORE operation GenericOpc, appropriate for the GPR register bank and of memory access size OpSize.
Definition at line 687 of file RISCVInstructionSelector.cpp.
References llvm_unreachable.