| LLVM 22.0.0git
    | 
#include "MCTargetDesc/SPIRVBaseInfo.h"#include "MCTargetDesc/SPIRVMCTargetDesc.h"#include "SPIRV.h"#include "SPIRVGlobalRegistry.h"#include "SPIRVInstrInfo.h"#include "SPIRVRegisterInfo.h"#include "SPIRVTargetMachine.h"#include "SPIRVUtils.h"#include "llvm/ADT/APFloat.h"#include "llvm/ADT/StringExtras.h"#include "llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h"#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/Register.h"#include "llvm/CodeGen/TargetOpcodes.h"#include "llvm/IR/IntrinsicsSPIRV.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "SPIRVGenGlobalISel.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 "spirv-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 | 
| Typedefs | |
| using | ExtInstList | 
| #define DEBUG_TYPE "spirv-isel" | 
Definition at line 36 of file SPIRVInstructionSelector.cpp.
| #define GET_GLOBALISEL_IMPL | 
Definition at line 386 of file SPIRVInstructionSelector.cpp.
| #define GET_GLOBALISEL_PREDICATE_BITSET | 
Definition at line 58 of file SPIRVInstructionSelector.cpp.
| #define GET_GLOBALISEL_PREDICATES_DECL | 
Definition at line 87 of file SPIRVInstructionSelector.cpp.
| #define GET_GLOBALISEL_PREDICATES_INIT | 
| #define GET_GLOBALISEL_TEMPORARIES_DECL | 
Definition at line 91 of file SPIRVInstructionSelector.cpp.
| #define GET_GLOBALISEL_TEMPORARIES_INIT | 
| using ExtInstList | 
Definition at line 42 of file SPIRVInstructionSelector.cpp.
| 
 | static | 
Definition at line 1253 of file SPIRVInstructionSelector.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addUse(), llvm::MachineIRBuilder::getMF(), llvm::MachineInstr::getOperand(), llvm::SPIRVGlobalRegistry::getOrAddMemAliasingINTELInst(), and llvm::MachineOperand::getReg().
| 
 | static | 
Definition at line 1295 of file SPIRVInstructionSelector.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineMemOperand::MONonTemporal, and llvm::MachineMemOperand::MOVolatile.
Definition at line 1968 of file SPIRVInstructionSelector.cpp.
References llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, and llvm_unreachable.
Definition at line 1892 of file SPIRVInstructionSelector.cpp.
References llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_OGE, llvm::CmpInst::FCMP_OGT, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::FCMP_ONE, llvm::CmpInst::FCMP_ORD, llvm::CmpInst::FCMP_UEQ, llvm::CmpInst::FCMP_UGE, llvm::CmpInst::FCMP_UGT, llvm::CmpInst::FCMP_ULE, llvm::CmpInst::FCMP_ULT, llvm::CmpInst::FCMP_UNE, llvm::CmpInst::FCMP_UNO, and llvm_unreachable.
Definition at line 1928 of file SPIRVInstructionSelector.cpp.
References 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, and llvm_unreachable.
Definition at line 1994 of file SPIRVInstructionSelector.cpp.
References llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::APFloat::getOne(), llvm::Type::getScalarType(), llvm::Type::getTypeID(), llvm::Type::HalfTyID, llvm::APFloatBase::IEEEdouble(), llvm::APFloatBase::IEEEhalf(), and llvm::APFloatBase::IEEEsingle().
Definition at line 1956 of file SPIRVInstructionSelector.cpp.
References llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, and llvm_unreachable.
Definition at line 1980 of file SPIRVInstructionSelector.cpp.
References llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::Type::getScalarType(), llvm::Type::getTypeID(), llvm::APFloat::getZero(), llvm::Type::HalfTyID, llvm::APFloatBase::IEEEdouble(), llvm::APFloatBase::IEEEhalf(), and llvm::APFloatBase::IEEEsingle().
| 
 | static | 
Definition at line 1739 of file SPIRVInstructionSelector.cpp.
References llvm::all_of(), and MRI.
| 
 | static | 
Definition at line 455 of file SPIRVInstructionSelector.cpp.
References llvm::cast(), llvm::SmallPtrSetImpl< PtrType >::contains(), llvm::MachineInstr::getNumExplicitDefs(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::SmallPtrSetImpl< PtrType >::insert(), isConstReg(), llvm::MachineOperand::isReg(), MRI, and llvm::passCopy().
Referenced by isConstReg(), and isConstReg().
| 
 | static | 
Definition at line 502 of file SPIRVInstructionSelector.cpp.
References isConstReg(), and MRI.
| bool isDead | ( | const MachineInstr & | MI, | 
| const MachineRegisterInfo & | MRI ) | 
Definition at line 509 of file SPIRVInstructionSelector.cpp.
Referenced by llvm::finalizeBundle(), llvm::t1CondCodeOp(), and llvm::TailDuplicator::tailDuplicateAndUpdate().
| 
 | static | 
Definition at line 1728 of file SPIRVInstructionSelector.cpp.
Definition at line 613 of file SPIRVInstructionSelector.cpp.
References llvm::isTypeFoldingSupported().